Beispiel #1
0
/**
 * \brief Registers TWD Module Callbacks
 *
 * \param  hTWD         - TWD module object handle
 * \param  uCallBackID  - Registered Callback ID
 * \param  fCb 	        - Pointer to Input Registered CB function
 * \param  hCb 	        - Handle to Input Registered CB parameters
 * \return void
 *
 * \par Description
 * Static CB function
 * This CB Registers TWD CB functions for future use:
 * CB which handles failure to the CMD Queue, MAC Service and TwIf
 * CB which handles Command Complete for the CMD Queue
 * Called by TWD_RegisterCb
 *
 * \sa TWD_RegisterCb
 */
static void TWD_RegisterOwnCb (TI_HANDLE hTWD, TI_UINT32 uCallBackID, void *fCb, TI_HANDLE hCb)
{
    TTwd *pTWD = (TTwd *)hTWD;


    switch (uCallBackID)
    {
    case TWD_INT_EVENT_FAILURE:
        /* Save Health-Moitor callback */
        pTWD->fFailureEventCb = (TFailureEventCb)fCb;
        pTWD->hFailureEventCb = hCb;

        /* Register For Error Of Mailbox in case of timeout */
        cmdQueue_RegisterForErrorCb (pTWD->hCmdQueue, (void *)TWD_CheckMailboxCb, hTWD);

        /* Forward the Health-Moitor callback to the MAC-Services modules */
        MacServices_registerFailureEventCB(pTWD->hMacServices, fCb, hCb);

        /* Forward the Health-Moitor callback to the TwIf for bus errors */
        twIf_RegisterErrCb (pTWD->hTwIf, fCb, hCb);

        /* Forward the Health-Moitor callback to the RxXfer for Rx packet errors */
        rxXfer_RegisterErrCb (pTWD->hRxXfer, fCb, hCb);
        break;

    case TWD_INT_COMMAND_COMPLETE:
        cmdQueue_RegisterCmdCompleteGenericCb (pTWD->hCmdQueue, fCb, hCb);
        break;

    default:
    {}
    }
}
/*                      TNETW_Driver_Register_CB()
 ****************************************************************************
 * DESCRIPTION: Register the MAC Services and the HAL modules callbacks
 *
 * INPUTS:  
 *
 * OUTPUT:
 *
 * RETURNS: 
 ****************************************************************************/
void TnetwDrv_Register_CB (TI_HANDLE hTnetwDrv,tiUINT32 EventID,void *CBFunc, void *pData)
{

    TnetwDrv_t * pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;

    WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG, ("TnetwDrv_Register_CB (Value = 0x%x)\n", EventID));

    /* First detect which module is the owner */
    switch((tiUINT16)(EventID & TNETW_DRIVER_CB_MODULE_OWNER_MASK))
    {

    case  TNETW_DRIVER_TX_XFER_OWNER:
        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_TX_XFER_OWNER\n"));
        txXfer_RegisterCB(pTnetwDrv->hTxXfer, EventID, CBFunc, pData);
        break;

    case  TNETW_DRIVER_TX_RESULT_OWNER:
        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_TX_RESULT_OWNER\n"));
        txResult_RegisterCB(pTnetwDrv->hTxResult, EventID, CBFunc, pData);
        break;

    case TNETW_DRIVER_RX_XFER_OWNER:
        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_RX_XFER_OWNER\n"));
        rxXfer_Register_CB(pTnetwDrv->hRxXfer, EventID,CBFunc,pData);
        break;

    case TNETW_DRIVER_HAL_CTRL_OWNER:
        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
        whalCtrl_Register_CB(pTnetwDrv->hHalCtrl, EventID,CBFunc,pData);
        break;
 
    case TNETW_DRIVER_MAC_SERVICES_OWNER:
        switch (EventID & TNETW_DRIVER_CB_TYPE_MASK)
        {
        case HAL_EVENT_SCAN_CMPLT:
            MacServices_scanSRV_registerScanCompleteCB(pTnetwDrv->hMacServices, (scan_srvCompleteCB_t)CBFunc, pData);
            break;
        default:
            WLAN_REPORT_WARNING(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TNETW_DRIVER_MAC_SERVICES_OWNER - Illegal value\n"));        
        }
        break;

    case TNETW_DRIVER_TWD_OWNER:    
        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_TWD_OWNER\n"));
        pTnetwDrv->fConfigureCmplteteCB  = (TnetDrv_callback_t)CBFunc;
        pTnetwDrv->hConfigureCompleteOBj = (TI_HANDLE)pData;    
        break;

    default:
        if (EventID == HAL_INTERNAL_EVENT_FAILURE)
        {


            /* register the Hal failure event callback  including the RX
                 in the Hal Cttl the errors are :   
                MBOX_FAILURE,
                    BUS_ERROR,
                DEVICE_ERROR,
                DISCONNECT_TIMEOUT,*/
                
                
            
            EventID &= TNETW_DRIVER_CB_TYPE_MASK;
            whalCtrl_Register_CB(pTnetwDrv->hHalCtrl, EventID,CBFunc,pData);

            /* register the Elp controller failure event callback to the TNET interface
                HW_AWAKE_FAILURE*/
            TNETWIF_RegisterFailureEventCB(pTnetwDrv->hTNETWIF,CBFunc,pData);
            
            /* register the Mac services failure events callbacks 
                POWER_SAVE_FAILURE,
                MEASUREMENT_FAILURE,
                NO_SCAN_COMPLETE_FAILURE,*/
            MacServices_registerFailureEventCB(pTnetwDrv->hMacServices, CBFunc, pData);


            /* register the TX failure call back in the  Xfer
                TX_STUCK,*/
            txXfer_RegisterFailureEventCB(pTnetwDrv->hTxXfer, CBFunc, pData);
            
            
        }
        else
        WLAN_REPORT_WARNING(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB - Illegal value\n"));       

    }
    return;
}