#pragma once #include "IDIOSBoardController.h" #include "DiosBoardCtrlParams.h" namespace DIOS::Dev::Detail::MachineryECOM { class IDIOSBoardPacketRecevier; class DIOSBoardController : public IDIOSBoardController { public: DIOSBoardController(); ~DIOSBoardController(); public: virtual bool Initialize(SCF* pSCF) override; virtual bool SetPassiveDisconnectEventHandle(HANDLE handle) override; virtual bool Connect(ResDataObject& Connection) override; virtual bool Disonnect() override; virtual DWORD Lock() override; virtual void UnLock() override; virtual bool Send(SCFPacket *sendPacket, SCFPacket *recvPacket) override; //virtual int Receive(char *pPacket, DWORD length, DWORD timeout) override; //virtual int Receive(SCFPacket *pPacket, DWORD timeout) override; virtual bool ReceiveACK(SCFPacket* sendPacket, SCFPacket* recvPacket, char* pszContext, unsigned int &PacketLen) override; virtual bool ReceiveFrame(SCFPacket* sendPacket, SCFPacket* recvPacket, FUNCTIONID Id, unsigned char FrameCmd, char* pszContext, unsigned int PacketLen, unsigned int& nDataLen) override; //virtual bool ReceiveCANFrame(SCFPacket* sendPacket, SCFPacket* recvPacket, CAN_ID Id, unsigned short stdid, CAN_PARAM& params) override; virtual void QueNotifyPacket(SCFPacket *pPacket) override; private: static PACKET_RET EventCallback(const char * pRecData, DWORD nLength, DWORD & PacketLength); private: bool DoSendSync(SCF::IO& oIO, SCFPacket *sendPacket, SCFPacket *recvPacket,DWORD Timeout = DIOSCTRLCPU_COM_TIMEOUT); std::string FormatPacketString(SCFPacket *packet); std::string FormatPacketString(const char *packet,int len); int Receive(SCF::IO& oIO, char* pPacket, DWORD length, DWORD timeout); int Receive(SCF::IO& oIO, SCFPacket *pPacket, DWORD timeout); private: SCF *m_SCFInstance; BOOL m_connectStatus; }; }