windows-nt/Source/XPSP1/NT/drivers/smartcrd/gcr410p/gntser.h
2020-09-26 16:20:57 +08:00

167 lines
4 KiB
C

/*++
Copyright (c) 1998 Gemplus Development
Name:
GNTSER.H (Gemplus NT SERial management)
Description :
This module holds the prototypes of the functions from GNTSER.C
Revision History :
dd/mm/yy
13/03/98: V1.00.001 (GPZ)
- Start of development.
--*/
#ifndef _GNTSER_
#define _GNTSER_
//
// Constant section:
// - HGTSER_MAX_PORT holds the number of managed port. Today 4.
// - HGTSER_WORD_5, HGTSER_WORD_6, HGTSER_WORD_7 and HGTSER_WORD_8 allow to
// configure the number of bits per word.
// - HGTSER_STOP_BIT_1 and HGTSER_STOP_BIT_2 allow to configure the number of stop
// bit.
// - HGTSER_NO_PARITY, HGTSER_ODD_PARITY and HGTSER_EVEN_PARITY allow to configure
// the communication parity.
// - HGTSER_TX_QUEUE and HGTSER_RX_QUEUE are queues indentifiers.
// - HGTSER_RX_OVER is set when the reception queue is full and characters has
// been lost.
// - WTX_TIMEOUT is the time out used when a WTX REQUEST is send by the CT.
// - CHAR_TIMEOUT is the timeout at character level: today 1000 ms.
//
#define HGTSER_MAX_PORT 4
#define HGTSER_WORD_5 0x00
#define HGTSER_WORD_6 0x01
#define HGTSER_WORD_7 0x02
#define HGTSER_WORD_8 0x03
#define HGTSER_STOP_BIT_1 0x00
#define HGTSER_STOP_BIT_2 0x04
#define HGTSER_NO_PARITY 0x00
#define HGTSER_ODD_PARITY 0x08
#define HGTSER_EVEN_PARITY 0x18
#define HGTSER_TX_QUEUE 1
#define HGTSER_RX_QUEUE 2
#define HGTSER_RX_OVER 1
#define WTX_TIMEOUT 3000
#define CHAR_TIMEOUT 1000
//
// Type section:
// - TGTSER_PORT gathers data used to manage a serial port:
// * Port indicates the selected port.
// G_COM1, G_COM2, G_COM3 or G_COM4
// * BaudRate is used to set port baud rate when open routine is called.
// 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
// * Mode Memorises
// WORD size : 5, 6, 7 or 8
// stop bit number : 1 or 2
// parity : no parity, odd or even parity
// * TimeOut indicates the time out value, in milli-seconds, at character
// level.
// * TxSize is the transmit buffer size, in bytes.
// * RxSize is the reception buffer size, in bytes.
//
typedef struct
{
SHORT Port;
ULONG BaudRate;
USHORT Mode;
ULONG TimeOut;
USHORT TxSize;
USHORT RxSize;
void *pSmartcardExtension;
} TGTSER_PORT;
//
// Prototypes section:
//
NTSTATUS
GDDK_SerPortOpen(
const TGTSER_PORT *Param,
SHORT *Handle
);
NTSTATUS
GDDK_SerPortClose(
const SHORT Handle
);
NTSTATUS
GDDK_SerPortWrite(
const SHORT Handle,
const USHORT Length,
const BYTE Buffer[]
);
NTSTATUS
GDDK_SerPortRead(
const SHORT Handle,
USHORT *Length,
BYTE Buffer[]
);
NTSTATUS
GDDK_SerPortFlush(
const SHORT Handle,
const USHORT Select
);
NTSTATUS
GDDK_SerPortAddUser(
const SHORT Port,
SHORT *Handle
);
NTSTATUS
GDDK_SerPortGetState(
const SHORT Handle,
TGTSER_PORT *Param,
USHORT *UserNb
);
NTSTATUS
GDDK_SerPortSetState(
const SHORT Handle,
TGTSER_PORT *Param
);
BOOLEAN
GDDK_SerPortLockComm(
const SHORT Handle,
const DWORD WaitRelease
);
VOID
GDDK_SerPortUnlockComm(
const SHORT Handle
);
NTSTATUS
GDDKNT_SerPortIoRequest(
CONST SHORT Handle,
CONST ULONG SerialIoControlCode,
CONST ULONG CmdTimeout,
CONST USHORT LengthIn,
CONST BYTE *BufferIn,
USHORT *pLengthOut,
BYTE *BufferOut
);
NTSTATUS
GDDKNT_SetCommState(
const SHORT Handle,
SERIAL_READER_CONFIG *SerialConfig
);
NTSTATUS
GDDKNT_GetCommState(
const SHORT Handle,
SERIAL_READER_CONFIG *SerialConfig
);
NTSTATUS SER_SetPortTimeout( const short Handle, ULONG Timeout);
#endif