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

📄 irfir.h

📁 freescale i.mx31 BSP CE5.0全部源码
💻 H
字号:
//------------------------------------------------------------------------------
//
//  Copyright (C) 2004, Motorola Inc. All Rights Reserved
//
//------------------------------------------------------------------------------
//
//  Copyright (C) 2004, 2006 Freescale Semiconductor, Inc. All Rights Reserved
//  THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
//  BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
//  FREESCALE SEMICONDUCTOR, INC.
//
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//
//  File:  irfir.h
//
//   Header file for zeus FIR device.
//
//------------------------------------------------------------------------------

#ifndef __IRFIR_H__
#define __IRFIR_H__

#include <windows.h>
#include <Winbase.h>
#include <nkintr.h>
#include <ndis.h>
#include <ntddndis.h>  // defines OID's
#include <Linklist.h>
#include "mxarm11.h"
#include "settings.h"
#include "sir.h"

#ifdef __cplusplus
extern "C" {
#endif

//------------------------------------------------------------------------------
// Defines

#ifdef DEBUG
#define ZONE_INIT       DEBUGZONE(0)
#define ZONE_DEINIT        DEBUGZONE(1)
#define ZONE_RECV       DEBUGZONE(2)
#define ZONE_SEND       DEBUGZONE(3)
#define ZONE_SETINFO    DEBUGZONE(4)
#define ZONE_QUERYINFO  DEBUGZONE(5)
#define ZONE_THREAD     DEBUGZONE(6)
#define ZONE_OPEN   DEBUGZONE(7)
#define ZONE_CLOSE    DEBUGZONE(8)
#define ZONE_COMMMASK   DEBUGZONE(9)
#define ZONE_MISC       DEBUGZONE(11)
#define ZONE_ALLOC      DEBUGZONE(12)
#define ZONE_FUNCTION   DEBUGZONE(13)
#define ZONE_WARN       DEBUGZONE(14)
#define ZONE_ERROR      DEBUGZONE(15)
#endif

#define NDIS_MAJOR_VERSION 5
#define NDIS_MINOR_VERSION 0
#define HEAD_SEND_PACKET(dev)    (PNDIS_PACKET) (IsListEmpty(&(dev)->SendQueue) ? NULL :    \
                                                        CONTAINING_RECORD((dev)->SendQueue.Flink, NDIS_PACKET, MiniportReserved))

__inline TCHAR * DBG_NDIS_RESULT_STR(NDIS_STATUS status)
{
    switch (status)
    {
        case NDIS_STATUS_SUCCESS:
            return (TEXT("NDIS_STATUS_SUCCESS"));
        case NDIS_STATUS_FAILURE:
            return (TEXT("NDIS_STATUS_FAILURE"));
        case NDIS_STATUS_PENDING:
            return (TEXT("NDIS_STATUS_PENDING"));
        case NDIS_STATUS_RESOURCES:
            return (TEXT("NDIS_STATUS_RESOURCES"));
    }
    return (TEXT("NDIS_STATUS_???"));
}


//------------------------------------------------------------------------------
// Types

typedef enum rcvbufferStates {
    STATE_FREE,
    STATE_FULL,
    STATE_PENDING
} rcvBufferState_c;

typedef	enum {
	ADAPTER_NONE=0,
	ADAPTER_TX,
	ADAPTER_RX
} adapterState_c;

typedef struct {
    LIST_ENTRY listEntry;
    rcvBufferState_c state;
    PNDIS_PACKET packet;
    UINT dataLen;
    PUCHAR dataBuf;
} rcvBuffer, *pRcvBuffer_t;

struct FirDevice;

typedef struct _HW_IR_VTBL{
	BOOLEAN        (*m_pInitialize)(FirDevice *thisDev);
	VOID        (*m_pDeInitialize)(FirDevice *thisDev);
	BOOLEAN        (*m_pAcquireAdapterResources)(FirDevice *thisDev);
	VOID        (*m_pReleaseAdapterResources)(FirDevice *thisDev);
	VOID        (*m_pEnableInterrupt)(FirDevice *thisDev);
	VOID        (*m_pDisableInterrupt)(FirDevice *thisDev);
	NDIS_STATUS        (*m_pDelayedSendPacket)(FirDevice *thisDev, BOOLEAN firstBufIsPending);
	NDIS_STATUS        (*m_pSendPacket)(FirDevice *thisDev, PNDIS_PACKET Packet);
	VOID        (*m_pSetupRecv)(FirDevice *thisDev);
	VOID        (*m_pInterruptHandler)(FirDevice *thisDev);
	baudRates   (*m_pSetupSpeed)(FirDevice *thisDev);
}_HW_IR_VTBL, *PHW_IR_VTBL;

typedef struct FirDevice
{
    NDIS_HANDLE ndisAdapterHandle;
    NDIS_SPIN_LOCK Lock;
    BOOLEAN resourcesReleased;

    NDIS_MINIPORT_INTERRUPT FirinterruptObj;
	NDIS_MINIPORT_INTERRUPT SirinterruptObj;
    DWORD sysIntrFir;
    DWORD sysIntrSir;

    NDIS_MINIPORT_TIMER TurnaroundTimer;
    BOOLEAN HangChk;
    baudRateInfo *linkSpeedInfo;
    UINT newSpeed;
    BOOLEAN mediaBusy;

    PUCHAR readBuf;    // Specially for FIR receiving buf
	PUCHAR writeBuf;

	BOOLEAN	writePending;

   	BOOLEAN	nowReceiving;
	adapterState_c AdapterState;


    NDIS_HANDLE packetPoolHandle;
    NDIS_HANDLE bufferPoolHandle;

    LIST_ENTRY SendQueue;

    UINT writeBufLen;

    ULONG FirPhyAddr;
    ULONG SirPhyAddr;

    LIST_ENTRY rcvBufBuf;    // Protected by SyncWithInterrupt, specially used for SIR
    LIST_ENTRY rcvBufFree;    // Protected by SyncWithInterrupt
    LIST_ENTRY rcvBufFull;    // Protected by SyncWithInterrupt
    LIST_ENTRY rcvBufPend;    // Protected by QueueLock

    PNDIS_PACKET lastPacketAtOldSpeed;
    BOOLEAN setSpeedAfterCurrentSendPacket;

    ULONG rcvOffset;

    SirPort_t portInfo;
    PHW_IR_VTBL IR_VTbl;

    struct FirDevice *next;
} FirDevice_t, *pFirDevice_t;


//------------------------------------------------------------------------------
// Functions

#include "externs.h"

#ifdef __cplusplus
}
#endif

#endif // __IRFIR_H__

⌨️ 快捷键说明

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