namespace CEC
{
class CCECProcessor;
+ class CAdapterPingThread;
class CUSBCECAdapterCommunication : public IAdapterCommunication, private PLATFORM::CThread
{
bool Read(CCECAdapterMessage &msg, uint32_t iTimeout = 1000);
bool ParseMessage(const CCECAdapterMessage &msg);
void SendMessageToAdapter(CCECAdapterMessage *msg);
- void WriteNextCommand(void);
void AddData(uint8_t *data, size_t iLen);
bool ReadFromDevice(uint32_t iTimeout, size_t iSize = 256);
bool WaitForAck(CCECAdapterMessage &message);
PLATFORM::ISocket * m_port;
CCECProcessor * m_processor;
PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_inBuffer;
- PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_outBuffer;
PLATFORM::CMutex m_mutex;
PLATFORM::CCondition<volatile bool> m_rcvCondition;
volatile bool m_bHasData;
IAdapterCommunicationCallback * m_callback;
bool m_bInitialised;
bool m_bWaitingForAck[15];
+ CAdapterPingThread * m_pingThread;
+ };
+
+ class CAdapterPingThread : public PLATFORM::CThread
+ {
+ public:
+ CAdapterPingThread(CUSBCECAdapterCommunication *com, uint32_t iTimeout) :
+ m_com(com),
+ m_timeout(iTimeout){}
+ virtual ~CAdapterPingThread(void) {}
+
+ virtual void* Process(void);
+ private:
+ CUSBCECAdapterCommunication *m_com;
+ PLATFORM::CTimeout m_timeout;
};
};