72 lines
2.0 KiB
C++
72 lines
2.0 KiB
C++
#ifndef _M68HC11_MCUTHREAD_HPP_
|
|
#define _M68HC11_MCUTHREAD_HPP_
|
|
#ifndef _THREAD_MESSAGETHREAD_HPP_
|
|
#include <thread/mthread.hpp>
|
|
#endif
|
|
#ifndef _COMMON_CALLBACK_HPP_
|
|
#include <common/callback.hpp>
|
|
#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<MCUThread> 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 |