| /* |
| * public_event_mbox.h |
| * |
| * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the name Texas Instruments nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| /********************************************************************************************************************** |
| |
| FILENAME: public_event_mbox.h |
| |
| DESCRIPTION: Public header for the Event Mailbox FW<->Driver interface |
| |
| |
| |
| ***********************************************************************************************************************/ |
| #ifndef PUBLIC_EVENT_MBOX_H |
| #define PUBLIC_EVENT_MBOX_H |
| |
| /****************************************************************************** |
| |
| EVENT MBOX |
| |
| The event mechanism is based on a pair of event buffers (buffers "A" and "B") in fixed locations |
| in the device's memory. The host processes one buffer (buffer "A") while the other buffer |
| (buffer "B") continues to collect events. When the host is finished, it begins processing the |
| other buffer ("B") while the first buffer ("A") collects, and so on. |
| If the host is not processing events, an interrupt is issued to the host signaling that a |
| buffer is ready. The interrupt that the host receives indicates the appropriate event structure |
| buffer. Once the host finishes processing events from one buffer, |
| it signals with an acknowledge interrupt (bit 0 in the INT_TRIG register) that the event buffer |
| is free. This interrupt triggers the device to send the next event structure if there are any |
| collected events in it. |
| |
| Note: Only one instance (the last) of each type of event is collected. |
| |
| ******************************************************************************/ |
| |
| |
| #include "public_types.h" |
| #include "public_commands.h" |
| #include "public_infoele.h" |
| |
| |
| |
| /************************************************************************* |
| |
| Events Enumeration |
| |
| **************************************************************************/ |
| typedef enum |
| { |
| RSSI_SNR_TRIGGER_0_EVENT_ID = BIT_0, |
| RSSI_SNR_TRIGGER_1_EVENT_ID = BIT_1, |
| RSSI_SNR_TRIGGER_2_EVENT_ID = BIT_2, |
| RSSI_SNR_TRIGGER_3_EVENT_ID = BIT_3, |
| RSSI_SNR_TRIGGER_4_EVENT_ID = BIT_4, |
| RSSI_SNR_TRIGGER_5_EVENT_ID = BIT_5, |
| RSSI_SNR_TRIGGER_6_EVENT_ID = BIT_6, |
| RSSI_SNR_TRIGGER_7_EVENT_ID = BIT_7, |
| |
| MEASUREMENT_START_EVENT_ID = BIT_8, |
| MEASUREMENT_COMPLETE_EVENT_ID = BIT_9, |
| SCAN_COMPLETE_EVENT_ID = BIT_10, |
| SCHEDULED_SCAN_COMPLETE_EVENT_ID = BIT_11, |
| AP_DISCOVERY_COMPLETE_EVENT_ID = BIT_12, |
| PS_REPORT_EVENT_ID = BIT_13, |
| PSPOLL_DELIVERY_FAILURE_EVENT_ID = BIT_14, |
| DISCONNECT_EVENT_COMPLETE_ID = BIT_15, |
| JOIN_EVENT_COMPLETE_ID = BIT_16, |
| CHANNEL_SWITCH_COMPLETE_EVENT_ID = BIT_17, |
| BSS_LOSE_EVENT_ID = BIT_18, |
| REGAINED_BSS_EVENT_ID = BIT_19, |
| ROAMING_TRIGGER_MAX_TX_RETRY_EVENT_ID = BIT_20, |
| RESERVED_21 = BIT_21, |
| SOFT_GEMINI_SENSE_EVENT_ID = BIT_22, |
| SOFT_GEMINI_PREDICTION_EVENT_ID = BIT_23, |
| SOFT_GEMINI_AVALANCHE_EVENT_ID = BIT_24, |
| PLT_RX_CALIBRATION_COMPLETE_EVENT_ID = BIT_25, |
| DBG_EVENT_ID = BIT_26, |
| HEALTH_CHECK_REPLY_EVENT_ID = BIT_27, |
| |
| PERIODIC_SCAN_COMPLETE_EVENT_ID = BIT_28, |
| PERIODIC_SCAN_REPORT_EVENT_ID = BIT_29, |
| |
| BA_SESSION_TEAR_DOWN_EVENT_ID = BIT_30, |
| |
| EVENT_MBOX_ALL_EVENT_ID = MAX_POSITIVE32 |
| } EventMBoxId_e; |
| |
| /************************************************************************* |
| |
| Specific Event Parameters |
| |
| **************************************************************************/ |
| typedef enum |
| { |
| SCHEDULED_SCAN_COMPLETED_OK = 0, |
| SCHEDULED_SCAN_TSF_ERROR = 1 |
| } ScheduledScanReportStatus_enum; |
| |
| |
| typedef enum |
| { |
| CHANNEL_SWITCH_COMPLETE_OK, |
| CHANNEL_SWITCH_TSF_ERROR |
| } ChannelSwitchReportStatus_enum; |
| |
| |
| typedef enum |
| { |
| ENTER_POWER_SAVE_FAIL = 0, |
| ENTER_POWER_SAVE_SUCCESS = 1, |
| EXIT_POWER_SAVE_FAIL = 2, |
| EXIT_POWER_SAVE_SUCCESS = 3, |
| POWER_SAVE_STATUS_NUMBER |
| } EventsPowerSave_enum; |
| |
| typedef enum |
| { |
| TEST1_DBG_EVENT_ID = 0, |
| TEST2_DBG_EVENT_ID = 0x11, |
| LAST_DBG_EVENT_ID= 0xff |
| }dbgEventId_enum; |
| |
| #ifdef HOST_COMPILE |
| typedef uint8 ScheduledScanReportStatus_e; |
| typedef uint8 ChannelSwitchReportStatus_e; |
| typedef uint8 EventsPowerSave_e; |
| typedef uint8 dbgEventId_e; |
| #else |
| typedef ScheduledScanReportStatus_enum ScheduledScanReportStatus_e; |
| typedef ChannelSwitchReportStatus_enum ChannelSwitchReportStatus_e; |
| typedef EventsPowerSave_enum EventsPowerSave_e; |
| typedef dbgEventId_enum dbgEventId_e; |
| #endif |
| |
| |
| #define MAX_EVENT_REPORT_PARAMS 5 |
| typedef struct |
| { |
| dbgEventId_e dbgEventId; /*uint8*/ |
| uint8 numberOfRelevantParams; |
| uint16 reservedPad16; |
| uint32 eventReportP1; |
| uint32 eventReportP2; |
| uint32 eventReportP3; |
| }dbgEventRep_t; |
| |
| typedef struct |
| { |
| uint8 numberOfScanResults; /* How many results were parsed */ |
| uint8 scanTag; /* Tag of scan */ |
| uint8 padding[2]; /* for alignment to 32 bits boundry*/ |
| uint32 scheduledScanStatus; /* [0-7] scan completed status, [8-23] Attended Channels map, [24-31] reserved. */ |
| } scanCompleteResults_t; |
| |
| /************************************************************************* |
| |
| The Event Mailbox structure in memory |
| |
| **************************************************************************/ |
| typedef struct EventMailBox_t |
| { |
| /* Events Bit Mask */ |
| uint32 eventsVector; |
| uint32 eventsMask; |
| uint32 reserved1; |
| uint32 reserved2; |
| |
| /* Events Data */ |
| |
| |
| dbgEventRep_t dbgEventRep; /* refer to dbgEventRep_t*/ |
| /* [DBG_EVENT_ID]*/ |
| |
| scanCompleteResults_t scanCompleteResults; /* Scan complete results (counter and scan tag) */ |
| |
| uint16 scheduledScanAttendedChannels; /* Channels scanned by the Scheduled Scan. */ |
| /* [SCHEDULED_SCAN_COMPLETE_EVENT_ID]*/ |
| |
| uint8 softGeminiSenseInfo; /* Contains the type of the BT Coexistence sense event.*/ |
| /* [SOFT_GEMINI_SENSE_EVENT_ID]*/ |
| |
| uint8 softGeminiProtectiveInfo; /* Contains information from the BT activity prediction */ |
| /* machine [SOFT_GEMINI_PREDICTION_EVENT_ID]*/ |
| |
| int8 RSSISNRTriggerMetric[NUM_OF_RSSI_SNR_TRIGGERS]; /* RSSI and SNR Multiple Triggers Array */ |
| /* machine [RSSI_SNR_TRIGGER_0-8_EVENT_ID]*/ |
| |
| uint8 channelSwitchStatus; /* Status of channel switch. Refer to*/ |
| /* ChannelSwitchReportStatus_enum.*/ |
| /* [CHANNEL_SWITCH_COMPLETE_EVENT_ID]*/ |
| |
| uint8 scheduledScanStatus; /* Status of scheduled scan. Refer to */ |
| /* ScheduledScanReportStatus_enum.*/ |
| /* [SCHEDULED_SCAN_COMPLETE_EVENT_ID]*/ |
| |
| uint8 psStatus; /* refer to EventsPowerSave_enum.*/ |
| /* [PS_REPORT_EVENT_ID].*/ |
| |
| |
| |
| uint8 padding[29]; /* for alignment to 32 bits boundry*/ |
| |
| |
| } EventMailBox_t; |
| |
| #endif /* PUBLIC_EVENT_MBOX_H*/ |
| |
| |