164064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 264064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 364064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 464064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 564064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved. |** 664064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 764064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without |** 864064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions |** 964064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met: |** 1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1164064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions of source code must retain the above copyright |** 1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer. |** 1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions in binary form must reproduce the above copyright |** 1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer in |** 1564064216a8433360745f69edddce19a606659163The Android Open Source Project**| the documentation and/or other materials provided with the |** 1664064216a8433360745f69edddce19a606659163The Android Open Source Project**| distribution. |** 1764064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Neither the name Texas Instruments nor the names of its |** 1864064216a8433360745f69edddce19a606659163The Android Open Source Project**| contributors may be used to endorse or promote products derived |** 1964064216a8433360745f69edddce19a606659163The Android Open Source Project**| from this software without specific prior written permission. |** 2064064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 2164064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 3364064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 3464064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/ 3564064216a8433360745f69edddce19a606659163The Android Open Source Project 3664064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 3764064216a8433360745f69edddce19a606659163The Android Open Source Project * 3864064216a8433360745f69edddce19a606659163The Android Open Source Project * MODULE: EventMbox.c : event Mail Box 3964064216a8433360745f69edddce19a606659163The Android Open Source Project * PURPOSE: Handle any event interrupt from the FW 4064064216a8433360745f69edddce19a606659163The Android Open Source Project * 4164064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 4264064216a8433360745f69edddce19a606659163The Android Open Source Project 4364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "commonTypes.h" 4464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "FwEvent_api.h" 4564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "whalBus_Api.h" 4664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "eventMbox_api.h" 4764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "whalCtrl_api.h" 4864064216a8433360745f69edddce19a606659163The Android Open Source Project#include "TNETWIF.h" 4964064216a8433360745f69edddce19a606659163The Android Open Source Project 5064064216a8433360745f69edddce19a606659163The Android Open Source Project 5164064216a8433360745f69edddce19a606659163The Android Open Source Project/******************************************************************************* 5264064216a8433360745f69edddce19a606659163The Android Open Source Project * 5364064216a8433360745f69edddce19a606659163The Android Open Source Project * Macros 5464064216a8433360745f69edddce19a606659163The Android Open Source Project * 5564064216a8433360745f69edddce19a606659163The Android Open Source Project *******************************************************************************/ 5664064216a8433360745f69edddce19a606659163The Android Open Source Project#define IS_EVENT_BIT_ON(EvVector,EvBit) ( (EvBit) == ( (EvVector) & (EvBit) ) ) 5764064216a8433360745f69edddce19a606659163The Android Open Source Project#define IS_EVENT_BIT_OFF(EvVector,EvBit) ( ~(EvBit) == ( (EvVector) | ~(EvBit) ) ) 5864064216a8433360745f69edddce19a606659163The Android Open Source Project 5964064216a8433360745f69edddce19a606659163The Android Open Source Project#define SET_EVENT_BIT(EvVector,EvBit) ( (EvVector) |= (EvBit) ) 6064064216a8433360745f69edddce19a606659163The Android Open Source Project#define CLEAR_EVENT_BIT(EvVector,EvBit) ( (EvVector) &= ~(EvBit) ) 6164064216a8433360745f69edddce19a606659163The Android Open Source Project 6264064216a8433360745f69edddce19a606659163The Android Open Source Project#define EVENT_REPORT_SIZE 80 6364064216a8433360745f69edddce19a606659163The Android Open Source Project 6464064216a8433360745f69edddce19a606659163The Android Open Source Project#define EVMBX_DBG 1 6564064216a8433360745f69edddce19a606659163The Android Open Source Project 6664064216a8433360745f69edddce19a606659163The Android Open Source Project 6764064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************** 6864064216a8433360745f69edddce19a606659163The Android Open Source Project ** Enumerations ** 6964064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/ 7064064216a8433360745f69edddce19a606659163The Android Open Source Project 7164064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum 7264064216a8433360745f69edddce19a606659163The Android Open Source Project{ 7364064216a8433360745f69edddce19a606659163The Android Open Source Project EVENT_MBOX_STATE_IDLE, 7464064216a8433360745f69edddce19a606659163The Android Open Source Project EVENT_MBOX_STATE_READ_BUF, 7564064216a8433360745f69edddce19a606659163The Android Open Source Project EVENT_MBOX_STATE_ACK_EVENT 7664064216a8433360745f69edddce19a606659163The Android Open Source Project} EventMboxState_e; 7764064216a8433360745f69edddce19a606659163The Android Open Source Project 7864064216a8433360745f69edddce19a606659163The Android Open Source Project 7964064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************** 8064064216a8433360745f69edddce19a606659163The Android Open Source Project ** Structures ** 8164064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/ 8264064216a8433360745f69edddce19a606659163The Android Open Source Project 8364064216a8433360745f69edddce19a606659163The Android Open Source Project/* 8464064216a8433360745f69edddce19a606659163The Android Open Source Project * Definition for the Event Table 8564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 8664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct 8764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 8864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event bit mask */ 8964064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 bitMask; 9064064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event trace string */ 9164064216a8433360745f69edddce19a606659163The Android Open Source Project char* str; 9264064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event data length */ 9364064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 dataLen; 9464064216a8433360745f69edddce19a606659163The Android Open Source Project} EventEntry_t; 9564064216a8433360745f69edddce19a606659163The Android Open Source Project 9664064216a8433360745f69edddce19a606659163The Android Open Source Project 9764064216a8433360745f69edddce19a606659163The Android Open Source Project/* 9864064216a8433360745f69edddce19a606659163The Android Open Source Project * Event callback structure 9964064216a8433360745f69edddce19a606659163The Android Open Source Project */ 10064064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct 10164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 10264064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event callback function */ 10364064216a8433360745f69edddce19a606659163The Android Open Source Project void* fCb; 10464064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event callback module handle */ 10564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hCb; 10664064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event data offset */ 10764064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8* pDataOffs; 10864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event callback counter */ 10964064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 uCount; 11064064216a8433360745f69edddce19a606659163The Android Open Source Project} EventCB_t; 11164064216a8433360745f69edddce19a606659163The Android Open Source Project 11264064216a8433360745f69edddce19a606659163The Android Open Source Project 11364064216a8433360745f69edddce19a606659163The Android Open Source Project/* 11464064216a8433360745f69edddce19a606659163The Android Open Source Project * Event Mailbox object 11564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 11664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct 11764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 11864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Offset for event A (0) or event B (1) */ 11964064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 offset[2]; 12064064216a8433360745f69edddce19a606659163The Android Open Source Project /* 0 or 1 according to event A or B */ 12164064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 currentEvent; 12264064216a8433360745f69edddce19a606659163The Android Open Source Project /* Event mail box state machine state */ 12364064216a8433360745f69edddce19a606659163The Android Open Source Project EventMboxState_e state; 12464064216a8433360745f69edddce19a606659163The Android Open Source Project /* Return value */ 12564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS returnValue; 12664064216a8433360745f69edddce19a606659163The Android Open Source Project /* Init complete flag */ 12764064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL bInitComplete; 12864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Indicate if we are in synchronous bus or not */ 12964064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL bSync; 13064064216a8433360745f69edddce19a606659163The Android Open Source Project /* Callback table */ 13164064216a8433360745f69edddce19a606659163The Android Open Source Project EventCB_t cbTable[MAX_NUM_OF_EVENT]; 13264064216a8433360745f69edddce19a606659163The Android Open Source Project /* Use a struct to read buffers from the bus - used for extra bytes reserving */ 13364064216a8433360745f69edddce19a606659163The Android Open Source Project PADDING (EventMailBox_t CompoundEvent) 13464064216a8433360745f69edddce19a606659163The Android Open Source Project 13564064216a8433360745f69edddce19a606659163The Android Open Source Project /* Handles */ 13664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hFwEvent; 13764064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hTNETWIF; 13864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hOs; 13964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hReport; 14064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hWhalCtrl; 14164064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG 14264064216a8433360745f69edddce19a606659163The Android Open Source Project /* Count the compound event */ 14364064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 uCompounEvCount; 14464064216a8433360745f69edddce19a606659163The Android Open Source Project /* Count the total number of event sending in the compound */ 14564064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 uTotalEvCount; 14664064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */ 14764064216a8433360745f69edddce19a606659163The Android Open Source Project 14864064216a8433360745f69edddce19a606659163The Android Open Source Project TNETWIF_callback_t fCb; 14964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hCb; 15064064216a8433360745f69edddce19a606659163The Android Open Source Project} EventMbox_t; 15164064216a8433360745f69edddce19a606659163The Android Open Source Project 15264064216a8433360745f69edddce19a606659163The Android Open Source Project/********************************************************************************/ 15364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Internal functions prototypes. */ 15464064216a8433360745f69edddce19a606659163The Android Open Source Project/********************************************************************************/ 15564064216a8433360745f69edddce19a606659163The Android Open Source Project 15664064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void eventMbox_HandleEvent (TI_HANDLE hEventMbox); 15764064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void eventMbox_StateMachine (TI_HANDLE hEventMbox, UINT8 module_id, TI_STATUS status); 15864064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void eventMbox_InitCbTable (TI_HANDLE hEventMbox); 15964064216a8433360745f69edddce19a606659163The Android Open Source Project 16064064216a8433360745f69edddce19a606659163The Android Open Source Project 16164064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic const EventEntry_t eventTable [MAX_NUM_OF_EVENT] = 16264064216a8433360745f69edddce19a606659163The Android Open Source Project{ 16364064216a8433360745f69edddce19a606659163The Android Open Source Project/*================================================================================== 16464064216a8433360745f69edddce19a606659163The Android Open Source Project| | 16564064216a8433360745f69edddce19a606659163The Android Open Source Project| EVENT TABLE | 16664064216a8433360745f69edddce19a606659163The Android Open Source Project| | 16764064216a8433360745f69edddce19a606659163The Android Open Source Project =================================================================================== 16864064216a8433360745f69edddce19a606659163The Android Open Source Project| Id | Event Mask Bit | Event String | Length | 16964064216a8433360745f69edddce19a606659163The Android Open Source Project ===================================================================================*/ 17064064216a8433360745f69edddce19a606659163The Android Open Source Project 17164064216a8433360745f69edddce19a606659163The Android Open Source Project/*0*/ { MEASUREMENT_START_EVENT_ID, "MEASUREMENT START " , 0}, 17264064216a8433360745f69edddce19a606659163The Android Open Source Project/*1*/ { SCAN_COMPLETE_EVENT_ID , "SCAN CMPLT " , 3}, 17364064216a8433360745f69edddce19a606659163The Android Open Source Project/*2*/ { CALIBRATION_COMPLETE_EVENT_ID, "CALIB CMPLT " , 0}, 17464064216a8433360745f69edddce19a606659163The Android Open Source Project/*3*/ { ROAMING_TRIGGER_LOW_RSSI_EVENT_ID , "RSSI LEVEL " , 1}, 17564064216a8433360745f69edddce19a606659163The Android Open Source Project/*4*/ { PS_REPORT_EVENT_ID, "PS_REPORT " , 1}, 17664064216a8433360745f69edddce19a606659163The Android Open Source Project/*5*/ { SYNCHRONIZATION_TIMEOUT_EVENT_ID, "SYNCHRONIZATION TIMEOUT ", 0}, 17764064216a8433360745f69edddce19a606659163The Android Open Source Project/*6*/ { HEALTH_REPORT_EVENT_ID, "HEALTH REPORT " , 2}, 17864064216a8433360745f69edddce19a606659163The Android Open Source Project/*7*/ { ACI_DETECTION_EVENT_ID , "ACI INDICATION " , 2}, 17964064216a8433360745f69edddce19a606659163The Android Open Source Project/*8*/ { DEBUG_REPORT_EVENT_ID, "DEBUG REPORT " , 8}, 18064064216a8433360745f69edddce19a606659163The Android Open Source Project/*9*/ { MAC_STATUS_EVENT_ID, "MAC STATUS " , 8}, 18164064216a8433360745f69edddce19a606659163The Android Open Source Project/*10*/{ DISCONNECT_EVENT_COMPLETE_ID, "DISCONNECT COMPLETE " , 0}, 18264064216a8433360745f69edddce19a606659163The Android Open Source Project/*11*/{ JOIN_EVENT_COMPLETE_ID, "JOIN CMPLT " , 0}, 18364064216a8433360745f69edddce19a606659163The Android Open Source Project/*12*/{ CHANNEL_SWITCH_COMPLETE_EVENT_ID, "SWITCH CHANNEL CMPLT " , 0}, 18464064216a8433360745f69edddce19a606659163The Android Open Source Project/*13*/{ BSS_LOSE_EVENT_ID, "BSS LOST " , 0}, 18564064216a8433360745f69edddce19a606659163The Android Open Source Project/*14*/{ ROAMING_TRIGGER_MAX_TX_RETRY_EVENT_ID, "MAX TX RETRY " , 0}, 18664064216a8433360745f69edddce19a606659163The Android Open Source Project/*15*/{ MEASUREMENT_COMPLETE_EVENT_ID, "BSS LOSE " , 0}, 18764064216a8433360745f69edddce19a606659163The Android Open Source Project/*16*/{ AP_DISCOVERY_COMPLETE_EVENT_ID, "MAX TX RETRY " , 0}, 18864064216a8433360745f69edddce19a606659163The Android Open Source Project/*17*/{ SCHEDULED_SCAN_COMPLETE_EVENT_ID, "SPS SCAN CMPLT " , 3}, 18964064216a8433360745f69edddce19a606659163The Android Open Source Project/*18*/{ REGAINED_BSS_EVENT_ID, "REGAINED BSS " , 0}, 19064064216a8433360745f69edddce19a606659163The Android Open Source Project/*19*/{ ROAMING_TRIGGER_REGAINED_RSSI_EVENT_ID, "REGAINED RSSI " , 1}, 19164064216a8433360745f69edddce19a606659163The Android Open Source Project/*20*/{ ROAMING_TRIGGER_LOW_SNR_EVENT_ID, "LOW SNR " , 1}, 19264064216a8433360745f69edddce19a606659163The Android Open Source Project/*21*/{ SOFT_GEMINI_SENSE_EVENT_ID, "SOFT GEMINI SENSE " , 1}, 19364064216a8433360745f69edddce19a606659163The Android Open Source Project/*22*/{ SOFT_GEMINI_PREDICTION_EVENT_ID, "SOFT GEMINI PREDICTION " , 1}, 19464064216a8433360745f69edddce19a606659163The Android Open Source Project/*23*/{ SOFT_GEMINI_AVALANCHE_EVENT_ID, "SOFT GEMINI AVALANCHE " , 0}, 19564064216a8433360745f69edddce19a606659163The Android Open Source Project/*24*/{ PLT_RX_CALIBRATION_COMPLETE_EVENT_ID, "PLT RX CALIBR. COMPLETE ", 0}, 19664064216a8433360745f69edddce19a606659163The Android Open Source Project/*25*/{ PSPOLL_DELIVERY_FAILURE_EVENT_ID, "PS-POLL DELIVERY FAILURE", 0}, 19764064216a8433360745f69edddce19a606659163The Android Open Source Project/*26*/{ RESET_BSS_EVENT_ID, "EVENT RESET BSS " , 0}, 19864064216a8433360745f69edddce19a606659163The Android Open Source Project/*27*/{ EVENT_MBOX_ALL_EVENT_ID, "ALL EVENTS " , 0}, 19964064216a8433360745f69edddce19a606659163The Android Open Source Project 20064064216a8433360745f69edddce19a606659163The Android Open Source Project}; 20164064216a8433360745f69edddce19a606659163The Android Open Source Project 20264064216a8433360745f69edddce19a606659163The Android Open Source Project/********************************************************************************/ 20364064216a8433360745f69edddce19a606659163The Android Open Source Project/* functions implementation */ 20464064216a8433360745f69edddce19a606659163The Android Open Source Project/********************************************************************************/ 20564064216a8433360745f69edddce19a606659163The Android Open Source Project 20664064216a8433360745f69edddce19a606659163The Android Open Source Project 20764064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 20864064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_InitCbTable() 20964064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 21064064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Initialization of callback table 21164064216a8433360745f69edddce19a606659163The Android Open Source Project * 21264064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: hEventMbox eventMbox module handle 21364064216a8433360745f69edddce19a606659163The Android Open Source Project * 21464064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: none 21564064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 21664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid eventMbox_InitCbTable (TI_HANDLE hEventMbox) 21764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 21864064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 21964064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 EvID; 22064064216a8433360745f69edddce19a606659163The Android Open Source Project 22164064216a8433360745f69edddce19a606659163The Android Open Source Project for (EvID = 0; EvID < MAX_NUM_OF_EVENT; EvID++) 22264064216a8433360745f69edddce19a606659163The Android Open Source Project { 22364064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[EvID].pDataOffs = (UINT8*)&pEventMbox->CompoundEvent; 22464064216a8433360745f69edddce19a606659163The Android Open Source Project } 22564064216a8433360745f69edddce19a606659163The Android Open Source Project 22664064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[ 3].pDataOffs += offsetof (EventMailBox_t, averageRssiLevel); 22764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[ 4].pDataOffs += offsetof (EventMailBox_t, psStatus); 22864064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[ 6].pDataOffs += offsetof (EventMailBox_t, healthReport); 22964064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[ 7].pDataOffs += offsetof (EventMailBox_t, badFFTCorrelationCounter); 23064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[ 8].pDataOffs += offsetof (EventMailBox_t, debugReport); 23164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[ 9].pDataOffs += offsetof (EventMailBox_t, consFcsErrCnt); 23264064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[17].pDataOffs += offsetof (EventMailBox_t, scheduledScanStatus); 23364064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[19].pDataOffs += offsetof (EventMailBox_t, averageRssiLevel); 23464064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[20].pDataOffs += offsetof (EventMailBox_t, averageSNRLevel); 23564064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[21].pDataOffs += offsetof (EventMailBox_t, softGeminiSenseInfo); 23664064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[22].pDataOffs += offsetof (EventMailBox_t, softGeminiProtectiveInfo); 23764064216a8433360745f69edddce19a606659163The Android Open Source Project} 23864064216a8433360745f69edddce19a606659163The Android Open Source Project 23964064216a8433360745f69edddce19a606659163The Android Open Source Project 24064064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 24164064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_Create() 24264064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 24364064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Create the Bus Access mailbox object 24464064216a8433360745f69edddce19a606659163The Android Open Source Project * 24564064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: The Created object 24664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 24764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE eventMbox_Create (TI_HANDLE hOs) 24864064216a8433360745f69edddce19a606659163The Android Open Source Project{ 24964064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox; 25064064216a8433360745f69edddce19a606659163The Android Open Source Project 25164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox = os_memoryAlloc (hOs, sizeof(EventMbox_t)); 25264064216a8433360745f69edddce19a606659163The Android Open Source Project if (pEventMbox == NULL) 25364064216a8433360745f69edddce19a606659163The Android Open Source Project { 25464064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT (("eventMbox_Create: Error creating EventMbox object\n")); 25564064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 25664064216a8433360745f69edddce19a606659163The Android Open Source Project } 25764064216a8433360745f69edddce19a606659163The Android Open Source Project 25864064216a8433360745f69edddce19a606659163The Android Open Source Project os_memoryZero (hOs, pEventMbox, sizeof(EventMbox_t)); 25964064216a8433360745f69edddce19a606659163The Android Open Source Project 26064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hOs = hOs; 26164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->CompoundEvent.eventsMask = EVENT_MBOX_ALL_EVENT_ID; 26264064216a8433360745f69edddce19a606659163The Android Open Source Project 26364064216a8433360745f69edddce19a606659163The Android Open Source Project return (TI_HANDLE)pEventMbox; 26464064216a8433360745f69edddce19a606659163The Android Open Source Project} 26564064216a8433360745f69edddce19a606659163The Android Open Source Project 26664064216a8433360745f69edddce19a606659163The Android Open Source Project 26764064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 26864064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_Destroy() 26964064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 27064064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Destroy the object 27164064216a8433360745f69edddce19a606659163The Android Open Source Project * 27264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 27364064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid eventMbox_Destroy (TI_HANDLE hEventMbox) 27464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 27564064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 27664064216a8433360745f69edddce19a606659163The Android Open Source Project 27764064216a8433360745f69edddce19a606659163The Android Open Source Project if (pEventMbox) 27864064216a8433360745f69edddce19a606659163The Android Open Source Project { 27964064216a8433360745f69edddce19a606659163The Android Open Source Project os_memoryFree (pEventMbox->hOs, pEventMbox, sizeof(EventMbox_t)); 28064064216a8433360745f69edddce19a606659163The Android Open Source Project } 28164064216a8433360745f69edddce19a606659163The Android Open Source Project} 28264064216a8433360745f69edddce19a606659163The Android Open Source Project 28364064216a8433360745f69edddce19a606659163The Android Open Source Project 28464064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 28564064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_Config() 28664064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 28764064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Configure the object 28864064216a8433360745f69edddce19a606659163The Android Open Source Project * 28964064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: pEventMbox this 29064064216a8433360745f69edddce19a606659163The Android Open Source Project * pHwIntr Interrupt Object object 29164064216a8433360745f69edddce19a606659163The Android Open Source Project * hReport Report Object 29264064216a8433360745f69edddce19a606659163The Android Open Source Project * 29364064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK 29464064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 29564064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid eventMbox_Config (TI_HANDLE hEventMbox, TI_HANDLE hTNETWIF, TI_HANDLE hHwIntr, 29664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hReport, TI_HANDLE hFwEvent, TI_HANDLE hWhalCtrl) 29764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 29864064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 29964064216a8433360745f69edddce19a606659163The Android Open Source Project 30064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hTNETWIF = hTNETWIF; 30164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hReport = hReport; 30264064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hFwEvent = hFwEvent; 30364064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hWhalCtrl = hWhalCtrl; 30464064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hReport = hReport; 30564064216a8433360745f69edddce19a606659163The Android Open Source Project 30664064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->state = EVENT_MBOX_STATE_IDLE; 30764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->bInitComplete = FALSE; 30864064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->CompoundEvent.eventsVector = 0; 30964064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->currentEvent = 0; 31064064216a8433360745f69edddce19a606659163The Android Open Source Project 31164064216a8433360745f69edddce19a606659163The Android Open Source Project /* 31264064216a8433360745f69edddce19a606659163The Android Open Source Project * NOTE: don't set eventsMask = 0xffffffff; 31364064216a8433360745f69edddce19a606659163The Android Open Source Project * its value is used after recovery has finished 31464064216a8433360745f69edddce19a606659163The Android Open Source Project */ 31564064216a8433360745f69edddce19a606659163The Android Open Source Project 31664064216a8433360745f69edddce19a606659163The Android Open Source Project /* Init callback table */ 31764064216a8433360745f69edddce19a606659163The Android Open Source Project eventMbox_InitCbTable (hEventMbox); 31864064216a8433360745f69edddce19a606659163The Android Open Source Project} 31964064216a8433360745f69edddce19a606659163The Android Open Source Project 32064064216a8433360745f69edddce19a606659163The Android Open Source Project 32164064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 32264064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_InitComplete() 32364064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 32464064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: ReConfigure the object, Send the Mask Vector to the FW 32564064216a8433360745f69edddce19a606659163The Android Open Source Project * 32664064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: pEventMbox this 32764064216a8433360745f69edddce19a606659163The Android Open Source Project * 32864064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: 32964064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 33064064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid eventMbox_InitComplete (TI_HANDLE hEventMbox) 33164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 33264064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 33364064216a8433360745f69edddce19a606659163The Android Open Source Project 33464064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 33564064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_InitComplete: mask=0x%x\n", pEventMbox->CompoundEvent.eventsMask)); 33664064216a8433360745f69edddce19a606659163The Android Open Source Project 33764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->bInitComplete = TRUE; 33864064216a8433360745f69edddce19a606659163The Android Open Source Project 33964064216a8433360745f69edddce19a606659163The Android Open Source Project /* Enable Events Interrupts */ 34064064216a8433360745f69edddce19a606659163The Android Open Source Project FwEvent_Enable (pEventMbox->hFwEvent, ACX_INTR_EVENT_A); 34164064216a8433360745f69edddce19a606659163The Android Open Source Project FwEvent_Enable (pEventMbox->hFwEvent, ACX_INTR_EVENT_B); 34264064216a8433360745f69edddce19a606659163The Android Open Source Project 34364064216a8433360745f69edddce19a606659163The Android Open Source Project whalCtrl_SetInfoElemEventMask (pEventMbox->hWhalCtrl, pEventMbox->CompoundEvent.eventsMask); 34464064216a8433360745f69edddce19a606659163The Android Open Source Project} 34564064216a8433360745f69edddce19a606659163The Android Open Source Project 34664064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 34764064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_Stop() 34864064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 34964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Stop the object while recovery until Init Complete. 35064064216a8433360745f69edddce19a606659163The Android Open Source Project * 35164064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK 35264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 35364064216a8433360745f69edddce19a606659163The Android Open Source Projectint eventMbox_Stop(TI_HANDLE hEventMbox) 35464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 35564064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 35664064216a8433360745f69edddce19a606659163The Android Open Source Project 35764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->state = EVENT_MBOX_STATE_IDLE; 35864064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->CompoundEvent.eventsVector = 0; 35964064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->currentEvent = 0; 36064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->bInitComplete = FALSE; 36164064216a8433360745f69edddce19a606659163The Android Open Source Project 36264064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 36364064216a8433360745f69edddce19a606659163The Android Open Source Project} 36464064216a8433360745f69edddce19a606659163The Android Open Source Project 36564064216a8433360745f69edddce19a606659163The Android Open Source Project 36664064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 36764064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_ConfigCb() 36864064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 36964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION:Read the SRAM Event mailbox address callback 37064064216a8433360745f69edddce19a606659163The Android Open Source Project * 37164064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: None 37264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 37364064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void eventMbox_ConfigCb (TI_HANDLE hEventMbox, UINT8 module_id, TI_STATUS status) 37464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 37564064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 37664064216a8433360745f69edddce19a606659163The Android Open Source Project 37764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->offset[1] = pEventMbox->offset[0] + sizeof(EventMailBox_t); 37864064216a8433360745f69edddce19a606659163The Android Open Source Project 37964064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INIT (pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 38064064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_ConfigCb: event A offset=0x%x, event B offset=0x%x, sizeof=%d\n", 38164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->offset[0], pEventMbox->offset[1], sizeof(EventMailBox_t))); 38264064216a8433360745f69edddce19a606659163The Android Open Source Project 38364064216a8433360745f69edddce19a606659163The Android Open Source Project /* Call upper layer callback */ 38464064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->fCb (pEventMbox->hCb, module_id, OK); 38564064216a8433360745f69edddce19a606659163The Android Open Source Project} 38664064216a8433360745f69edddce19a606659163The Android Open Source Project 38764064216a8433360745f69edddce19a606659163The Android Open Source Project 38864064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 38964064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_ConfigHw() 39064064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 39164064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION:Read the SRAM Event mailbox address 39264064216a8433360745f69edddce19a606659163The Android Open Source Project * 39364064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: None 39464064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 39564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS eventMbox_ConfigHw (TI_HANDLE hEventMbox, UINT8 module_id, fnotify_t fCb, TI_HANDLE hCb) 39664064216a8433360745f69edddce19a606659163The Android Open Source Project{ 39764064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 39864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 39964064216a8433360745f69edddce19a606659163The Android Open Source Project 40064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->fCb = (TNETWIF_callback_t)fCb; 40164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->hCb = hCb; 40264064216a8433360745f69edddce19a606659163The Android Open Source Project 40364064216a8433360745f69edddce19a606659163The Android Open Source Project /* 40464064216a8433360745f69edddce19a606659163The Android Open Source Project * Get the event mailbox pointer 40564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 40664064216a8433360745f69edddce19a606659163The Android Open Source Project status = TNETWIF_ReadRegOpt (pEventMbox->hTNETWIF, 40764064216a8433360745f69edddce19a606659163The Android Open Source Project REG_EVENT_MAILBOX_PTR, 40864064216a8433360745f69edddce19a606659163The Android Open Source Project &pEventMbox->offset[0], 40964064216a8433360745f69edddce19a606659163The Android Open Source Project module_id, 41064064216a8433360745f69edddce19a606659163The Android Open Source Project eventMbox_ConfigCb, 41164064216a8433360745f69edddce19a606659163The Android Open Source Project hEventMbox); 41264064216a8433360745f69edddce19a606659163The Android Open Source Project 41364064216a8433360745f69edddce19a606659163The Android Open Source Project if (status == TNETWIF_COMPLETE) 41464064216a8433360745f69edddce19a606659163The Android Open Source Project { 41564064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->offset[1] = pEventMbox->offset[0] + sizeof(EventMailBox_t); 41664064216a8433360745f69edddce19a606659163The Android Open Source Project 41764064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INIT (pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 41864064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_ConfigHw: event A offset=0x%x, event B offset=0x%x, sizeof=%d\n", 41964064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->offset[0], pEventMbox->offset[1], sizeof(EventMailBox_t))); 42064064216a8433360745f69edddce19a606659163The Android Open Source Project } 42164064216a8433360745f69edddce19a606659163The Android Open Source Project 42264064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 42364064216a8433360745f69edddce19a606659163The Android Open Source Project} 42464064216a8433360745f69edddce19a606659163The Android Open Source Project 42564064216a8433360745f69edddce19a606659163The Android Open Source Project 42664064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 42764064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_RegisterEventCB() 42864064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 42964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: register callback function for Events 43064064216a8433360745f69edddce19a606659163The Android Open Source Project * 43164064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: EvID Event ID 43264064216a8433360745f69edddce19a606659163The Android Open Source Project * fCb Call Back 43364064216a8433360745f69edddce19a606659163The Android Open Source Project * hCb Call Back Handle 43464064216a8433360745f69edddce19a606659163The Android Open Source Project * 43564064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK 43664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 43764064216a8433360745f69edddce19a606659163The Android Open Source Projectint eventMbox_RegisterEventCB (TI_HANDLE hEventMbox, UINT32 EvID, void* fCb, TI_HANDLE hCb) 43864064216a8433360745f69edddce19a606659163The Android Open Source Project{ 43964064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 44064064216a8433360745f69edddce19a606659163The Android Open Source Project 44164064216a8433360745f69edddce19a606659163The Android Open Source Project if (fCb == NULL || hCb == NULL) 44264064216a8433360745f69edddce19a606659163The Android Open Source Project { 44364064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR (pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, ("eventMbox_RegisterEventCB: NULL parameters\n")); 44464064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 44564064216a8433360745f69edddce19a606659163The Android Open Source Project } 44664064216a8433360745f69edddce19a606659163The Android Open Source Project 44764064216a8433360745f69edddce19a606659163The Android Open Source Project if (EvID >= HAL_EVENT_ALL) 44864064216a8433360745f69edddce19a606659163The Android Open Source Project { 44964064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, ("eventMbox_RegisterEventCB: invalid ID\n")); 45064064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 45164064216a8433360745f69edddce19a606659163The Android Open Source Project } 45264064216a8433360745f69edddce19a606659163The Android Open Source Project 45364064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[EvID].fCb = fCb; 45464064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->cbTable[EvID].hCb = hCb; 45564064216a8433360745f69edddce19a606659163The Android Open Source Project 45664064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 45764064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_RegisterEventCB: EVENT %s has registered\n", eventTable[EvID].str)); 45864064216a8433360745f69edddce19a606659163The Android Open Source Project 45964064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 46064064216a8433360745f69edddce19a606659163The Android Open Source Project} 46164064216a8433360745f69edddce19a606659163The Android Open Source Project 46264064216a8433360745f69edddce19a606659163The Android Open Source Project 46364064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 46464064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_EvMask() 46564064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 46664064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: The function Mask the Event in the Local Mask Vector 46764064216a8433360745f69edddce19a606659163The Android Open Source Project * And in the FW Mask Vector 46864064216a8433360745f69edddce19a606659163The Android Open Source Project * 46964064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: Evid: The Event ID 47064064216a8433360745f69edddce19a606659163The Android Open Source Project * 47164064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK 47264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 47364064216a8433360745f69edddce19a606659163The Android Open Source Projectint eventMbox_EvMask (TI_HANDLE hEventMbox, UINT32 EvID) 47464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 47564064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 47664064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 *pEvMask = (UINT32*)&pEventMbox->CompoundEvent.eventsMask; 47764064216a8433360745f69edddce19a606659163The Android Open Source Project 47864064216a8433360745f69edddce19a606659163The Android Open Source Project if (EvID >= HAL_EVENT_ALL) 47964064216a8433360745f69edddce19a606659163The Android Open Source Project { 48064064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, ("eventMbox_EvMask: invalid ID\n")); 48164064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 48264064216a8433360745f69edddce19a606659163The Android Open Source Project } 48364064216a8433360745f69edddce19a606659163The Android Open Source Project 48464064216a8433360745f69edddce19a606659163The Android Open Source Project *pEvMask |= eventTable[EvID].bitMask; 48564064216a8433360745f69edddce19a606659163The Android Open Source Project 48664064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 48764064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_EvMask: EVENT %s is masked\n", eventTable[EvID].str)); 48864064216a8433360745f69edddce19a606659163The Android Open Source Project 48964064216a8433360745f69edddce19a606659163The Android Open Source Project if (pEventMbox->bInitComplete == TRUE) 49064064216a8433360745f69edddce19a606659163The Android Open Source Project { 49164064216a8433360745f69edddce19a606659163The Android Open Source Project whalCtrl_SetInfoElemEventMask (pEventMbox->hWhalCtrl, *pEvMask); 49264064216a8433360745f69edddce19a606659163The Android Open Source Project } 49364064216a8433360745f69edddce19a606659163The Android Open Source Project 49464064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 49564064216a8433360745f69edddce19a606659163The Android Open Source Project} 49664064216a8433360745f69edddce19a606659163The Android Open Source Project 49764064216a8433360745f69edddce19a606659163The Android Open Source Project 49864064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 49964064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_EvUnMask() 50064064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 50164064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: The function UnMask the Event in the Local Mask Vector 50264064216a8433360745f69edddce19a606659163The Android Open Source Project * And in the FW Mask Vector 50364064216a8433360745f69edddce19a606659163The Android Open Source Project * 50464064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: Evid: The Event ID 50564064216a8433360745f69edddce19a606659163The Android Open Source Project * 50664064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK 50764064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 50864064216a8433360745f69edddce19a606659163The Android Open Source Projectint eventMbox_EvUnMask (TI_HANDLE hEventMbox, UINT32 EvID) 50964064216a8433360745f69edddce19a606659163The Android Open Source Project{ 51064064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 51164064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 *pEvMask = (UINT32*)&pEventMbox->CompoundEvent.eventsMask; 51264064216a8433360745f69edddce19a606659163The Android Open Source Project 51364064216a8433360745f69edddce19a606659163The Android Open Source Project if (EvID >= HAL_EVENT_ALL) 51464064216a8433360745f69edddce19a606659163The Android Open Source Project { 51564064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, ("eventMbox_EvUnMask: invalid ID\n")); 51664064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 51764064216a8433360745f69edddce19a606659163The Android Open Source Project } 51864064216a8433360745f69edddce19a606659163The Android Open Source Project 51964064216a8433360745f69edddce19a606659163The Android Open Source Project *pEvMask &= ~eventTable[EvID].bitMask; 52064064216a8433360745f69edddce19a606659163The Android Open Source Project 52164064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION (pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 52264064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_EvUnMask: EVENT %s is unmasked\n", eventTable[EvID].str)); 52364064216a8433360745f69edddce19a606659163The Android Open Source Project 52464064216a8433360745f69edddce19a606659163The Android Open Source Project if (pEventMbox->bInitComplete == TRUE) 52564064216a8433360745f69edddce19a606659163The Android Open Source Project { 52664064216a8433360745f69edddce19a606659163The Android Open Source Project whalCtrl_SetInfoElemEventMask (pEventMbox->hWhalCtrl, *pEvMask); 52764064216a8433360745f69edddce19a606659163The Android Open Source Project } 52864064216a8433360745f69edddce19a606659163The Android Open Source Project 52964064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 53064064216a8433360745f69edddce19a606659163The Android Open Source Project} 53164064216a8433360745f69edddce19a606659163The Android Open Source Project 53264064216a8433360745f69edddce19a606659163The Android Open Source Project 53364064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 53464064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_Event() 53564064216a8433360745f69edddce19a606659163The Android Open Source Project ***************************************************************************** 53664064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Called when Event A or B interrupt occur 53764064216a8433360745f69edddce19a606659163The Android Open Source Project * 53864064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: hEventMbox - The object 53964064216a8433360745f69edddce19a606659163The Android Open Source Project * 54064064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: TNETWIF_PENDING in case of Async and TNETWIF_OK on Sync 54164064216a8433360745f69edddce19a606659163The Android Open Source Project * 54264064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/ 54364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS eventMbox_Event (TI_HANDLE hEventMbox) 54464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 54564064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 54664064216a8433360745f69edddce19a606659163The Android Open Source Project 54764064216a8433360745f69edddce19a606659163The Android Open Source Project /* Assume the driver is synchronous until opposite is proven */ 54864064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->bSync = TRUE; 54964064216a8433360745f69edddce19a606659163The Android Open Source Project 55064064216a8433360745f69edddce19a606659163The Android Open Source Project eventMbox_StateMachine (pEventMbox, FW_EVENT_MODULE_ID, OK); 55164064216a8433360745f69edddce19a606659163The Android Open Source Project 55264064216a8433360745f69edddce19a606659163The Android Open Source Project return pEventMbox->returnValue; 55364064216a8433360745f69edddce19a606659163The Android Open Source Project} 55464064216a8433360745f69edddce19a606659163The Android Open Source Project 55564064216a8433360745f69edddce19a606659163The Android Open Source Project 55664064216a8433360745f69edddce19a606659163The Android Open Source Project/********************************************************************************/ 55764064216a8433360745f69edddce19a606659163The Android Open Source Project/* Internal functions implementation. */ 55864064216a8433360745f69edddce19a606659163The Android Open Source Project/********************************************************************************/ 55964064216a8433360745f69edddce19a606659163The Android Open Source Project 56064064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 56164064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_StateMachine() 56264064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 56364064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Manage the EventMbox state machine 56464064216a8433360745f69edddce19a606659163The Android Open Source Project * 56564064216a8433360745f69edddce19a606659163The Android Open Source Project * The SM is running one event at a time (A or B) . 56664064216a8433360745f69edddce19a606659163The Android Open Source Project * The order of the states is always the same: IDLE --> READ_BUF --> ACK_EVENT 56764064216a8433360745f69edddce19a606659163The Android Open Source Project * The difference is whether we are using Synch or Asynch API. 56864064216a8433360745f69edddce19a606659163The Android Open Source Project * In the Synch case (SDIO) we are looping in the while-loop till we return to IDLE, and we return 56964064216a8433360745f69edddce19a606659163The Android Open Source Project * to FwEvent module a TNETWIF_OK status. 57064064216a8433360745f69edddce19a606659163The Android Open Source Project * In the Asynch case we use the SM CB to return to the SM after each Asynch call 57164064216a8433360745f69edddce19a606659163The Android Open Source Project * (In that case the return status is TNETWIF_PENDING, and we are waiting for the CB). 57264064216a8433360745f69edddce19a606659163The Android Open Source Project * In the Asynch case the FwEvent module gets TNETWIF_PENDING in return, and waits for 57364064216a8433360745f69edddce19a606659163The Android Open Source Project * the FwEvent_EventComplete() call in order to move the FwEvent SM. 57464064216a8433360745f69edddce19a606659163The Android Open Source Project * 57564064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: hFwEvent - The object 57664064216a8433360745f69edddce19a606659163The Android Open Source Project * module_id - not used (for CB API only) 57764064216a8433360745f69edddce19a606659163The Android Open Source Project * status - not used (for CB API only) 57864064216a8433360745f69edddce19a606659163The Android Open Source Project * 57964064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT: None 58064064216a8433360745f69edddce19a606659163The Android Open Source Project * 58164064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: TNETWIF_PENDING in case of Async and TNETWIF_OK on Sync 58264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 58364064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void eventMbox_StateMachine (TI_HANDLE hEventMbox, UINT8 module_id, TI_STATUS status) 58464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 58564064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 58664064216a8433360745f69edddce19a606659163The Android Open Source Project 58764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->returnValue = OK; 58864064216a8433360745f69edddce19a606659163The Android Open Source Project 58964064216a8433360745f69edddce19a606659163The Android Open Source Project while (pEventMbox->returnValue != TNETWIF_PENDING) 59064064216a8433360745f69edddce19a606659163The Android Open Source Project { 59164064216a8433360745f69edddce19a606659163The Android Open Source Project switch (pEventMbox->state) 59264064216a8433360745f69edddce19a606659163The Android Open Source Project { 59364064216a8433360745f69edddce19a606659163The Android Open Source Project case EVENT_MBOX_STATE_IDLE: 59464064216a8433360745f69edddce19a606659163The Android Open Source Project 59564064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->returnValue = TNETWIF_ReadMemOpt (pEventMbox->hTNETWIF, 59664064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->offset[pEventMbox->currentEvent], 59764064216a8433360745f69edddce19a606659163The Android Open Source Project PADREAD (&pEventMbox->CompoundEvent), 59864064216a8433360745f69edddce19a606659163The Android Open Source Project EVENT_REPORT_SIZE, 59964064216a8433360745f69edddce19a606659163The Android Open Source Project FW_EVENT_MODULE_ID, 60064064216a8433360745f69edddce19a606659163The Android Open Source Project eventMbox_StateMachine, 60164064216a8433360745f69edddce19a606659163The Android Open Source Project hEventMbox); 60264064216a8433360745f69edddce19a606659163The Android Open Source Project 60364064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->state = EVENT_MBOX_STATE_READ_BUF; 60464064216a8433360745f69edddce19a606659163The Android Open Source Project 60564064216a8433360745f69edddce19a606659163The Android Open Source Project break; 60664064216a8433360745f69edddce19a606659163The Android Open Source Project 60764064216a8433360745f69edddce19a606659163The Android Open Source Project case EVENT_MBOX_STATE_READ_BUF: 60864064216a8433360745f69edddce19a606659163The Android Open Source Project 60964064216a8433360745f69edddce19a606659163The Android Open Source Project /* Notify The appropriate layer about the incoming event */ 61064064216a8433360745f69edddce19a606659163The Android Open Source Project eventMbox_HandleEvent (hEventMbox); 61164064216a8433360745f69edddce19a606659163The Android Open Source Project 61264064216a8433360745f69edddce19a606659163The Android Open Source Project /* Trigger the FW when finishing handle the event */ 61364064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->returnValue = TNETWIF_WriteRegOpt (pEventMbox->hTNETWIF, 61464064216a8433360745f69edddce19a606659163The Android Open Source Project ACX_REG_INTERRUPT_TRIG, 61564064216a8433360745f69edddce19a606659163The Android Open Source Project INTR_TRIG_EVENT_ACK, 61664064216a8433360745f69edddce19a606659163The Android Open Source Project FW_EVENT_MODULE_ID, 61764064216a8433360745f69edddce19a606659163The Android Open Source Project eventMbox_StateMachine, 61864064216a8433360745f69edddce19a606659163The Android Open Source Project hEventMbox); 61964064216a8433360745f69edddce19a606659163The Android Open Source Project 62064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->state = EVENT_MBOX_STATE_ACK_EVENT; 62164064216a8433360745f69edddce19a606659163The Android Open Source Project 62264064216a8433360745f69edddce19a606659163The Android Open Source Project break; 62364064216a8433360745f69edddce19a606659163The Android Open Source Project 62464064216a8433360745f69edddce19a606659163The Android Open Source Project case EVENT_MBOX_STATE_ACK_EVENT: 62564064216a8433360745f69edddce19a606659163The Android Open Source Project 62664064216a8433360745f69edddce19a606659163The Android Open Source Project /* Handling of the event is done. Switch to the next buffer for the next time */ 62764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->currentEvent = 1 - pEventMbox->currentEvent; 62864064216a8433360745f69edddce19a606659163The Android Open Source Project 62964064216a8433360745f69edddce19a606659163The Android Open Source Project if (FALSE == pEventMbox->bSync) 63064064216a8433360745f69edddce19a606659163The Android Open Source Project { 63164064216a8433360745f69edddce19a606659163The Android Open Source Project /* Asynchronous bus - call FwEvent for notifying the completion */ 63264064216a8433360745f69edddce19a606659163The Android Open Source Project FwEvent_EventComplete (pEventMbox->hFwEvent, TNETWIF_OK); 63364064216a8433360745f69edddce19a606659163The Android Open Source Project } 63464064216a8433360745f69edddce19a606659163The Android Open Source Project else 63564064216a8433360745f69edddce19a606659163The Android Open Source Project { 63664064216a8433360745f69edddce19a606659163The Android Open Source Project /* This is the Sync case and we return TNETWIF_OK */ 63764064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->returnValue = TNETWIF_OK; 63864064216a8433360745f69edddce19a606659163The Android Open Source Project } 63964064216a8433360745f69edddce19a606659163The Android Open Source Project /* Exit SM */ 64064064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->state = EVENT_MBOX_STATE_IDLE; 64164064216a8433360745f69edddce19a606659163The Android Open Source Project return; 64264064216a8433360745f69edddce19a606659163The Android Open Source Project 64364064216a8433360745f69edddce19a606659163The Android Open Source Project default: 64464064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 64564064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_StateMachine: unknown state !!!\n")); 64664064216a8433360745f69edddce19a606659163The Android Open Source Project break; 64764064216a8433360745f69edddce19a606659163The Android Open Source Project } 64864064216a8433360745f69edddce19a606659163The Android Open Source Project } 64964064216a8433360745f69edddce19a606659163The Android Open Source Project 65064064216a8433360745f69edddce19a606659163The Android Open Source Project /* If we are here - we got TNETWIF_PENDING, so we are in asynchronous mode */ 65164064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->bSync = FALSE; 65264064216a8433360745f69edddce19a606659163The Android Open Source Project} 65364064216a8433360745f69edddce19a606659163The Android Open Source Project 65464064216a8433360745f69edddce19a606659163The Android Open Source Project 65564064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 65664064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_HandleEvent() 65764064216a8433360745f69edddce19a606659163The Android Open Source Project **************************************************************************** 65864064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: The functions reads the parameters in the Event mailBox 65964064216a8433360745f69edddce19a606659163The Android Open Source Project * and activates the appropriate CallBack function. 66064064216a8433360745f69edddce19a606659163The Android Open Source Project * 66164064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS: 66264064216a8433360745f69edddce19a606659163The Android Open Source Project * 66364064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT: None 66464064216a8433360745f69edddce19a606659163The Android Open Source Project * 66564064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK. 66664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 66764064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void eventMbox_HandleEvent (TI_HANDLE hEventMbox) 66864064216a8433360745f69edddce19a606659163The Android Open Source Project{ 66964064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 67064064216a8433360745f69edddce19a606659163The Android Open Source Project EventCB_t *pEventCb; 67164064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 EvID; 67264064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 EvMask = pEventMbox->CompoundEvent.eventsMask; 67364064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 EvVector = pEventMbox->CompoundEvent.eventsVector; 67464064216a8433360745f69edddce19a606659163The Android Open Source Project 67564064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG 67664064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->uCompounEvCount++; 67764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */ 67864064216a8433360745f69edddce19a606659163The Android Open Source Project 67964064216a8433360745f69edddce19a606659163The Android Open Source Project#if EVMBX_DBG 68064064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 68164064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_HandleEvent: Event Vector = 0x%x\n", EvVector)); 68264064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 68364064216a8433360745f69edddce19a606659163The Android Open Source Project 68464064216a8433360745f69edddce19a606659163The Android Open Source Project /* 68564064216a8433360745f69edddce19a606659163The Android Open Source Project Handle Events 68664064216a8433360745f69edddce19a606659163The Android Open Source Project */ 68764064216a8433360745f69edddce19a606659163The Android Open Source Project for (EvID = 0; EvID < HAL_EVENT_ALL; EvID++) 68864064216a8433360745f69edddce19a606659163The Android Open Source Project { 68964064216a8433360745f69edddce19a606659163The Android Open Source Project pEventCb = &pEventMbox->cbTable[EvID]; 69064064216a8433360745f69edddce19a606659163The Android Open Source Project /* Check if the Event Bit in the vector in set */ 69164064216a8433360745f69edddce19a606659163The Android Open Source Project if (IS_EVENT_BIT_ON (EvVector, eventTable[EvID].bitMask)) 69264064216a8433360745f69edddce19a606659163The Android Open Source Project { 69364064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG 69464064216a8433360745f69edddce19a606659163The Android Open Source Project pEventMbox->uTotalEvCount++; 69564064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */ 69664064216a8433360745f69edddce19a606659163The Android Open Source Project pEventCb->uCount++; 69764064216a8433360745f69edddce19a606659163The Android Open Source Project /* Check if the Mask Bit in the Mask vector in off */ 69864064216a8433360745f69edddce19a606659163The Android Open Source Project if (IS_EVENT_BIT_OFF (EvMask, eventTable[EvID].bitMask)) 69964064216a8433360745f69edddce19a606659163The Android Open Source Project { 70064064216a8433360745f69edddce19a606659163The Android Open Source Project#if EVMBX_DBG 70164064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 70264064216a8433360745f69edddce19a606659163The Android Open Source Project ("eventMbox_HandleEvent: EVENT %s has occurred\n", eventTable[EvID].str)); 70364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 70464064216a8433360745f69edddce19a606659163The Android Open Source Project if (pEventCb->fCb != NULL) 70564064216a8433360745f69edddce19a606659163The Android Open Source Project { 70664064216a8433360745f69edddce19a606659163The Android Open Source Project if (eventTable[EvID].dataLen) 70764064216a8433360745f69edddce19a606659163The Android Open Source Project { 70864064216a8433360745f69edddce19a606659163The Android Open Source Project ((whal_hwMboxDataEvCB)pEventCb->fCb) (pEventCb->hCb, 70964064216a8433360745f69edddce19a606659163The Android Open Source Project (char *)pEventMbox->cbTable[EvID].pDataOffs, 71064064216a8433360745f69edddce19a606659163The Android Open Source Project eventTable[EvID].dataLen); 71164064216a8433360745f69edddce19a606659163The Android Open Source Project } 71264064216a8433360745f69edddce19a606659163The Android Open Source Project else 71364064216a8433360745f69edddce19a606659163The Android Open Source Project { 71464064216a8433360745f69edddce19a606659163The Android Open Source Project ((whal_hwMboxEvCB)pEventCb->fCb) (pEventCb->hCb); 71564064216a8433360745f69edddce19a606659163The Android Open Source Project } 71664064216a8433360745f69edddce19a606659163The Android Open Source Project } 71764064216a8433360745f69edddce19a606659163The Android Open Source Project } 71864064216a8433360745f69edddce19a606659163The Android Open Source Project } 71964064216a8433360745f69edddce19a606659163The Android Open Source Project } /*End for*/ 72064064216a8433360745f69edddce19a606659163The Android Open Source Project} 72164064216a8433360745f69edddce19a606659163The Android Open Source Project 72264064216a8433360745f69edddce19a606659163The Android Open Source Project 72364064216a8433360745f69edddce19a606659163The Android Open Source Project/* 72464064216a8433360745f69edddce19a606659163The Android Open Source Project * eventMbox_Print: print the Event Mailbox statistic :Number 890 72564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 72664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid eventMbox_Print (TI_HANDLE hEventMbox) 72764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 72864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG 72964064216a8433360745f69edddce19a606659163The Android Open Source Project EventMbox_t *pEventMbox = (EventMbox_t *)hEventMbox; 73064064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 i; 73164064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 EvMask = pEventMbox->CompoundEvent.eventsMask; 73264064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 EvVector = pEventMbox->CompoundEvent.eventsVector; 73364064216a8433360745f69edddce19a606659163The Android Open Source Project 73464064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_REPLY(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 73564064216a8433360745f69edddce19a606659163The Android Open Source Project ("------------------------- EventMbox Print ----------------------------\n")); 73664064216a8433360745f69edddce19a606659163The Android Open Source Project 73764064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 73864064216a8433360745f69edddce19a606659163The Android Open Source Project (" eventMbox_HandleEvent: Event Vector = 0x%x\n", EvVector)); 73964064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 74064064216a8433360745f69edddce19a606659163The Android Open Source Project (" eventMbox_HandleEvent: Event Mask = 0x%x\n", EvMask)); 74164064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_REPLY(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 74264064216a8433360745f69edddce19a606659163The Android Open Source Project (" Total Number Of Compound Event = %d: \n", pEventMbox->uCompounEvCount)); 74364064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_REPLY(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 74464064216a8433360745f69edddce19a606659163The Android Open Source Project (" Total Number Of Events = %d: \n", pEventMbox->uTotalEvCount)); 74564064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_REPLY(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG,("\t\t\t\t *** Event Counters *** :\n")); 74664064216a8433360745f69edddce19a606659163The Android Open Source Project for (i = 0; i < HAL_EVENT_ALL; i++) 74764064216a8433360745f69edddce19a606659163The Android Open Source Project { 74864064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_REPLY(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 74964064216a8433360745f69edddce19a606659163The Android Open Source Project (" %d) Event Name = EVENT %s, Number of Event = %d\n", 75064064216a8433360745f69edddce19a606659163The Android Open Source Project i, eventTable[i].str, pEventMbox->cbTable[i].uCount)); 75164064216a8433360745f69edddce19a606659163The Android Open Source Project } 75264064216a8433360745f69edddce19a606659163The Android Open Source Project 75364064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_REPLY(pEventMbox->hReport, EVENT_MBOX_MODULE_LOG, 75464064216a8433360745f69edddce19a606659163The Android Open Source Project ("------------------------- EventMbox Print End ----------------------------\n")); 75564064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */ 75664064216a8433360745f69edddce19a606659163The Android Open Source Project} 75764064216a8433360745f69edddce19a606659163The Android Open Source Project 75864064216a8433360745f69edddce19a606659163The Android Open Source Project 75964064216a8433360745f69edddce19a606659163The Android Open Source Project 760