Files
Work/m68hc11/MCUTHRD.HPP
2024-08-07 09:16:27 -04:00

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