📄 irdahw.h
字号:
//**********************************************************************
//
// Filename: irdahw.h
//
// Description: contains the IRDA hardware class.
//
// 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) Cirrus Logic Corporation 2001, All Rights Reserved
//
//**********************************************************************
#ifndef _H_IRDAHW
#define _H_IRDAHW
enum IRDA_MODE
{
MODE_SIR,
MODE_MIR,
MODE_FIR
};
//
// 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;
typedef struct BAUDRATE_INFO * PBAUDRATE_INFO;
extern const BAUDRATE_INFO v_rgSupportedBaudRates[];
class IRMiniport;
void CompleteSentPacket
(
PNDIS_PACKET pNdisPacket,
NDIS_HANDLE hNdisAdapter,
NDIS_STATUS status
);
class IrdaHW
{
public:
IrdaHW();
~IrdaHW();
//
// Function to Initialize the IRDA Hardware.
//
NDIS_STATUS InitializeIrdaHW();
//
// Reset HW.
//
NDIS_STATUS ResetHW();
//
// Functions to Get and set the baud rate.
//
NDIS_STATUS SetHWBaudRate( ULONG ulBaudRate);
NDIS_STATUS BaudRateSupported(ULONG ulBaudRate);
ULONG GetCurrentBaudRate() { return m_ulBaudRate; }
//
// Set Iir to Recieve or transmit. Only used for MIR or FIR.
//
void IirTransmit( );
void IirRecieve( );
void IirSuspend();
//
// Get the current IRDA mode.
//
IRDA_MODE GetIRDAMode() { return (eIrdaMode);}
//
// Function to Return stats.
//
ULONG RxPackets() { return m_SirState.PacketsRecieved();}
ULONG RxPacketsDropped() { return m_SirState.PacketsDropped(); }
ULONG RxPacketsOverflowed() { return m_SirState.PacketsOverflowed(); }
ULONG TxPackets() { return m_ulPacketsTx; }
ULONG TxPacketsDropped() { return m_ulPacketsTxDropped;}
void ClearStatistics();
//
// Is a packet currently being sent
//
//BOOL MiddleOfSentPacket(){return(m_pCurrentSentNDisPacket?TRUE:FALSE) ;}
//
// Interrupt Handler.
//
friend DWORD WINAPI SIRInterruptHandler(LPVOID Handle);
protected:
//
// Information about the current NDIS packet being sent.
//
PNDIS_PACKET m_pSIRTransmitNDisPacket;
UCHAR * m_pSendBuf;
ULONG m_ulSendCurPos;
ULONG m_ulSendBufSize;
//
// Since all of the members are private, this is somewhat safe.
//
ReceivedSirState m_SirState;
//
// Current mode.
//
IRDA_MODE eIrdaMode;
//
// Sir interrupt thread and events.
//
HANDLE m_hSirEvent;
HANDLE m_hSirInterruptThread;
//
// Current Baud rate.
//
ULONG m_ulBaudRate;
//
// This class holds the SIR recieve state machine.
//
BOOL m_bSirExiting;
//
// This flags when set tells us to add bofs.
// A change from receiving to sending packets has occured.
//
BOOL m_fMinTATRequired;
//
// Packets Stats.
//
ULONG m_ulPacketsTxDropped;
ULONG m_ulPacketsTx;
};
#endif // _H_IRDAHW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -