www.pudn.com > CEWifiDriverAR6000-21374.zip > htc.h


//------------------------------------------------------------------------------ 
//  
//    Copyright (c) 2006 Microsoft Corporation.  All rights reserved. 
//    Copyright (c) 2006 Atheros Corporation.  All rights reserved. 
// 
//    The use and distribution terms for this software are covered by the 
//    Microsoft Limited Permissive License (Ms-LPL)  
//    http://www.microsoft.com/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx  
//    which can be found in the file MS-LPL.txt at the root of this distribution. 
//    By using this software in any fashion, you are agreeing to be bound by 
//    the terms of this license. 
// 
//    The software is licensed “as-is.”  
//    You must not remove this notice, or any other, from this software. 
//  
//  
//  
//    Windows CE Wifi Driver for AR-6000 
//  
//------------------------------------------------------------------------------ 
//============================================================================== 
// HTC Module specific declarations and prototypes 
// 
// Author(s): ="Atheros" 
//============================================================================== 
 
 
#ifndef _HTC_H_ 
#define _HTC_H_ 
 
#ifdef __cplusplus 
extern "C" { 
#endif /* __cplusplus */ 
 
/* ------ MBOX ID ------ */ 
typedef enum 
{ 
    ENDPOINT_UNUSED = -1, 
    ENDPOINT1 = 0, 
    ENDPOINT2, 
    ENDPOINT3, 
    ENDPOINT4, 
} HTC_ENDPOINT_ID; 
 
/* ------ Event Types ------ */ 
typedef enum 
{ 
    HTC_BUFFER_RECEIVED = 0, 
    HTC_SKB_RECEIVED, 
    HTC_BUFFER_SENT, 
    HTC_SKB_SENT, 
    HTC_DATA_AVAILABLE, 
    HTC_TARGET_AVAILABLE, 
    HTC_TARGET_UNAVAILABLE, 
} HTC_EVENT_ID; 
 
#define HTC_MAILBOX_NUM_MAX                4 
#define HTC_HEADER_LEN                     2 
#define HTC_DATA_REQUEST_RING_BUFFER_SIZE  30  
 
/* ------- Target Specific Data structures ------- */ 
typedef struct htc_target HTC_TARGET; 
 
/* ------- Event Specific Data Structures ------- */ 
typedef struct htc_event_info HTC_EVENT_INFO; 
typedef void   (*HTC_EVENT_HANDLER) (HTC_TARGET *,  
                                     HTC_ENDPOINT_ID,  
                                     HTC_EVENT_ID,  
                                     HTC_EVENT_INFO *,  
                                     void *); 
 
/* WMI layer extracts the relevant information from this data structure */ 
struct htc_event_info 
{ 
    A_UCHAR             *buffer; 
    void                *cookie; 
    A_UINT32             bufferLength; 
    A_UINT32             actualLength; 
    A_STATUS             status; 
}; 
 
/* ------ Function Prototypes ------ */ 
A_STATUS 
HTCInit(void); 
 
A_STATUS 
HTCStart(HTC_TARGET *target); 
/* target - IN */ 
 
A_STATUS  
HTCEventReg(HTC_TARGET *target, HTC_ENDPOINT_ID endPointId,  
            HTC_EVENT_ID eventId, HTC_EVENT_HANDLER eventHandler,  
            void *param); 
/* target - IN, endPointId - IN, eventId - IN, eventHandler - IN, param - IN */ 
 
A_STATUS  
HTCBufferReceive(HTC_TARGET *target, HTC_ENDPOINT_ID endPointId,  
                 A_UCHAR *buffer, A_UINT32 length, void *cookie); 
/* target - IN, endPointId - IN, buffer - IN, length - IN, cookie - IN */ 
 
#if 0 
A_STATUS  
HTCSkbReceive(HTC_TARGET *target, HTC_ENDPOINT_ID endPointId,  
              struct sk_buff *skb, void *cookie); 
#endif 
 
A_STATUS  
HTCBufferSend(HTC_TARGET *target, HTC_ENDPOINT_ID endPointId,  
              A_UCHAR *buffer, A_UINT32 length, void *cookie); 
/* target - IN, endPointId - IN, buffer - IN, length - IN, cookie - IN */ 
 
#if 0 
A_STATUS  
HTCSkbSend(HTC_TARGET *target, HTC_ENDPOINT_ID endPointId,  
           struct sk_buff *skb, void *cookie); 
#endif 
 
void 
HTCStop(HTC_TARGET *target); 
/* target - IN */ 
 
void 
HTCShutDown(HTC_TARGET *target); 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif /* _HTC_H_ */