--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TWD/MacServices/MacServices.c Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,380 @@
+/*
+ * MacServices.c
+ *
+ * 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 MacServices.c
+ * \brief This file include public definitions for the scan SRV module, comprising its API.
+ * \date 6-Oct-2005
+ */
+
+#define __FILE_ID__ FILE_ID_109
+#include "report.h"
+#include "ScanSrv.h"
+#include "MeasurementSrv.h"
+#include "MacServices.h"
+#include "PowerSrv_API.h"
+
+
+/****************************************************************************************
+ * MacServices_create *
+ *****************************************************************************************
+DESCRIPTION: Creates MacServices module
+
+INPUT: hOS - handle to the OS object.
+OUTPUT:
+RETURN: handle to MacServices Object, NULL on failure .
+****************************************************************************************/
+
+TI_HANDLE MacServices_create( TI_HANDLE hOS)
+{
+ MacServices_t *pMacServices = (MacServices_t*)os_memoryAlloc( hOS, sizeof(MacServices_t),MemoryNormal );
+ if ( NULL == pMacServices )
+ {
+ WLAN_OS_REPORT( ("ERROR: Failed to create Mac SRV module") );
+ return NULL;
+ }
+
+ /* nullify all handles, so that only handles in existence will be released */
+ pMacServices->hScanSRV = NULL;
+ pMacServices->hPowerSrv = NULL;
+
+ /* create the scanSRV handle */
+ pMacServices->hScanSRV = MacServices_scanSRV_create(hOS);
+ if ( NULL == pMacServices->hScanSRV )
+ {
+ MacServices_destroy( pMacServices );
+ return NULL;
+ }
+
+/* create the measurment handle */
+ pMacServices->hMeasurementSRV = MacServices_measurementSRV_create( hOS );
+ if ( NULL == pMacServices->hMeasurementSRV )
+ {
+ MacServices_destroy(pMacServices);
+ return NULL;
+ }
+
+ pMacServices->hPowerSrv = powerSrv_create(hOS);
+ if (NULL == pMacServices->hPowerSrv )
+ {
+ MacServices_destroy(pMacServices);
+ return NULL;
+ }
+
+ /* store OS handle */
+ pMacServices->hOS = hOS;
+
+ return pMacServices;
+}
+
+
+
+/****************************************************************************************
+ * MacServices_destroy *
+ *****************************************************************************************
+DESCRIPTION: destroys MacServices module
+
+INPUT: hMacServices - handle to the Mac Services object.
+OUTPUT:
+RETURN:
+****************************************************************************************/
+void MacServices_destroy( TI_HANDLE hMacServices )
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ /* destroy all SRV modules */
+ if ( NULL != pMacServices->hScanSRV )
+ {
+ MacServices_scanSRV_destroy( pMacServices->hScanSRV );
+ }
+ if ( NULL != pMacServices->hMeasurementSRV )
+ {
+ MacServices_measurementSRV_destroy( pMacServices->hMeasurementSRV );
+ }
+
+ if(pMacServices->hPowerSrv)
+ powerSrv_destroy(pMacServices->hPowerSrv);
+
+ /* free the Mac services allocated context */
+ os_memoryFree( pMacServices->hOS, (TI_HANDLE)pMacServices , sizeof(MacServices_t) );
+}
+
+
+ /****************************************************************************************
+ * MacServices_init *
+ *****************************************************************************************
+DESCRIPTION: Initializes the MacServices module
+
+INPUT: hMacServices - handle to the Mac Services object.\n
+ hReport - handle to the report object.\n
+ hHalCtrl - handle to the HAL ctrl object.\n
+OUTPUT:
+RETURN:
+****************************************************************************************/
+void MacServices_init (TI_HANDLE hMacServices,
+ TI_HANDLE hReport,
+ TI_HANDLE hTWD,
+ TI_HANDLE hCmdBld,
+ TI_HANDLE hEventMbox,
+ TI_HANDLE hTimer)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ MacServices_scanSRV_init (hMacServices, hReport, hTWD, hTimer, hEventMbox, hCmdBld);
+
+ MacServices_measurementSRV_init (pMacServices->hMeasurementSRV,
+ hReport,
+ hCmdBld,
+ hEventMbox,
+ pMacServices->hPowerSrv,
+ hTimer);
+
+ if (powerSrv_init (pMacServices->hPowerSrv,
+ hReport,
+ hEventMbox,
+ hCmdBld,
+ hTimer) != TI_OK)
+ {
+ WLAN_OS_REPORT(("\n.....PowerSRV_init configuration failure \n"));
+ /*return TI_NOK;*/
+ }
+}
+
+
+ /****************************************************************************************
+ * MacServices_config *
+ *****************************************************************************************
+DESCRIPTION: config the MacServices moduleand sub modules
+
+INPUT: hMacServices - handle to the Mac Services object.\n
+ pInitParams - pointer to the init params
+OUTPUT:
+RETURN:
+****************************************************************************************/
+void MacServices_config( TI_HANDLE hMacServices, TTwdInitParams *pInitParams)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ if (powerSrv_config(pMacServices->hPowerSrv,&pInitParams->tPowerSrv) != TI_OK)
+ {
+ WLAN_OS_REPORT(("\n.....PowerSRV_config failure \n"));
+ }
+
+ MacServices_scanSrv_config (pMacServices, &pInitParams->tScanSrv);
+}
+
+ /****************************************************************************************
+ * MacServices_restart *
+ *****************************************************************************************
+DESCRIPTION: restart the MacServices moduleand sub modules upon recovery
+
+INPUT: hMacServices - handle to the Mac Services object.\n
+OUTPUT:
+RETURN:
+****************************************************************************************/
+void MacServices_restart (TI_HANDLE hMacServices)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ scanSRV_restart (pMacServices->hScanSRV);
+ measurementSRV_restart (pMacServices->hMeasurementSRV);
+ powerSrv_restart (pMacServices->hPowerSrv);
+}
+
+
+/****************************************************************************************
+ * MacServices_registerFailureEventCB *
+ *****************************************************************************************
+DESCRIPTION: register the centeral error function from the health monitor to the MacService's sub modules
+
+INPUT: hMacServices - handle to the Mac Services object.
+ failureEventCB - pointer ro the call back
+ hFailureEventObj -handle of the Callback Object
+OUTPUT:
+RETURN:
+****************************************************************************************/
+
+void MacServices_registerFailureEventCB (TI_HANDLE hMacServices,
+ void * failureEventCB,
+ TI_HANDLE hFailureEventObj)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ powerSrvRegisterFailureEventCB (pMacServices->hPowerSrv,
+ failureEventCB,
+ hFailureEventObj);
+
+ measurementSRVRegisterFailureEventCB (pMacServices->hMeasurementSRV,
+ failureEventCB,
+ hFailureEventObj);
+
+ scanSRV_registerFailureEventCB (pMacServices->hScanSRV,
+ failureEventCB,
+ hFailureEventObj);
+
+}
+
+/****************************************************************************************
+ * MacServices_powerSrv_SetPsMode *
+ ****************************************************************************************
+DESCRIPTION: This function is a wrapper for the power server's powerSrv_SetPsMode function
+
+INPUT: - hMacServices - handle to the Mac services object.
+ - psMode - Power save/Active request
+ - sendNullDataOnExit -
+ - powerSaveCBObject - handle to the Callback function module.
+ - powerSaveCompleteCB - Callback function - for success/faild notification.
+OUTPUT:
+RETURN: TI_STATUS - TI_OK / PENDING / TI_NOK.
+****************************************************************************************/
+
+TI_STATUS MacServices_powerSrv_SetPsMode (TI_HANDLE hMacServices,
+ E80211PsMode psMode,
+ TI_BOOL sendNullDataOnExit,
+ void * powerSaveCompleteCBObject,
+ TPowerSaveCompleteCb powerSaveCompleteCB,
+ TPowerSaveResponseCb powerSavecmdResponseCB)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ return powerSrv_SetPsMode (pMacServices->hPowerSrv,
+ psMode,
+ sendNullDataOnExit,
+ powerSaveCompleteCBObject,
+ powerSaveCompleteCB,
+ powerSavecmdResponseCB);
+}
+
+
+/****************************************************************************************
+ * MacServices_powerSrv_ReservePS *
+ ****************************************************************************************
+DESCRIPTION: This function is a wrapper for the power server's powerSrv_ReservePS function
+
+INPUT: - hMacServices - handle to the Mac services object.
+ - psMode - Power save/Active request
+ - sendNullDataOnExit -
+ - powerSaveCBObject - handle to the Callback function module.
+ - powerSaveCompleteCB - Callback function - for success/faild notification.
+OUTPUT:
+RETURN: TI_STATUS - TI_OK / PENDING / TI_NOK.
+****************************************************************************************/
+TI_STATUS MacServices_powerSrv_ReservePS( TI_HANDLE hMacServices,
+ E80211PsMode psMode,
+ TI_BOOL sendNullDataOnExit,
+ void * powerSaveCBObject,
+ TPowerSaveCompleteCb powerSaveCompleteCB)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ return powerSrv_ReservePS(pMacServices->hPowerSrv,psMode,sendNullDataOnExit,powerSaveCBObject,powerSaveCompleteCB);
+}
+
+
+/****************************************************************************************
+ * MacServices_powerSrv_ReleasePS *
+ ****************************************************************************************
+DESCRIPTION: This function is a wrapper for the power server's powerSrv_ReleasePS function
+
+INPUT: - hPowerSrv - handle to the PowerSrv object.
+ - sendNullDataOnExit -
+ - powerSaveCBObject - handle to the Callback function module.
+ - powerSaveCompleteCB - Callback function - for success/faild notification.
+OUTPUT:
+RETURN: TI_STATUS - TI_OK / PENDING / TI_NOK.
+****************************************************************************************/
+
+TI_STATUS MacServices_powerSrv_ReleasePS( TI_HANDLE hMacServices,
+ TI_BOOL sendNullDataOnExit,
+ void * powerSaveCBObject,
+ TPowerSaveCompleteCb powerSaveCompleteCB)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ return powerSrv_ReleasePS(pMacServices->hPowerSrv,sendNullDataOnExit,powerSaveCBObject,powerSaveCompleteCB);
+}
+
+
+/****************************************************************************************
+ * MacServices_powerSrv_getPsStatus *
+ *****************************************************************************************
+DESCRIPTION: This function is a wrapper for the power server's powerSrv_getPsStatus function
+
+INPUT: - hPowerSrv - handle to the PowerSrv object.
+
+OUTPUT:
+RETURN: TI_BOOL - true if the SM is in PS state - false otherwise
+****************************************************************************************/
+TI_BOOL MacServices_powerSrv_getPsStatus(TI_HANDLE hMacServices)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ return powerSrv_getPsStatus( pMacServices->hPowerSrv);
+}
+
+
+ /****************************************************************************************
+ * MacServices_powerSrv_SetRateModulation *
+ *****************************************************************************************
+DESCRIPTION: This function is a wrapper for the power server's powerSrv_SetRateModulation function
+
+INPUT: - hPowerSrv - handle to the PowerSrv object.
+ - dot11mode_e - The current radio mode (A or G)
+
+OUTPUT:
+RETURN: TI_BOOL - true if the SM is in PS state - false otherwise
+****************************************************************************************/
+void MacServices_powerSrv_SetRateModulation(TI_HANDLE hMacServices, TI_UINT16 rate)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ powerSrv_SetRateModulation( pMacServices->hPowerSrv, rate);
+}
+
+
+TI_UINT32 MacServices_powerSrv_GetRateModulation(TI_HANDLE hMacServices)
+{
+ MacServices_t *pMacServices = (MacServices_t*)hMacServices;
+
+ return powerSrv_GetRateModulation( pMacServices->hPowerSrv);
+}
+
+
+
+
+
+