SDC C-Project CF Review 프로그램
LYW
2021-07-08 e10b8c2a3f6ee6b639dbb49ff6635d0657531d1e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#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;
};