/*
* CmdBldItrIE.c
*
* Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name Texas Instruments nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define __FILE_ID__ FILE_ID_96
#include "osApi.h"
#include "report.h"
#include "CmdBld.h"
#include "CmdQueue_api.h"
TI_STATUS cmdBld_ItrIeMemoryMap (TI_HANDLE hCmdBld, MemoryMap_t *apMap, void *fCb, TI_HANDLE hCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
/* Set information element header */
apMap->EleHdr.id = ACX_MEM_MAP;
apMap->EleHdr.len = sizeof(*apMap) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, apMap, sizeof(*apMap), fCb, hCb, apMap);
}
/****************************************************************************
* cmdBld_ItrIeRoamimgStatisitics ()
****************************************************************************
* DESCRIPTION: Get the ACX GWSI statistics
*
* INPUTS:
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeRoamimgStatisitics (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, void *pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXRoamingStatisticsTable_t acx;
ACXRoamingStatisticsTable_t * pCfg = &acx;
/*
* Set information element header
*/
pCfg->EleHdr.id = ACX_ROAMING_STATISTICS_TBL;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(*pCfg), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIeErrorCnt ()
****************************************************************************
* DESCRIPTION: Get the ACX GWSI counters
*
* INPUTS:
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeErrorCnt (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, void *pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXErrorCounters_t acx;
ACXErrorCounters_t * pCfg = &acx;
/*
* Set information element header
*/
pCfg->EleHdr.id = ACX_ERROR_CNT;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(*pCfg), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIeRSSI ()
****************************************************************************
* DESCRIPTION: Configure/Interrogate StationId information element to/from
* the wlan hardware.
* This information element specifies the MAC Address assigned to the
* STATION or AP.
* This default value is the permanent MAC address that is stored in the
* adaptor's non-volatile memory.
*
* INPUTS: None
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeRSSI (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, TI_UINT8* pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXRoamingStatisticsTable_t AcxElm_GetAverageRSSI;
ACXRoamingStatisticsTable_t* pCfg = &AcxElm_GetAverageRSSI;
/* Set information element header */
pCfg->EleHdr.id = ACX_ROAMING_STATISTICS_TBL;
pCfg->EleHdr.len = sizeof(ACXRoamingStatisticsTable_t) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(ACXRoamingStatisticsTable_t), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIeSg()
****************************************************************************
* DESCRIPTION: Get the BTH-WLAN co-exsistance parameters from the Fw
*
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeSg (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, void* pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXBluetoothWlanCoParamsStruct AcxElm_BluetoothWlanEnable;
ACXBluetoothWlanCoParamsStruct* pCfg = &AcxElm_BluetoothWlanEnable;
TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ItrIeSg \n");
/* Set information element header */
pCfg->EleHdr.id = ACX_SG_CFG;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(ACXBluetoothWlanCoParamsStruct), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIeRateParams()
****************************************************************************
* DESCRIPTION: Get the rate managment configuration
*
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeRateParams (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, void* pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
AcxRateMangeParams RateParams;
AcxRateMangeParams* pCfg = &RateParams;
TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ItrIeRateParams \n");
/* Set information element header */
pCfg->EleHdr.id = ACX_GET_RATE_MAMAGEMENT_PARAMS;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(AcxRateMangeParams), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIePowerConsumptionstat()
****************************************************************************
* DESCRIPTION: Get the Power consumption statistic from the Fw
*
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIePowerConsumptionstat(TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, void* pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXPowerConsumptionTimeStat_t AcxPowerConsumptionStat;
ACXPowerConsumptionTimeStat_t* pCfg = &AcxPowerConsumptionStat;
TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ItrIePowerConsumptionstat \n");
/* Set information element header */
pCfg->EleHdr.id = ACX_PWR_CONSUMPTION_STATISTICS;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(AcxPowerConsumptionStat), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIeStatistics ()
****************************************************************************
* DESCRIPTION: Print the statistics from the input IE statistics
*
* INPUTS:
* ACXStatisticsStruct* pElem The Statistics information element
* to be printed
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeStatistics (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, void *pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXStatistics_t *pACXStatistics = (ACXStatistics_t *)pCb;
/* Set information element header */
pACXStatistics->EleHdr.id = ACX_STATISTICS;
pACXStatistics->EleHdr.len = sizeof(*pACXStatistics) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCb, sizeof(*pACXStatistics), fCb, hCb, pCb);
}
/****************************************************************************
* cmdBld_ItrIeMediumOccupancy ()
****************************************************************************
* DESCRIPTION: Get the Medium Occupancy.
*
* INPUTS:
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeMediumOccupancy (TI_HANDLE hCmdBld,
TInterrogateCmdCbParams mediumUsageCBParams)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXMediumUsage_t medium;
ACXMediumUsage_t *pCfg = &medium;
/* Set information element header */
pCfg->EleHdr.id = ACX_MEDIUM_USAGE;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue,
CMD_INTERROGATE,
pCfg,
sizeof(*pCfg),
mediumUsageCBParams.fCb,
mediumUsageCBParams.hCb,
mediumUsageCBParams.pCb);
}
/****************************************************************************
* cmdBld_ItrIeTfsDtim ()
****************************************************************************
* DESCRIPTION: Get the Tsf and Dtim counter from Fw
*
* INPUTS:
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeTfsDtim (TI_HANDLE hCmdBld,
TInterrogateCmdCbParams mediumUsageCBParams)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACX_fwTSFInformation_t fwTsfDtimMib;
ACX_fwTSFInformation_t *pCfg = &fwTsfDtimMib;
/* Set information element header*/
pCfg->EleHdr.id = ACX_TSF_INFO;
pCfg->EleHdr.len = sizeof(ACX_fwTSFInformation_t) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue,
CMD_INTERROGATE,
pCfg,
sizeof(*pCfg),
mediumUsageCBParams.fCb,
mediumUsageCBParams.hCb,
mediumUsageCBParams.pCb);
}
/****************************************************************************
* cmdBld_ItrIeNoiseHistogramResults()
****************************************************************************
* DESCRIPTION: Get the Noise Histogram Measurement Results.
*
* INPUTS:
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeNoiseHistogramResults (TI_HANDLE hCmdBld,
TInterrogateCmdCbParams noiseHistCBParams)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
NoiseHistResult_t results;
NoiseHistResult_t *pCfg = &results;
/* Set information element header*/
pCfg->EleHdr.id = ACX_NOISE_HIST;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
return cmdQueue_SendCommand (pCmdBld->hCmdQueue,
CMD_INTERROGATE,
pCfg,
sizeof(*pCfg),
noiseHistCBParams.fCb,
noiseHistCBParams.hCb,
noiseHistCBParams.pCb);
}
/****************************************************************************
* cmdBld_ItrIeDataFilterStatistics()
****************************************************************************
* DESCRIPTION: Get the ACX GWSI counters
*
* INPUTS:
*
* OUTPUT: None
*
* RETURNS: TI_OK or TI_NOK
****************************************************************************/
TI_STATUS cmdBld_ItrIeDataFilterStatistics (TI_HANDLE hCmdBld,
void *fCb,
TI_HANDLE hCb,
void *pCb)
{
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
ACXDataFilteringStatistics_t acx;
ACXDataFilteringStatistics_t * pCfg = &acx;
/* Set information element header */
pCfg->EleHdr.id = ACX_GET_DATA_FILTER_STATISTICS;
pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
TRACE_INFO_HEX(pCmdBld->hReport, (TI_UINT8 *) pCfg, sizeof(ACXDataFilteringStatistics_t));
/* Send the interrogation command */
return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_INTERROGATE, pCfg, sizeof(*pCfg), fCb, hCb, pCb);
}