#ifndef COSY_Interface #define COSY_Interface #ifdef __CINT__ //#include typedef UShort_t WORD_t; typedef Byte_t BYTE_t; struct Message; struct FastMessage; #else #include "gendef.h" #include "dpm.h" #endif typedef struct timeval timeval_t; class CanOpen; class Interface { private: CanOpen *fReceiver; protected: Interface(CanOpen *rx); // Interface to receiver void HandleMessage(const Message &msg) const; // Helper for SendCanFrame WORD_t MsgDescr(const WORD_t cobid, const BYTE_t dlc, const BYTE_t rtr=0) { return (cobid<<5) | ((rtr&0x1)<<4) | (dlc&0xf); } public: virtual ~Interface(); // Start/stop communication virtual void Start() = 0; /*{ RunThread(); }*/ virtual void Stop() = 0; /*{ CancelThread(); }*/ // Public transmit interface virtual void SendCanFrame(WORD_t cobid, BYTE_t m[8], BYTE_t rtr) = 0; virtual void EnableCobId(WORD_t cobid, int flag=TRUE) { } virtual bool HasConnection() const { return true; } // Public interface void PrintMsg(const Message &m); }; #endif