Home | History | Annotate | Download | only in FirmwareApi
      1 /*
      2  * public_event_mbox.h
      3  *
      4  * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  *
     11  *  * Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  *  * Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in
     15  *    the documentation and/or other materials provided with the
     16  *    distribution.
     17  *  * Neither the name Texas Instruments nor the names of its
     18  *    contributors may be used to endorse or promote products derived
     19  *    from this software without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32  */
     33 
     34 /**********************************************************************************************************************
     35 
     36   FILENAME:       public_event_mbox.h
     37 
     38   DESCRIPTION:    Public header for the Event Mailbox FW<->Driver interface
     39 
     40 
     41 
     42 ***********************************************************************************************************************/
     43 #ifndef PUBLIC_EVENT_MBOX_H
     44 #define PUBLIC_EVENT_MBOX_H
     45 
     46 /******************************************************************************
     47 
     48 	EVENT MBOX
     49 
     50     The event mechanism is based on a pair of event buffers (buffers "A" and "B") in fixed locations
     51     in the device's memory. The host processes one buffer (buffer "A") while the other buffer
     52     (buffer "B") continues to collect events. When the host is finished, it begins processing the
     53     other buffer ("B") while the first buffer ("A") collects, and so on.
     54     If the host is not processing events, an interrupt is issued to the host signaling that a
     55     buffer is ready. The interrupt that the host receives indicates the appropriate event structure
     56     buffer. Once the host finishes processing events from one buffer,
     57     it signals with an acknowledge interrupt (bit 0 in the INT_TRIG register) that the event buffer
     58     is free. This interrupt triggers the device to send the next event structure if there are any
     59     collected events in it.
     60 
     61     Note: Only one instance (the last) of each type of event is collected.
     62 
     63 ******************************************************************************/
     64 
     65 
     66 #include "public_types.h"
     67 #include "public_commands.h"
     68 #include "public_infoele.h"
     69 
     70 
     71 
     72 /*************************************************************************
     73 
     74   Events Enumeration
     75 
     76 **************************************************************************/
     77 typedef enum
     78 {
     79     RSSI_SNR_TRIGGER_0_EVENT_ID              = BIT_0,
     80     RSSI_SNR_TRIGGER_1_EVENT_ID              = BIT_1,
     81     RSSI_SNR_TRIGGER_2_EVENT_ID              = BIT_2,
     82     RSSI_SNR_TRIGGER_3_EVENT_ID              = BIT_3,
     83     RSSI_SNR_TRIGGER_4_EVENT_ID              = BIT_4,
     84     RSSI_SNR_TRIGGER_5_EVENT_ID              = BIT_5,
     85     RSSI_SNR_TRIGGER_6_EVENT_ID              = BIT_6,
     86     RSSI_SNR_TRIGGER_7_EVENT_ID              = BIT_7,
     87 
     88     MEASUREMENT_START_EVENT_ID               = BIT_8,
     89     MEASUREMENT_COMPLETE_EVENT_ID            = BIT_9,
     90     SCAN_COMPLETE_EVENT_ID                   = BIT_10,
     91     SCHEDULED_SCAN_COMPLETE_EVENT_ID         = BIT_11,
     92     AP_DISCOVERY_COMPLETE_EVENT_ID           = BIT_12,
     93     PS_REPORT_EVENT_ID                       = BIT_13,
     94     PSPOLL_DELIVERY_FAILURE_EVENT_ID 	     = BIT_14,
     95     DISCONNECT_EVENT_COMPLETE_ID             = BIT_15,
     96     JOIN_EVENT_COMPLETE_ID                   = BIT_16,
     97     CHANNEL_SWITCH_COMPLETE_EVENT_ID         = BIT_17,
     98     BSS_LOSE_EVENT_ID                        = BIT_18,
     99     REGAINED_BSS_EVENT_ID                    = BIT_19,
    100     ROAMING_TRIGGER_MAX_TX_RETRY_EVENT_ID    = BIT_20,
    101     RESERVED_21                              = BIT_21,
    102     SOFT_GEMINI_SENSE_EVENT_ID               = BIT_22,
    103     SOFT_GEMINI_PREDICTION_EVENT_ID          = BIT_23,
    104     SOFT_GEMINI_AVALANCHE_EVENT_ID           = BIT_24,
    105     PLT_RX_CALIBRATION_COMPLETE_EVENT_ID     = BIT_25,
    106     DBG_EVENT_ID                             = BIT_26,
    107     HEALTH_CHECK_REPLY_EVENT_ID              = BIT_27,
    108 
    109     PERIODIC_SCAN_COMPLETE_EVENT_ID          = BIT_28,
    110     PERIODIC_SCAN_REPORT_EVENT_ID            = BIT_29,
    111 
    112     BA_SESSION_TEAR_DOWN_EVENT_ID	         = BIT_30,
    113 
    114     EVENT_MBOX_ALL_EVENT_ID                  = MAX_POSITIVE32
    115 } EventMBoxId_e;
    116 
    117 /*************************************************************************
    118 
    119   Specific Event Parameters
    120 
    121 **************************************************************************/
    122 typedef enum
    123 {
    124     SCHEDULED_SCAN_COMPLETED_OK = 0,
    125     SCHEDULED_SCAN_TSF_ERROR    = 1
    126 } ScheduledScanReportStatus_enum;
    127 
    128 
    129 typedef enum
    130 {
    131     CHANNEL_SWITCH_COMPLETE_OK,
    132     CHANNEL_SWITCH_TSF_ERROR
    133 } ChannelSwitchReportStatus_enum;
    134 
    135 
    136 typedef enum
    137 {
    138     ENTER_POWER_SAVE_FAIL    =  0,
    139     ENTER_POWER_SAVE_SUCCESS =  1,
    140     EXIT_POWER_SAVE_FAIL     =  2,
    141     EXIT_POWER_SAVE_SUCCESS  =  3,
    142     POWER_SAVE_STATUS_NUMBER
    143 } EventsPowerSave_enum;
    144 
    145 typedef enum
    146 {
    147     TEST1_DBG_EVENT_ID = 0,
    148     TEST2_DBG_EVENT_ID = 0x11,
    149     LAST_DBG_EVENT_ID= 0xff
    150 }dbgEventId_enum;
    151 
    152 #ifdef HOST_COMPILE
    153 typedef uint8 ScheduledScanReportStatus_e;
    154 typedef uint8 ChannelSwitchReportStatus_e;
    155 typedef uint8 EventsPowerSave_e;
    156 typedef uint8 dbgEventId_e;
    157 #else
    158 typedef ScheduledScanReportStatus_enum ScheduledScanReportStatus_e;
    159 typedef ChannelSwitchReportStatus_enum ChannelSwitchReportStatus_e;
    160 typedef EventsPowerSave_enum EventsPowerSave_e;
    161 typedef dbgEventId_enum dbgEventId_e;
    162 #endif
    163 
    164 
    165 #define MAX_EVENT_REPORT_PARAMS 5
    166 typedef struct
    167 {
    168     dbgEventId_e dbgEventId;  /*uint8*/
    169     uint8       numberOfRelevantParams;
    170     uint16      reservedPad16;
    171     uint32      eventReportP1;
    172     uint32      eventReportP2;
    173     uint32      eventReportP3;
    174 }dbgEventRep_t;
    175 
    176 typedef struct
    177 {
    178 	uint8		numberOfScanResults;   /* How many results were parsed */
    179 	uint8       scanTag;               /* Tag of scan */
    180     uint8       padding[2];            /* for alignment to 32 bits boundry*/
    181     uint32      scheduledScanStatus;   /* [0-7] scan completed status, [8-23] Attended Channels map, [24-31] reserved. */
    182 } scanCompleteResults_t;
    183 
    184 /*************************************************************************
    185 
    186   The Event Mailbox structure in memory
    187 
    188 **************************************************************************/
    189 typedef struct EventMailBox_t
    190 {
    191     /* Events Bit Mask */
    192     uint32 eventsVector;
    193     uint32 eventsMask;
    194     uint32 reserved1;
    195     uint32 reserved2;
    196 
    197     /* Events Data */
    198 
    199 
    200     dbgEventRep_t      dbgEventRep;         /* refer to dbgEventRep_t*/
    201                                             /* [DBG_EVENT_ID]*/
    202 
    203     scanCompleteResults_t scanCompleteResults; /* Scan complete results (counter and scan tag) */
    204 
    205     uint16 scheduledScanAttendedChannels;   /* Channels scanned by the Scheduled Scan. */
    206                                             /* [SCHEDULED_SCAN_COMPLETE_EVENT_ID]*/
    207 
    208     uint8  softGeminiSenseInfo;             /* Contains the type of the BT Coexistence sense event.*/
    209                                             /* [SOFT_GEMINI_SENSE_EVENT_ID]*/
    210 
    211     uint8  softGeminiProtectiveInfo;        /* Contains information from the BT activity prediction */
    212                                             /* machine [SOFT_GEMINI_PREDICTION_EVENT_ID]*/
    213 
    214     int8   RSSISNRTriggerMetric[NUM_OF_RSSI_SNR_TRIGGERS];   /* RSSI and SNR Multiple Triggers Array */
    215                                             /* machine [RSSI_SNR_TRIGGER_0-8_EVENT_ID]*/
    216 
    217     uint8  channelSwitchStatus;             /* Status of channel switch. Refer to*/
    218                                             /* ChannelSwitchReportStatus_enum.*/
    219                                             /* [CHANNEL_SWITCH_COMPLETE_EVENT_ID]*/
    220 
    221     uint8  scheduledScanStatus;             /* Status of scheduled scan. Refer to */
    222                                             /* ScheduledScanReportStatus_enum.*/
    223                                             /* [SCHEDULED_SCAN_COMPLETE_EVENT_ID]*/
    224 
    225     uint8  psStatus;                        /* refer to EventsPowerSave_enum.*/
    226                                             /* [PS_REPORT_EVENT_ID].*/
    227 
    228 
    229 
    230     uint8  padding[29];                     /* for alignment to 32 bits boundry*/
    231 
    232 
    233 } EventMailBox_t;
    234 
    235 #endif /* PUBLIC_EVENT_MBOX_H*/
    236 
    237 
    238