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

📄 wmicallback.cpp

📁 Atheros Communications AR6001 WLAN Driver for SDIO installation Read Me March 26,2007 (based on
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	return;
}

extern "C" void
ar6000_bitrate_rx(
	void   *Context, 
	A_INT32 rateKbps)
{
    CAR6KMini *Adapter = (CAR6KMini *)Context;

	Adapter->WMIBitrateIndication(rateKbps);
}

extern "C" void
ar6000_channelList_rx(
	void     *Context, 
	A_INT8    numChan,
	A_UINT16 *chanList)
{
    CAR6KMini *Adapter = (CAR6KMini *)Context;

	Adapter->WMIChannelListIndication(chanList, numChan);
}

extern "C" void
ar6000_ready_event(
	void     *Context, 
	A_UINT8 *macAddr,
    A_UINT8 phyCap)
//
//  This function is called by WMI when the device sends
//  a WMI_READY packet. In addition to letting us know
//  that the device is ready to receive WMI requests,
//  it contains the MAC address of the device.
//
{
    CAR6KMini *Adapter = (CAR6KMini *)Context;

	Adapter->WMIReadyIndication(macAddr);
}

extern "C" A_UINT8
ar6000_iphdr_to_tos(A_UINT8 *pkt)
//
//  This function is called by WMI to extract the
//  type of service (TOS) field from an IP packet header.
//
{
	return 1;
}

extern "C" void
ar6000_connect_event(
	void     *Context,
	A_UINT16  channel,
	A_UINT8  *bssid,
	A_UINT16  listenInterval,
	A_UINT8   assocReqLen,
	A_UINT8   assocRespLen,
	A_UINT8  *assocInfo,
        A_UINT8   beaconIeLen)
//
//  This function is called by WMI after receiving a
//  WMI_CONNECT event packet from the device.
//
{
    CAR6KMini *Adapter = (CAR6KMini *)Context;

	NDIS_DEBUG_PRINTF(ATH_LOG_INF, "Connect EVENT from target\n");
	Adapter->WMIConnectIndication(channel, bssid, listenInterval, 
		                          assocReqLen, assocRespLen, 
                                          assocInfo, beaconIeLen);
}

extern "C" void
ar6000_disconnect_event(
	    void *Context,
        A_UINT8 reason,
        A_UINT8 *bssid, A_UINT8 assocRespLen,
        A_UINT8 *assocInfo)
//
//  This function is called by WMI after receiving a
//  WMI_DISCONNECT event packet from the device.
//
{
    CAR6KMini *Adapter = (CAR6KMini *)Context;

	NDIS_DEBUG_PRINTF(ATH_LOG_INF, "DisConnect EVENT from target\n");
	Adapter->WMIDisconnectIndication();
}

extern "C" A_STATUS
ar6000_control_tx(
	void     *Context,
	void     *osbuf, 
	int       endPt)
//
//  This function is called by WMI to send a control
//  packet to the device.
//
{
    CAR6KMini *Adapter = (CAR6KMini *)Context;

	return Adapter->WMISendControlPacket(osbuf, (HTC_ENDPOINT_ID)endPt);
}

extern "C" void
ar6000_dset_open_req(
    void *context,
    A_UINT32 id,
    A_UINT32 targHandle,
    A_UINT32 targReplyFn,
    A_UINT32 targReplyArg)
{
    CAR6KMini *Adapter = (CAR6KMini *)context;

    Adapter->WMIDsetOpenReq(id, targHandle, targReplyFn, targReplyArg);
}

extern "C" void
ar6000_dset_close(
    void *context,
    A_UINT32 access_cookie)
{
    return;
}

extern "C" void
ar6000_dset_data_req(
   void *context,
   A_UINT32 accessCookie,
   A_UINT32 offset,
   A_UINT32 length,
   A_UINT32 targBuf,
   A_UINT32 targReplyFn,
   A_UINT32 targReplyArg)
{
    CAR6KMini *Adapter = (CAR6KMini *)context;

    Adapter->WMIDsetDataReq(accessCookie, offset, length, targBuf, targReplyFn, targReplyArg);
}

extern "C" void
ar6000_scanComplete_event(
       void *context)
{
    return;
}

extern "C" void
ar6000_targetStats_event(
	   void *context, WMI_TARGET_STATS *pStats)
{
	CAR6KMini *Adapter = (CAR6KMini *)context;

	Adapter->WMITargetStatsEvent(pStats);

	return;
}

extern "C" void
ar6000_rssiThreshold_event(
       void *context)
{
	return;
}

