45 lines
1.7 KiB
C
45 lines
1.7 KiB
C
#include "comdevice.h"
|
|
|
|
BOOL DevGetCommState(void* data, LPDCB lpDCB) { return TRUE; }
|
|
BOOL DevSetCommState(void* data, LPDCB lpDCB) { return TRUE; }
|
|
BOOL DevGetCommTimeouts(void* data, LPCOMMTIMEOUTS lpCommTimeouts) { return TRUE; }
|
|
BOOL DevSetCommTimeouts(void* data, LPCOMMTIMEOUTS lpCommTimeouts) { return TRUE; }
|
|
BOOL DevSetupComm(void* data, DWORD dwInQueue, DWORD dwOutQueue) { return TRUE; }
|
|
BOOL DevPurgeComm(void* data, DWORD dwFlags) {
|
|
if (dwFlags & PURGE_RXCLEAR) ((com_device_t*)data)->filled = 0;
|
|
return TRUE;
|
|
}
|
|
BOOL DevGetCommModemStatus(void* data, LPDWORD lpModelStat) {
|
|
// TODO: JVS SENSE
|
|
return TRUE;
|
|
}
|
|
BOOL DevWaitCommEvent(void* data, LPDWORD lpEvtMask, LPOVERLAPPED lpOverlapped) {
|
|
WaitForSingleObject(((com_device_t*)data)->event, INFINITE);
|
|
if (lpOverlapped != NULL) SetEvent(lpOverlapped->hEvent);
|
|
return TRUE;
|
|
}
|
|
BOOL DevClearCommError(void* data, LPDWORD lpErrors, LPCOMSTAT lpStat) { return TRUE; }
|
|
|
|
com_device_t* new_com_device(BYTE port) {
|
|
com_device_t* hook = (com_device_t*)malloc(sizeof *hook);
|
|
com_hook_t* com = new_com_hook(port);
|
|
file_hook_t* file = new_file_hook(com->wName);
|
|
com->data = hook;
|
|
|
|
com->GetCommState = DevGetCommState;
|
|
com->SetCommState = DevSetCommState;
|
|
com->GetCommTimeouts = DevGetCommTimeouts;
|
|
com->SetCommTimeouts = DevSetCommTimeouts;
|
|
com->SetupComm = DevSetupComm;
|
|
com->PurgeComm = DevPurgeComm;
|
|
com->GetCommModemStatus = DevGetCommModemStatus;
|
|
com->WaitCommEvent = DevWaitCommEvent;
|
|
com->ClearCommError = DevClearCommError;
|
|
|
|
hook->filled = 0;
|
|
hook->event = CreateEventW(NULL, TRUE, FALSE, hook->com->wName);
|
|
hook->com = com;
|
|
|
|
return hook;
|
|
}
|