97 lines
2.0 KiB
C
97 lines
2.0 KiB
C
#ifndef __MODEM_H__
|
|
#define __MODEM_H__
|
|
|
|
// defines
|
|
#define CONFIG_DESC_SIZE 80
|
|
|
|
#define MODEM_ENTER_CRIT() \
|
|
gIrql = KeRaiseIrqlToDpcLevel();
|
|
|
|
#define MODEM_LEAVE_CRIT() \
|
|
KeLowerIrql(gIrql);
|
|
|
|
// data classes
|
|
typedef struct _COMM_DEVICE_INFO {
|
|
|
|
IUsbDevice *pDevice;
|
|
|
|
UCHAR bCommInterface;
|
|
|
|
UCHAR bBulkInEndpointAddress;
|
|
USHORT wBulkInMaxPacket;
|
|
PVOID pBulkInEndpointHandle;
|
|
|
|
UCHAR bBulkOutEndpointAddress;
|
|
USHORT wBulkOutMaxPacket;
|
|
PVOID pBulkOutEndpointHandle;
|
|
|
|
UCHAR bIntInEndpointAddress;
|
|
USHORT wIntInMaxPacket;
|
|
PVOID pIntInEndpointHandle;
|
|
|
|
USHORT wDTR_RTS;
|
|
|
|
} COMM_DEVICE_INFO;
|
|
|
|
typedef union _URB_MEMORY {
|
|
|
|
UCHAR ConfigDesc[CONFIG_DESC_SIZE];
|
|
USB_DEVICE_DESCRIPTOR DevDesc;
|
|
PUSB_INTERFACE_DESCRIPTOR InterDesc;
|
|
USB_COMM_LINE_CODING LineCoding;
|
|
|
|
} URB_MEMORY;
|
|
|
|
typedef struct _READ_BUFFER {
|
|
|
|
UCHAR buffer[MODEM_BUFFER_SIZE];
|
|
ULONG iCurrent;
|
|
ULONG cb;
|
|
PKEVENT pevent;
|
|
ULONG fReadPending : 1;
|
|
|
|
} READ_BUFFER;
|
|
|
|
// globals
|
|
extern USB_PNP_CLASS_DRIVER_DESCRIPTION gClassDescription;
|
|
extern USB_PNP_DEVICE_TYPE_DESCRIPTION gDeviceDescription;
|
|
|
|
extern PMDL gpMdl;
|
|
extern URB gUrb;
|
|
extern BOOL gfUrbInUse;
|
|
extern BOOL gfRemoved;
|
|
extern KIRQL gIrql;
|
|
|
|
extern PMDL gpMdlRead;
|
|
extern URB gUrbRead;
|
|
|
|
extern URB_MEMORY gMem;
|
|
|
|
extern COMM_DEVICE_INFO gDevice;
|
|
extern READ_BUFFER gRead;
|
|
|
|
// function declarations
|
|
BOOL Modem_IsConnected(VOID);
|
|
BOOL Modem_Create(VOID);
|
|
BOOL Modem_Close(VOID);
|
|
|
|
VOID Wait(PKEVENT pevent);
|
|
|
|
VOID CloseEndpoints(VOID);
|
|
BOOL OpenEndpoints(VOID);
|
|
VOID ConfigureDevice(IUsbDevice *pDevice);
|
|
|
|
VOID ReadWorker(VOID);
|
|
BOOL ReadData(PUCHAR buffer, ULONG *pcb);
|
|
BOOL WriteData(PUCHAR buffer, ULONG *pcb);
|
|
|
|
BOOL GetLineCoding(PULONG pBaudRate, PUCHAR pStopBits, PUCHAR pParity,
|
|
PUCHAR pDataBits);
|
|
BOOL SetLineCoding(ULONG BaudRate, UCHAR StopBits, UCHAR Parity,
|
|
UCHAR DataBits);
|
|
BOOL GetDtrRts(USHORT *pwState);
|
|
BOOL SetDtrRts(USHORT wState);
|
|
|
|
#endif // __MODEM_H__
|
|
|