| /* |
| * MacServices.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. |
| */ |
| |
| /** \file MacServices.c |
| * \brief This file include public definitions for the scan SRV module, comprising its API. |
| * \author Yuval Adler |
| * \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) ); |
| 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); |
| } |
| |
| |
| |
| |
| |
| |