1 /* 2 * IoChannel.h 3 * 4 * Interface for IoChannel derived classes. 5 * 6 * Copyright (C) 2007 - 2011 Texas Instruments Incorporated - http://www.ti.com/ 7 * 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in the 18 * documentation and/or other materials provided with the 19 * distribution. 20 * 21 * Neither the name of Texas Instruments Incorporated nor the names of 22 * its contributors may be used to endorse or promote products derived 23 * from this software without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 */ 37 38 #pragma once 39 40 #include "PortInfo.h" 41 42 43 #define STREAM_CORE_ZERO_VERSION 0x00 44 #define STREAM_CORE_ZERO_PUC_RESET 0x03 45 46 namespace TI 47 { 48 namespace DLL430 49 { 50 51 class HalResponse; 52 class FetControl; 53 54 enum ComState { 55 ComStateRcv = 0, 56 ComStateEnd = 1, 57 ComStateError = 2, 58 ComStateDisconnect = 3 59 }; 60 61 class IoChannel 62 { 63 public: 64 IoChannel(); 65 IoChannel(const IoChannel&) = delete; 66 IoChannel& operator=(const IoChannel&) = delete; 67 68 virtual ~IoChannel(); 69 70 void setParent(FetControl*); 71 72 virtual bool open() = 0; 73 virtual bool close() = 0; 74 virtual void cancel() = 0; 75 76 virtual ComState poll() = 0; 77 virtual size_t read(HalResponse& resp) = 0; 78 79 virtual size_t write(const uint8_t* payload, size_t len) = 0; 80 81 virtual const char* getName() const = 0; 82 virtual std::string getSerial() const = 0; 83 84 protected: 85 FetControl* parent; 86 }; 87 } 88 } 89