#pragma once
|
|
#include "SSignalData.h"
|
#include "STimerThread.h"
|
#include "SWorkThread.h"
|
|
class AFX_EXT_CLASS CSMemoryInterface : public CSTimerThread, public ISWorkThread2Parent
|
{
|
public:
|
CSMemoryInterface(int nType, ISMemoryInterface2Parent* pISMI2P=NULL, DWORD dwPeriod=50);
|
virtual ~CSMemoryInterface(void);
|
|
// thread control
|
virtual BOOL StartThread();
|
virtual void StopThread();
|
|
// signal data
|
const LPVOID GetSignalData() const;
|
const BOOL GetSignalData(int nSignalType, int nSignalIndex, BOOL& bValue) const;
|
virtual BOOL ClearSignalData();
|
virtual BOOL SendSignal(int nSignalType, int nSignalIndex, int nValue);
|
virtual BOOL SendSignal(int nSignalType, int nSignalIndex, int nValue, DWORD dwDelayTime, DWORD dwHoldTime);
|
|
// memory data
|
LPVOID GetMemoryData(DWORD dwAddress);
|
const LPVOID GetMemoryData(DWORD dwAddress) const;
|
|
protected:
|
BOOL CreateMemory(DWORD64 dwSize);
|
void DeleteMemory();
|
LPVOID GetMemoryAddress(DWORD dwAddress);
|
const LPVOID GetMemoryAddress(DWORD dwAddress) const;
|
|
virtual void TimerThreadProcess(PVOID pParameter);
|
virtual void ISWT2P_ProcessSendSignalData(int nSignalType, int nSignalIndex, int nSignalValue, DWORD dwDelayTime, DWORD dwHoldTime);
|
|
protected:
|
ISMemoryInterface2Parent* m_pISMI2P;
|
int m_nMemoryType;
|
CSSignalData m_curSignalData;
|
CSSignalData m_prevSignalData;
|
|
private:
|
BOOL LockMemory();
|
BOOL UnlockMemory();
|
|
DWORD m_dwMemorySize;
|
DWORD m_dwSignalDataSize;
|
CSWorkThread* m_pWorkThread;
|
|
CSemaphore* m_pSemaPhore;
|
HANDLE m_hAsignedMemory;
|
BYTE* m_pSharedMemory;
|
};
|