extern "C" void
ar6000_reportError_event(
       void *context, WMI_TARGET_ERROR_VAL errorVal)
{
    char *errString[] = {
		"",
        "WMI_TARGET_PM_ERR_FAIL", //0x0001
        "WMI_TARGET_KEY_NOT_FOUND", //0x0002
		"",
        "WMI_TARGET_DECRYPTION_ERR", //0x0004
		"",
		"",
		"",
        "WMI_TARGET_BMISS", //0x0008
		"",
		"",
		"",
		"",
		"",
		"",
		"",
        "WMI_PSDISABLE_NODE_JOIN" //0x0010
};

    WMI_DEBUG_PRINTF(ATH_LOG_ERR,
		             "AR6000 Error on Target. Error = 0x%x\n", 
					 errorVal);

    /* One error is reported at a time, and errorval is a bitmask */
    if (errorVal & (errorVal - 1)) {
		return;
	}

    WMI_DEBUG_PRINTF(ATH_LOG_ERR, "AR6000 Error type = ");
    switch(errorVal) {
        case WMI_TARGET_PM_ERR_FAIL:
        case WMI_TARGET_KEY_NOT_FOUND:
        case WMI_TARGET_DECRYPTION_ERR:
        case WMI_TARGET_BMISS:
        case WMI_PSDISABLE_NODE_JOIN:
            WMI_DEBUG_PRINTF(ATH_LOG_ERR, "%s\n", errString[errorVal]);
            break;
        default:
            WMI_DEBUG_PRINTF(ATH_LOG_ERR, "INVALID\n");
            break;
    }
}

extern "C" void
ar6000_gpio_intr_rx(A_UINT32 intr_mask, A_UINT32 input_values)
{
	return;
}

extern "C" void
ar6000_gpio_data_rx(A_UINT32 reg_id, A_UINT32 value)
{
	return;
}

extern "C" void
ar6000_gpio_ack_rx(void)
{
	return;
}

extern "C" A_UINT8
ar6000_trafficclass(A_UINT8 *pktHdr, A_UINT32 ndisUserPriority)
{
    A_UINT8 trafficClass = WMM_AC_BE;
#ifdef WMM
    A_UINT16 pMode,vMode;
    A_UINT8 pClass,vClass;
    struct iphdr *ipHdr = (struct iphdr *)pktHdr;

    if(ipHdr) {
        switch(ipHdr->ip_tos) {
	        case 0x08:					/* Background */
		        pMode = WMM_AC_TO_TID(WMM_AC_BK);
		    	pClass = WMM_AC_BK;
		    	break;
	    	case 0x28:					/* Video */
	    	case 0x80:
	        case 0xa0:
		    	pMode = WMM_AC_TO_TID(WMM_AC_VI);
		    	pClass = WMM_AC_VI;
		    	break;
	        case 0x38:					/* Voice */
	        case 0xc0:
	        case 0xe0:
		        pMode = WMM_AC_TO_TID(WMM_AC_VO);
		    	pClass = WMM_AC_VO;
		        break;
	        case 0x00:
	        case 0x18:
	        default:					/* All others / Best Effort */
		    	pMode = WMM_AC_TO_TID(WMM_AC_BE);
		    	pClass = WMM_AC_BE;
        }
    } else {
        pMode = 0;
        pClass = WMM_AC_BE;
    }
    
    vMode = ndisUserPriority & 0x7;
    switch(vMode) {
	    case 0:
	    case 3:						/* Best Effort */
   	    	vClass = WMM_AC_BE;
	    	break;
	    case 1:
	    case 2:						/* Background */
 	    	vClass = WMM_AC_BK;
	    	break;
	    case 4:
	    case 5:						/* video */
            	vClass = WMM_AC_VI;
	    	break;
            case 6:
	    case 7:						/* Voice */
   	    	vClass = WMM_AC_VO;
	    	break;
    }
    trafficClass = (pMode > vMode) ? pClass : vClass;	
#endif //WMM
    return trafficClass;
}

extern "C" void 
ar6000_tkip_micerr_event(
        void *context,
        A_UINT8 keyid, 
        A_BOOL isMcast)
{
	CAR6KMini *Adapter = (CAR6KMini *)context;

	Adapter->WMIMicErrEvent(keyid, isMcast);
    return;
}

extern "C" void 
ar6000_set_numdataendpts(
        void *context, 
        A_UINT32 num) 
{
    CAR6KMini *Adapter = (CAR6KMini *)context;
    
    if (num <= (HTC_MAILBOX_NUM_MAX - 1)) {
		return;
	}
    Adapter->WMISetNumDataEndpts(num);
	return;
}

extern "C" void
ar6000_regDomain_event(
        void *context,
        A_UINT32 regCode)
{
    CAR6KMini *Adapter = (CAR6KMini *)context;

    Adapter->WMIRegDomainEvent(regCode);
	return;
}

extern "C" void
ar6000_neighborReport_event(
        void *context, 
        A_INT32 numAps, 
        WMI_NEIGHBOR_INFO *info)
{
	CAR6KMini *Adapter = (CAR6KMini *)context;

	Adapter->WMINeighborReportEvent(numAps, info);
	return;
}

extern "C" void
ar6000_txPwr_rx(
        void *context, 
        A_UINT8 txPwr)
{
    CAR6KMini *Adapter = (CAR6KMini *)context;

    Adapter->WMITxPwr(txPwr);
	return;
}

extern "C" A_UINT32
a_copy_from_user(void *to, void *from, A_UINT32 n)
{
    NdisMoveMemory(to, from, n);
	return 0;
}

extern "C" void
ar6000_roam_tbl_event( void *devt, WMI_TARGET_ROAM_TBL *roamTbl )
{
}

extern "C" void
ar6000_roam_data_event( void *devt, WMI_TARGET_ROAM_DATA *roamDat )
{
}

extern "C" void
ar6000_cac_event( void *devt, A_UINT8 ac, A_UINT8 cac_ind, 
                  A_UINT8 st, A_UINT8 *tspecSuggestion )
{
}

⌨️ 快捷键说明

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