diff -r 000000000000 -r 10c42ec6c05f TWD/TWDriver/TWDriver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TWD/TWDriver/TWDriver.h Tue Jun 29 12:34:26 2010 +0100 @@ -0,0 +1,4709 @@ +/* + * TWDriver.h + * + * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 or BSD License which accompanies + * this distribution. The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below. + * + * 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. + */ + + +/** \file TWDriver.h + * \brief TWDriver APIs + * + * \see + */ + +/** @defgroup Control Control group + * \brief The Control group includes the list of functions which perform TWD Control + */ +/** @defgroup Measurement Measurement group + * \brief The Measurement group includes the list of functions which gets measurements from FW / TWD + */ +/** @defgroup Data_Path Data Path group + * \brief The Data Path group includes the list of functions which perform the TWD Data Path + */ +/** @defgroup Power_Management Power Management group + * \brief The Power Management group includes the list of functions which set the power management mode + */ +/** @defgroup QoS Quality Of Service group + * \brief The Quality of Service group includes the list of functions which perform the TWD QoS + */ +/** @defgroup Radio Radio (PHY) group + * \brief The Radio group includes the list of functions which handle the Radio + */ +/** @defgroup BSS BSS group + * \brief The BSS group includes the list of functions which handle the Basic Service Set + */ +/** @defgroup Misc Miscellaneous group + * \brief The Miscellaneous group includes the list of functions which handle miscellaneous issues + */ +#ifdef TI_DBG +/** @defgroup Test Debug Test group + * \brief The Debug Test group includes the list of functions which Test the TWD and FW + */ +#endif + +#ifndef TWDRIVER_H +#define TWDRIVER_H + +#define MAX_NUM_OF_802_1d_TAGS 8 + +#include "802_11Defs.h" +#include "TWDriverMsr.h" +#include "TWDriverScan.h" +#include "TWDriverRate.h" +#include "fwDebug_api.h" +#include "TwIf.h" +/* + * original firmware h-files + */ +#include "public_commands.h" +#include "public_event_mbox.h" +#include "public_infoele.h" +#include "public_host_int.h" +#include "public_descriptors.h" +#include "public_radio.h" + +/* + * Firmware types defintions + */ +#ifndef uint8 +#define uint8 TI_UINT8 +#endif +#ifndef uint16 +#define uint16 TI_UINT16 +#endif +#ifndef uint32 +#define uint32 TI_UINT32 +#endif +#ifndef int8 +#define int8 TI_INT8 +#endif +#ifndef int16 +#define int16 TI_INT16 +#endif +#ifndef int32 +#define int32 TI_INT32 +#endif + + + +/* + * -------------------------------------------------------------- + * Definitions + * -------------------------------------------------------------- + */ + +/* PALAU Group Address Default Values */ +#define NUM_GROUP_ADDRESS_VALUE_DEF 4 +#define NUM_GROUP_ADDRESS_VALUE_MIN 0 +#define NUM_GROUP_ADDRESS_VALUE_MAX 8 + +/* Early Wakeup Default Values */ +#define EARLY_WAKEUP_ENABLE_MIN (TI_FALSE) +#define EARLY_WAKEUP_ENABLE_MAX (TI_TRUE) +#define EARLY_WAKEUP_ENABLE_DEF (TI_TRUE) + +/* ARP IP Filter Default Values */ +#define MIN_FILTER_ENABLE_VALUE 0 +#define MAX_FILTER_ENABLE_VALUE 3 +#define DEF_FILTER_ENABLE_VALUE 0 +#define FILTER_ENABLE_FLAG_LEN 1 + +/* Beacon filter Deafult Values */ +#define DEF_BEACON_FILTER_ENABLE_VALUE 1 +#define DEF_BEACON_FILTER_IE_TABLE_NUM 16 +#define MIN_BEACON_FILTER_ENABLE_VALUE 0 +#define MAX_BEACON_FILTER_ENABLE_VALUE 1 +#define BEACON_FILTER_IE_TABLE_DEF_SIZE 37 +#define BEACON_FILTER_IE_TABLE_MAX_SIZE 100 +#define BEACON_FILTER_IE_TABLE_MIN_SIZE 0 +#define BEACON_FILTER_IE_TABLE_MAX_NUM (6+32) +#define BEACON_FILTER_IE_TABLE_MIN_NUM 0 + +/* CoexActivity Table Deafult Values */ +#define COEX_ACTIVITY_TABLE_DEF_NUM 0 +#define COEX_ACTIVITY_TABLE_MIN_NUM 0 +#define COEX_ACTIVITY_TABLE_MAX_NUM 24*2 +#define COEX_ACTIVITY_TABLE_SIZE ((2+1)+(2+1)+(2+1)+(2+1)+(4+1)+(4+1)) /* includes spaces between bytes */ + +#define DEF_NUM_STORED_FILTERS 1 +#define MIN_NUM_STORED_FILTERS 1 +#define MAX_NUM_STORED_FILTERS 8 + +#define TWD_HW_ACCESS_METHOD_MIN 0 +#define TWD_HW_ACCESS_METHOD_MAX 2 +#define TWD_HW_ACCESS_METHOD_DEF 1 + +#define TWD_SITE_FRAG_COLLECT_MIN 2 +#define TWD_SITE_FRAG_COLLECT_MAX 10 +#define TWD_SITE_FRAG_COLLECT_DEF 3 + +#define TWD_RX_MEM_BLKS_NUM 40 /* The number of Rx memory blocks configured to FW */ +#define TWD_TX_MIN_MEM_BLKS_NUM 107 /* The MINIMUM number of Tx memory blocks configured to FW */ + +#define TWD_RX_BLOCKS_RATIO_MIN 0 +#define TWD_RX_BLOCKS_RATIO_MAX 100 +#define TWD_RX_BLOCKS_RATIO_DEF 50 + +#define TWD_TX_FLASH_ENABLE_MIN TI_FALSE +#define TWD_TX_FLASH_ENABLE_MAX TI_TRUE +#define TWD_TX_FLASH_ENABLE_DEF TI_TRUE + +#define TWD_USE_INTR_TRHESHOLD_MIN 0 +#define TWD_USE_INTR_TRHESHOLD_MAX 1 +#define TWD_USE_INTR_TRHESHOLD_DEF 0 + +#define TWD_USE_TX_DATA_INTR_MIN 0 +#define TWD_USE_TX_DATA_INTR_MAX 1 + +#define NUM_OF_CHANNELS_24 14 +#define NUM_OF_CHANNELS_5 180 + +#define TWD_CALIBRATION_CHANNEL_2_4_MIN 1 +#define TWD_CALIBRATION_CHANNEL_2_4_MAX NUM_OF_CHANNELS_24 +#define TWD_CALIBRATION_CHANNEL_2_4_DEF 1 + +#define A_5G_BAND_MIN_CHANNEL 36 +#define A_5G_BAND_MAX_CHANNEL 180 +#define A_5G_BAND_NUM_CHANNELS (A_5G_BAND_MAX_CHANNEL-A_5G_BAND_MIN_CHANNEL+1) + +#define TWD_CALIBRATION_CHANNEL_5_0_MIN 34 +#define TWD_CALIBRATION_CHANNEL_5_0_MAX A_5G_BAND_MAX_CHANNEL +#define TWD_CALIBRATION_CHANNEL_5_0_DEF 36 + +#define TWD_CALIBRATION_CHANNEL_4_9_MIN 8 +#define TWD_CALIBRATION_CHANNEL_4_9_MAX 16 +#define TWD_CALIBRATION_CHANNEL_4_9_DEF 12 + +#define TWD_RTS_THRESHOLD_MIN 0 +#define TWD_RTS_THRESHOLD_MAX 4096 +#define TWD_RTS_THRESHOLD_DEF 4096 + +#define TWD_BCN_RX_TIME_OUT_MIN 10 /* ms */ +#define TWD_BCN_RX_TIME_OUT_MAX 1000 /* ms */ +#define TWD_BCN_RX_TIME_OUT_DEF 10 /* ms */ + +#define TWD_RX_DISABLE_BROADCAST_MIN TI_FALSE +#define TWD_RX_DISABLE_BROADCAST_MAX TI_TRUE +#define TWD_RX_DISABLE_BROADCAST_DEF TI_FALSE + +/* Indicate if the recovery process is active or not */ +#define TWD_RECOVERY_ENABLE_MIN TI_FALSE +#define TWD_RECOVERY_ENABLE_MAX TI_TRUE +#define TWD_RECOVERY_ENABLE_DEF TI_TRUE + +/* Indicate if working with Burst Mode or not */ +#define BURST_MODE_ENABLE_MIN TI_FALSE +#define BURST_MODE_ENABLE_MAX TI_TRUE +#define BURST_MODE_ENABLE_DEF TI_FALSE + +#define SMART_REFLEX_STATE_MIN TI_FALSE +#define SMART_REFLEX_STATE_MAX TI_TRUE +#define SMART_REFLEX_STATE_DEF TI_TRUE + +#define SMART_REFLEX_DEBUG_MIN 0 +#define SMART_REFLEX_DEBUG_MAX 0xFFFF +#define SMART_REFLEX_DEBUG_DEF 0 + +#define SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" + +#define TWD_FRAG_THRESHOLD_MIN 256 +#define TWD_FRAG_THRESHOLD_MAX 4096 +#define TWD_FRAG_THRESHOLD_DEF 4096 + +#define TWD_MAX_TX_MSDU_LIFETIME_MIN 0 +#define TWD_MAX_TX_MSDU_LIFETIME_MAX 3000 +#define TWD_MAX_TX_MSDU_LIFETIME_DEF 512 + +#define TWD_MAX_RX_MSDU_LIFETIME_MIN 0 +#define TWD_MAX_RX_MSDU_LIFETIME_MAX 0xFFFFFFFF +#define TWD_MAX_RX_MSDU_LIFETIME_DEF 512000 + + +#define TWD_LISTEN_INTERVAL_MIN 1 +#define TWD_LISTEN_INTERVAL_MAX 10 +#define TWD_LISTEN_INTERVAL_DEF 3 + +/* This field indicates the number of transmit retries to attempt at + the rate specified in the TNETW Tx descriptor before + falling back to the next lowest rate. + If this field is set to 0xff, then rate fallback is disabled. + If this field is 0, then there will be 0 retries before starting fallback.*/ +#define TWD_RATE_FB_RETRY_LIMIT_MIN 0 /* => No retries before starting RateFallBack */ +#define TWD_RATE_FB_RETRY_LIMIT_MAX 255 /* =>0xff for disabling Rate fallback */ +#define TWD_RATE_FB_RETRY_LIMIT_DEF 0 + +#define TWD_TX_ANTENNA_MIN TX_ANTENNA_2 +#define TWD_TX_ANTENNA_MAX TX_ANTENNA_1 +#define TWD_TX_ANTENNA_DEF TX_ANTENNA_1 + +#define TWD_RX_ANTENNA_MIN RX_ANTENNA_1 +#define TWD_RX_ANTENNA_MAX RX_ANTENNA_PARTIAL +#define TWD_RX_ANTENNA_DEF RX_ANTENNA_FULL + +/* + * Tx and Rx interrupts pacing (threshold in packets, timeouts in milliseconds) + */ +#define TWD_TX_CMPLT_THRESHOLD_DEF 5 /* 0 means no pacing so send interrupt on every event */ +#define TWD_TX_CMPLT_THRESHOLD_MIN 0 +#define TWD_TX_CMPLT_THRESHOLD_MAX 30 + +#define TWD_TX_CMPLT_TIMEOUT_DEF 3000 +#define TWD_TX_CMPLT_TIMEOUT_MIN 100 +#define TWD_TX_CMPLT_TIMEOUT_MAX 50000 + +#define TWD_RX_INTR_THRESHOLD_DEF 0 /* 0 means no pacing so send interrupt on every event */ +#define TWD_RX_INTR_THRESHOLD_MIN 0 +#define TWD_RX_INTR_THRESHOLD_MAX 30 + +#define TWD_RX_INTR_TIMEOUT_DEF 2000 +#define TWD_RX_INTR_TIMEOUT_MIN 1 +#define TWD_RX_INTR_TIMEOUT_MAX 50000 + +/* + * Tx power level + */ +#define TWD_TX_POWER_LEVEL_MIN MAX_POWER_LEVEL /* registry needs the lower number */ +#define TWD_TX_POWER_LEVEL_MAX MIN_POWER_LEVEL /* registry needs the hifger number */ +#define TWD_TX_POWER_LEVEL_DEF MAX_POWER_LEVEL + +#define DBM_TO_TX_POWER_FACTOR 10 + +/* TX_POWER is in Dbm/10 units */ +#define MAX_TX_POWER 205 +#define MIN_TX_POWER 0 +#define DEF_TX_POWER 70 + + +#define MIN_DEFAULT_KEY_ID 0 +#define MAX_DEFAULT_KEY_ID 3 + +#define KEY_RSC_LEN 8 +#define MIN_KEY_LEN 5 +#define MAX_KEY_LEN 32 + +#define TWD_RSSI_WEIGHT_MIN 0 +#define TWD_RSSI_WEIGHT_MAX 100 +#define TWD_RSSI_WEIGHT_DEF 20 + +#define TWD_DCO_ITRIM_ENABLE_MIN TI_FALSE +#define TWD_DCO_ITRIM_ENABLE_MAX TI_TRUE +#define TWD_DCO_ITRIM_ENABLE_DEF TI_FALSE + +#define TWD_DCO_ITRIM_MODERATION_TIMEOUT_MIN 10000 +#define TWD_DCO_ITRIM_MODERATION_TIMEOUT_MAX 1000000 +#define TWD_DCO_ITRIM_MODERATION_TIMEOUT_DEF 50000 + + +#define MAX_NUM_OF_AC 4 + +/************************************/ +/* Rates values */ +/************************************/ +/* The next definitions are used to decide which encryption is used by the Rx flags */ +#define RX_FLAGS_NO_SECURITY 0 +#define RX_FLAGS_WEP 1 +#define RX_FLAGS_TKIP 2 +#define RX_FLAGS_AES 3 + + +#define RX_DESC_FLAGS_ENCRYPTION 8 +#define RX_PACKET_FLAGS_ENCRYPTION_SHIFT 16 +#define RX_PACKET_FLAGS_ENCRYPTION_SHIFT_FROM_DESC (RX_PACKET_FLAGS_ENCRYPTION_SHIFT - RX_DESC_FLAGS_ENCRYPTION) + +/* Tx packet Control-Block flags bit-mask. */ +#define TX_CTRL_FLAG_XFER_DONE_ISSUED 0x0001 /* Xfer-Done already issued to upper driver - for WHA. */ +#define TX_CTRL_FLAG_TX_COMPLETE_ISSUED 0x0002 /* Tx-Complete already issued to upper driver - for WHA. */ +#define TX_CTRL_FLAG_LINK_TEST 0x0004 /* XCC link test packet */ +#define TX_CTRL_FLAG_SENT_TO_FW 0x0008 /* Set after the packet is allowed to be sent to FW (by TxHwQueue) */ +#define TX_CTRL_FLAG_PKT_IN_RAW_BUF 0x0010 /* The input packet is in a raw buffer (as opposed to OS packet) */ +#define TX_CTRL_FLAG_MULTICAST 0x0020 /* A multicast ethernet packet */ +#define TX_CTRL_FLAG_BROADCAST 0x0040 /* A broadcast ethernet packet */ + +#define TX_PKT_TYPE_MGMT 1 /* Management Packet */ +#define TX_PKT_TYPE_EAPOL 2 /* EAPOL packet (Ethernet) */ +#define TX_PKT_TYPE_ETHER 3 /* Data packet from the Network interface */ +#define TX_PKT_TYPE_WLAN_DATA 4 /* Driver generated WLAN Data Packet (currently used for IAPP packet) */ + + +#define ALIGN_4BYTE_MASK 0x3 /* Masked LS bits for 4-bytes aligned addresses or lengths. */ +#define SHIFT_BETWEEN_TU_AND_USEC 10 /* Shift factor to convert between TU (1024 uSec) and uSec. */ + +/* Packet header + extensions structure ranges between 24 and 48 bytes as follows: + * ------------------------------------------------------------------------------ + * Alignment Padding: 0/2 bytes, added for 4 bytes alignment of this structure. + * Mac-Header: 24 bytes, 802.11 basic header. + * Qos header: 0/2 bytes, for QoS-data or QoS-Null the two QoS bytes are added. + * Security Pad: 0/0/4/8/18 bytes, for None/WEP/TKIP/AES/GEM. + * LLC/SNAP: 0/8 bytes, added only for data packets. + * HT control: 0/4 added only for packte support QoS and HT + */ +#define MAX_HEADER_SIZE 48 + +/* Data body max length */ +#define MAX_DATA_BODY_LENGTH 4096 + + + +/* The weight in % of the new packet relative to the previous average value of RSSI */ +#define RSSI_DEFAULT_WEIGHT 20 + +#define RSSI_DEFAULT_THRESHOLD -80 +#define SNR_DEFAULT_THRESHOLD 0 + +/* + * 'No beacon' roaming trigger configuration + * Number of consecutive beacons (or DTIM periods) missed before + * 'Out of Sync' event is raised + */ +#define OUT_OF_SYNC_DEFAULT_THRESHOLD 10 +/* + * IBSS - Number of consecutive beacons (or DTIM periods) missed before + * 'Out of Sync' event is raised + */ +#define OUT_OF_SYNC_IBSS_THRESHOLD 200 +/* Period of time between 'Out of sync' and 'No beacon' events */ +#define NO_BEACON_DEFAULT_TIMEOUT 100 /* in tu-s*/ + +/* Consecutive NACK roaming trigger configuration */ +#define NO_ACK_DEFAULT_THRESHOLD 20 + +/* Low Rx rate roaming trigger configuration */ +#define LOW_RATE_DEFAULT_THRESHOLD 2 + +#define MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES 8 +#define MAX_CHANNELS_IN_REG_DOMAIN 40 + +#define CTS_TO_SELF_DISABLE 0 +#define CTS_TO_SELF_ENABLE 1 + +#define MAX_TEMPLATE_SIZE 256 + +/* Scan constants */ +#define MAX_NUMBER_OF_CHANNELS_PER_SCAN 16 +#define SCAN_MAX_NUM_OF_NORMAL_CHANNELS_PER_COMMAND MAX_NUMBER_OF_CHANNELS_PER_SCAN +#define SCAN_MAX_NUM_OF_SPS_CHANNELS_PER_COMMAND 16 +#define SCAN_DEFAULT_MIN_CHANNEL_DWELL_TIME 30000 +#define SCAN_DEFAULT_MAX_CHANNEL_DWELL_TIME 60000 +#define SCAN_DEFAULT_EARLY_TERMINATION_EVENT SCAN_ET_COND_DISABLE +#define SCAN_DEFAULT_EARLY_TERMINATION_NUM_OF_FRAMES 0 + +#define NUM_OF_NOISE_HISTOGRAM_COUNTERS 8 + +#define TX_DESCRIPTOR_SIZE sizeof(TxIfDescriptor_t) + +#define CTRL_BLK_ENTRIES_NUM 128 + +#define HT_CAP_AMPDU_PARAMETERS_FIELD_OFFSET 2 +#define HT_CAP_HT_EXTENDED_FIELD_OFFSET 19 +#define HT_CAP_AMPDU_MAX_RX_FACTOR_BITMASK 0x3 +#define HT_CAP_AMPDU_MIN_START_SPACING_BITMASK 0x7 +#define HT_CAP_GREENFIELD_FRAME_FORMAT_BITMASK 0x0010 +#define HT_CAP_SHORT_GI_FOR_20MHZ_BITMASK 0x0020 +#define HT_CAP_LSIG_TXOP_PROTECTION_BITMASK 0x8000 +#define HT_EXT_HT_CONTROL_FIELDS_BITMASK 0x0400 +#define HT_EXT_RD_INITIATION_BITMASK 0x0800 +#define HT_INF_RIFS_MOD_BITMASK 0x08 +#define HT_INF_OPERATION_MOD_BITMASK 0x03 +#define HT_INF_NON_GF_PRES_BITMASK 0x04 +#define HT_INF_TX_BURST_LIMIT_BITMASK 0x08 +#define HT_INF_DUAL_BEACON_BITMASK 0x40 + +/* + * TWD HT capabilities, physical capabilities of the STA. + * The structure is defined like that in order to simplify the interface with WHA layer. + */ +#define RX_TX_MCS_BITMASK_SIZE 10 + +#define DSSS_CCK_MODE 1 + +#define MCS_HIGHEST_SUPPORTED_RECEPTION_DATA_RATE_IN_MBIT_S 0x48 + +#define IMPLICIT_TXBF_REC_CAPABLE 1 +#define TRANSMIT_STAGGERED_SOUNDING_CAPABLE 1 + +/* Firmware version name length */ +#define FW_VERSION_LEN 20 + +/*the max table sized is : ( number of 221 * 8 bytes ) + ( non-221 * 2 bytes ) + Must be synchronized with the size of ACX defined in public_infoele.h interface + with the FW +*/ +#define MIB_MAX_SIZE_OF_IE_TABLE 112 +#define MIB_TEMPLATE_DATA_MAX_LEN 256 +#define MIB_MAX_MULTICAST_GROUP_ADDRS 8 + +#define MAX_MULTICAST_GROUP_ADDRS 8 + +/* Max numver of policies */ +#define MAX_NUM_OF_TX_RATE_CLASS_POLICIES 8 + +#define NUM_POWER_LEVELS 4 +#define MAX_POWER_LEVEL 1 +#define MIN_POWER_LEVEL NUM_POWER_LEVELS + +/* + * -------------------------------------------------------------- + * Enumerations + * -------------------------------------------------------------- + */ +/** \enum EFileType + * \brief TWD input/output files + * + * \par Description + * Indicates which File (or part of file) to read or write + * + * \sa TFileInfo + */ +typedef enum +{ + FILE_TYPE_INI = 0, /**< */ + FILE_TYPE_NVS, /**< */ + FILE_TYPE_FW, /**< */ + FILE_TYPE_FW_NEXT /**< */ +} EFileType; + +/** \enum EKeepAliveTriggerType + * \brief Keep Alive Trigger Types + * + * \par Description + * Indicates when to trigger Keep Alive + * + * \sa TKeepAliveParams + * + */ + +typedef enum +{ + KEEP_ALIVE_TRIG_TYPE_NO_TX = 0, /**< */ + KEEP_ALIVE_TRIG_TYPE_PERIOD_ONLY /**< */ + +} EKeepAliveTriggerType; + +/** \enum ESlotTime + * \brief Radio (PHY) Slot Time Type + * + * \par Description + * Used for configuring PHY Slot Time for FW + * + * \sa TWD_CfgPreamble + */ +typedef enum +{ + PHY_SLOT_TIME_LONG = 0, /**< Long PHY Slot Time */ + PHY_SLOT_TIME_SHORT = 1 /**< Short PHY Slot Time */ + +} ESlotTime; + +/** \enum EMib + * \brief MIB Element Type + * + * \par Description + * Used for R/W MIB to FW + * + * \sa TMib + */ +typedef enum +{ +/* 0x00 */ MIB_dot11MaxReceiveLifetime = 0, /**< */ +/* 0x01 */ MIB_dot11SlotTime, /**< */ +/* 0x02 */ MIB_dot11GroupAddressesTable, /**< */ +/* 0x03 */ MIB_dot11WepDefaultKeyId, /**< */ +/* 0x04 */ MIB_dot11CurrentTxPowerLevel, /**< */ +/* 0x05 */ MIB_dot11RTSThreshold, /**< */ +/* 0x06 */ MIB_ctsToSelf, /**< */ +/* 0x07 */ MIB_arpIpAddressesTable, /**< */ +/* 0x08 */ MIB_templateFrame, /**< */ +/* 0x09 */ MIB_rxFilter, /**< */ +/* 0x0A */ MIB_beaconFilterIETable, /**< */ +/* 0x0B */ MIB_beaconFilterEnable, /**< */ +/* 0x0C */ MIB_sleepMode, /**< */ +/* 0x0D */ MIB_wlanWakeUpInterval, /**< */ +/* 0x0E */ MIB_beaconLostCount, /**< */ +/* 0x0F */ MIB_rcpiThreshold, /**< */ +/* 0x10 */ MIB_statisticsTable, /**< */ +/* 0x11 */ MIB_ibssPsConfig, /**< */ +/* 0x12 */ MIB_txRatePolicy, /**< */ +/* 0x13 */ MIB_countersTable, /**< */ +/* 0x14 */ MIB_btCoexsitenceMode, /**< */ +/* 0x15 */ MIB_btCoexistenceParameters, /**< */ + + /* must be last!!! */ + MIB_lastElem = 0xFFFF /**< */ + +} EMib; + +/** \enum ETwdParam + * \brief TWD Control parameter ID + * + * \par Description + * FW Parmaeter Information Identifier + * + * \sa TWD_SetParam, TWD_GetParam + */ +typedef enum +{ +/* 0x01 */ TWD_RTS_THRESHOLD_PARAM_ID = 0x01, /**< */ +/* 0x02 */ TWD_FRAG_THRESHOLD_PARAM_ID, /**< */ +/* 0x03 */ TWD_COUNTERS_PARAM_ID, /**< */ +/* 0x04 */ TWD_LISTEN_INTERVAL_PARAM_ID, /**< */ +/* 0x05 */ TWD_BEACON_INTERVAL_PARAM_ID, /**< */ +/* 0x06 */ TWD_TX_POWER_PARAM_ID, /**< */ +/* 0x07 */ TWD_CLK_RUN_ENABLE_PARAM_ID, /**< */ +/* 0x08 */ TWD_QUEUES_PARAM_ID, /**< */ +/* 0x09 */ TWD_TX_RATE_CLASS_PARAM_ID, /**< */ +/* 0x0A */ TWD_MAX_TX_MSDU_LIFE_TIME_PARAM_ID, /**< */ +/* 0x0B */ TWD_MAX_RX_MSDU_LIFE_TIME_PARAM_ID, /**< */ +/* 0x0C */ TWD_CTS_TO_SELF_PARAM_ID, /**< */ +/* 0x0D */ TWD_RX_TIME_OUT_PARAM_ID, /**< */ +/* 0x0E */ TWD_BCN_BRC_OPTIONS_PARAM_ID, /**< */ +/* 0x0F */ TWD_AID_PARAM_ID, /**< */ +/* 0x10 */ TWD_RSN_HW_ENC_DEC_ENABLE_PARAM_ID, /**< */ +/* 0x11 */ TWD_RSN_KEY_ADD_PARAM_ID, /**< */ +/* 0x12 */ TWD_RSN_KEY_REMOVE_PARAM_ID, /**< */ +/* 0x13 */ TWD_RSN_DEFAULT_KEY_ID_PARAM_ID, /**< */ +/* 0x14 */ TWD_RSN_SECURITY_MODE_PARAM_ID, /**< */ +/* 0x15 */ TWD_RSN_SECURITY_ALARM_CB_SET_PARAM_ID, /**< */ +/* 0x16 */ TWD_ACX_STATISTICS_PARAM_ID, /**< */ +/* 0x17 */ TWD_MEDIUM_OCCUPANCY_PARAM_ID, /**< */ +/* 0x18 */ TWD_DISABLE_POWER_MANAGEMENT_AUTO_CONFIG_PARAM_ID, /**< */ +/* 0x19 */ TWD_ENABLE_POWER_MANAGEMENT_AUTO_CONFIG_PARAM_ID, /**< */ +/* 0x1A */ TWD_SG_ENABLE_PARAM_ID, /**< */ +/* 0x1B */ TWD_SG_CONFIG_PARAM_ID, /**< */ +#ifdef XCC_MODULE_INCLUDED +/* 0x1C */ TWD_RSN_XCC_SW_ENC_ENABLE_PARAM_ID, /**< */ +/* 0x1D */ TWD_RSN_XCC_MIC_FIELD_ENABLE_PARAM_ID, /**< */ +#endif /* XCC_MODULE_INCLUDED*/ +/* 0x1E */ TWD_TX_OP_LIMIT_PARAM_ID, /**< */ +/* 0x1F */ TWD_NOISE_HISTOGRAM_PARAM_ID, /**< */ +/* 0x20 */ TWD_TSF_DTIM_MIB_PARAM_ID, /**< */ +/* 0x21 */ TWD_REVISION_PARAM_ID, /**< */ +/* 0x22 */ TWD_CURRENT_CHANNEL_PARAM_ID, /**< */ +/* 0x23 */ TWD_RADIO_TEST_PARAM_ID, /**< */ +/* 0x24 */ TWD_RSSI_LEVEL_PARAM_ID, /**< */ +/* 0x25 */ TWD_SNR_RATIO_PARAM_ID, /**< */ +/* 0x26 */ TWD_COEX_ACTIVITY_PARAM_ID, /**< */ +/* 0x27 */ TWD_FM_COEX_PARAM_ID, /**< */ +/* 0x28 */ TWD_DCO_ITRIM_PARAMS_ID, /**< */ + + /* must be last!!! */ +/* 0x29 */ TWD_LAST_PARAM_ID /**< */ +} ETwdParam; + +/** \enum ETwdCallbackOwner + * \brief TWD Callback Module owner ID + * + * \par Description + * The Owner ID defines a specific TWD Module + * + * \sa ETwdEventId, TWD_RegisterCb + */ +typedef enum +{ + TWD_OWNER_DRIVER_TX_XFER = 0x0100, /**< TX Xfer Owner ID */ + TWD_OWNER_RX_XFER = 0x0200, /**< RX Xfer Owner ID */ + TWD_OWNER_SELF = 0x0300, /**< Self Owner ID */ + TWD_OWNER_MAC_SERVICES = 0x0400, /**< MAC Services Owner ID */ + TWD_OWNER_TX_RESULT = 0x0500, /**< TX Result Owner ID */ + TWD_OWNER_SELF_CONFIG = 0x0600, /**< Self configuration of Owner ID */ + TWD_OWNER_RX_QUEUE = 0x0700, /**< RX Queue Owner ID */ + TWD_OWNER_TX_HW_QUEUE = 0x0800 /**< TX HW Queue Owner ID */ + +} ETwdCallbackOwner; + +/** \enum ETwdIntCallbackId + * \brief TWD Internal Callbacks ID + * + * \par Description + * The Owner ID defines a specific TWD Internal CB + * + * \sa ETwdEventId + */ +typedef enum +{ + TWD_INT_SEND_PACKET_TRANSFER = 0x00 , /**< Tx Data Path Send Callback */ + TWD_INT_SEND_PACKET_COMPLETE , /**< Tx Data Path Complete Callback */ + TWD_INT_UPDATE_BUSY_MAP , /**< Tx Data Path Update-Busy-Map Callback */ + + /* Rx Data Path Callbacks */ + TWD_INT_RECEIVE_PACKET = 0x10 , /**< Rx Data Path Receive Packet Callback */ + TWD_INT_REQUEST_FOR_BUFFER , /**< Rx Data Path Request for buffer Callback */ + + /* TWD Callbacks */ + TWD_INT_COMMAND_COMPLETE = 0x20 , /**< TWD internal Command Complete Callback */ + TWD_INT_EVENT_FAILURE /**< TWD internal Event Failure handle Callback */ + +} ETwdIntCallbackId; + +/** \enum ETwdOwnEventId + * \brief Event Mail Box ID + * + * \par Description + * Clients That expects an event should register for it, + * and Mask/UnMask Events with this ID + * + * \sa + */ +/* Note: changes here should be reflected also in eventTable in eventMbox.c !!! */ +typedef enum +{ + /*Regular events*/ +/* 0 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_0 = 0, /**< */ +/* 1 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_1, /**< */ +/* 2 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_2, /**< */ +/* 3 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_3, /**< */ +/* 4 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_4, /**< */ +/* 5 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_5, /**< */ +/* 6 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_6, /**< */ +/* 7 */ TWD_OWN_EVENT_RSSI_SNR_TRIGGER_7, /**< */ +/* 8 */ TWD_OWN_EVENT_MEASUREMENT_START, /**< */ +/* 9 */ TWD_OWN_EVENT_MEASUREMENT_COMPLETE, /**< */ +/* 10 */ TWD_OWN_EVENT_SCAN_CMPLT, /**< */ +/* 11 */ TWD_OWN_EVENT_SPS_SCAN_CMPLT, /**< */ +/* 12 */ TWD_OWN_EVENT_AP_DISCOVERY_COMPLETE, /**< */ +/* 13 */ TWD_OWN_EVENT_PS_REPORT, /**< */ +/* 14 */ TWD_OWN_EVENT_PSPOLL_DELIVERY_FAILURE, /**< */ +/* 15 */ TWD_OWN_EVENT_DISCONNECT_COMPLETE, /**< */ +/* 16 */ TWD_OWN_EVENT_JOIN_CMPLT, /**< */ +/* 17 */ TWD_OWN_EVENT_SWITCH_CHANNEL_CMPLT, /**< */ +/* 18 */ TWD_OWN_EVENT_BSS_LOSE, /**< */ +/* 19 */ TWD_OWN_EVENT_BSS_REGAIN, /**< */ +/* 20 */ TWD_OWN_EVENT_MAX_TX_RETRY, /**< */ +/* 21 */ RESERVED21, /**< */ +/* 22 */ TWD_OWN_EVENT_SOFT_GEMINI_SENSE, /**< */ +/* 23 */ TWD_OWN_EVENT_SOFT_GEMINI_PREDIC, /**< */ +/* 24 */ TWD_OWN_EVENT_SOFT_GEMINI_AVALANCHE, /**< */ +/* 25 */ TWD_OWN_EVENT_PLT_RX_CALIBRATION_COMPLETE, /**< */ +/* 26 */ TWD_DBG_EVENT, /**< */ +/* 27 */ TWD_HEALTH_CHECK_REPLY_EVENT, /**< */ +/* 28 */ TWD_OWN_EVENT_PERIODIC_SCAN_COMPLETE, /**< */ +/* 29 */ TWD_OWN_EVENT_PERIODIC_SCAN_REPORT, /**< */ +/* 30 */ TWD_BA_SESSION_TEAR_DOWN_EVENT, /**< */ +/* 31 */ TWD_OWN_EVENT_ALL, /**< */ +/* 32 */ TWD_OWN_EVENT_MAX /**< */ + +} ETwdOwnEventId; + +/** \enum ETwdEventId + * \brief TNETW Driver Event ID + * + * \par Description + * The TWD Event ID is used by user for registering a TWD Internal CB + * which will handle a TWD Event. + * Each field in this enum is an ID of TWD Event, and is combined of two IDs: + * TWD CB Owner (Module) ID and TWD Internal CB ID. Therefore, the CB is registered accordeing to + * Module (Owner) and Internal CB Id. + * + * \sa TWD_RegisterCb, ETwdCallbackOwner, ETwdIntCallbackId + */ +typedef enum +{ + /* Internal Failure Event Callbacks */ + TWD_EVENT_FAILURE = TWD_OWNER_SELF | TWD_INT_EVENT_FAILURE, /**< Failure Internal Event ID */ + TWD_EVENT_COMMAND_COMPLETE = TWD_OWNER_SELF | TWD_INT_COMMAND_COMPLETE, /**< Command Complete Internal Event ID */ + + /* Tx Data Path Callbacks */ + TWD_EVENT_TX_XFER_SEND_PKT_TRANSFER = TWD_OWNER_DRIVER_TX_XFER | TWD_INT_SEND_PACKET_TRANSFER, /**< TX Data Path Send Packet Event ID */ + TWD_EVENT_TX_RESULT_SEND_PKT_COMPLETE = TWD_OWNER_TX_RESULT | TWD_INT_SEND_PACKET_COMPLETE, /**< TX Data Path Send Packet Complete Event ID */ + TWD_EVENT_TX_HW_QUEUE_UPDATE_BUSY_MAP = TWD_OWNER_TX_HW_QUEUE | TWD_INT_UPDATE_BUSY_MAP, /**< TX Data Path Update-Busy-Map Event ID */ + + /* Rx Data Path Callbacks */ + TWD_EVENT_RX_REQUEST_FOR_BUFFER = TWD_OWNER_RX_XFER | TWD_INT_REQUEST_FOR_BUFFER, /**< RX Data Path Request for Buffer Internal Event ID */ + TWD_EVENT_RX_RECEIVE_PACKET = TWD_OWNER_RX_QUEUE | TWD_INT_RECEIVE_PACKET /**< RX Data Path Receive Packet Internal Event ID */ + +} ETwdEventId; + +#ifdef TI_DBG +/** \enum ETwdPrintInfoType + * \brief TWD print functions codes + * + * \par Description + * Used for Debug - determines which Tx Info to print + * + * \sa TWD_PrintTxInfo + */ +typedef enum +{ +/* 0 */ TWD_PRINT_TX_CTRL_BLK_TBL = 0, /**< Print TX Control Block Information */ +/* 1 */ TWD_PRINT_TX_HW_QUEUE_INFO, /**< Print TX HW Queue Information */ +/* 2 */ TWD_PRINT_TX_XFER_INFO, /**< Print TX XFER Information */ +/* 3 */ TWD_PRINT_TX_RESULT_INFO, /**< Print TX Result Information */ +/* 4 */ TWD_CLEAR_TX_RESULT_INFO /**< Clear TX Result Information */ + +} ETwdPrintInfoType; +#endif + +/** \enum EIpVer + * \brief IP Version + * + * \par Description + * + * \sa TWD_PrintTxInfo + */ +typedef enum +{ +/* 0 */ IP_VER_4 = 0, /**< */ +/* 1 */ IP_VER_6 /**< */ + +} EIpVer; + +/** \enum EKeyType + * \brief Key Type + * + * \par Description + * Security Key Type + * + * \sa TSecurityKeys + */ +typedef enum +{ +/* 0 */ KEY_NULL = 0, /**< */ +/* 1 */ KEY_WEP, /**< */ +/* 2 */ KEY_TKIP, /**< */ +/* 3 */ KEY_AES, /**< */ +/* 4 */ KEY_XCC, /**< */ +#ifdef GEM_SUPPORT + /* 5 */ KEY_GEM +#endif + +} EKeyType; + +/** \enum ERegistryTxRate + * \brief TX Rate Type + * + * \par Description + * + * \sa + */ +/* Make it same as "rate_e" */ +typedef enum +{ +/* This value is reserved if this enum is used for MgmtCtrlTxRate - the auto mode is only valid for data packets */ +/* 0 */ REG_RATE_AUTO_BIT = 0, /**< */ +/* 1 */ REG_RATE_1M_BIT, /**< */ +/* 2 */ REG_RATE_2M_BIT, /**< */ +/* 3 */ REG_RATE_5_5M_CCK_BIT, /**< */ +/* 4 */ REG_RATE_11M_CCK_BIT, /**< */ +/* 5 */ REG_RATE_22M_PBCC_BIT, /**< */ +/* 6 */ REG_RATE_6M_OFDM_BIT, /**< */ +/* 7 */ REG_RATE_9M_OFDM_BIT, /**< */ +/* 8 */ REG_RATE_12M_OFDM_BIT, /**< */ +/* 9 */ REG_RATE_18M_OFDM_BIT, /**< */ +/* 10 */ REG_RATE_24M_OFDM_BIT, /**< */ +/* 11 */ REG_RATE_36M_OFDM_BIT, /**< */ +/* 12 */ REG_RATE_48M_OFDM_BIT, /**< */ +/* 13 */ REG_RATE_54M_OFDM_BIT, /**< */ +/* 14 */ REG_RATE_MCS0_OFDM_BIT, /**< */ +/* 15 */ REG_RATE_MCS1_OFDM_BIT, /**< */ +/* 16 */ REG_RATE_MCS2_OFDM_BIT, /**< */ +/* 17 */ REG_RATE_MCS3_OFDM_BIT, /**< */ +/* 18 */ REG_RATE_MCS4_OFDM_BIT, /**< */ +/* 19 */ REG_RATE_MCS5_OFDM_BIT, /**< */ +/* 20 */ REG_RATE_MCS6_OFDM_BIT, /**< */ +/* 21 */ REG_RATE_MCS7_OFDM_BIT /**< */ + +} ERegistryTxRate; + +/** \enum EFailureEvent + * \brief Failure Event + * + * \par Description + * Used as a parameter for Failure Event CB - + * Inicates Failure Event ID, according which the Failure + * Event's data is driven + * + * \sa TWD_RegisterOwnCb, TFailureEventCb + */ +typedef enum +{ +/* -1 */ NO_FAILURE = -1, /**< No Failure Event */ +/* 0 */ NO_SCAN_COMPLETE_FAILURE = 0, /**< No Scan Complete Failure Event */ +/* 1 */ MBOX_FAILURE, /**< Mail Box Failure Event */ +/* 2 */ HW_AWAKE_FAILURE, /**< HW Awake Failure Event */ +/* 3 */ TX_STUCK, /**< TX STUCK Failure Event */ +/* 4 */ DISCONNECT_TIMEOUT, /**< Disconnect Timeout Failure Event */ +/* 5 */ POWER_SAVE_FAILURE, /**< Power Save Failure Event */ +/* 6 */ MEASUREMENT_FAILURE, /**< Measurement Failure Event */ +/* 7 */ BUS_FAILURE, /**< Bus Failure Event */ +/* 8 */ HW_WD_EXPIRE, /**< HW Watchdog Expire Event */ + +/* must be last!!! */ +/* 9 */ MAX_FAILURE_EVENTS /**< Maximum number of Failure Events */ + +} EFailureEvent; + +/** \enum ETemplateType + * \brief Template Type + * + * \par Description + * Used for setting/Getting a Template to/from FW + * + * \sa TWD_CmdTemplate, TWD_WriteMibTemplateFrame, TSetTemplate TWD_GetTemplate + */ +typedef enum +{ +/* 0 */ NULL_DATA_TEMPLATE = 0, /**< NULL Data Template */ +/* 1 */ BEACON_TEMPLATE, /**< Beacon Template */ +/* 2 */ PROBE_REQUEST_TEMPLATE, /**< PROBE Request Template */ +/* 3 */ PROBE_RESPONSE_TEMPLATE, /**< PROBE Response Template */ +/* 4 */ QOS_NULL_DATA_TEMPLATE, /**< Quality Of Service NULL Data Template */ +/* 5 */ PS_POLL_TEMPLATE, /**< Power Save Poll Template */ +/* 6 */ KEEP_ALIVE_TEMPLATE, /**< Keep Alive Template */ +/* 7 */ DISCONN_TEMPLATE /**< Disconn (Deauth/Disassoc) Template */ +} ETemplateType; + + + + +typedef enum +{ + KEY_WEP_DEFAULT = 0, + KEY_WEP_ADDR = 1, + KEY_AES_GROUP = 4, + KEY_AES_PAIRWISE = 5, + KEY_WEP_GROUP = 6, + KEY_TKIP_MIC_GROUP = 10, + KEY_TKIP_MIC_PAIRWISE = 11 +} KeyType_enum; + + +/** \enum ECipherSuite + * \brief CHIPHER Suite + * + * \par Description + * Available cipher suites for admission control + * + * \sa + */ +typedef enum +{ +/* 0 */ TWD_CIPHER_NONE = 0, /**< no cipher suite */ +/* 1 */ TWD_CIPHER_WEP, /**< WEP-40 cipher suite */ +/* 2 */ TWD_CIPHER_TKIP, /**< TKIP cipher suite */ +/* 3 */ TWD_CIPHER_AES_WRAP, /**< AES WRAP cipher suite */ +/* 4 */ TWD_CIPHER_AES_CCMP, /**< AES CCMP cipher suite */ +/* 5 */ TWD_CIPHER_WEP104, /**< WEP-104 cipher suite */ +/* 6 */ TWD_CIPHER_CKIP, /**< CKIP cipher suite */ +#ifdef GEM_SUPPORT + /* 7 */ TWD_CIPHER_GEM, /**< GEM cipher suite */ +#endif + TWD_CIPHER_MAX, + + TWD_CIPHER_UNKNOWN = 255 /**< UNKNOWN chpiher suite */ + +} ECipherSuite; + +/** \enum E80211PsMode + * \brief 802.11 Power Save Mode + * + * \par Description + * + * \sa TWD_Scan, TWD_SetPsMode + */ +typedef enum +{ +/* 0 */ POWER_SAVE_OFF = 0, /**< power save 802.11 OFF */ +/* 1 */ POWER_SAVE_ON, /**< power save 802.11 ON */ +/* 2 */ POWER_SAVE_KEEP_CURRENT /**< power save 802.11 don't change */ + +} E80211PsMode; + +/** \enum E80211PsStatus + * \brief Set Power Save mode status + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 1 */ POWER_SAVE_802_11_SUCCESS = 1, /**< power save mode Success */ +/* 2 */ POWER_SAVE_802_11_FAIL, /**< power save mode Fail */ +/* 3 */ POWER_SAVE_802_11_NOT_ALLOWED, /**< power save mode Not Allowed */ +/* 4 */ POWER_SAVE_802_11_PENDING, /**< power save mode Pending */ +/* 5 */ POWER_SAVE_802_11_IS_CURRENT /**< power save mode Is Current */ + +} E80211PsStatus; + +/** \enum EElpCtrlMode + * \brief ELP Control Mode + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ ELPCTRL_MODE_NORMAL = 0, /**< ALP Control mode Normal */ +/* 1 */ ELPCTRL_MODE_KEEP_AWAKE /**< ALP Control mode Keep Awake */ + +} EElpCtrlMode; + +/** \enum EPreamble + * \brief Preamble Type + * + * \par Description + * + * \sa TWD_CfgPreamble + */ +typedef enum +{ + PREAMBLE_LONG = 0, /**< Preamble type Long */ + PREAMBLE_SHORT = 1, /**< Preamble type Short */ + + PREAMBLE_UNSPECIFIED = 0xFF /**< Preamble type Not Specified */ + +} EPreamble; + +/** \enum ENoiseHistogramCmd + * \brief Noise Histogram Type + * + * \par Description + * + * \sa TNoiseHistogram, TWD_CmdNoiseHistogram + */ +typedef enum +{ + STOP_NOISE_HIST = 0, /**< Stop Noise Histogram */ + START_NOISE_HIST = 1 /**< Start Noise Histogram */ + +} ENoiseHistogramCmd; + +/** \enum ETnetWakeOn + * \brief ACX Wake Up Condition + * + * \par Description + * + * \sa TPowerMgmtConfig, TWD_CfgWakeUpCondition + */ +typedef enum +{ + +/* 0 */ TNET_WAKE_ON_BEACON = 0, /**< Indicate the wake on event of the HW - beacon. + * In this event the HW configure to be awake on every beacon. + */ + +/* 1 */ TNET_WAKE_ON_DTIM, /**< Indicate the wake on event of the HW - DTIM. In this event + * the HW configure to be awake on every DITM (configure by the AP). + */ + +/* 2 */ TNET_WAKE_ON_N_BEACON, /**< Indicate the wake on event of the HW - listen interval. + * In this event the HW configure to be awake on every + * configured number of beacons. + */ + +/* 3 */ TNET_WAKE_ON_N_DTIM, /**< Indicate the wake on event of the HW - listen interval. + * In this event the HW configure to be awake on every + * configured number of beacons. + */ + +/* 4 */ TNET_WAKE_ON_HOST /**< Indicate the wake on event of the HW - Host access only + */ + +} ETnetWakeOn; + +/** \enum ETxAntenna + * \brief TX Antenna Types + * + * \par Description + * + * \sa TGeneralInitParams, TTwdParamContents + */ +typedef enum +{ + TX_ANTENNA_2 = 0, /**< */ + TX_ANTENNA_1 = 1 /**< */ + +} ETxAntenna; + +/** \enum ERxAntenna + * \brief RX Antenna Types + * + * \par Description + * + * \sa TGeneralInitParams, TTwdParamContents + */ +typedef enum +{ +/* 0 */ RX_ANTENNA_1 = 0, /**< */ +/* 1 */ RX_ANTENNA_2, /**< */ +/* 2 */ RX_ANTENNA_FULL, /**< */ +/* 3 */ RX_ANTENNA_PARTIAL /**< */ + +} ERxAntenna; + +/** \enum EPowerPolicy + * \brief Save Power Level Policy + * + * \par Description + * + * \sa TWD_CfgSleepAuth + */ +typedef enum +{ +/* 0 */ POWERAUTHO_POLICY_ELP = 0, /**< */ +/* 1 */ POWERAUTHO_POLICY_PD, /**< */ +/* 2 */ POWERAUTHO_POLICY_AWAKE, /**< */ +/* 3 */ POWERAUTHO_POLICY_NUM /**< */ + +} EPowerPolicy; + +/** \enum ESoftGeminiEnableModes + * \brief Soft-Gemini Enable Modes + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ SG_DISABLE = 0, /**< */ +/* 1 */ SG_PROTECTIVE, /**< */ +/* 2 */ SG_OPPORTUNISTIC, /**< */ + + +} ESoftGeminiEnableModes; +/** \enum ESoftGeminiEnableProfile + * \brief Soft-Gemini Profile Modes for Symbian configuration + * + * \par Description + * + * \sa + */ +typedef enum +{ + BtCoexProfData = 0, + BtCoexProfDataLowLatency, + BtCoexProfA2DP +}ESoftGeminiEnableProfile; + + +/** \enum EMibTemplateType + * \brief MIB Template type + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ TEMPLATE_TYPE_BEACON = 0, /**< BEACON template */ +/* 1 */ TEMPLATE_TYPE_PROBE_REQUEST, /**< PROB template */ +/* 2 */ TEMPLATE_TYPE_NULL_FRAME, /**< NULL FRAM template */ +/* 3 */ TEMPLATE_TYPE_PROBE_RESPONSE, /**< PROB Response template */ +/* 4 */ TEMPLATE_TYPE_QOS_NULL_FRAME, /**< QOS Null Frame template */ +/* 5 */ TEMPLATE_TYPE_PS_POLL /**< Power Save Poll template */ + +} EMibTemplateType; + + +/** \enum ERxFailure + * \brief RX Failure/Error + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ RX_FAILURE_NONE = 0, /**< No Failure */ +/* 1 */ RX_FAILURE_DECRYPT, /**< DeCrypt Failure */ +/* 2 */ RX_FAILURE_MIC_ERROR, /**< MIC Error */ +} ERxFailure; + +/** \enum ETwdChannelWidth + * \brief TWD Channel Width + * + * \par Description + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ CHANNEL_WIDTH_20MHZ = 0, /**< 20MHZ Channel Width */ +/* 1 */ CHANNEL_WIDTH_40MHZ_20MHZ /**< 40-20MHZ Channel Width */ +} ETwdChannelWidth; + +/** \enum ETwdRxSTBC + * \brief RX STBC Spatial Stream Supported + * + * \par Description + * Indicates how many RX STBC Spatial Stream are Supported + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ RXSTBC_NOT_SUPPORTED = 0, /**< No Spatial Stream Supported */ +/* 1 */ RXSTBC_SUPPORTED_ONE_SPATIAL_STREAM, /**< One Spatial Stream Supported */ +/* 2 */ RXSTBC_SUPPORTED_ONE_AND_TWO_SPATIAL_STREAMS, /**< One and Two Spatial Stream Supported */ +/* 3 */ RXSTBC_SUPPORTED_ONE_TWO_AND_THREE_SPATIAL_STREAMS /**< One, Two and Three Spatial Stream Supported */ + +} ETwdRxSTBC; + +/** \enum ETwdMaxAMSDU + * \brief Maximum MSDU Octets + * + * \par Description + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ MAX_MSDU_3839_OCTETS = 0, /**< Maximum MSDU Octets Number: 3839 */ +/* 1 */ MAX_MSDU_7935_OCTETS /**< Maximum MSDU Octets Number: 7935 */ + +} ETwdMaxAMSDU; + +/** \enum ETwdMaxAMPDU + * \brief Maximum MPDU Octets + * + * \par Description + * Indicates What is the Maximum MPDU Octets Number + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ MAX_MPDU_8191_OCTETS = 0, /**< Maximum MPDU Octets Number: 8191 */ +/* 1 */ MAX_MPDU_16383_OCTETS, /**< Maximum MPDU Octets Number: 16383 */ +/* 2 */ MAX_MPDU_32767_OCTETS, /**< Maximum MPDU Octets Number: 32767 */ +/* 3 */ MAX_MPDU_65535_OCTETS /**< Maximum MPDU Octets Number: 65535 */ + +} ETwdMaxAMPDU; + +/** \enum ETwdAMPDUSpacing + * \brief TWD AMPDU Spacing + * + * \par Description + * Indicates What is the Time Spacing of AMPDU + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ AMPDU_SPC_NO_RESTRCITION = 0, /**< No Restriction on AMPDU Time Spacing */ +/* 1 */ AMPDU_SPC_1_4_MICROSECONDS, /**< 1/4 Microsecond AMPDU Time Spacing */ +/* 2 */ AMPDU_SPC_1_2_MICROSECONDS, /**< 1/2 Microsecond AMPDU Time Spacing */ +/* 3 */ AMPDU_SPC_1_MICROSECOND, /**< 1 Microsecond AMPDU Time Spacing */ +/* 4 */ AMPDU_SPC_2_MICROSECONDS, /**< 2 Microsecond AMPDU Time Spacing */ +/* 5 */ AMPDU_SPC_4_MICROSECONDS, /**< 4 Microsecond AMPDU Time Spacing */ +/* 6 */ AMPDU_SPC_8_MICROSECONDS, /**< 8 Microsecond AMPDU Time Spacing */ +/* 7 */ AMPDU_SPC_16_MICROSECONDS /**< 16 Microsecond AMPDU Time Spacing */ + +} ETwdAMPDUSpacing; + +/** \enum ETwdMcsSupport + * \brief TWD MCS Support + * + * \par Description + * BIT Mapp which Indicates What is the Tx/rx MCS Support Enabled + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 1 */ MCS_SUPPORT_MCS_0 = BIT_0, /**< BIT 0 */ +/* 2 */ MCS_SUPPORT_MCS_1 = BIT_1, /**< BIT 1 */ +/* 3 */ MCS_SUPPORT_MCS_2 = BIT_2, /**< BIT 2 */ +/* 4 */ MCS_SUPPORT_MCS_3 = BIT_3, /**< BIT 3 */ +/* 5 */ MCS_SUPPORT_MCS_4 = BIT_4, /**< BIT 4 */ +/* 6 */ MCS_SUPPORT_MCS_5 = BIT_5, /**< BIT 5 */ +/* 7 */ MCS_SUPPORT_MCS_6 = BIT_6, /**< BIT 6 */ +/* 8 */ MCS_SUPPORT_MCS_7 = BIT_7 /**< BIT 7 */ + +} ETwdMcsSupport; + +/** \enum ETwdPCOTransTime + * \brief TWD PCO Transition Time + * + * \par Description + * Indicates What is the PCO Transition Time + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ PCO_TRANS_TIME_NO_TRANSITION = 0, /**< No PCO Transition Time */ +/* 1 */ PCO_TRANS_TIME_400_MICROSECONDS, /**< PCO Transition Time: 400 Microsecond */ +/* 2 */ PCO_TRANS_TIME_1_5_MILLISECONDS, /**< PCO Transition Time: 1.5 Millisecond */ +/* 3 */ PCO_TRANS_TIME_5_MILLISECONDS /**< PCO Transition Time: 5 Millisecond */ + +} ETwdPCOTransTime; + +/** \enum ETwdHTCapabilitiesBitMask + * \brief TWD HT Capabilities Bit Mask Mapping + * + * \par Description + * Mapps the Bit Mask which are used for Making (Enabling/Disabling) + * HT Capabilities + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 1 */ CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT = BIT_0, /**< BIT 0 */ +/* 2 */ CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS = BIT_1, /**< BIT 1 */ +/* 3 */ CAP_BIT_MASK_SHORT_GI_FOR_40MHZ_PACKETS = BIT_2, /**< BIT 2 */ +/* 4 */ CAP_BIT_MASK_SUPPORT_FOR_STBC_IN_TRANSMISSION = BIT_3, /**< BIT 3 */ +/* 5 */ CAP_BIT_MASK_DELAYED_BLOCK_ACK = BIT_4, /**< BIT 4 */ +/* 6 */ CAP_BIT_MASK_DSSS_CCK_IN_40_MHZ = BIT_5, /**< BIT 5 */ +/* 7 */ CAP_BIT_MASK_LSIG_TXOP_PROTECTION = BIT_6, /**< BIT 6 */ +/* 8 */ CAP_BIT_MASK_PCO = BIT_7, /**< BIT 7 */ +/* 9 */ CAP_BIT_MASK_LDPC_CODING = BIT_8 /**< BIT 8 */ + +} ETwdHTCapabilitiesBitMask; + +/** \enum ETwdMCSFeedback + * \brief TWD MCS FeedBack + * + * \par Description + * Indicates what is the MCS FeedBack Policy + * Used for Configure HT Capabilities Settings + * + * \sa TWD_SetDefaults, TTwdHtCapabilities + */ +typedef enum +{ +/* 0 */ MCS_FEEDBACK_NO = 0, /**< */ +/* 1 */ MCS_FEEDBACK_RESERVED, /**< */ +/* 2 */ MCS_FEEDBACK_UNSOLICTED_ONLY, /**< */ +/* 3 */ MCS_FEEDBACK_BOTH_SOLICTED_AND_UNSOLICTED /**< */ +} ETwdMCSFeedback; + +/** \enum ETwdTxMcsSet + * \brief TWD TX MCS Set + * + * \par Description + * Indicates Whether to set Tx MCS + * + * \sa + */ +typedef enum +{ + TX_MCS_SET_NO = 0, /**< Don't Set Tx MCS */ + TX_MCS_SET_YES = 1 /**< Set Tx MCS */ +} ETwdTxMcsSet; + +/** \enum ETwdTxRxNotEqual + * \brief TWD TX RX Not Equal + * + * \par Description + * Indicates Whether the TX and RX channels are equal + * + * \sa + */ +typedef enum +{ + TX_RX_NOT_EQUAL_NO = 0, /**< TX and RX Channels are not equal */ + TX_RX_NOT_EQUAL_YES = 1 /**< TX and RX Channels are equal */ +} ETwdTxRxNotEqual; + +/** \enum ETwdHtcSupport + * \brief TWD HTc Support + * + * \par Description + * Indicates Whether the HT Capability is Supported + * + * \sa + */ +typedef enum +{ + HTC_SUPPORT_NO = 0, /**< HT Capability is not Supported */ + HTC_SUPPORT_YES = 1 /**< HT Capability is Supported */ +} ETwdHtcSupport; + +/** \enum ESendCompleteStatus + * \brief Send complete status + * + * \par Description + * Indicates the current Success/Failure Status of Completion of Send Operation + * + * \sa + */ +typedef enum +{ +/* 0 */ SEND_COMPLETE_SUCCESS = 0, /**< Send Complete Success: Completion of Send Operation is OK + */ +/* 1 */ SEND_COMPLETE_RETRY_EXCEEDED, /**< Send Complete Retry Exceeded: + * Completion of Send Operation filed because it Exceeded Allowed retries Number + */ +/* 2 */ SEND_COMPLETE_LIFETIME_EXCEEDED, /**< Send Complete Lifetiem Exceeded: + * Completion of Send Operation failed because it Exceeded Allowed Lifetime + */ +/* 3 */ SEND_COMPLETE_NO_LINK, /**< Send Complete No Link: + * Completion of Send Operation failed because No Link was found + */ +/* 4 */ SEND_COMPLETE_MAC_CRASHED /**< Send Complete MAC Crashed: + * Completion of Send Operation failed because MAC Crashed + */ +} ESendCompleteStatus; + +/** \enum EPacketType + * \brief Packet type + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ PACKET_DATA = 0, /**< */ +/* 1 */ PACKET_CTRL, /**< */ +/* 2 */ PACKET_MGMT /**< */ + +} EPacketType; + +/** \enum ETxHwQueStatus + * \brief Status returned by txHwQueue_AllocResources + * + * \par Description + * + * \sa + */ +typedef enum +{ + TX_HW_QUE_STATUS_SUCCESS, /* Resources available on current queue */ + TX_HW_QUE_STATUS_STOP_CURRENT, /* No resources, stop current queue and requeue the packet */ + TX_HW_QUE_STATUS_STOP_NEXT /* Resources available for this packet but not for another one, + so just stop the current queue */ +} ETxHwQueStatus; + +/** \enum ERxBufferStatus + * \brief Status returned by TRequestForBufferCb + * + * \par Description + * + * \sa + */ +typedef enum +{ + RX_BUF_ALLOC_PENDING, + RX_BUF_ALLOC_COMPLETE, + RX_BUF_ALLOC_OUT_OF_MEM + +}ERxBufferStatus; + + +/* + * -------------------------------------------------------------- + * Structures + * -------------------------------------------------------------- + */ +/** + * \brief Get File Callback + * + * \param hCbHndl - Handle to CB Object + * \return void + * + * \par Description + * The callback function type for GetFile users + * + * \sa TFileInfo + */ +typedef void (*TGetFileCbFunc)(TI_HANDLE hCbHndl); + +/** \struct TFileInfo + * \brief File Information + * + * \par Description + * Contains all needed information and structures for Getting file + * + * \sa TWD_InitFw + */ +typedef struct +{ + EFileType eFileType; /**< Requested file type */ + TI_UINT8 *pBuffer; /**< Pointer to Buffer into the file (or file portion) is copied from user space */ + TI_UINT32 uLength; /**< Length of data currently held in pBuffer */ + TI_UINT32 uOffset; /**< Offset in File of data currently held in pBuffer */ + TI_UINT32 uAddress; /**< Offset in File of data currently held in pBuffer */ + TI_BOOL bLast; /**< TRUE indicates that we reached end of file */ + void *hOsFileDesc; /**< OAL file-descriptor handle for repeated access to same file (FW) */ + TGetFileCbFunc fCbFunc; /**< CB function to call if file read is finished in a later context (future option) */ + TI_HANDLE hCbHndl; /**< Handle to provide when calling fCbFunc */ + TI_UINT32 uChunksLeft; /**< Chunks Left to read from File (used if file is read in chunks) */ + TI_UINT32 uChunkBytesLeft; /**< Number of bytes of Last read chunk, which were not yet handled */ + TI_UINT32 uCrcCalc; /**< Current Calculated CRC */ +} TFileInfo; + +/** \struct T80211Header + * \brief 802.11 MAC header + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT16 fc; /**< */ + TI_UINT16 dur; /**< */ + TMacAddr address1; /**< */ + TMacAddr address2; /**< */ + TMacAddr address3; /**< */ + TI_UINT16 seq; /**< */ + TI_UINT16 qos; /**< */ + +} T80211Header; + +/** \struct TKeepAliveParams + * \brief Keep Alive Parameters + * + * \par Description + * + * \sa TWD_CfgKeepAlive + */ +typedef struct +{ + TI_UINT8 index; /**< */ + TI_UINT8 enaDisFlag; /**< */ + TI_UINT32 interval; /**< */ + EKeepAliveTriggerType trigType; /**< */ + +} TKeepAliveParams; + +/** \struct TPsRxStreaming + * \brief Power Save RX Streaming + * + * \par Description + * The configuration of Rx streaming delivery in PS mode per TID + * + * \sa TWD_CfgKeepAlive + */ +typedef struct +{ + TI_UINT32 uTid; /**< The configured TID (0-7) */ + TI_UINT32 uStreamPeriod; /**< The expected period between two packets of the delivered stream */ + TI_UINT32 uTxTimeout; /**< Start sending triggers if no Tx traffic triggers arrive for this priod */ + TI_BOOL bEnabled; /**< If TRUE enable this TID streaming, if FALSE disable it. */ + +} TPsRxStreaming; + +/** \struct TDmaParams + * \brief DMA Parameters + * + * \par Description + * Struct which holds DMA Rx/Tx Queues and Bufffers params + * + * \sa + */ +typedef struct +{ + TI_UINT32 NumRxBlocks; /**< Allocated RX memory blocks number */ + TI_UINT32 NumTxBlocks; /**< Allocated TX memory blocks number */ + TI_UINT8 NumStations; /**< Number of Stations */ + void *fwTxResultInterface; /**< RX minimum Memory block number */ + TI_UINT8 *fwRxCBufPtr; /**< Pointer to FW RX Control Buffer */ + TI_UINT8 *fwTxCBufPtr; /**< Pointer to FW TX Control Buffer */ + void *fwRxControlPtr; /**< Pointer to FW TX Control */ + void *fwTxControlPtr; /**< Pointer to FW RX Control */ + TI_UINT32 PacketMemoryPoolStart; /**< RX Memory block offset */ +} TDmaParams; + +/** \struct TSecurityKeys + * \brief Security Key + * + * \par Description + * Struct which holds Security Key Parameters + * Used for handling DMA + * + * \sa + */ +typedef struct +{ + EKeyType keyType; /**< Security Key Type (WEP, TKIP etc.) */ + TI_UINT32 encLen; /**< Security Key length in bytes */ + TI_UINT8 encKey[MAX_KEY_LEN]; /**< Security Key Encoding */ + TI_UINT8 micRxKey[MAX_KEY_LEN]; /**< MIC RX Security Key */ + TI_UINT8 micTxKey[MAX_KEY_LEN]; /**< MIC TX Security Key */ + TI_UINT32 keyIndex; /**< Security Key Index (id=0 is broadcast key) */ + TMacAddr macAddress; /**< Security Key MAC Address */ + TI_UINT8 keyRsc[KEY_RSC_LEN]; /**< Security Key RSC */ + +} TSecurityKeys; + +/** \struct TxPktParams_t + * \brief TX Packet Parameters + * + * \par Description + * Tx Control-Block Packet parameters that are not included in the Tx-descriptor + * + * \sa + */ +typedef struct +{ + void * pInputPkt; /**< The input packet to the Tx path, either OS packet or raw buffer (see RAW_BUF_PKT flag) */ + TI_UINT32 uInputPktLen; /**< The input packet length in bytes (for freeing it in case of raw buffer) */ + TI_UINT32 uDriverDelay; /**< The time in uSec the pkt was delayed in the driver until Xfer */ + TI_UINT8 uPktType; /**< See TX_PKT_TYPE_xxxx above */ + TI_UINT8 uHeadroomSize; /**< Only for WHA - headroom in bytes before the payload in the packet buffer */ + TI_UINT16 uFlags; /**< See TX_CTRL_FLAG__xxxx above */ + +} TTxPktParams; + + +/** \struct TTxCtrlBlk + * \brief TX Control Block Entry + * + * \par Description + * Contains the Tx packet parameters required for the Tx process, including + * the Tx descriptor and the attributes required for HW-queue calculations. + * TX Control Block Entry is allocated for each packet sent from the upper + * driver and freed upon Tx-complete. + * The entry index is the descriptor-ID. It is written in the descriptor and + * copied back into the tx-complete results + * + * \sa SendPacketTranferCB_t, SendPacketDebugCB_t, TWD_txCtrlBlk_alloc, TWD_txCtrlBlk_free, TWD_txCtrlBlk_GetPointer, TWD_txXfer_sendPacket + */ +typedef struct _TTxCtrlBlk +{ + TTxnStruct tTxnStruct; /**< The transaction structure for packet queueing and transaction via the bus driver */ + TxIfDescriptor_t tTxDescriptor; /**< The packet descriptor copied to the FW */ + TI_UINT8 aPktHdr[MAX_HEADER_SIZE]; /**< The packet header + extensions (see description of MAX_HEADER_SIZE above) */ + TTxPktParams tTxPktParams; /**< Per packet parameters not included in the descriptor */ + struct _TTxCtrlBlk *pNextFreeEntry; /**< Pointer to the next free entry */ + +} TTxCtrlBlk; + + +/** \struct TTemplateParams + * \brief Template Parameters + * + * \par Description + * + * \sa TWD_GetTemplate + */ +typedef struct +{ + TI_UINT32 Size; /**< Template size */ + TI_UINT32 uRateMask; /**< The rates bitmap for the frame */ + TI_UINT8 Buffer[MAX_TEMPLATE_SIZE]; /**< Buffer which holds Template */ + +} TTemplateParams; + +/** \struct TFwInfo + * \brief FW Information + * + * \par Description + * + * \sa TWD_GetFWInfo + */ +typedef struct +{ + TI_UINT8 fwVer[FW_VERSION_LEN]; /**< Firmware version - null terminated string */ + TMacAddr macAddress; /**< MAC Address */ + TI_UINT8 txPowerTable[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; /**< Maximun Dbm in Dbm/10 units */ + TI_UINT32 uHardWareVersion; /**< HW Version */ + +} TFwInfo; + +/** \struct TJoinBss + * \brief Join BSS Parameters + * + * \par Description + * + * \sa TWD_CmdJoinBss + */ +typedef struct +{ + ScanBssType_e bssType; /**< */ + TI_UINT16 beaconInterval; /**< */ + TI_UINT16 dtimInterval; /**< */ + TI_UINT8 channel; /**< */ + TI_UINT8* pBSSID; /**< */ + TI_UINT8* pSSID; /**< */ + TI_UINT8 ssidLength; /**< */ + TI_UINT32 basicRateSet; /**< */ + ERadioBand radioBand; /**< */ + /* Current Tx-Session index as configured to FW in last Join command */ + TI_UINT16 txSessionCount; /**< */ + +} TJoinBss; + +/** \struct TSetTemplate + * \brief Set Template Parameters + * + * \par Description + * + * \sa TWD_CmdTemplate, TWD_WriteMibTemplateFrame + */ +typedef struct +{ + ETemplateType type; /**< Template Type */ + TI_UINT8 index; /**< only valid for keep-alive templates */ + TI_UINT8* ptr; /**< Pointer to Template Data */ + TI_UINT32 len; /**< Pointer to Template Length */ + ERadioBand eBand; /**< only valid for probe request templates */ + TI_UINT32 uRateMask;/**< The rate mask to use for this frame */ + +} TSetTemplate; + +/** \struct TNoiseHistogram + * \brief Noise Histogram Parameters + * + * \par Description + * + * \sa TWD_CmdNoiseHistogram + */ +typedef struct +{ + ENoiseHistogramCmd cmd; /**< Noise Histogram Command (Start/Atop) */ + TI_UINT16 sampleInterval; /**< Sample Interval (in microsec) */ + TI_UINT8 ranges [MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES]; /**< Noise Histogram Ranges */ + +} TNoiseHistogram; + +/** \struct TInterogateCmdHdr + * \brief Interrogate Command Header + * + * \par Description + * + * \sa TNoiseHistogramResults, TMediumOccupancy, TTsfDtim + */ +typedef struct +{ + TI_UINT16 id; /**< */ + TI_UINT16 len; /**< */ + +} TInterogateCmdHdr; + +/** \struct TNoiseHistogramResults + * \brief Noise Histogram Results + * + * \par Description + * Used for Getting Noise Histogram Parameters from FW + * + * \sa + */ +typedef struct +{ + TInterogateCmdHdr noiseHistResCmdHdr; /**< Results Header */ + TI_UINT32 counters[NUM_OF_NOISE_HISTOGRAM_COUNTERS]; /**< Counters */ + TI_UINT32 numOfLostCycles; /**< Number of Lost Cycles */ + TI_UINT32 numOfTxHwGenLostCycles; /**< Number of Tx Hw Gen Lost Cycles */ + TI_UINT32 numOfRxLostCycles; /**< Number of RX Hw Gen Lost Cycles */ + +} TNoiseHistogramResults; + +/** \struct TMediumOccupancy + * \brief Medium Occupancy Parameters + * + * \par Description + * Used for Getting Medium Occupancy (Channal Load) from FW + * or print Medium Occupancy (Channal Load) Debug Information + * + * \sa + */ +typedef struct +{ + TInterogateCmdHdr mediumOccupCmdHdr; /**< Command Header */ + TI_UINT32 MediumUsage; /**< Medium Occupancy Usage Time */ + TI_UINT32 Period; /**< Medium Occupancy Period Time */ + +} TMediumOccupancy; + +/** \struct TTsfDtim + * \brief Beacon TSF and DTIM count + * + * \par Description + * Used for Getting updated current TSF and last Beacon TSF and DTIM Count from FW + * for Scan Purposes + * + * \sa + */ +typedef struct +{ + TInterogateCmdHdr tsf_dtim_mibCmdHdr; /**< Command Header */ + TI_UINT32 CurrentTSFHigh; /**< Current TSF High (of INT64) Value */ + TI_UINT32 CurrentTSFLow; /**< Current TSF Low (of INT64) Value */ + TI_UINT32 lastTBTTHigh; /**< Last TBTT High (of INT64) Value */ + TI_UINT32 lastTBTTLow; /**< Last TBTT Low (of INT64) Value */ + TI_UINT8 LastDTIMCount; /**< Last DTIM Count */ + TI_UINT8 Reserved[3]; /**< Reserved */ + +} TTsfDtim; + +/** \struct TBcnBrcOptions + * \brief Beacon broadcast options + * + * \par Description + * Used for Getting/Configuring updated Beacon broadcast options from/to FW + * + * \sa TWD_SetDefaults + */ +typedef struct +{ + TI_UINT16 BeaconRxTimeout; /**< Beacon RX Timeout */ + TI_UINT16 BroadcastRxTimeout; /**< Broadcast RX Timeout */ + TI_UINT8 RxBroadcastInPs; /**< RX Broadcast In Power Save */ + +} TBcnBrcOptions; + +/** \struct TBeaconFilterIeTable + * \brief Beacon Filter Information Elements Table + * + * \par Description + * Used for Getting/Configuring Beacon Filter IE Table From/To FW + * + * \sa TWD_SetDefaults + */ +typedef struct +{ + TI_UINT8 numberOfIEs; /**< Number of IE Tables */ + TI_UINT8 IETable[BEACON_FILTER_TABLE_MAX_SIZE]; /**< The IE table */ + TI_UINT8 IETableSize; /**< number of elements in IE table */ + +} TBeaconFilterIeTable; + +/** \struct TBeaconFilterInitParams + * \brief Beacon Filter Init Parameters + * + * \par Description + * Used for Init Beacon Filter IE Table in FW + * + * \sa + */ +typedef struct +{ + TI_UINT8 desiredState; /**< Desigred state (required/not required) */ + TI_UINT8 numOfStored; /**< Number of desigred Beacon Filters stored in FW */ + TI_UINT8 numOfElements; /**< Number of Beacon Filter Elements stored in FW */ + TI_UINT8 IETableSize; /**< The IE Table size */ + TI_UINT8 reserve[3]; /**< Reserved */ + TI_UINT8 IETable[BEACON_FILTER_IE_TABLE_MAX_SIZE]; /**< The IE table */ + +} TBeaconFilterInitParams; + +/** \struct TPowerMgmtConfig + * \brief Power Management Configuration Parameters + * + * \par Description + * Used for Configuring Wake-Up Conditions or Beacon Broadcast Options to FW + * + * \sa TWD_CfgWakeUpCondition, TWD_CfgBcnBrcOptions + */ +typedef struct +{ + /* power management options */ + TI_UINT8 beaconListenInterval; /**< Beacon Listen Interavl: + * specify how often the TNET wakes up to listen to beacon frames. + * the value is expressed in units of "beacon interval" + */ + TI_UINT8 beaconFiltering; /**< Beacon Filtering Desigred state (required/not required) */ + TI_UINT8 DTIMListenInterval; /**< DTIM Listen Interavl: + * specify how often the TNET wakes up to listen to DTIM frames. the value + * is expressed in units of "dtim interval" + */ + TI_UINT8 NConsecutiveBeaconMiss; /**< Consecutive Beacon Miss */ + TI_UINT8 hangoverPeriod; /**< Hang Over Period */ + TI_UINT8 HwPsPollResponseTimeout; /**< Power-Save Polling Response Time Out */ + TI_UINT32 BaseBandWakeUpTime; /**< Base Band Wakeup Time */ + TI_UINT32 beaconReceiveTime; /**< Beacon Receive Time */ + TI_BOOL beaconMissInterruptEnable; /**< Enable/Disable Beacon Miss Interrupt */ + TI_BOOL rxBroadcast; /**< Enable/Disable receive of broadcast packets in Power-Save mode */ + TI_BOOL hwPsPoll; /**< Enable/Disable Power-Save Polling */ + /* Power Management Configuration IE */ + TI_BOOL ps802_11Enable; /**< Enable/Disable 802.11 Power-Save */ + TI_UINT8 needToSendNullData; /**< Indicates if need to send NULL data */ + TI_UINT8 numNullPktRetries; /**< Number of NULL Packets allowed retries */ + TI_UINT8 hangOverPeriod; /**< HangOver period: + * Indicates what is the time in TUs during which the WiLink remains awake + * after sending an MPDU with the Power Save bit set (indicating that the + * station is to go into Power Save mode). Setting bit 0 does not affect + * the hangover period + */ + TI_UINT16 NullPktRateModulation; /**< Null Packet Rate Modulation */ + /* PMConfigStruct */ + TI_BOOL ELPEnable; /**< Enable/Disable ELP */ + TI_UINT32 BBWakeUpTime; /**< Base Band Wakeup Time */ + TI_UINT32 PLLlockTime; /**< PLL Lock Time */ + /* AcxBcnBrcOptions */ + TBcnBrcOptions BcnBrcOptions; /**< Beacon broadcast options */ + /* ACXWakeUpCondition */ + ETnetWakeOn tnetWakeupOn; /**< ACX Wake Up Condition */ + TI_UINT8 listenInterval; /**< ACX Listen Interval */ + /* No answer after Ps-Poll work-around */ + TI_UINT8 ConsecutivePsPollDeliveryFailureThreshold; /**< Power-Save Polling Delivery Failure Threshold */ + +} TPowerMgmtConfig; + +/** \struct TPowerSaveParams + * \brief Power Save Parameters + * + * \par Description + * + * \sa TWD_CmdPSMode + */ +typedef struct +{ + /* powerMgmtConfig IE */ + TI_BOOL ps802_11Enable; /**< Enable/Disable 802.11 Power-Save */ + TI_UINT8 needToSendNullData; /**< Indicates if need to send NULL data */ + TI_UINT8 numNullPktRetries; /**< Number of NULL Packets allowed retries */ + TI_UINT8 hangOverPeriod; /**< HangOver period: + * Indicates what is the time in TUs during which the WiLink remains awake + * after sending an MPDU with the Power Save bit set (indicating that the + * station is to go into Power Save mode). Setting bit 0 does not affect + * the hangover period + */ + EHwRateBitFiled NullPktRateModulation; /**< Null Packet Rate Modulation */ + +} TPowerSaveParams; + +/** \struct TAcQosParams + * \brief AC QoS Parameters + * + * \par Description + * Used for Configuring AC Parameters (For Quality Of Service) to FW + * + * \sa TWD_CfgAcParams + */ +typedef struct +{ + TI_UINT8 ac; /**< Access Category - The TX queue's access category */ + TI_UINT8 cwMin; /**< The contention window minimum size (in slots) */ + TI_UINT16 cwMax; /**< The contention window maximum size (in slots) */ + TI_UINT8 aifsn; /**< The AIF value (in slots) */ + TI_UINT16 txopLimit; /**< The TX Op Limit (in microseconds) */ + +} TAcQosParams; + +/** \struct TMeasurementParams + * \brief AC Queues Parameters + * + * \par Description + * Used When Send Start Measurment Command to FW + * + * \sa TWD_CmdMeasurement + */ +typedef struct +{ + TI_UINT32 ConfigOptions; /**< RX Filter Configuration Options */ + TI_UINT32 FilterOptions; /**< RX Filter Options */ + TI_UINT32 duration; /**< Specifies the measurement process duration in microseconds. The value of 0 means + * infinite duration in which only a STOP_MEASUREMENT command can stop the measurement + * process + */ + Channel_e channel; /**< Channel number on which the measurement is performed */ + RadioBand_e band; /**< Specifies the band to which the channel belongs */ + EScanResultTag eTag; /**< Scan Result Tag */ + +} TMeasurementParams; + +/** \struct TApDiscoveryParams + * \brief AP Discovery Parameters + * + * \par Description + * Used When Performing AP Discovery + * + * \sa TWD_CmdApDiscovery + */ +typedef struct +{ + TI_UINT32 ConfigOptions; /**< RX Configuration Options for measurement */ + TI_UINT32 FilterOptions; /**< RX Filter Configuration Options for measurement */ + TI_UINT32 scanDuration; /**< This field specifies the amount of time, in time units (TUs), to perform the AP discovery */ + TI_UINT16 scanOptions; /**< This field specifies whether the AP discovery is performed by an active scan or a passive scan + * 0 - ACTIVE, 1 - PASSIVE + */ + TI_UINT8 numOfProbRqst; /**< This field indicates the number of probe requests to send per channel, when active scan is specified + * Note: for XCC measurement this value should be set to 1 + */ + TI_UINT8 txPowerDbm; /**< TX power level to be used for sending probe requests when active scan is specified. + * If 0, leave normal TX power level for this channel + */ + EHwRateBitFiled txdRateSet; /**< This EHwBitRate format field specifies the rate and modulation to transmit the probe request when + * an active scan is specifie + */ + ERadioBand eBand; /**< Specifies the band to which the channel belongs */ +} TApDiscoveryParams; + +/** \struct TRroamingTriggerParams + * \brief Roaming Trigger Parameters + * + * \par Description + * + * \sa TWD_CfgMaxTxRetry, TWD_CfgConnMonitParams + */ +typedef struct +{ + /* ACXConsNackTriggerParameters */ + TI_UINT8 maxTxRetry; /**< The number of frames transmission failures before issuing the "Max Tx Retry" event */ + + /* ACXBssLossTsfSynchronize */ + TI_UINT16 TsfMissThreshold; /**< The number of consecutive beacons that can be lost before the WiLink raises the + * SYNCHRONIZATION_TIMEOUT event + */ + TI_UINT16 BssLossTimeout; /**< The delay (in time units) between the time at which the device issues the SYNCHRONIZATION_TIMEOUT + * event until, if no probe response or beacon is received a BSS_LOSS event is issued + */ +} TRroamingTriggerParams; + +/** \struct TSwitchChannelParams + * \brief Switch Channel Parameters + * + * \par Description + * Used for Switch channel Command + * + * \sa TWD_CmdSwitchChannel + */ +typedef struct +{ + TI_UINT8 channelNumber; /**< The new serving channel */ + TI_UINT8 switchTime; /**< Relative time of the serving channel switch in TBTT units */ + TI_UINT8 txFlag; /**< 1: Suspend TX till switch time; 0: Do not suspend TX */ + TI_UINT8 flush; /**< 1: Flush TX at switch time; 0: Do not flush */ + +} TSwitchChannelParams; + +/** \struct TRxCounters + * \brief RX Counters + * + * \par Description + * Used for Getting RX Counters from FW + * + * \sa + */ +typedef struct +{ + TI_UINT32 RecvError; /**< Number of frames that a NIC receives but does not indicate to the protocols due to errors */ + TI_UINT32 RecvNoBuffer; /**< Number of frames that the NIC cannot receive due to lack of NIC receive buffer space */ + TI_UINT32 FragmentsRecv; /**< Number of Fragments Received */ + TI_UINT32 FrameDuplicates; /**< Number of Farme Duplicates */ + TI_UINT32 FcsErrors; /**< Number of frames that a NIC receives but does not indicate to the protocols due to errors */ + +} TRxCounters; + +/** \struct TApPowerConstraint + * \brief AP Power Constraint + * + * \par Description + * + * \sa + */ +typedef struct +{ + INFO_ELE_HDR /**< Information Element Header */ + int8 powerConstraintOnBss; /**< The attenuation from the regulatory power constraint as declared by the AP + * Units: dBm ; Range: -20 - 30 + */ +} TApPowerConstraint; + +/* + * TConfigCmdCbParams, TInterrogateCmdCbParams: + * Note that this structure is used by the GWSI + * both for setting (writing to the device) and + * for retreiving (Reading from the device), + * while being called with a completion CB + */ +/** \struct TConfigCmdCbParams + * \brief Config Command CB Parameters + * + * \par Description + * The CB Parameters (Completino CB, Handle to CB Parameters and buffer of Input/Output Parameters) + * are used for Setting Parameters + * + * \sa TWD_SetParam + */ +typedef struct +{ + void* fCb; /**< Completion CB function */ + TI_HANDLE hCb; /**< CB handle */ + void* pCb; /**< CBuffer contains the content to be written or the retrieved content */ + +} TConfigCmdCbParams; + +/** \struct TInterrogateCmdCbParams + * \brief Interrogate Command Parameters + * + * \par Description + * Interrogate Command Parameters are the same as configuration Command CB Parameters + * + * \sa TWD_SetParam + */ +typedef TConfigCmdCbParams TInterrogateCmdCbParams; + +/** \struct TRxTimeOut + * \brief RX Time Out + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT16 psPoll; /**< The maximum time that the device will wait to receive traffic from the AP after transmission of PS-poll */ + TI_UINT16 UPSD; /**< The maximum time that the device will wait to receive traffic from the AP after transmission from UPSD + * enabled queue + */ +} TRxTimeOut; + +/** \struct TQueueTrafficParams + * \brief RX Time Out + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT8 queueID; /**< The TX queue ID number (0-7) */ + TI_UINT8 channelType; /**< Channel access type for the queue Refer to ChannelType_enum */ + TI_UINT8 tsid; /**< for EDCA - the AC Index (0-3, refer to AccessCategory_enum). + * For HCCA - HCCA Traffic Stream ID (TSID) of the queue (8-15) + */ + TI_UINT32 dot11EDCATableMSDULifeTime; /**< 802.11 EDCA Table MSDU Life Time */ + TI_UINT8 psScheme; /**< The power save scheme of the specified queue. Refer to PSScheme_enum */ + TI_UINT8 ackPolicy; /**< ACK policy per AC */ + TI_UINT32 APSDConf[2]; /**< APSD Configuration */ + +} TQueueTrafficParams; + + +/** \struct TFmCoexParams + * \brief FM Coexistence Parameters + * + * \par Description + * Used for Setting/Printing FM Coexistence Parameters + * + * \sa + */ +typedef struct +{ + TI_UINT8 uEnable; /* enable(1) / disable(0) the FM Coex feature */ + + TI_UINT8 uSwallowPeriod; /* Swallow period used in COEX PLL swallowing mechanism, + Range: 0-0xFF, 0xFF = use FW default + */ + + TI_UINT8 uNDividerFrefSet1; /* The N divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz. + Range: 0-0xFF, 0xFF = use FW default + */ + + TI_UINT8 uNDividerFrefSet2; /* The N divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz. + Range: 0-0xFF, 0xFF = use FW default + */ + + TI_UINT16 uMDividerFrefSet1; /* The M divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz. + Range: 0-0x1FF, 0xFFFF = use FW default + */ + + TI_UINT16 uMDividerFrefSet2; /* The M divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz. + Range: 0-0x1FF, 0xFFFF = use FW default + */ + + TI_UINT32 uCoexPllStabilizationTime;/* The time duration in uSec required for COEX PLL to stabilize. + 0xFFFFFFFF = use FW default + */ + + TI_UINT16 uLdoStabilizationTime; /* The time duration in uSec required for LDO to stabilize. + 0xFFFFFFFF = use FW default + */ + + TI_UINT8 uFmDisturbedBandMargin; /* The disturbed frequency band margin around the disturbed + frequency center (single sided). + For example, if 2 is configured, the following channels + will be considered disturbed channel: + 80 +- 0.1 MHz, 91 +- 0.1 MHz, 98 +- 0.1 MHz, 102 +- 0.1 MHz + 0xFF = use FW default + */ + + TI_UINT8 uSwallowClkDif; /* The swallow clock difference of the swallowing mechanism. + 0xFF = use FW default + */ + +} TFmCoexParams; + + +/** \struct TMibBeaconFilterIeTable + * \brief MIB Beacon Filter IE table + * + * \par Description + * Used for Read/Write the MIB/IE Beacon Filter + * NOTE: This struct is only meant to be used as a pointer reference to an actual buffer. + * Table size is not a constant and is derived from the buffer size given with the + * user command + * + * \sa TWD_WriteMibBeaconFilterIETable + */ +typedef struct +{ + /* Number of information elements in table */ + TI_UINT8 iNumberOfIEs; /**< Input Number of IE Tables */ + TI_UINT8 iIETable[MIB_MAX_SIZE_OF_IE_TABLE]; /**< Input IE Table */ + +} TMibBeaconFilterIeTable; + +/** \struct TMibCounterTable + * \brief MIB Counter Table + * + * \par Description + * Used for Getting Counters of MIB Table + * + * \sa + */ +typedef struct +{ + TI_UINT32 PLCPErrorCount; /**< The number of PLCP errors since the last time this information element was interrogated. + * This field is automatically cleared when it is interrogated + */ + TI_UINT32 FCSErrorCount; /**< The number of FCS errors since the last time this information element was interrogated. + * This field is automatically cleared when it is interrogated + */ + TI_UINT32 SeqNumMissCount; /**< The number of missed sequence numbers in the squentially values of frames seq numbers */ +} TMibCounterTable; + +/** \struct TMibWlanWakeUpInterval + * \brief MIB WLAN Wake-Up Interval + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT32 WakeUpInterval; /**< Wake Up Interval */ + TI_UINT8 ListenInterval; /**< Listen interval in unit of the beacon/DTIM */ + +} TMibWlanWakeUpInterval; + +/** \struct TMibTemplateFrame + * \brief MIB Template Frame + * + * \par Description + * Used for Writing MIB Frame Template to FW + * + * \sa TWD_WriteMibTemplateFrame + */ +typedef struct +{ + EMibTemplateType FrameType; /**< MIB Farme Template type */ + TI_UINT32 Rate; /**< Frame Rate */ + TI_UINT16 Length; /**< Frame Length */ + TI_UINT8 Data [MIB_TEMPLATE_DATA_MAX_LEN]; /**< Frame Template Data */ + +} TMibTemplateFrame; + +/** \struct TMibArpIpAddressesTable + * \brief MIB ARP Address Table + * + * \par Description + * Used for Writing MIB ARP Table Template to FW + * + * \sa TWD_WriteMib + */ +typedef struct +{ + TI_UINT32 FilteringEnable; /**< Enable/Disable Filtering */ + TIpAddr addr; /**< IP Address Table */ + +} TMibArpIpAddressesTable; + +/** \struct TMibGroupAdressTable + * \brief MIB Group Address Table + * + * \par Description + * Used for Writing MIB Group Table Template to FW + * + * \sa TWD_WriteMib + */ +typedef struct +{ + TMacAddr aGroupTable[MIB_MAX_MULTICAST_GROUP_ADDRS]; /**< Table of Multicast Group Addresses */ + TI_UINT8 bFilteringEnable; /**< Enable/Disable Filtering */ + TI_UINT8 nNumberOfAddresses; /**< Number of Multicast Addresses */ + +} TMibGroupAdressTable; + +/** \struct TTxRateClass + * \brief TX Rate Class + * + * \par Description + * Used for Set/Get TX Rate Policy Class to/from FW + * + * \sa + */ +typedef struct +{ + TI_UINT32 txEnabledRates; /**< A Bit Mask which indicates which Rates are enabled */ + TI_UINT8 shortRetryLimit; /**< */ + TI_UINT8 longRetryLimit; /**< */ + TI_UINT8 flags; /**< */ + TI_UINT8 reserved; /**< for alignment with the FW API */ + +} TTxRateClass; + +/** \struct TTxRatePolicy + * \brief TX Rate Policy + * + * \par Description + * Used for Set/Get TX Rate Policy to/from FW + * + * \sa + */ +typedef struct +{ + TI_UINT32 numOfRateClasses; /**< */ + TTxRateClass rateClass[MAX_NUM_OF_TX_RATE_CLASS_POLICIES]; /**< */ + +} TTxRatePolicy; + +/** \struct TCoexActivity + * \brief CoexActivity Parameters + * + * \par Description + * + * \sa + */ +typedef struct { + uint8 coexIp; /* 0-BT, 1-WLAN (according to CoexIp_e in FW) */ + uint8 activityId; /* According to BT/WLAN activity numbering in FW */ + uint8 defaultPriority; /* 0-255, activity default priority */ + uint8 raisedPriority; /* 0-255, activity raised priority */ + uint16 minService; /* 0-65535, The minimum service requested either in + requests or in milliseconds depending on activity ID */ + uint16 maxService; /* 0-65535, The maximum service allowed either in + requests or in milliseconds depending on activity ID */ +} TCoexActivity; + +/** \struct THalCoexActivityTable + * \brief CoexActivity Table Initialization Parameters + * + * \par Description + * + * \sa + */ +typedef struct +{ + uint32 numOfElements; + TCoexActivity entry[COEX_ACTIVITY_TABLE_MAX_NUM]; + +} THalCoexActivityTable; + +/** \struct DcoItrimParams_t + * \brief DCO Itrim params structure + * + * \par Description + * + * \sa + */ +typedef struct +{ + Bool_e enable; + uint32 moderationTimeoutUsec; +}DcoItrimParams_t; + +/** \union TMibData + * \brief MIB Data + * + * \par Description + * Union which defines all MIB Data types + * Used for write MIB Configuration to FW + * + * \sa TWD_WriteMib + */ +typedef union +{ + TMacAddr StationId; /**< Station ID MAC Address */ + TI_UINT32 MaxReceiveLifeTime; /**< HAl Control Max Rx MSDU Life Time, in TUs Units */ + TI_UINT32 SlotTime; /**< Radio (PHY) Slot Time Type */ + TMibGroupAdressTable GroupAddressTable; /**< MIB Group Address Table */ + TI_UINT8 WepDefaultKeyId; /**< WEP Defualt Security Key ID */ + TI_UINT8 PowerLevel; /**< */ + TI_UINT16 RTSThreshold; /**< */ + TI_UINT32 CTSToSelfEnable; /**< Enable/Disable CTS to Self */ + TMibArpIpAddressesTable ArpIpAddressesTable; /**< MIB ARP Address Table */ + TMibTemplateFrame TemplateFrame; /**< MIB Template Frame */ + TI_UINT8 RxFilter; /**< */ + TMibWlanWakeUpInterval WlanWakeUpInterval; /**< MIB WLAN Wake-Up Interval */ + TMibCounterTable CounterTable; /**< MIB Counter Table */ + TMibBeaconFilterIeTable BeaconFilter; /**< MIB Beacon Filter IE table */ + TTxRatePolicy txRatePolicy; /**< TX Rate Policy */ + +} TMibData; + +/** \struct TMib + * \brief MIB Structure + * + * \par Description + * Used for writing MIB Configuration to FW + * + * \sa TWD_WriteMib, TWD_WriteMibTemplateFrame, TWD_WriteMibBeaconFilterIETable, TWD_WriteMibTxRatePolicy + */ +typedef struct +{ + EMib aMib; /**< MIB Element Type */ + TI_UINT16 Length; /**< MIB Data Length */ + TMibData aData; /**< MIB Data */ + +} TMib; + +/** \union TTwdParamContents + * \brief TWD Parameters Content + * + * \par Description + * All FW Parameters contents + * + * \sa TWD_SetParam + */ +typedef union +{ + TI_UINT16 halCtrlRtsThreshold; /**< */ + TI_UINT8 halCtrlCtsToSelf; /**< */ + TRxTimeOut halCtrlRxTimeOut; /**< */ + TI_UINT16 halCtrlFragThreshold; /**< */ + TI_UINT16 halCtrlListenInterval; /**< */ + TI_UINT16 halCtrlCurrentBeaconInterval; /**< */ + TI_UINT8 halCtrlTxPowerDbm; /**< */ + ETxAntenna halCtrlTxAntenna; /**< */ + ERxAntenna halCtrlRxAntenna; /**< */ + TI_UINT8 halCtrlAifs; /**< */ + TI_BOOL halCtrlTxMemPoolQosAlgo; /**< */ + TI_BOOL halCtrlClkRunEnable; /**< */ + TRxCounters halCtrlCounters; /**< */ + + TMib* pMib; /**< */ + TI_UINT8 halCtrlCurrentChannel; /**< */ + + /* AC Qos parameters */ + TQueueTrafficParams *pQueueTrafficParams; /**< */ + + /* Security related parameters */ +#ifdef XCC_MODULE_INCLUDED + TI_BOOL rsnXCCSwEncFlag; /**< */ + TI_BOOL rsnXCCMicFieldFlag; /**< */ +#endif + ECipherSuite rsnEncryptionStatus; /**< */ + TI_UINT8 rsnHwEncDecrEnable; /**< 0- disable, 1- enable */ + TSecurityKeys *pRsnKey; /**< */ + TI_UINT8 rsnDefaultKeyID; /**< */ + + /* Measurements section */ + TMediumOccupancy mediumOccupancy; /**< */ + TI_BOOL halTxOpContinuation; /**< */ + + TTsfDtim fwTsfDtimInfo; /**< */ + + TInterrogateCmdCbParams interogateCmdCBParams; /**< */ + TConfigCmdCbParams configureCmdCBParams; /**< */ + + TTxRatePolicy *pTxRatePlicy; /**< */ + + /* WARNING!!! This section is used to set/get internal params only. */ + TI_UINT16 halCtrlAid; /**< */ + + ESoftGeminiEnableModes SoftGeminiEnable; /**< */ + TSoftGeminiParams SoftGeminiParam; /**< */ + + TFmCoexParams tFmCoexParams; /**< */ + + TI_UINT32 halCtrlMaxRxMsduLifetime; /**< */ + + /* Beacon Broadcast options */ + TBcnBrcOptions BcnBrcOptions; /**< */ + + /* PLT tests */ + TI_STATUS PltRxCalibrationStatus; /**< */ + + /* CoexActivity */ + THalCoexActivityTable tTwdParamsCoexActivityTable; /**< */ + + /* DCO Itrim */ + DcoItrimParams_t tDcoItrimParams; /**< */ + +} TTwdParamContents; + +/** \struct TTwdParamInfo + * \brief TWD Parameters Information + * + * \par Description + * + * \sa TWD_SetParam + */ +typedef struct +{ + TI_UINT32 paramType; /**< FW Parameter Information Identifier */ + TI_UINT32 paramLength; /**< FW Parameter Length */ + TTwdParamContents content; /**< FW Parameter content */ + +} TTwdParamInfo; + +/** \struct TRxXferReserved + * \brief RX Xfer Reserved + * + * \par Description + * + * \sa + */ +typedef struct +{ + ProcessIDTag_e packetType; /**< */ + TI_UINT8 rxLevel; /**< */ + TI_INT8 rssi; /**< */ + TI_UINT8 SNR; /**< */ + TI_UINT8 band; /**< */ + TI_UINT32 TimeStamp; /**< */ + EScanResultTag eScanTag; /**< */ + +} TRxXferReserved; + +/** \struct TRxAttr + * \brief RX Attributes + * + * \par Description + * + * \sa + */ +typedef struct +{ + PacketClassTag_enum ePacketType; /**< */ + TI_STATUS status; /**< */ + ERate Rate; /**< */ + TI_UINT8 SNR; /**< */ + TI_INT8 Rssi; /**< */ + TI_UINT8 channel; /**< */ + TI_UINT32 packetInfo; /**< */ + ERadioBand band; /**< */ + TI_UINT32 TimeStamp; /**< */ + EScanResultTag eScanTag; /**< */ + +} TRxAttr; + + +/** \struct TGeneralInitParams + * \brief General Initialization Parameters + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT16 halCtrlListenInterval; /**< */ + TI_UINT8 halCtrlCalibrationChannel2_4; /**< */ + TI_UINT8 halCtrlCalibrationChannel5_0; /**< */ + TI_UINT16 halCtrlRtsThreshold; /**< */ + TI_UINT16 halCtrlFragThreshold; /**< */ + TI_UINT32 halCtrlMaxTxMsduLifetime; /**< */ + TI_UINT32 halCtrlMaxRxMsduLifetime; /**< */ + ETxAntenna halCtrlTxAntenna; /**< */ + ERxAntenna halCtrlRxAntenna; /**< */ + TI_UINT8 halCtrlMacClock; /**< */ + TI_UINT8 halCtrlArmClock; /**< */ + TI_UINT16 halCtrlBcnRxTime; /**< */ + TI_BOOL halCtrlRxEnergyDetection; /**< */ + TI_BOOL halCtrlTxEnergyDetection; /**< */ + TI_BOOL halCtrlEepromLessEnable; /**< */ + TI_BOOL halCtrlRxDisableBroadcast; /**< */ + TI_BOOL halCtrlRecoveryEnable; /**< */ + TI_BOOL halCtrlFirmwareDebug; /**< */ + TI_BOOL WiFiWmmPS; /**< */ + TRxTimeOut rxTimeOut; /**< */ + TI_UINT8 halCtrlRateFallbackRetry; /**< */ + TI_BOOL b11nEnable; /**< */ + + TI_UINT16 TxCompletePacingThreshold; /**< */ + TI_UINT16 TxCompletePacingTimeout; /**< */ + TI_UINT16 RxIntrPacingThreshold; /**< */ + TI_UINT16 RxIntrPacingTimeout; /**< */ + + TI_UINT8 hwAccessMethod; /**< */ + TI_UINT8 maxSitesFragCollect; /**< */ + TI_UINT8 packetDetectionThreshold; /**< */ + TI_UINT32 nullTemplateSize; /**< */ + TI_UINT32 disconnTemplateSize; /**< */ + TI_UINT32 beaconTemplateSize; /**< */ + TI_UINT32 probeRequestTemplateSize; /**< */ + TI_UINT32 probeResponseTemplateSize; /**< */ + TI_UINT32 PsPollTemplateSize; /**< */ + TI_UINT32 qosNullDataTemplateSize; /**< */ + TI_UINT32 tddRadioCalTimout; /**< */ + TI_UINT32 CrtRadioCalTimout; /**< */ + TI_UINT32 UseMboxInterrupt; /**< */ + TI_UINT32 TraceBufferSize; /**< */ + TI_BOOL bDoPrint; /**< */ + TI_UINT8 StaMacAddress[MAC_ADDR_LEN]; /**< */ + TI_BOOL TxFlashEnable; /**< */ + TI_UINT8 RxBroadcastInPs; /**< */ + TI_UINT8 ConsecutivePsPollDeliveryFailureThreshold; /**< */ + TI_UINT8 TxBlocksThresholdPerAc[MAX_NUM_OF_AC];/**< */ + TI_UINT16 BeaconRxTimeout; /**< */ + TI_UINT16 BroadcastRxTimeout; /**< */ + + TI_UINT8 uRssiBeaconAverageWeight; /**< */ + TI_UINT8 uRssiPacketAverageWeight; /**< */ + TI_UINT8 uSnrBeaconAverageWeight; /**< */ + TI_UINT8 uSnrPacketAverageWeight; /**< */ + + TI_UINT32 uHostClkSettlingTime; /**< */ + TI_UINT8 uHostFastWakeupSupport; /**< */ + THalCoexActivityTable halCoexActivityTable; /**< */ + TFmCoexParams tFmCoexParams; /**< */ + +} TGeneralInitParams; + +/** \struct TPowerSrvInitParams + * \brief Power Service Init Parameters + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT8 numNullPktRetries; /**< */ + TI_UINT8 hangOverPeriod; /**< */ + TI_UINT16 reserve; /**< */ + +} TPowerSrvInitParams; + +/** \struct TScanSrvInitParams + * \brief Scan Service Init Parameters + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT32 numberOfNoScanCompleteToRecovery; /**< The number of consecutive no scan complete that will trigger a recovery notification */ + TI_UINT32 uTriggeredScanTimeOut; /**< i.e. split scan. Time out for starting triggered scan between 2 channels */ + +} TScanSrvInitParams; + + + + +/** \struct TArpIpFilterInitParams + * \brief ARP IP Filter Init Parameters + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT32 isFilterEnabled; /**< */ + TIpAddr addr; /**< */ + +} TArpIpFilterInitParams; + +/** \struct TMacAddrFilterInitParams + * \brief AMC Address Filter Init Parameters + * + * \par Description + * + * \sa + */ +typedef struct +{ + TI_UINT8 isFilterEnabled; /**< */ + TI_UINT8 numOfMacAddresses; /**< */ + TI_UINT16 reserve; /**< */ + TMacAddr macAddrTable[MAX_MULTICAST_GROUP_ADDRS]; /**< */ + +} TMacAddrFilterInitParams; + +/** \struct RateMangeParams_t + * \brief Rate Maangement params structure + * + * \par Description + * + * \sa + */ +typedef struct +{ + rateAdaptParam_e paramIndex; + uint16 RateRetryScore; + uint16 PerAdd; + uint16 PerTh1; + uint16 PerTh2; + uint16 MaxPer; + uint8 InverseCuriosityFactor[RATE_MGMT_NUM_OF_UC]; + uint8 TxFailLowTh; + uint8 TxFailHighTh; + uint8 PerAlphaShift; + uint8 PerAddShift; + uint8 PerBeta1Shift; + uint8 PerBeta2Shift; + uint8 RateCheckUp; + uint8 RateCheckDown; + uint8 RateRetryPolicy[RATE_MGMT_NUM_OF_RATES]; + uint8 PerWeightShift[RATE_MGMT_NUM_OF_UC]; // 2 weights, 1 per UC + uint8 TpWeightShift[RATE_MGMT_NUM_OF_UC]; // 2 weights, 1 per UC +}RateMangeParams_t; + +/* + * IMPORTANT NOTE: + * =============== + * This structure encapsulates the initialization data required by the TnetwDrv layer. + * All structures in it are arranged so no padding will be added by the compiler!! + * This is required to avoid missalignment when compiled by customers using GWSI API!! + */ +/** \struct TTwdInitParams + * \brief TWD Init Parameters + * + * \par Description + * All TWD Initialization Parameters + * + * \sa TWD_SetDefaults + */ +typedef struct +{ + TGeneralInitParams tGeneral; /**< General Initialization Parameters */ + TPowerSrvInitParams tPowerSrv; /**< Power Service Initialization Parameters */ + TScanSrvInitParams tScanSrv; /**< Scan Service Initialization Parameters */ + TArpIpFilterInitParams tArpIpFilter; /**< ARP IP filter Initialization Parameters */ + TMacAddrFilterInitParams tMacAddrFilter; /**< MAC Address Initialization Parameters */ + IniFileRadioParam tIniFileRadioParams; /**< Radio Initialization Parameters */ + IniFileGeneralParam tPlatformGenParams; /**< Radio Initialization Parameters */ + ACXSmartReflexConfigParams_t tSmartReflexParams; /**< Smart Refelx Parameters */ + ACXSmartReflexDebugParams_t tSmartReflexDebugParams; /**< Smart Refelx Debug Parameters */ + ACXSmartReflexState_t tSmartReflexState; /**< Smart Refelx state */ + RateMangeParams_t tRateMngParams; /**< Rate Managment Parameters */ + DcoItrimParams_t tDcoItrimParams; /**< Dco Itrim Parameters */ + +} TTwdInitParams; + +/** \struct TTwdHtCapabilities + * \brief TWD HT Capabilities + * + * \par Description + * + * \sa TWD_SetDefaults, TWD_GetTwdHtCapabilities + */ +typedef struct +{ + TI_BOOL b11nEnable; /**< Enable/Disable 802.11n flag */ + TI_UINT8 uChannelWidth; /**< */ + TI_UINT8 uRxSTBC; /**< */ + TI_UINT8 uMaxAMSDU; /**< */ + TI_UINT8 uMaxAMPDU; /**< */ + TI_UINT8 uAMPDUSpacing; /**< */ + TI_UINT8 aRxMCS[RX_TX_MCS_BITMASK_SIZE]; /**< */ + TI_UINT8 aTxMCS[RX_TX_MCS_BITMASK_SIZE]; /**< */ + TI_UINT16 uRxMaxDataRate; /**< */ + TI_UINT8 uPCOTransTime; /**< */ + TI_UINT32 uHTCapabilitiesBitMask; /**< */ + TI_UINT8 uMCSFeedback; /**< */ +} TTwdHtCapabilities; + +typedef struct +{ + int32 SNRCorrectionHighLimit; + int32 SNRCorrectionLowLimit; + int32 PERErrorTH; + int32 attemptEvaluateTH; + int32 goodAttemptTH; + int32 curveCorrectionStep; + + }RateMangeReadParams_t; + + +/* + * -------------------------------------------------------------- + * APIs + * -------------------------------------------------------------- + */ +/** @ingroup Control + * \brief Send Packet Transfer CB + * + * \param CBObj - object handle + * \param pPktCtrlBlk - Pointer to Input Packet Control Block + * \return void + * + * \par Description + * The Transfer-Done callback + * User registers the CB for Send Packet Transfer done + * + * \sa TWD_RegisterCb + */ +typedef void (* TSendPacketTranferCb)(TI_HANDLE CBObj, TTxCtrlBlk *pPktCtrlBlk); +/** @ingroup Control + * \brief Send Packet Debug CB + * + * \param CBObj - object handle + * \param pPktCtrlBlk - Pointer to Input Packet Control Block + * uDebugInfo - Debug Information + * \return void + * + * \par Description + * The Transfer-Done Debug callback + * + * \sa + */ +typedef void (* TSendPacketDebugCb) (TI_HANDLE CBObj, TTxCtrlBlk *pPktCtrlBlk, TI_UINT32 uDebugInfo); +/** @ingroup Control + * \brief Send Packet Debug CB + * + * \param CBObj - object handle + * \param pPktCtrlBlk - Pointer to Input Packet Control Block + * uDebugInfo - Debug Information + * \return void + * + * \par Description + * + * \sa TWD_RegisterCb + */ +typedef ERxBufferStatus (*TRequestForBufferCb) (TI_HANDLE hObj, void **pRxBuffer, TI_UINT16 aLength, TI_UINT32 uEncryptionFlag); +/** @ingroup Control + * \brief Send Packet Debug CB + * + * \param hObj - object handle + * \param pBuffer - Pointer to Received buffer frame + * \return void + * + * \par Description + * This function CB will be called when Received packet from RX Queue + * User registers the CB for RX Buffer Request + * + * \sa TWD_RegisterCb + */ +typedef void (*TPacketReceiveCb) (TI_HANDLE hObj, + const void *pBuffer); +/** @ingroup Control + * \brief Failure Event CB + * + * \param handle - object handle + * \param eFailureEvent - Failure Event Type + * \return void + * + * \par Description + * Callback clled for Failure event + * User registers the CB for Health-Moitoring + * + * \sa TWD_RegisterCb + */ +typedef void (*TFailureEventCb) (TI_HANDLE handle, EFailureEvent eFailureEvent); + +/** \union TTwdCB + * \brief TWD Callback + * + * \par Description + * Union which holds all TWD Internal Callbacks which are registered by user + * per Module and Event IDs + * + * \sa TWD_RegisterCb + */ +typedef union +{ + TSendPacketTranferCb sendPacketCB; /**< Transfer-Done callback */ + TSendPacketDebugCb sendPacketDbgCB; /**< Transfer-Done Debug callback */ + TRequestForBufferCb requestBufferCB; /**< Transfer-Done Debug callback */ + TPacketReceiveCb recvPacketCB; /**< RX Buffer Request callback */ + TFailureEventCb failureEventCB; /**< Failure Event callback */ +}TTwdCB; + + +/** @ingroup Control + * \brief Scan Service complete CB + * + * \param hCb - handle to the scan object + * \param eTag - the scan results type tag + * \param uResultCount - number of results received during this scan + * \param SPSStatus - bitmap indicating which channels were attempted (if this is an SPS scan) + * \param TSFError - whether a TSF error occurred (if this is an SPS scan) + * \param ScanStatus - scan SRV status (OK / NOK) + * \param PSMode - Power Save Mode + * \return void + * + * \par Description + * This function CB will be called when Scan Service is complete + * User registers the Scan Service Complete CB + * + * \sa TWD_RegisterScanCompleteCb + */ +typedef void (*TScanSrvCompleteCb) (TI_HANDLE hCb, + EScanResultTag eTag, + TI_UINT32 uResultCount, + TI_UINT16 SPSStatus, + TI_BOOL TSFError, + TI_STATUS ScanStatus, + TI_STATUS PSMode); +/** @ingroup Control + * \brief TWD Callback + * + * \param hCb - handle to object + * \param status - completion status + * \return void + * + * \par Description + * Initialising Complete Callaback (exapmle: Init HW/FW CB etc.) + * User can use its own Complete CB which will be called when + * the suitable module id & event number will arrive + * + * \sa TWD_Init + */ +typedef void (*TTwdCallback) (TI_HANDLE hCb, TI_STATUS status); +/** @ingroup Control + * \brief TWD Callback + * + * \param hCb - handle to object + * \param msrReply - Pointer to input measurement (which ended) Reply + * \return void + * + * \par Description + * The function prototype for the measurement complete callback + * User can use its own measurement complete CB + * which will be called when measurement end + * + * \sa TWD_StartMeasurement + */ +typedef void (*TMeasurementSrvCompleteCb) (TI_HANDLE hCb, TMeasurementReply* msrReply); +/** @ingroup Control + * \brief Command Response Callback + * + * \param hCb - handle to object + * \param status - status of Command ended + * \return void + * + * \par Description + * The function prototype for the Command Response CB + * Enables user to implement and use its own Response CB + * which will be called when TWD Command end + * + * \sa TWD_StartMeasurement, TWD_StopMeasurement, TWD_Scan, TWD_StopScan, TWD_StartPeriodicScan, TWD_StopPeriodicScan + */ +typedef void (*TCmdResponseCb) (TI_HANDLE hCb, TI_UINT16 status); +/** @ingroup Control + * \brief Command Response Callback + * + * \param hCb - handle to object + * \param status - status of Command ended + * \return void + * + * \par Description + * The function prototype for the Power Save Set Response CB + * Enables user to implement and use its own Response CB which + * will be called when Power Save Set Command end + * + * \sa TWD_SetPsMode + */ +typedef void (*TPowerSaveResponseCb)(TI_HANDLE hCb, TI_UINT8 status); +/** @ingroup Control + * \brief Command Complete Callback + * + * \param hCb - handle to object + * \param PsMode - Power Save Mode + * \param status - status of Command ended + * \return void + * + * \par Description + * The function prototype for the Power Save Set Complete CB + * Enables user to implement and use its own Complete CB which + * will be called when Power Save Set Command end (for success/faild notification) + * + * \sa TWD_SetPsMode + */ +typedef void (*TPowerSaveCompleteCb )(TI_HANDLE hCb, TI_UINT8 PsMode, TI_UINT8 status); +/** @ingroup Control + * \brief Create TWD Module + * + * \param hOs - OS module object handle + * \return TWD Module object handle on success or NULL on failure + * + * \par Description + * Calling this function Creates a TWD object and all its sub-modules. + * + * \sa TWD_Destroy, TWD_Init + */ +TI_HANDLE TWD_Create (TI_HANDLE hOs); +/** @ingroup Control + * \brief Destroy TWD Module + * + * \param hTWD - hTWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Calling this function Destroys TWD object and all its sub-modules. + * + * \sa TWD_Create + */ +TI_STATUS TWD_Destroy (TI_HANDLE hTWD); +/** Control + * \brief Init TWD module + * + * \param hTWD - TWD module object handle + * \param hReport - Report module object handle + * \param hUser - Master (User) module object handle + * \param hTimer - Timer module object handle + * \param hContext - context-engine module object handle + * \param hTxnQ - TxnQueue module object handle + * \param fInitHwCb - Init HW callback called when init HW phase is done + * \param fInitFwCb - Init FW callback called when init FW phase is done + * \param fConfigFwCb - Configuration FW callback called when configuring FW phase is done + * \param fStopCb - Stop callback called when TWD is stopped + * \param fInitFailCb - Fail callback called when TWD is Failed + * \return void + * + * \par Description + * Start hardware Init and Config process. + * This is the first function that must be called after TWD_Create. + * + * \sa TWD_Create, TWD_Stop + */ +void TWD_Init (TI_HANDLE hTWD, + TI_HANDLE hReport, + TI_HANDLE hUser, + TI_HANDLE hTimer, + TI_HANDLE hContext, + TI_HANDLE hTxnQ, + TTwdCallback fInitHwCb, + TTwdCallback fInitFwCb, + TTwdCallback fConfigFwCb, + TTwdCallback fStopCb, + TTwdCallback fInitFailCb); +/** @ingroup Control + * \brief Init HW module + * + * \param hTWD - TWD module object handle + * \param pbuf - Pointer to Input NVS Buffer + * \param length - Length of NVS Buffer + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Performs the HW init process. + * + * \sa + */ +TI_STATUS TWD_InitHw (TI_HANDLE hTWD, TI_UINT8 *pbuf, TI_UINT32 length); +/** @ingroup Control + * \brief Set Defults to TWD Init Params + * + * \param hTWD - TWD module object handle + * \param pInitParams - Pointer to Input init default parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_SetDefaults (TI_HANDLE hTWD, TTwdInitParams *pInitParams); +/** @ingroup Control + * \brief Init FW + * + * \param hTWD - TWD module object handle + * \param pFileInfo - Pointer to Input Buffer contains part of FW Image to Download + * The Following Field should be filled: + * pFileInfo->pBuffer + * pFileInfo->uLength + * pFileInfo->uAddress + * pFileInfo->bLast + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Performs FW Download, and Run FW + * + * \sa + */ +TI_STATUS TWD_InitFw (TI_HANDLE hTWD, TFileInfo *pFileInfo); +/** @ingroup Control + * \brief Open UART Bus Txn + * + * \param hTWD - TWD module object handle + * \param pParams - Pointer to Input parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_BusOpen (TI_HANDLE hTWD, void* pParams); +/** @ingroup Control + * \brief Close UART Bus Txn + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_BusClose (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Halt firmware + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_Stop (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Enable external events from FW + * + * \param hTWD - TWD module object handle + * \return void + * + * \par Description + * Enable external events from FW upon driver start or recovery completion + * + * \sa + */ +void TWD_EnableExternalEvents (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Registers TWD internal callback function + * + * \param hTWD - TWD module object handle + * \param event - event on which the registrated CB will be called + * \param fCb - Pointer to Registered CB function + * \param pData - Pointer to Registered CB data + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * This CB enables user to register TWD Internal CB functions of different Modules, + * with their data. + * The function identifies which TWD Module owns the Registered CB, and what the specific Registered CB + * according to event input parameter. + * Once the Module and specific CB function are identified, the CB is registerd in the TWD Module + * by calling suitable registration CB function + * + * \sa + */ +TI_STATUS TWD_RegisterCb (TI_HANDLE hTWD, TI_UINT32 event, TTwdCB *fCb, void *pData); +/** @ingroup Control + * \brief Exit from init mode + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Exit From Init Mode enable sending command to the MboxQueue (which store a command), + * while the interrupts are masked. + * The interrupt would be enable at the end of the init process + * + * \sa + */ +TI_STATUS TWD_ExitFromInitMode (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Finalize FW init and download + * + * \param hTWD - TWD module object handle + * \return void + * + * \par Description + * Init all the remaining initialization after the FW download has finished + * + * \sa + */ +void TWD_FinalizeDownload (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Finalize of faulty FW init and download + * + * \param hTWD - TWD module object handle + * \return void + * + * \par Description + * Call the upper layer failure callback after Init or FW download has finished with failure. + * + * \sa + */ +void TWD_FinalizeOnFailure (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Perform FW Configuration + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure the FW from the TWD DB - after configuring all HW objects + * + * \sa + */ +TI_STATUS TWD_ConfigFw (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Handle FW interrupt from ISR context + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * This is the FW-interrupt ISR context. The driver task is scheduled to hadnle FW-Events + * + * \sa + */ +TI_STATUS TWD_InterruptRequest (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Enable Recovery + * + * \param hTWD - TWD module object handle + * \return TRUE if recovery Enables, FALSE otherwise + * + * \par Description + * Return Recovery E/D status + * + * \sa + */ +TI_BOOL TWD_RecoveryEnabled (TI_HANDLE hTWD); +/** @ingroup Measurement + * \brief Starts a measurement + * + * \param hTWD - TWD module object handle + * \param pMsrRequest - Pointer to Input structure which contains the measurement parameters + * \param uTimeToRequestExpiryMs - The time (in milliseconds) the measurement SRV has to start the request + * \param fResponseCb - The Command response CB Function + * \param hResponseCb - Handle to Command response CB Function Obj + * \param fCompleteCb - The Command Complete CB Function + * \param hCompleteCb - Handle to Command Complete CB Function Obj + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Starts a measurement operation + * + * \sa + */ +TI_STATUS TWD_StartMeasurement (TI_HANDLE hTWD, + TMeasurementRequest *pMsrRequest, + TI_UINT32 uTimeToRequestExpiryMs, + TCmdResponseCb fResponseCb, + TI_HANDLE hResponseCb, + TMeasurementSrvCompleteCb fCompleteCb, + TI_HANDLE hCompleteCb); +/** @ingroup Measurement + * \brief Stops a measurement + * + * \param hTWD - TWD module object handle + * \param bSendNullData - Indicates whether to send NULL data when exiting driver mode + * \param fResponseCb - Pointer to Command response CB function + * \param hResponseCb - Handle to Command response CB parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Stops a measurement operation in progress + * + * \sa + */ +TI_STATUS TWD_StopMeasurement (TI_HANDLE hTWD, + TI_BOOL bSendNullData, + TCmdResponseCb fResponseCb, + TI_HANDLE hResponseCb); +/** @ingroup Measurement + * \brief Start scan + * + * \param hTWD - TWD module object handle + * \param pScanParams - Pointer to Input Scan specific parameters + * \param eScanTag - Scan tag, used for result and scan complete tracking + * \param bHighPriority - Indicates whether to perform a high priority (overlaps DTIM) scan + * \param bDriverMode - Indicates whether to try to enter driver mode (with PS on) before issuing the scan command + * \param bScanOnDriverModeError - Indicates whether to proceed with the scan if requested to enter driver mode and failed + * \param ePsRequest - Parameter sent to PowerSaveServer. + * Should indicates PS ON or "keep current" only when driver mode is requested, + * Otherwise should indicate OFF + * \param bSendNullData - Indicates whether to send Null data when exiting driver mode on scan complete + * \param fResponseCb - The Response CB Function which called after downloading the command + * \param hResponseCb - Handle to the Response CB Function Obj (Notice : last 2 params are NULL in Legacy run) + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Start scan. enter driver mode (PS) only if station is connected + * + * \sa + */ +TI_STATUS TWD_Scan (TI_HANDLE hTWD, + TScanParams *pScanParams, + EScanResultTag eScanTag, + TI_BOOL bHighPriority, + TI_BOOL bDriverMode, + TI_BOOL bScanOnDriverModeError, + E80211PsMode ePsRequest, + TI_BOOL bSendNullData, + TCmdResponseCb fResponseCb, + TI_HANDLE hResponseCb); +/** @ingroup Measurement + * \brief Stop scan + * + * \param hTWD - TWD module object handle + * \param eScanTag - Scan tag, used to track scan complete and result + * \param bSendNullData - Indicates whether to send Null data when exiting driver mode + * \param fScanCommandResponseCb - The Response CB Function which called after downloading the command + * \param hCb - Handle to the Response CB Function Obj (Notice : last 2 params are NULL in Legacy run) + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Sends a Stop Scan command to FW, no matter if we are in scan progress or not + * + * \sa + */ +TI_STATUS TWD_StopScan (TI_HANDLE hTWD, + EScanResultTag eScanTag, + TI_BOOL bSendNullData, + TCmdResponseCb fScanCommandResponseCb, + TI_HANDLE hCb); +/** @ingroup Measurement + * \brief Stop Scan on FW Reset + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Stop scan operation when a FW reset (recovery) situation is detected (by all processes + * other than scan) + * + * \sa + */ +TI_STATUS TWD_StopScanOnFWReset (TI_HANDLE hTWD); +/** @ingroup Measurement + * \brief Start Connection Periodic Scan operation + * + * \param hTWD - TWD module object handle + * \param pPeriodicScanParams - Pointer to Input Parameters Structures for the Periodic Scan operation + * \param eScanTag - Scan tag, used for scan complete and result tracking + * \param uPassiveScanDfsDwellTimeMs - Passive dwell time for DFS channels (in milli-secs) + * \param fResponseCb - Response CB Function which is called after downloading the command + * \param hResponseCb - Handle to Response CB Function Obj (Notice : last 2 params are NULL in Legacy run) + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Perform Connection Scan periodically + * + * \sa + */ +TI_STATUS TWD_StartConnectionScan (TI_HANDLE hTWD, + TPeriodicScanParams *pPeriodicScanParams, + EScanResultTag eScanTag, + TI_UINT32 uPassiveScanDfsDwellTimeMs, + TCmdResponseCb fResponseCb, + TI_HANDLE hResponseCb); +/** @ingroup Measurement + * \brief Stop Periodic Scan operation + * + * \param hTWD - TWD module object handle + * \param eScanTag - scan tag, used for scan complete and result tracking + * \param fResponseCb - Response CB Function which is called after downloading the command + * \param hResponseCb - Handle to Response CB Function Obj (Notice : last 2 params are NULL in Legacy run) + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Stop Periodic Connection Scan + * + * \sa + */ +TI_STATUS TWD_StopPeriodicScan (TI_HANDLE hTWD, + EScanResultTag eScanTag, + TCmdResponseCb fResponseCb, + TI_HANDLE hResponseCb); +/** @ingroup Measurement + * \brief Register CB for Scan Complete + * + * \param hTWD - TWD module object handle + * \param fScanCompleteCb - The Complete CB Function + * \param hScanCompleteCb - Handle to the Complete CB Function Obj + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Registers a Complete CB Function for Scan Complete notifications + * + * \sa + */ +TI_STATUS TWD_RegisterScanCompleteCb (TI_HANDLE hTWD, + TScanSrvCompleteCb fScanCompleteCb, + TI_HANDLE hScanCompleteCb); +/** @ingroup Misc + * \brief Set Parameters in FW + * + * \param hTWD - TWD module object handle + * \param pParamInfo - Pointer to Input TWD Parameters Information Structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Set/Configure Parameters Information in FW via Mail BOX + * + * \sa TTwdParamInfo + */ +TI_STATUS TWD_SetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo); +/** @ingroup Misc + * \brief Get Parameters from FW + * + * \param hTWD - TWD module object handle + * \param pParamInfo - Pointer to Input TWD Parameters Information Structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Get Parameters Information from FW via Mail BOX + * + * \sa + */ +TI_STATUS TWD_GetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo); +/** @ingroup Control + * \brief Callback which Checks MBOX + * + * \param hTWD - TWD module object handle + * \param uMboxStatus - Mailbox status + * \param pItrParamBuf - Pointer to Interrogate parameters buffer + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Perform FW validation by calling CB function which is used for handling MBOX error. + * If command MBOX queue identify MBOX error or timeout, it will call + * a failure-callback with MBOX_FAILURE type (FW failed) + * + * \sa + */ +TI_STATUS TWD_CheckMailboxCb (TI_HANDLE hTWD, TI_UINT16 uMboxStatus, void *pItrParamBuf); +/** @ingroup Control + * \brief Write MIB + * + * \param hTWD - TWD module object handle + * \param pMib - Pointer to Input MIB Structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Write configuration information to FW + * + * \sa TWD_ReadMib + */ +TI_STATUS TWD_WriteMib (TI_HANDLE hTWD, TMib* pMib); +/** @ingroup Control + * \brief Read MIB + * + * \param hTWD - TWD module object handle + * \param hCb - Handle to Request MIB CB Function Obj + * \param fCb - Pinter to Request MIB CB Function + * \param pCb - Pointer to read parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Read configuration information from FW + * + * \sa TWD_WriteMib + */ +TI_STATUS TWD_ReadMib (TI_HANDLE hTWD, TI_HANDLE hCb, void* fCb, void* pCb); +/** @ingroup Control + * \brief TWD Debug + * + * \param hTWD - TWD module object handle + * \param funcType - TWD Function Debuged + * \param pParam - Pointer to Input parameters of Debug function + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Use for Debug TWD + * + * \sa + */ +TI_STATUS TWD_Debug (TI_HANDLE hTWD, TI_UINT32 funcType, void *pParam); +/** @ingroup Control + * \brief Register event + * + * \param hTWD - TWD module object handle + * \param event - Event ID + * \param fCb - Event Callback function pointer + * \param hCb - Event Callback object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Register FW event callback function + * + * \sa + */ +TI_STATUS TWD_RegisterEvent (TI_HANDLE hTWD, TI_UINT32 event, void *fCb, TI_HANDLE hCb); +/** @ingroup Control + * \brief Disable event + * + * \param hTWD - TWD module object handle + * \param event - Event ID + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Disable specific FW event + * Note: Currently not in use + * + * \sa + */ +TI_STATUS TWD_DisableEvent (TI_HANDLE hTWD, TI_UINT32 event); +/** @ingroup Control + * \brief Enable event + * + * \param hTWD - TWD module object handle + * \param event - Event ID + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Enable specific FW event + * + * \sa + */ +TI_STATUS TWD_EnableEvent (TI_HANDLE hTWD, TI_UINT32 event); +TI_STATUS TWD_dbgRoamingCommands (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Convert RSSI to RX Level + * + * \param hTWD - TWD module object handle + * \param iRssiVal - RSSI Input Value + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Note: Currently not in use! + * + * \sa + */ +TI_INT8 TWD_ConvertRSSIToRxLevel (TI_HANDLE hTWD, TI_INT32 iRssiVal); +/** @ingroup Control + * \brief Complete TWD Stop + * + * \param hTWD - TWD module object handle + * \return void + * + * \par Description + * + * \sa TWD_Stop, TWD_Init + */ +void TWD_StopComplete (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Disable Interrupts + * + * \param hTWD - TWD module object handle + * \return void + * + * \par Description + * Disable the FW Event client of the context thread handler + * + * \sa + */ +void TWD_DisableInterrupts (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Enable Interrupts + * + * \param hTWD - TWD module object handle + * \return void + * + * \par Description + * Enable the FW Event client of the context thread handler + * + * \sa + */ +void TWD_EnableInterrupts (TI_HANDLE hTWD); +/** @ingroup Control + * \brief Translate host to FW time (Usec) + * + * \param hTWD - TWD module object handle + * \param uHostTime - The host time in MS to translate + * + * \return FW Time in Usec + * + * \par Description + * + * \sa + */ +TI_UINT32 TWD_TranslateToFwTime (TI_HANDLE hTWD, TI_UINT32 uHostTime); +/** @ingroup BSS + * \brief Get TWD HT Capabilities + * + * \param hTWD - TWD module object handle + * \param pTwdHtCapabilities - Pointer read structure Output + * \return TI_OK + * + * \par Description + * + * + * \sa + */ +void TWD_GetTwdHtCapabilities (TI_HANDLE hTWD, TTwdHtCapabilities **pTwdHtCapabilities); +#ifdef TI_DBG +/** @ingroup Measurement + * \brief Prints Scan Server Debug status + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_PrintMacServDebugStatus (TI_HANDLE hTWD); + +/** @ingroup Test + * \brief Prints Tx Info + * + * \param hTWD - TWD module object handle + * \param ePrintInfo - Information type + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Call the requested print function - used for Debug Test + * + * \sa + */ +TI_STATUS TWD_PrintTxInfo (TI_HANDLE hTWD, ETwdPrintInfoType ePrintInfo); +#endif + +/*-----*/ +/* Get */ +/*-----*/ + +/** @ingroup Control + * \brief Get number of Commands in CMD Queue + * + * \param hTWD - TWD module object handle + * \return Maximum Number of Commands currently in CMD Queue + * + * \par Description + * + * \sa + */ +TI_UINT32 TWD_GetMaxNumberOfCommandsInQueue (TI_HANDLE hTWD); +/** @ingroup Power_Management + * \brief Get Power Save Status + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_BOOL TWD_GetPsStatus (TI_HANDLE hTWD); + +TI_STATUS TWD_GetRxFilters (TI_HANDLE hTWD, TI_UINT32 *pRxConfigOption, TI_UINT32* pRxFilterOption); +TI_STATUS TWD_GetRadioStandByState (TI_HANDLE hTWD); + +/** @ingroup Control + * \brief Get FW Information + * + * \param hTWD - TWD module object handle + * \return TFwInfo - Pointer to Output FW Information Structure + * + * \par Description + * Gets the TFwInfo pointer + * + * \sa TFwInfo + */ +TFwInfo* TWD_GetFWInfo (TI_HANDLE hTWD); +/** @ingroup BSS + * \brief Get Group Address Table + * + * \param hTWD - TWD module object handle + * \param pEnabled - Pointer to Output Indicatore if MAC Address Filter is Enabled + * \param pNumGroupAddrs - Pointer to Output Number of Group Address + * \param pGroupAddr - Pointer to Output Group Address Table + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa TWD_WriteMib, TMacAddr + */ +TI_STATUS TWD_GetGroupAddressTable (TI_HANDLE hTWD, TI_UINT8* pEnabled, TI_UINT8* pNumGroupAddrs, TMacAddr *pGroupAddr); +/** @ingroup Control + * \brief Read Memory + * + * \param hTWD - TWD module object handle + * \param pMemDebug - Pointer to read Output + * \param fCb - Pointer to function Callback + * \param hCb - Handle to function Callback Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_readMem (TI_HANDLE hTWD, TFwDebugParams* pMemDebug, void* fCb, TI_HANDLE hCb); +/** @ingroup Control + * \brief Write Memory + * + * \param hTWD - TWD module object handle + * \param pMemDebug - Pointer to write Input + * \param fCb - Pointer to function Callback + * \param hCb - Handle to function Callback Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_writeMem (TI_HANDLE hTWD, TFwDebugParams* pMemDebug, void* fCb, TI_HANDLE hCb); + +/** @ingroup Control + * \brief Check if addr is a valid memory address + * + * \param hTWD - TWD module object handle + * \param pMemDebug - Pointer to addr & length + * \return TI_TRUE on success or TI_FALSE on failure + * + * \par Description + * + * \sa + */ +TI_BOOL TWD_isValidMemoryAddr (TI_HANDLE hTWD, TFwDebugParams* pMemDebug); + +/** @ingroup Control + * \brief Check if addr is a valid register address + * + * \param hTWD - TWD module object handle + * \param pMemDebug - Pointer to addr & length + * \return TI_TRUE on success or TI_FALSE on failure + * + * \par Description + * + * \sa + */ +TI_BOOL TWD_isValidRegAddr (TI_HANDLE hTWD, TFwDebugParams* pMemDebug); + +/*-----*/ +/* Set */ +/*-----*/ + +/** @ingroup Power_Management + * \brief Set Power Save Mode + * + * \param hTWD - TWD module object handle + * \param ePsMode - Power Save Mode + * \param bSendNullDataOnExit - Indicates whether to send NULL data when exiting driver mode + * \param hPowerSaveCompleteCb - Handle to PS Complete CB Parameters Obj + * \param fPowerSaveCompleteCb - The PS Complete CB function + * \param fPowerSaveResponseCb - The PS Response CB function + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_SetPsMode (TI_HANDLE hTWD, + E80211PsMode ePsMode, + TI_BOOL bSendNullDataOnExit, + TI_HANDLE hPowerSaveCompleteCb, + TPowerSaveCompleteCb fPowerSaveCompleteCb, + TPowerSaveResponseCb fPowerSaveResponseCb); +/** @ingroup Radio + * \brief Set Rate Modulation + * + * \param hTWD - TWD module object handle + * \param rate - Rate Modulation Value + * \return TRUE if Power Service State is Pwer Save, FALSE otherwise + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_SetNullRateModulation (TI_HANDLE hTWD, TI_UINT16 rate); +/** @ingroup Radio + * \brief Set Radio Band + * + * \param hTWD - TWD module object handle + * \param eRadioBand - Radio Band Type + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_SetRadioBand (TI_HANDLE hTWD, ERadioBand eRadioBand); +/** @ingroup Data_Path + * \brief Set Security Sequance Number + * + * \param hTWD - TWD module object handle + * \param securitySeqNumLsByte - LS Byte of Security Sequance Number + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Update the TKIP/AES sequence-number according to the Tx data packet security-sequance-number + * Note: The FW always provides the last used sequance-number so no need to check if the current + * packet is data and WEP is on + * + * \sa + */ +TI_STATUS TWD_SetSecuritySeqNum (TI_HANDLE hTWD, TI_UINT8 securitySeqNumLsByte); +/** @ingroup BSS + * \brief Update DTIM & TBTT + * + * \param hTWD - TWD module object handle + * \param uDtimPeriod - DTIM period in number of beacons + * \param uBeaconInterval - Beacon perios in TUs (1024 msec) + * \return void + * + * \par Description + * Update DTIM and Beacon periods for scan timeout calculations + * + * \sa + */ +void TWD_UpdateDtimTbtt (TI_HANDLE hTWD, TI_UINT8 uDtimPeriod, TI_UINT16 uBeaconInterval); + +/*---------*/ +/* Command */ +/*---------*/ + + +TI_STATUS TWD_CmdStartScan (TI_HANDLE hTWD, + TScanParams *pScanVals, + TI_BOOL bHighPriority, + void* fScanCommandResponseCb, + TI_HANDLE hCb); +TI_STATUS TWD_CmdStartSPSScan (TI_HANDLE hTWD, + TScanParams *pScanVals, + void *fScanCommandResponseCb, + TI_HANDLE hCb); +TI_STATUS TWD_CmdStopScan (TI_HANDLE hTWD, void *fScanCommandResponseCb, TI_HANDLE hCb); + +TI_STATUS TWD_CmdStopSPSScan (TI_HANDLE hTWD, void *fScanCommandResponseCb, TI_HANDLE hCb); + +/** @ingroup Measurement + * \brief Set Split scan time out + * + * \param hTWD - TWD module object handle + * \param uTimeOut - Scan Time Out + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Set Triggered scan time out per channel + * + * \sa + */ +TI_STATUS TWD_CmdSetSplitScanTimeOut (TI_HANDLE hTWD, TI_UINT32 uTimeOut); +/** @ingroup BSS + * \brief Join BSS + * + * \param hTWD - TWD module object handle + * \param pJoinBssParams - Pointer to Join BSS Input parameters structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdJoinBss (TI_HANDLE hTWD, TJoinBss *pJoinBssParams); +/** @ingroup Control + * \brief Command Template + * + * \param hTWD - TWD module object handle + * \param pTemplateParams - Pointer to Input Template Parameters Structure + * \param fCb - Pointer to Command Callback Function + * \param hCb - Handle to Command Callback Function Obj. Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Sets a template to the FW + * + * \sa + */ +/* 6.1.08 - for future WHA measurement command */ +TI_STATUS TWD_CmdTemplate (TI_HANDLE hTWD, TSetTemplate *pTemplateParams, void *fCb, TI_HANDLE hCb); +/** @ingroup Data_Path + * \brief Enable Tx path + * + * \param hTWD - TWD module object handle + * \param channel - Channel Number + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Enable tx path on the hardware + * + * \sa + */ +TI_STATUS TWD_CmdEnableTx (TI_HANDLE hTWD, TI_UINT8 channel); +/** @ingroup Data_Path + * \brief Disable Tx path + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdDisableTx (TI_HANDLE hTWD); +/** @ingroup Measurement + * \brief Command Noise Histogram + * + * \param hTWD - TWD module object handle + * \param pNoiseHistParams - Pointer Input Noise Histogram Parameters: + * holds Start/Stop Noise Histogram Measure Indication, + * Sample Interval & Sample Ranges + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Send a Start/Stop Noise Histogram Measure Command to the FW with measure parameters + * + * \sa TNoiseHistogram + */ +TI_STATUS TWD_CmdNoiseHistogram (TI_HANDLE hTWD, TNoiseHistogram *pNoiseHistParams); + +TI_STATUS TWD_CmdPSMode (TI_HANDLE hTWD, TPowerSaveParams *pPowerSaveParams); +/** @ingroup Radio + * \brief Command Switch Channel + * + * \param hTWD - TWD module object handle + * \param pSwitchChannelCmd - Pointer to Switch Channel Parameters Structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa TSwitchChannelParams + */ +TI_STATUS TWD_CmdSwitchChannel (TI_HANDLE hTWD, TSwitchChannelParams *pSwitchChannelCmd); +/** @ingroup Radio + * \brief Command Switch Channel Cancel + * + * \param hTWD - TWD module object handle + * \param channel - Channek Number + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdSwitchChannelCancel (TI_HANDLE hTWD, TI_UINT8 channel); +/** @ingroup Control + * \brief FW Disconnect + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdFwDisconnect (TI_HANDLE hTWD, DisconnectType_e uDisconType, TI_UINT16 uDisconReason); +/** @ingroup Measurement + * \brief Start Measurement Command + * + * \param hTWD - TWD module object handle + * \param uDisconReason - 2 bytes of disconnect reason to be use in deauth/disassoc frmaes + * \param uDisconType - Immediate (dont send frames) or send Deauth or send Disassoc frmae + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * send Command for start measurement to FW + * + * \sa TMeasurementParams + */ +TI_STATUS TWD_CmdMeasurement (TI_HANDLE hTWD, + TMeasurementParams *pMeasurementParams, + void *fCommandResponseCb, + TI_HANDLE hCb); +/** @ingroup Measurement + * \brief Stop Measurement Command + * + * \param hTWD - TWD module object handle + * \param fCb - Pointer to Callback Function + * \param hCb - Handle to Callback Function Object Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * send Command for stop measurement to FW + * + * \sa + */ +TI_STATUS TWD_CmdMeasurementStop (TI_HANDLE hTWD, void* fCb, TI_HANDLE hCb); +/** @ingroup UnKnown + * \brief AP Discovery + * + * \param hTWD - TWD module object handle + * \param pApDiscoveryParams - Pointer to Input AP Discovery Parameters Structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdApDiscovery (TI_HANDLE hTWD, TApDiscoveryParams *pApDiscoveryParams); +/** @ingroup UnKnown + * \brief AP Discovery Stop + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdApDiscoveryStop (TI_HANDLE hTWD); + +TI_STATUS TWD_CmdTest (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, TTestCmd* pTestCmd); +/** @ingroup Control + * \brief Helth Check + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Trigger the FW health test command and wait for results + * + * \sa + */ +TI_STATUS TWD_CmdHealthCheck (TI_HANDLE hTWD); +/** @ingroup UnKnown + * \brief AP Discovery + * + * \param hTWD - TWD module object handle + * \param staState - stat of the station (CONNECTED) + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CmdSetStaState (TI_HANDLE hTWD, TI_UINT8 staState, void *fCb, TI_HANDLE hCb); + +/*-----------*/ +/* Configure */ +/*-----------*/ + +/** @ingroup UnKnown + * \brief Configure ARP table + * + * \param hTWD - TWD module object handle + * \param tIpAddr - IP Address Input Buffer + * \param bEnabled - Indicates if ARP filtering is Enabled (1) or Disabled (0) + * \param eIpVer - IP Version + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure ARP IP Address table + * + * \sa + */ +TI_STATUS TWD_CfgArpIpAddrTable (TI_HANDLE hTWD, + TIpAddr tIpAddr, + TI_BOOL bEnabled, + EIpVer eIpVer); +/** @ingroup BSS + * \brief Configure Group Address Table + * + * \param hTWD - TWD module object handle + * \param uNumGroupAddrs - Number of Group Address + * \param pGroupAddr - Pointer to Input Group Address Table + * \param bEnabled - Indicates if MAC Address Filter is Enabled + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa TWD_WriteMib + */ +TI_STATUS TWD_CfgGroupAddressTable (TI_HANDLE hTWD, + TI_UINT8 uNumGroupAddrs, + TMacAddr *pGroupAddr, + TI_BOOL bEnabled); +/** @ingroup Data_Path + * \brief Configure RX Filters + * + * \param hTWD - TWD module object handle + * \param uRxConfigOption - RX Configuration Option + * \param uRxFilterOption - RX Filter Option + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa TWD_WriteMib + */ +TI_STATUS TWD_CfgRx (TI_HANDLE hTWD, TI_UINT32 uRxConfigOption, TI_UINT32 uRxFilterOption); +/** @ingroup UnKnown + * \brief Configure Packet Detection Threshold + * + * \param hTWD - TWD module object handle + * \param threshold - Threshold Value + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa ERate + */ +TI_STATUS TWD_CfgPacketDetectionThreshold (TI_HANDLE hTWD, TI_UINT32 threshold); +/** @ingroup Radio + * \brief Configure Slot Time + * + * \param hTWD - TWD module object handle + * \param eSlotTimeVal - Slot Time Value + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgSlotTime (TI_HANDLE hTWD, ESlotTime eSlotTimeVal); +/** @ingroup Radio + * \brief Configure Preamble + * + * \param hTWD - TWD module object handle + * \param ePreamble - Preamble Value + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgPreamble (TI_HANDLE hTWD, EPreamble ePreamble); +/** @ingroup Power_Management + * \brief Configure Beacon Filter State + * + * \param hTWD - TWD module object handle + * \param uBeaconFilteringStatus - Beacon Filtering Status. Indicates whether the filter is enabled: + * 1 - enabled, 0 - disabled + * \param uNumOfBeaconsToBuffer - Determines the number of beacons without the unicast TIM bit set, + * that the firmware buffers before signaling the host about ready frames. + * When thi snumber is set to 0 and the filter is enabled, beacons without + * the unicast TIM bit set are dropped. + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure Beacon Filter State to the FW + * + * \sa + */ +TI_STATUS TWD_CfgBeaconFilterOpt (TI_HANDLE hTWD, TI_UINT8 uBeaconFilteringStatus, TI_UINT8 uNumOfBeaconsToBuffer); +/** @ingroup Power_Management + * \brief Configure Beacon Filter Table + * + * \param hTWD - TWD module object handle + * \param uNumOfIe - The number of IE's in the table + * \param pIeTable - Pointer to Input IE Table + * \param uIeTableSize - Size of Input IE Table + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure Beacon Filter Table to the FW + * + * \sa + */ +TI_STATUS TWD_CfgBeaconFilterTable (TI_HANDLE hTWD, TI_UINT8 uNumOfIe, TI_UINT8 *pIeTable, TI_UINT8 uIeTableSize); +/** @ingroup Power_Management + * \brief Configure Wake Up Condition + * + * \param hTWD - TWD module object handle + * \param pPowerMgmtConfig - Pointer to Input Power Management Configuration Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure Power Manager's Wake Up Condition + * + * \sa + */ +TI_STATUS TWD_CfgWakeUpCondition (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig); +/** @ingroup UnKnown + * \brief Configure Beacon Broadcast Options + * + * \param hTWD - TWD module object handle + * \param pPowerMgmtConfig - Pointer to Input Power Management Configuration Parameters Structure + * The Following Field should be filled: + * pPowerMgmtConfig->BcnBrcOptions.BeaconRxTimeout + * pPowerMgmtConfig->BcnBrcOptions.BroadcastRxTimeout + * pPowerMgmtConfig->BcnBrcOptions.RxBroadcastInPs - if set, enables receive of broadcast packets in Power-Save mode + * pPowerMgmtConfig->ConsecutivePsPollDeliveryFailureThreshold - No answer after Ps-Poll work-around + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure Power Manager's Beacon Broadcast Options: + * Beacon RX time Out, Broadcast RX Timeout, RX Broadcast In Power Save, + * Consecutive Power Save Poll Delivery Failure Threshold + * + * + * \sa TPowerMgmtConfig, TBcnBrcOptions + */ +TI_STATUS TWD_CfgBcnBrcOptions (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig); + +/** @ingroup BSS + * \brief Configure Max TX Retry + * + * \param hTWD - TWD module object handle + * \param pRoamingTriggerCmd - Pointer to Input Configuration Parameters Structure + * The Following Field should be filled: + * pRoamingTriggerCmd->maxTxRetry + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure the Max Tx Retry parameters + * + * \sa + */ +TI_STATUS TWD_CfgMaxTxRetry (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd); +/** @ingroup BSS + * \brief Configure Connection Monitoring + * + * \param hTWD - TWD module object handle + * \param pRoamingTriggerCmd - Pointer to Input Configuration Parameters Structure + * The Following Field should be filled: + * pRoamingTriggerCmd->BssLossTimeout + * pRoamingTriggerCmd->TsfMissThreshold + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure the Bss Lost Timeout & TSF miss threshold Parameters + * + * \sa + */ +TI_STATUS TWD_CfgConnMonitParams (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd); +/** @ingroup Power_Management + * \brief Configure Sleep Auth + * + * \param hTWD - TWD module object handle + * \param eMinPowerPolicy - Minimum Power Policy Type + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure the minimum power policy to the FW + * + * \sa EPowerPolicy + */ +TI_STATUS TWD_CfgSleepAuth (TI_HANDLE hTWD, EPowerPolicy eMinPowerPolicy); +/** @ingroup Control + * \brief Configure MAC Clock + * + * \param hTWD - TWD module object handle + * \param uMacClock - MAC Clock value + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgMacClock (TI_HANDLE hTWD, TI_UINT32 uMacClock); +/** @ingroup Control + * \brief Configure ARM Clock + * + * \param hTWD - TWD module object handle + * \param uArmClock - ARM Clock value + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgArmClock (TI_HANDLE hTWD, TI_UINT32 uArmClock); +/** @ingroup Data_Path + * \brief Configure RX Data Filter + * + * \param hTWD - TWD module object handle + * \param index - Index of the Rx Data filter + * \param command - Command: Add/remove the filter + * \param eAction - Action to take when packets match the pattern + * \param uNumFieldPatterns - Number of field patterns in the filter + * \param uLenFieldPatterns - Length of the field pattern series + * \param pFieldPatterns - Series of field patterns + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Add/remove Rx Data filter information element + * + * \sa + */ +TI_STATUS TWD_CfgRxDataFilter (TI_HANDLE hTWD, + TI_UINT8 index, + TI_UINT8 command, + filter_e eAction, + TI_UINT8 uNumFieldPatterns, + TI_UINT8 uLenFieldPatterns, + TI_UINT8 *pFieldPatterns); +/** @ingroup Data_Path + * \brief Configure Enable RX Data Filter + * + * \param hTWD - TWD module object handle + * \param bEnabled - Indicates if Rx data filtering is enabled or Disabled + * (0: data filtering disabled, Otherwise: enabled) + * \param eDefaultAction - The default action taken on non-matching packets + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure Enable/Disable RX Data Filter, and which default action to perform if it is enabled + * + * \sa + */ +TI_STATUS TWD_CfgEnableRxDataFilter (TI_HANDLE hTWD, TI_BOOL bEnabled, filter_e eDefaultAction); +/** @ingroup BSS + * \brief Configure RRSSI/SNR Trigger parameters + * + * \param hTWD - TWD module object handle + * \param pRssiSnrTrigger - Pointer to RRSSI/SNR Input parameter Structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgRssiSnrTrigger (TI_HANDLE hTWD, RssiSnrTriggerCfg_t* pRssiSnrTrigger); +/** @ingroup QoS + * \brief Configure AC parameters + * + * \param hTWD - TWD module object handle + * \param pAcQosParams - Pointer to Input AC Quality Of Service Parameters Structure + * Fields that should be filled: + * pAcQosParams->ac + * pAcQosParams->aifsn + * pAcQosParams->cwMax + * pAcQosParams->cwMin + * pAcQosParams->txopLimit + * \param fCb - Pointer to Command CB Function + * \param hCb - Handle to Command CB Function Obj Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgAcParams (TI_HANDLE hTWD, TAcQosParams *pAcQosParams, void *fCb, TI_HANDLE hCb); +/** @ingroup QoS + * \brief Configure Power Save RX Streaming + * + * \param hTWD - TWD module object handle + * \param pPsRxStreaming - Pointer to Input Power Save RX Straeming Parameters Structure + * Fields that should be filled: + * pPsRxStreaming->uTid + * pPsRxStreaming->bEnabled + * pPsRxStreaming->uStreamPeriod + * pPsRxStreaming->uTxTimeout + * \param fCb - Pointer to Command CB Function + * \param hCb - Handle to Command CB Function Obj Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa TPsRxStreaming + */ +TI_STATUS TWD_CfgPsRxStreaming (TI_HANDLE hTWD, TPsRxStreaming *pPsRxStreaming, void *fCb, TI_HANDLE hCb); +/** @ingroup Power_Management + * \brief Configure BET + * + * \param hTWD - TWD module object handle + * \param Enable - 0: disable BET, Otherwirs: Enable BET + * \param MaximumConsecutiveET - Max number of consecutive beacons that may be early terminated + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgBet (TI_HANDLE hTWD, TI_UINT8 Enable, TI_UINT8 MaximumConsecutiveET); +/** @ingroup UnKnown + * \brief Configure Keep Alive + * + * \param hTWD - TWD module object handle + * \param pKeepAliveParams - Pointer to Keep Alive parameters structure + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configures the keep-alive paramters + * + * \sa + */ +TI_STATUS TWD_CfgKeepAlive (TI_HANDLE hTWD, TKeepAliveParams *pKeepAliveParams); +/** @ingroup Power_Management + * \brief Configure Keep Alive Enable/Disable flag + * + * \param hTWD - TWD module object handle + * \param enaDisFlag - Indicates whether to Enable (TI_TRUE) or Disable Keep Alive + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgKeepAliveEnaDis (TI_HANDLE hTWD, TI_UINT8 enaDisFlag); +/** @ingroup Data_Path + * \brief Configure Set BA Initiator + * + * \param hTWD - TWD module object handle + * \param uTid - TID number + * \param uState - Policy : Enable / Disable + * \param tRa - Mac address of: SA as receiver / RA as initiator + * \param uWinSize - windows size in number of packet + * \param uInactivityTimeout - as initiator inactivity timeout in time units(TU) of 1024us / as receiver reserved + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * configure BA session initiator parameters setting in the FW + * called after join in order to init the parameters for negotiating BA sessions as initiator. + * Parameters initialized: RA, TID, WinSize, Inactivity Timeout and state = Enable/Disable. + * In case the host sends a broadcast address as RA the FW is allowed to Set or Deleted BA sessions + * to any receiver for that TID. + * In case of disassociate the FW allowed to establish BA session just after get that command. + * That command will not need any respond from the FW. In case DELBA send to STA or from the + * STA as initiator the FW doesn't send event to the host + * + * \sa + */ +TI_STATUS TWD_CfgSetBaInitiator (TI_HANDLE hTWD, + TI_UINT8 uTid, + TI_UINT8 uState, + TMacAddr tRa, + TI_UINT16 uWinSize, + TI_UINT16 uInactivityTimeout); +/** @ingroup Data_Path + * \brief Configure Set BA Receiver + * + * \param hTWD - TWD module object handle + * \param uTid - TID number + * \param uState - Policy : Enable / Disable + * \param tRa - Mac address of: SA as receiver / RA as initiator + * \param uWinSize - windows size in number of packet + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * configure BA session receiver parameters setting in the FW + * called after join in order to init the parameters for incoming BA session, as a responder. + * Parameters initialized: SA, TID, winSize and state = Enable/Disable. + * In case the host sends a broadcast address as SA the FW is allowed to Set/Deleted BA sessions + * to any sender for that TID. + * In case of disassociate the FW allowed to establish BA session just after get that command. + * The events of that command will respond via the RX path from the FW: ADDBA, DELBA, BAR packets. + * + * \sa + */ +TI_STATUS TWD_CfgSetBaReceiver (TI_HANDLE hTWD, + TI_UINT8 uTid, + TI_UINT8 uState, + TMacAddr tRa, + TI_UINT16 uWinSize); + +/** @ingroup Data_Path + * \brief Close all BA receiver sessions + * + * \param hTWD - TWD module object handle + * \return None + * + * \par Description + * Close all BA receiver sessions and pass all packets in the TID queue to upper layer. + * + * \sa + */ +void TWD_CloseAllBaSessions(TI_HANDLE hTWD); + +/** @ingroup BSS + * \brief Set FW HT Capabilities + * + * \param hTWD - TWD module object handle + * \param pHtCapabilitiesIe - Pointer to string of HT capability IE unparsed + * \param bAllowHtOperation - TI_TRUE: HT operation allowed, Otherwise: HT operation NOT allowed + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Parse HT capability IE and set the current AP HT Capabilities to the FW + * + * \sa + */ +TI_STATUS TWD_CfgSetFwHtCapabilities (TI_HANDLE hTWD, + Tdot11HtCapabilitiesUnparse *pHtCapabilitiesIe, + TI_BOOL bAllowHtOperation); +/** @ingroup BSS + * \brief Set FW HT Information + * + * \param hTWD - TWD module object handle + * \param pHtInformationIe - Pointer to string of HT information IE unparsed + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Parse HT Information IE and set the current AP HT Information to the FW + * + * \sa + */ +TI_STATUS TWD_CfgSetFwHtInformation (TI_HANDLE hTWD, Tdot11HtInformationUnparse *pHtInformationIe); + + +/** @ingroup UnKnown + * \brief Enable/Disabel burst mode + * + * \param hTWD - TWD module object handle + * \param bEnabled - burst mode: Enable/Disable + * \return TI_OK + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_CfgBurstMode (TI_HANDLE hTWD, TI_BOOL bEnabled); + + +/*-------------*/ +/* Interrogate */ +/*-------------*/ + +/** @ingroup UnKnown + * \brief Interrogate Roamming Statistics + * + * \param hTWD - TWD module object handle + * \param fCb - Pointer to Command CB Function + * \param hCb - Handle to Command CB Function Obj Parameters + * \param pCb - Pointer to read parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Interrogate ACX Roamming Statistics + * + * \sa + */ +TI_STATUS TWD_ItrRoammingStatisitics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb); +/** @ingroup UnKnown + * \brief Configure/Interrogate RSSI + * + * \param hTWD - TWD module object handle + * \param fCb - Pointer to Command CB Function + * \param hCb - Handle to Command CB Function Obj Parameters + * \param pCb - Pointer to read parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Configure/Interrogate StationId information element to/from FW + * This information element specifies the MAC Address assigned to the STATION or AP. + * The RSSI is Configed to default value which is the permanent MAC address which + * is stored in the adaptor's non-volatile memory. + * + * \sa + */ +TI_STATUS TWD_ItrRSSI (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb); +/** @ingroup UnKnown + * \brief Interrogate Memory Map + * + * \param hTWD - TWD module object handle + * \param pMap - Pointer to Output Memory Map + * \param fCb - Pointer to Callback Function + * \param hCb - Handle to Callback Function Parameters Object + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * Interrogate Memory Map from FW + * + * \sa MemoryMap_t + */TI_STATUS TWD_ItrMemoryMap (TI_HANDLE hTWD, MemoryMap_t *pMap, void *fCb, TI_HANDLE hCb); +/** @ingroup UnKnown + * \brief Interrogate Statistics + * + * \param hTWD - TWD module object handle + * \param fCb - Pointer to Command CB Function + * \param hCb - Handle to Command CB Function Obj Parameters + * \param pCb - Pointer to read parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */ +TI_STATUS TWD_ItrStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb); +/** @ingroup Data_Path + * \brief Interrogate Data Filter Statistics + * + * \param hTWD - TWD module object handle + * \param fCb - Pointer to Command CB Function + * \param hCb - Handle to Command CB Function Obj Parameters + * \param pCb - Pointer to read parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * + * \sa + */TI_STATUS TWD_ItrDataFilterStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb); + +/* + * -------------------------------------------------------------- + * TNETW-Driver Tx API Functions + * -------------------------------------------------------------- + */ + +/** @ingroup Data_Path + * \brief TWD TX Control Block Allocation + * + * \param hTWD - TWD module object handle + * \return Pointer to Control Block Entry on success or NULL on failure + * + * \par Description + * Use this function for Allocate a Control-Block for the packet Tx parameters and descriptor + * + * \sa + */ +TTxCtrlBlk *TWD_txCtrlBlk_Alloc (TI_HANDLE hTWD); +/** @ingroup Data_Path + * \brief TWD TX Control Block Free + * + * \param hTWD - TWD module object handle + * \param pCurrentEntry - Pointer to TX Control Block Entry to Free + * \return void + * + * \par Description + * Use this function for Free a Control-Block of packet Tx parameters and descriptor + * + * \sa + */ +void TWD_txCtrlBlk_Free (TI_HANDLE hTWD, TTxCtrlBlk *pCurrentEntry); +/** @ingroup Data_Path + * \brief TWD TX Control Get Pointer + * + * \param hTWD - TWD module object handle + * \param descId - Id of TX Control Block Descriptor + * \return Pointer to Control Block Entry on success or NULL on failure + * + * \par Description + * Use this function for Get a Pointer to a Control-Block of packet Tx parameters and descriptor + * + * \sa + */ +TTxCtrlBlk *TWD_txCtrlBlk_GetPointer (TI_HANDLE hTWD, TI_UINT8 descId); + +/** @ingroup Data_Path + * \brief Allocate Resources for TX HW Queue + * + * \param hTWD - TWD module object handle + * \param pTxCtrlBlk - The Tx packet control block + * \return see - ETxHwQueStatus + * + * \par Description + * Allocates Resources (HW-blocks number required) for TX HW Queue + * + * \sa + */ +ETxHwQueStatus TWD_txHwQueue_AllocResources (TI_HANDLE hTWD, TTxCtrlBlk *pTxCtrlBlk); + +/** @ingroup Data_Path + * \brief TX Xfer Send Packet + * + * \param hTWD - TWD module object handle + * \param pPktCtrlBlk - Pointer to TX Control Block Entry to Free + * \return see ETxnStatus + * + * \par Description + * Send Packet via TX Xfer + * + * \sa + */ +ETxnStatus TWD_txXfer_SendPacket (TI_HANDLE hTWD, TTxCtrlBlk *pPktCtrlBlk); +/** @ingroup Control + * \brief Watch Dog Expire Event + * + * \param hTWD - TWD module object handle + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * This function handles the Event of Watch Dog Expire (FW stopped) + * + * \sa + */ +TI_STATUS TWD_WdExpireEvent (TI_HANDLE hTWD); +/* + * -------------------------------------------------------------- + * BIT API Functions + * -------------------------------------------------------------- + */ +/** @ingroup Control + * \brief TWD Test Command Complete CB + * + * \param Handle - handle to object + * \param eStatus - Status of Driver Test Performed + * \param pTestCmdParams - Pointer to Output of Test Command Parameters + * \return void + * + * \par Description + * The function prototype for the BIT Test Command Complete CB + * Enables user to implement and use its own BIT Test Command Complete CB + * which will be called when Driver Test end + * + * \sa TWDriverTest + */ +typedef void (*TTestCmdCB)(TI_HANDLE Handle, + TI_STATUS eStatus, + TI_HANDLE pTestCmdParams); +/** @ingroup Control + * \brief TWD Test Command Complete CB + * + * \param Handle - handle to object + * \param eStatus - Status of Driver Test Performed (Complete/Pending/Error) + * \param pTestCmdParams - Pointer to Output of Test Command Parameters + * \return void + * + * \par Description + * The function implementation for the BIT Test Command Complete CB + * + * \sa + */ +void TWDriverTestCB(TI_HANDLE Handle, + TI_STATUS eStatus, + TI_HANDLE pTestCmdParams); +/** @ingroup Control + * \brief TWD Driver Test + * + * \param hTWD - handle to TWD object + * \param eTestCmd - Identifier of test Command to Perform + * \param pTestCmdParams - Pointer to Input/Output Test Command Parameters + * \param fCb - Test Command Complete CB + * \param hCb - Handle to Test Command Complete CB Parameters + * \return TI_OK on success or TI_NOK on failure + * + * \par Description + * The implementation of the BIT Test Command + * + * \sa + */ +TI_STATUS TWDriverTest(TI_HANDLE hTWD, + TestCmdID_enum eTestCmd, + void* pTestCmdParams, + TTestCmdCB fCb, + TI_HANDLE hCb); + + + +/** + * \brief TWD get FEM type + * * + * \param Handle - handle to object + * \return uint8 + * + * \par Description + * The function return the Front end module that was read frm FW register * + * \sa + */ + +TI_UINT8 TWD_GetFEMType (TI_HANDLE hTWD); + + +/** + * \brief TWD end function of read radio state machine + * * * + * \param Handle - handle to object + * \return void + * + * \par Description + * The function calling to HwInit call back function, after finish reading FEM registers * + * \sa + */ + +void TWD_FinalizeFEMRead(TI_HANDLE hTWD); +void TWD_FinalizePolarityRead(TI_HANDLE hTWD); + +/** + * \function TWD_rxXfer_Handle + * + * Handle Rx buffers read in case we delayed it from upper layer + * + * \param hTWD - TWD module object handle + * + * \sa + */ +void TWD_rxXfer_Handle (TI_HANDLE hTWD); + +TI_STATUS TWD_SetRateMngDebug(TI_HANDLE hTWD, RateMangeParams_t *pRateMngParams); +TI_STATUS TWD_GetRateMngDebug(TI_HANDLE hTWD, RateMangeReadParams_t *pParamInfo); + +#endif /* TWDRIVER_H */