167 lines
4 KiB
C
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
|