📄 dongle.h
字号:
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995-1998 Microsoft Corporation
Module Name:
dongle.h
Abstract:
This file implements the IrDA Serial IR NDIS MAC driver standard UART
init, deinit and set speed functions as well as standard dongle
definitions and data types to control the dongles. This is provided
as a sample to platform writers and is
expected to be able to be used without modification on most (if not
all) hardware platforms.
Functions:
StdUartInit
StdUardDeinit
StdUartSetSpeed
Notes:
--*/
#ifndef _DONGLE_H_
#define _DONGLE_H_
//
// Dongles may have minor differences which require special treatment.
// We will get the dongle type from the registry so that we can support
// each dongle type. We create a dongle interface so that the driver
// really doesn't have to differentiate between dongles, except in the
// initialization code.
//
//
// IR_TRANSCEIVER_TYPE - Enumerates the types of known dongles.
// NUM_IR_TRANCEIVER_TYPES is the number of know
// dongles.
//
typedef enum _IR_TRANSCEIVER_TYPE
{
STANDARD_UART = 0,
ESI_9680,
NUM_IR_TRANSCEIVER_TYPES
} IR_TRANSCEIVER_TYPE;
//
// IRDA speed masks.
//
#define NDIS_IRDA_SPEED_2400 (1 << 0) // Slow IR...
#define NDIS_IRDA_SPEED_9600 (1 << 1)
#define NDIS_IRDA_SPEED_19200 (1 << 2)
#define NDIS_IRDA_SPEED_38400 (1 << 3)
#define NDIS_IRDA_SPEED_57600 (1 << 4)
#define NDIS_IRDA_SPEED_115200 (1 << 5)
#define NDIS_IRDA_SPEED_576K (1 << 6) // Medium IR...
#define NDIS_IRDA_SPEED_1152K (1 << 7)
#define NDIS_IRDA_SPEED_4M (1 << 8) // Fast IR...
#define ALL_SLOW_IRDA_SPEEDS ( NDIS_IRDA_SPEED_2400 | \
NDIS_IRDA_SPEED_9600 | \
NDIS_IRDA_SPEED_19200 | \
NDIS_IRDA_SPEED_38400 | \
NDIS_IRDA_SPEED_57600 | \
NDIS_IRDA_SPEED_115200 | \
NDIS_IRDA_SPEED_576K | \
NDIS_IRDA_SPEED_1152K | \
NDIS_IRDA_SPEED_4M \
)
//
// BAUDRATES - Enumeration of baud rates to index into array.
// NUM_BAUDRATES is the number of rates in the array.
//
typedef enum _BAUDRATES
{
BAUDRATE_2400 = 0,
BAUDRATE_9600,
BAUDRATE_19200,
BAUDRATE_38400,
BAUDRATE_57600,
BAUDRATE_115200,
BAUDRATE_576K,
BAUDRATE_1152K,
BAUDRATE_4M,
NUM_BAUDRATES
} BAUDRATES;
//
// BAUDRATE_INFO - Struct for array to maintain supported baud rates.
//
typedef struct _BAUDRATE_INFO
{
DWORD dwBPS;
DWORD dwSpeedMask; // NDIS_IRDA_SPEED_Xxx mask.
DWORD dwCommSpeedMask; // Speed mask from GetCommProperties.
#ifdef DEBUG
TCHAR *lpszDbgSpeed;
#endif
} BAUDRATE_INFO, *PBAUDRATE_INFO;
extern const BAUDRATE_INFO v_rgSupportedBaudRates[NUM_BAUDRATES];
//
// DONGLE_CAPS - Supported dongle capabilities.
//
typedef struct _DONGLE_CAPS
{
// Speed mask. NDIS_IRDA_SPEED_*
DWORD dwSpeedMask;
// TAT in usec that must transpire between transmit and receive.
DWORD dwTAT_usec;
// Extra BOFs required at beginning of each frame.
DWORD dwExtraBOFs;
} DONGLE_CAPS, *PDONGLE_CAPS;
//
// IRSIR_INIT_HANDLER - Function prototype for dongle init interface.
// IRSIR_DEINIT_HANDLER - Function prototype for dongle deinit interface.
// IRSIR_SETSPEED_HANDLER - Function prototype for dongle setspeed interface.
//
typedef
NDIS_STATUS (*IRSIR_INIT_HANDLER)(
IN HANDLE hSerialDevObj
);
typedef
NDIS_STATUS (*IRSIR_DEINIT_HANDLER)(
IN HANDLE hSerialDevObj
);
typedef
NDIS_STATUS (*IRSIR_SETSPEED_HANDLER)(
IN HANDLE hSerialDevObj,
IN OUT DCB *pDcb,
IN DWORD dwNewSpeed
);
typedef
NDIS_STATUS (*IRSIR_GETCAPS_HANDLER)(
OUT PDONGLE_CAPS pDongleCaps
);
//
// DONGLE_INTERFACE - Encapsulates all dongle interface functions.
//
typedef struct _DONGLE_INTERFACE
{
IRSIR_INIT_HANDLER Initialize;
IRSIR_SETSPEED_HANDLER SetSpeed;
IRSIR_GETCAPS_HANDLER GetCaps;
IRSIR_DEINIT_HANDLER Deinitialize;
} DONGLE_INTERFACE, *PDONGLE_INTERFACE;
#endif // _DONGLE_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -