#ifndef _M68HC11_MCUTHREAD_HPP_ #define _M68HC11_MCUTHREAD_HPP_ #ifndef _THREAD_MESSAGETHREAD_HPP_ #include #endif #ifndef _COMMON_CALLBACK_HPP_ #include #endif class CommControl; class MCUThread : protected MessageThread { public: enum MCUEvent{EventSingleByte=0x00,EventDoubleByte=0x01,EventQuadByte=0x02,EventVarByte=0x03,EventRegs=0x04,EventString=0x05,EventEnd=0xFF}; enum ErrorEvent{ErrorFileOpen,ErrorPortOpen,ErrorPortSettings,ErrorTimeout,ErrorReadError,ErrorTalkBackFailure,ErrorTalkBackData}; MCUThread(void); virtual ~MCUThread(); void listen(const String &strPathBinary); void setErrorEventHandler(PureCallback *pCallback); void setMCUEventHandler(PureCallback *pCallback); void setMessageHandler(PureCallback *pCallback); bool isInEvents(void)const; void isInEvents(bool isInEvents); private: enum{ThMsgListen}; MCUThread(const MCUThread &someMCUThread); MCUThread &operator=(const MCUThread &someMCUThread); DWORD threadHandler(ThreadMessage &someThreadMessage); void thListen(const String &strPathBinary); BOOL openDevice(CommControl &commControl,bool userOverlappedIO=false); BOOL codeLoad(CommControl &commControl,const String &strPathBinary); BOOL processEvents(CommControl &commControl); void sendMessage(const String &strMessage); ThreadCallback mThreadHandler; CallbackPointer mErrorEventHandler; CallbackPointer mMCUEventHandler; CallbackPointer mMessageHandler; bool mIsInEvents; }; inline void MCUThread::setErrorEventHandler(PureCallback *pCallback) { mErrorEventHandler=CallbackPointer(pCallback); } inline void MCUThread::setMCUEventHandler(PureCallback *pCallback) { mMCUEventHandler=CallbackPointer(pCallback); } inline void MCUThread::setMessageHandler(PureCallback *pCallback) { mMessageHandler=CallbackPointer(pCallback); } inline bool MCUThread::isInEvents(void)const { return mIsInEvents; } inline void MCUThread::isInEvents(bool isInEvents) { mIsInEvents=isInEvents; } #endif