4 #ifndef _CPL_FTDI_DEVICE_H_ 5 #define _CPL_FTDI_DEVICE_H_ 7 #include "base classses.h" 9 #include "misc tools.h" 17 #define FTDI_MAN_STR _T("FTDIMan") 23 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
24 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
25 virtual DWORD
GetInfo(
void* pHead, DWORD dwSize);
27 std::vector<CChannelFTDI*> m_acFTDevices;
30 std::vector<FT_DEVICE_LIST_INFO_NODE> m_asFTChanInfo;
43 #define FTDI_CHAN_STR _T("FTChann") 60 const TCHAR szPipe[],
int nChan,
int &nError, LARGE_INTEGER &llStart);
62 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
63 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
64 DWORD
GetInfo(
void* pHead, DWORD dwSize);
70 const std::tstring m_csPipeName;
74 std::vector<CPeriphFTDI*> m_aDevices;
81 std::vector<HANDLE> m_ahEvents;
86 unsigned char* m_aucTx;
116 m_ucBitOutput(sInitFT.ucBitOutput){};
136 virtual bool DoWork(
void *pHead, DWORD dwSize, FT_HANDLE ftHandle, EStateFTDI eReason,
int nError)= 0;
137 virtual void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId)= 0;
138 virtual void Result(
void *pHead,
bool bPass)= 0;
139 virtual EStateFTDI GetState()= 0;
140 virtual DWORD
GetInfo(
void* pHead, DWORD dwSize)= 0;
141 void SetOutputBits(
unsigned char ucBitOutput) {m_ucBitOutput = ucBitOutput;}
142 unsigned char GetOutputBits() {
return m_ucBitOutput;}
148 unsigned char m_ucBitOutput;
154 #define ADC_P _T("ADCBrd") 155 #define ADC_RESET_DELAY 2500 175 HANDLE hNewData,
int &nError,
CTimer* pcTimer);
177 bool DoWork(
void *pHead, DWORD dwSize, FT_HANDLE ftHandle, EStateFTDI eReason,
int nError);
178 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
179 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
180 EStateFTDI GetState();
181 DWORD
GetInfo(
void* pHead, DWORD dwSize);
186 const unsigned char m_ucMask;
187 const unsigned char m_ucConfigWriteBit;
188 const unsigned char m_ucConfigReadBit;
189 const unsigned char m_ucReverse;
190 const unsigned char m_ucDefault;
191 const unsigned short m_usConfigWord;
192 const unsigned char m_ucTransPerByte;
193 const unsigned char m_ucNGroups;
194 const unsigned char m_ucNBytes;
198 EHandshakeADC m_eConfigState;
202 HANDLE m_hThreadClose;
203 HANDLE m_hProcessData;
208 CRITICAL_SECTION m_hStateSafe;
214 unsigned char* m_aucBuff;
215 unsigned short (*m_aucDecoded)[256];
216 unsigned char m_aucGroups[16];
217 unsigned char m_ucFlags;
218 unsigned short m_usBadRead;
219 unsigned short m_usOverflow;
221 DWORD m_dwAmountRead;
236 #define MULTI_W_P _T("MltWBrd") 241 int &nError, HANDLE hNewData,
CTimer* pcTimer);
243 bool DoWork(
void *pHead, DWORD dwSize, FT_HANDLE ftHandle, EStateFTDI eReason,
int nError);
244 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
245 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
246 EStateFTDI GetState();
247 DWORD
GetInfo(
void* pHead, DWORD dwSize);
250 const unsigned char m_ucMask;
251 const unsigned char m_ucDefault;
257 std::vector<bool> m_abData;
258 CRITICAL_SECTION m_hDataSafe;
264 #define MULTI_R_P _T("MltRBrd") 269 int &nError, HANDLE hNewData,
CTimer* pcTimer);
271 bool DoWork(
void *pHead, DWORD dwSize, FT_HANDLE ftHandle, EStateFTDI eReason,
int nError);
272 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
273 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
274 EStateFTDI GetState();
275 DWORD
GetInfo(
void* pHead, DWORD dwSize);
278 const unsigned char m_ucMask;
279 const unsigned char m_ucDefault;
284 CRITICAL_SECTION m_hDataSafe;
285 std::vector<__int64> m_allIds;
290 #define PIN_W_P _T("PinWBrd") 295 int &nError, HANDLE hNewData,
CTimer* pcTimer);
297 bool DoWork(
void *pHead, DWORD dwSize, FT_HANDLE ftHandle, EStateFTDI eReason,
int nError);
298 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
299 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
300 EStateFTDI GetState();
301 DWORD
GetInfo(
void* pHead, DWORD dwSize);
304 const unsigned char m_ucMask;
306 unsigned char m_ucLast;
311 std::vector<unsigned char> m_aucData;
312 CRITICAL_SECTION m_hDataSafe;
318 #define PIN_R_P _T("PinRBrd") 323 int &nError, HANDLE hNewData,
CTimer* pcTimer);
325 bool DoWork(
void *pHead, DWORD dwSize, FT_HANDLE ftHandle, EStateFTDI eReason,
int nError);
326 void ProcessData(
const void *pHead, DWORD dwSize, __int64 llId);
327 void Result(
void *pHead,
bool bPass) {
if (m_pcMemPool) m_pcMemPool->PoolRelease(pHead);}
328 EStateFTDI GetState();
329 DWORD
GetInfo(
void* pHead, DWORD dwSize);
332 const unsigned char m_ucMask;
337 CRITICAL_SECTION m_hDataSafe;
338 std::vector<__int64> m_allIds;
virtual DWORD GetInfo(void *pHead, DWORD dwSize)
void Result(void *pHead, bool bPass)
void Result(void *pHead, bool bPass)
void Result(void *pHead, bool bPass)
void Result(void *pHead, bool bPass)
void ProcessData(const void *pHead, DWORD dwSize, __int64 llId)
void Result(void *pHead, bool bPass)
void Result(void *pHead, bool bPass)
void Result(void *pHead, bool bPass)
CPeriphFTDI(const TCHAR szName[], const SInitPeriphFT &sInitFT)