TWD/MacServices/MacServices.c
changeset 0 10c42ec6c05f
--- /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);
+}
+
+
+
+
+
+