⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newdong.h

📁 网络驱动开发
💻 H
字号:
/*

// This header file describes the data structure for the Dongle
// Author  : Kishor Padmanabhan
// Company : National Semiconductor Corp.
// Date    : 10 Sept 1996

 * Portions Copyright (C) 1996-2001 National Semiconductor Corp.
 * All rights reserved.
 * Copyright (C) 1996-2001 Microsoft Corporation. All Rights Reserved.

*/


#include "defs.h"


#ifndef   DONGLE
#define   DONGLE

// This is the structure which descibes  Dongle capabilities
//
// This is a 12 word structure with bit fields defined by the specs to be soon
// published by Franco Iacobelli
// There is an extra field for the OEM differentiation.
//
typedef  struct Dingle
{
    union {
	UINT	 Data;
	struct
	{
	    UINT	   DSVFLAG:1;
	    UINT	   IADP:1;
	    UINT	   MVFLAG:1;
	    UINT	   Reserved:2;
	    UINT	   GCERR:3;
	    UINT	   NumPorts:2;
	    UINT	   TrcvrCode:5;
	    UINT	   Reserved2:1;
	} bits;
    } WORD0;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  CurSelMode;
	} bits;
    } WORD1;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  Reserved;
	} bits;
    } WORD2;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  LowPower:1;
	    UINT	  TxDefPwrLevel:3;
	    UINT	  RxDefSensitivity:3;
	    UINT	  CirDemod:1;
	    UINT	  Reserved:8;
	} bits;
    } WORD3;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  SirRxRecoveryTime:6;
	    UINT	  IrRecoveryTimeUnits:2;
	    UINT	  Reserved:8;
	} bits;
    } WORD4;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  Reserved;
	} bits;
    } WORD5;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  SirRxStability:8;
	    UINT	  Reserved:8;
	} bits;
    } WORD6;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  SIR:1;
	    UINT	  MIR:1;
	    UINT	  FIR:1;
	    UINT	  Sharp_IR:1;
	    UINT	  Reserved:8;
	    UINT	  CirOvrLowSpeed:1;
	    UINT	  CirOvrMedSpeed:1;
	    UINT	  CirOvrHiSpeed:1;
	} bits;
    } WORD7;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  Reserved:2;
	    UINT	  Cir30k:1;
	    UINT	  Cir31k:1;
	    UINT	  Cir32k:1;
	    UINT	  Cir33k:1;
	    UINT	  Cir34k:1;
	    UINT	  Cir35k:1;
	    UINT	  Cir36k:1;
	    UINT	  Cir37k:1;
	    UINT	  Cir38k:1;
	    UINT	  Cir39k:1;
	    UINT	  Cir40k:1;
	    UINT	  Cir41k:1;
	    UINT	  Cir42k:1;
	    UINT	  Cir43k:1;
	} bits;
    } WORD8;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  Cir44k:1;
	    UINT	  Cir45k:1;
	    UINT	  Cir46k:1;
	    UINT	  Cir47k:1;
	    UINT	  Cir48k:1;
	    UINT	  Cir49k:1;
	    UINT	  Cir50k:1;
	    UINT	  Cir51k:1;
	    UINT	  Cir52k:1;
	    UINT	  Cir53k:1;
	    UINT	  Cir54k:1;
	    UINT	  Cir55k:1;
	    UINT	  Cir56k:1;
	    UINT	  Cir57k:1;
	    UINT	  Reserved:3;
	} bits;
    } WORD9;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  Reserved:1;
	    UINT	  Cir450k:1;
	    UINT	  Cir480k:1;
	    UINT	  Reserved2:13;
	} bits;
    } WORD10;

    union {
	UINT	 Data;
	struct
	{
	    UINT	  Reserved;
	} bits ;
    } WORD11;

    UINT   PlugPlay; // Describes whether dongle is a plug and play or not


} DongleParam;	    // Assuming two ports

enum PwMode{NORMAl,LOWPOWER};


// The structure pre-requisite for calling the Get Capabilities
//
typedef struct
{
    char *  ComPort;	// Address of the com port
    UINT    Signature;	// Two byte value
    UINT    XcvrNum;	// Defaults to 0. In case, there are more than 1 port
    UINT    ModeReq;	// IR Mode request.
    enum    PwMode  Power;
} UIR;


// Error Codes
#define      XCVR_DISCONNECT	2
#define	     UNIMPLEMENTED	3


#define	     UNSUPPORTED	4
#define      ERROR_GETCAPAB     5


// Define Adapter code

#define 	PC87108 	0x0
#define 	PC87308 	0x1
#define 	PC87338 	0x2
#define 	PNPUIR		0x3
#define 	PC87560 	0x8
#define     PUMA108     0x4

//


// Define Dongle Manufactures Code
#define	 NoDongle     0x000F //No dongle connected - Not used anymore
#define  SirOnly      0x000E //SIR only dongle
#define	 PnpDong      0x8000 //Plug-n-Play dongle
#define  Hp1100	      0x000C //HP HSDL-1100/2100, TI TSLM1100, Sharp RY6FD11E/RY6FD1SE

#define  Hp2300	      0x0008 //HP HSDL_2300/3600
#define  Temic6000    0x0009 //TEMIC TFDS-6000, IBM31T1100, Siemens IRMS/T6400
#define  Temic6500    0x000B //TEMIC TFDS-6500
#define  SharpRY5HD01 0x0004 //SHARP RY5HD01/RY5KD01

#define  Dell1997     0x0010 //DELL Titanium (dual xcvr)
#define  Ibm20H2987   0x0011 //IBM SouthernCross (dual xcvr)

//
// Valid types of dongle, this has to be correlated with INF.
//
#define VALID_DONGLETYPES \
    {                     \
        SirOnly,          \
        Hp1100,           \
        Hp2300,           \
        Temic6000,        \
        SharpRY5HD01,     \
        Hp1100,           \
        Temic6000,        \
        Temic6500,        \
        Temic6000,        \
        Hp1100,           \
        Ibm20H2987,       \
        Dell1997          \
    }

// Bank Selection patterns for the register BSR
//
#ifdef NDIS50_MINIPORT

#define  BANK0	       0x0
#define  BANK1	       0x1
#define  BANK2	       0x2
#define  BANK3	       0x3
#define  BANK4	       0x4
#define  BANK5	       0x5
#define  BANK6	       0x6
#define  BANK7	       0x7
#define  ALL	       0x8
#else

#define  BANK0	       0x03
#define  BANK1	       0x80
#define  BANK2	       0xE0
#define  BANK3	       0xE4
#define  BANK4	       0xE8
#define  BANK5	       0xEC
#define  BANK6	       0xF0
#define  BANK7	       0xF4
#define  ALL	       0xFF
#endif

// Recovery and Stabilization table
//
#define   HpRecovery        (UINT)0x05
#define   TemicRecovery     (UINT)0x05
#define   SharpRecovery     (UINT)0x05
#define   HpBofs	    (UINT)8
#define   TemicBofs	    (UINT)8
#define   SharpBofs	    (UINT)12

typedef struct _SYNC_DONGLE {

    UIR * Com;
    DongleParam *Dingle;

} SYNC_DONGLE, *PSYNC_DONGLE;


// Putting all the stuff required for the dongle stuff in one place
DongleParam *GetDongleCapabilities(PSYNC_DONGLE SyncDongle);

int SetDongleCapabilities(PSYNC_DONGLE SyncDongle);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -