TWD/MacServices/MeasurementSrvSM.c
author shahar_levi@ti.com
Tue, 29 Jun 2010 12:34:26 +0100
changeset 0 10c42ec6c05f
permissions -rw-r--r--
version WiLink_Driver_6.1.1.0.8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     1
/*
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     2
 * MeasurementSrvSM.c
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     3
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     4
 * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     5
 * All rights reserved.      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     6
 * 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     7
 * This program and the accompanying materials are made available under the 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     8
 * terms of the Eclipse Public License v1.0 or BSD License which accompanies
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
     9
 * this distribution. The Eclipse Public License is available at
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    10
 * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.                                   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    11
 *                                                                       
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    12
 * Redistribution and use in source and binary forms, with or without    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    13
 * modification, are permitted provided that the following conditions    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    14
 * are met:                                                              
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    15
 *                                                                       
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    16
 *  * Redistributions of source code must retain the above copyright     
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    17
 *    notice, this list of conditions and the following disclaimer.      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    18
 *  * Redistributions in binary form must reproduce the above copyright  
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    19
 *    notice, this list of conditions and the following disclaimer in    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    20
 *    the documentation and/or other materials provided with the         
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    21
 *    distribution.                                                      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    22
 *  * Neither the name Texas Instruments nor the names of its            
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    23
 *    contributors may be used to endorse or promote products derived    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    24
 *    from this software without specific prior written permission.      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    25
 *                                                                       
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    26
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    27
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    28
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    29
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    30
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    31
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    32
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    33
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    34
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    35
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    36
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    37
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    38
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    39
/** \file measurementSrv.c
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    40
 *  \brief This file include the measurement SRV state machine implementation.
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    41
 *  \author Ronen Kalish
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    42
 *  \date 13-November-2005
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    43
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    44
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    45
#define __FILE_ID__  FILE_ID_112
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    46
#include "osApi.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    47
#include "report.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    48
#include "MeasurementSrvSM.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    49
#include "MeasurementSrv.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    50
#include "PowerSrv_API.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    51
#include "timer.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    52
#include "fsm.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    53
#include "TWDriverInternal.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    54
#include "CmdBld.h"
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    55
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    56
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    57
TI_STATUS actionUnexpected( TI_HANDLE hMeasurementSrv );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    58
TI_STATUS actionNop( TI_HANDLE hMeasurementSrv );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    59
static void measurementSRVSM_requestMeasureStartResponseCB(TI_HANDLE hMeasurementSRV, TI_UINT16 uMboxStatus);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    60
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    61
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    62
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    63
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    64
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    65
 * \brief Initialize the measurement SRV SM.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    66
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    67
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    68
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    69
 * \return TI_OK if successful, TI_NOK otherwise.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    70
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    71
TI_STATUS measurementSRVSM_init( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    72
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    73
   measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    74
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    75
    fsm_actionCell_t    smMatrix[ MSR_SRV_NUM_OF_STATES ][ MSR_SRV_NUM_OF_EVENTS ] =
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    76
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    77
        /* next state and actions for IDLE state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    78
        {   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    79
            {MSR_SRV_STATE_WAIT_FOR_DRIVER_MODE, measurementSRVSM_requestDriverMode},     /*"MESSURE_START_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    80
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    81
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    82
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    83
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    84
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"ALL_TYPES_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    85
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"STOP_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    86
            {MSR_SRV_STATE_IDLE, measurementSRVSRVSM_dummyStop}                           /*"MEASURE_STOP_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    87
        },
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    88
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    89
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    90
        /* next state and actions for WAIT_FOR_DRIVER_MODE state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    91
        {   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    92
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"MESSURE_START_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    93
            {MSR_SRV_STATE_WAIT_FOR_MEASURE_START, measurementSRVSM_requestMeasureStart}, /*"DRIVER_MODE_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    94
            {MSR_SRV_STATE_IDLE, measurementSRVSM_DriverModeFailure},                     /*"DRIVER_MODE_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    95
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    96
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    97
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"ALL_TYPES_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    98
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"STOP_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
    99
            {MSR_SRV_STATE_IDLE, measurementSRVSM_stopFromWaitForDriverMode}              /*"MEASURE_STOP_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   100
        },
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   101
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   102
        /* next state and actions for WAIT_FOR_MEASURE_START state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   103
        {    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   104
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"MESSURE_START_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   105
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   106
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   107
            {MSR_SRV_STATE_MEASURE_IN_PROGRESS, measurementSRVSM_startMeasureTypes},      /*"START_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   108
            {MSR_SRV_STATE_IDLE, measurementSRVSM_measureStartFailure},                   /*"START_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   109
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"ALL_TYPES_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   110
            {MSR_SRV_STATE_IDLE, measurementSRVSM_completeMeasure},                       /*"STOP_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   111
            {MSR_SRV_STATE_WAIT_FOR_MEASURE_STOP, measurementSRVSM_stopFromWaitForMeasureStart}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   112
                                                                                          /*"MEASURE_STOP_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   113
        },
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   114
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   115
        /* next state and actions for MEASURE_IN_PROGRESS state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   116
        {   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   117
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"MESSURE_START_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   118
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   119
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   120
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   121
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   122
            {MSR_SRV_STATE_WAIT_FOR_MEASURE_STOP, measurementSRVSM_requestMeasureStop},   /*"ALL_TYPES_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   123
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"STOP_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   124
            {MSR_SRV_STATE_WAIT_FOR_MEASURE_STOP, measurementSRVSM_stopFromMeasureInProgress}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   125
                                                                                          /*"MEASURE_STOP_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   126
        },
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   127
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   128
        /* next state and actions for WAIT_FOR_MEASURE_STOP state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   129
        {   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   130
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"MESSURE_START_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   131
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   132
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"DRIVER_MODE_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   133
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_SUCCESS"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   134
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"START_FAILURE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   135
            {MSR_SRV_STATE_IDLE, actionUnexpected},                                       /*"ALL_TYPES_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   136
            {MSR_SRV_STATE_IDLE, measurementSRVSM_completeMeasure},                       /*"STOP_COMPLETE"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   137
            {MSR_SRV_STATE_WAIT_FOR_MEASURE_STOP, measurementSRVSRVSM_dummyStop}          /*"MEASURE_STOP_REQUEST"*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   138
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   139
    };
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   140
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   141
    /* initialize current state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   142
    pMeasurementSRV->SMState = MSR_SRV_STATE_IDLE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   143
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   144
    /* configure the state machine */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   145
    return fsm_Config( pMeasurementSRV->SM, (fsm_Matrix_t)smMatrix, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   146
                       (TI_UINT8)MSR_SRV_NUM_OF_STATES, (TI_UINT8)MSR_SRV_NUM_OF_EVENTS, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   147
                       (fsm_eventActivation_t)measurementSRVSM_SMEvent, pMeasurementSRV->hOS );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   148
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   149
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   150
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   151
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   152
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   153
 * \brief Processes an event.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   154
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   155
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   156
 * \param hMeasurementSrv - handle to the measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   157
 * \param currentState - the current scan SRV SM state.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   158
 * \param event - the event to handle.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   159
 * \return TI_OK if successful, TI_NOK otherwise.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   160
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   161
TI_STATUS measurementSRVSM_SMEvent( TI_HANDLE hMeasurementSrv, measurements_SRVSMStates_e* currentState, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   162
                                    measurement_SRVSMEvents_e event )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   163
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   164
    measurementSRV_t *pMeasurementSRV = (measurementSRV_t *)hMeasurementSrv;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   165
    TI_STATUS status = TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   166
    TI_UINT8 nextState;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   167
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   168
    /* obtain the next state */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   169
    status = fsm_GetNextState( pMeasurementSRV->SM, (TI_UINT8)*currentState, (TI_UINT8)event, &nextState );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   170
    if ( status != TI_OK )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   171
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   172
        TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, "measurementSRVSM_SMEvent: State machine error, failed getting next state\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   173
        return TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   174
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   175
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   176
    /* report the move */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   177
	TRACE3( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, "measurementSRVSM_SMEvent: <currentState = %d, event = %d> --> nextState = %d\n", currentState, event, nextState);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   178
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   179
    /* move */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   180
    return fsm_Event( pMeasurementSRV->SM, (TI_UINT8*)currentState, (TI_UINT8)event, hMeasurementSrv );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   181
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   182
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   183
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   184
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   185
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   186
 * \brief Handle a MEASURE_START_REQUEST event by requesting driver mode.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   187
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   188
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   189
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   190
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   191
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   192
TI_STATUS measurementSRVSM_requestDriverMode( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   193
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   194
    measurementSRV_t    *pMeasurementSRV  = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   195
    TI_STATUS           PSStatus;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   196
    TTwdParamInfo       paramInfo;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   197
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   198
    /* get the current channel */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   199
    paramInfo.paramType = TWD_CURRENT_CHANNEL_PARAM_ID;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   200
    cmdBld_GetParam (pMeasurementSRV->hCmdBld, &paramInfo);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   201
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   202
    /* check if the request is on the serving channel */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   203
    if ( paramInfo.content.halCtrlCurrentChannel == pMeasurementSRV->msrRequest.channel )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   204
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   205
        /* Switch Power Save SRV to driver mode w/o changing power save mode*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   206
        PSStatus = powerSrv_ReservePS( pMeasurementSRV->hPowerSaveSRV, POWER_SAVE_KEEP_CURRENT,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   207
                                       TI_TRUE, hMeasurementSRV, MacServices_measurementSRV_powerSaveCB );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   208
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   209
    else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   210
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   211
        /* Switch Power Save SRV to driver mode with PS mode */      
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   212
        PSStatus = powerSrv_ReservePS( pMeasurementSRV->hPowerSaveSRV, POWER_SAVE_ON,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   213
                                       TI_TRUE, hMeasurementSRV, MacServices_measurementSRV_powerSaveCB );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   214
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   215
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   216
    switch (PSStatus)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   217
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   218
        case POWER_SAVE_802_11_IS_CURRENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   219
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": Driver mode entered successfully\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   220
            /* send a power save success event */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   221
            return measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   222
                                             MSR_SRV_EVENT_DRIVER_MODE_SUCCESS );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   223
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   224
        case POWER_SAVE_802_11_PENDING:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   225
        case TI_OK:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   226
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": Driver mode pending\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   227
            break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   228
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   229
        default: /* Error */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   230
            TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": Error %d when requesting driver mode\n",PSStatus);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   231
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   232
            /* Set the return status to TI_NOK */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   233
            pMeasurementSRV->returnStatus = PSStatus;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   234
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   235
            /* send a power save failure event */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   236
            measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   237
                                      MSR_SRV_EVENT_DRIVER_MODE_FAILURE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   238
            break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   239
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   240
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   241
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   242
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   243
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   244
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   245
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   246
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   247
 * \brief Handle a DRIVER_MODE_SUCCESS event by sending start measure command to the FW.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   248
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   249
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   250
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   251
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   252
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   253
TI_STATUS measurementSRVSM_requestMeasureStart( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   254
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   255
    measurementSRV_t     *pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   256
    TMeasurementParams    pMeasurementCmd;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   257
    TI_STATUS             status;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   258
    TI_UINT32                currentTime = os_timeStampMs( pMeasurementSRV->hOS );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   259
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   260
    /* check if request time has expired (note: timer wrap-around is also handled)*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   261
    if ( (pMeasurementSRV->requestRecptionTimeStampMs + pMeasurementSRV->timeToRequestExpiryMs)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   262
                    < currentTime )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   263
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   264
        TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   265
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   266
        TRACE2( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": request time has expired, request expiry time:%d, current time:%d\n", pMeasurementSRV->requestRecptionTimeStampMs + pMeasurementSRV->timeToRequestExpiryMs, currentTime);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   267
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   268
        /* mark that all measurement types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   269
        for ( i = 0; i < pMeasurementSRV->msrRequest.numberOfTypes; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   270
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   271
            pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   272
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   273
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   274
        /* send a measurement complete event */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   275
        measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   276
                                  MSR_SRV_EVENT_STOP_COMPLETE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   277
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   278
        return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   279
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   280
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   281
    pMeasurementCmd.channel = pMeasurementSRV->msrRequest.channel;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   282
    pMeasurementCmd.band = pMeasurementSRV->msrRequest.band;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   283
    pMeasurementCmd.duration = 0; /* Infinite */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   284
    pMeasurementCmd.eTag = pMeasurementSRV->msrRequest.eTag;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   285
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   286
    if ( measurementSRVIsBeaconMeasureIncluded( hMeasurementSRV ))
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   287
    {  /* Beacon Measurement is one of the types */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   288
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   289
		/* get the current channel */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   290
		TTwdParamInfo	paramInfo;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   291
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   292
		paramInfo.paramType = TWD_CURRENT_CHANNEL_PARAM_ID;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   293
		cmdBld_GetParam (pMeasurementSRV->hCmdBld, &paramInfo);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   294
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   295
		pMeasurementCmd.ConfigOptions = RX_CONFIG_OPTION_FOR_MEASUREMENT; 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   296
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   297
		/* check if the request is on the serving channel */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   298
		if ( paramInfo.content.halCtrlCurrentChannel == pMeasurementSRV->msrRequest.channel )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   299
		{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   300
			/* Set the RX Filter to the join one, so that any packets will 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   301
            be received on the serving channel - beacons and probe requests for
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   302
			the measurmenet, and also data (for normal operation) */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   303
            pMeasurementCmd.FilterOptions = RX_FILTER_OPTION_JOIN;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   304
		}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   305
		else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   306
		{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   307
			/* not on the serving channle - only beacons and rpobe responses are required */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   308
			pMeasurementCmd.FilterOptions = RX_FILTER_OPTION_DEF_PRSP_BCN; 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   309
		}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   310
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   311
    else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   312
    {  /* No beacon measurement - use the current RX Filter */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   313
        pMeasurementCmd.ConfigOptions = 0xffffffff;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   314
        pMeasurementCmd.FilterOptions = 0xffffffff;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   315
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   316
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   317
    /* Send start measurement command */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   318
    status = cmdBld_CmdMeasurement (pMeasurementSRV->hCmdBld,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   319
                                    &pMeasurementCmd,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   320
                                    (void *)measurementSRVSM_requestMeasureStartResponseCB, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   321
                                    pMeasurementSRV);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   322
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   323
    if ( TI_OK != status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   324
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   325
        TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": Failed to send measurement start command, statud=%d,\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   326
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   327
        /* keep the faulty return status */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   328
        pMeasurementSRV->returnStatus = status;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   329
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   330
        /* send a measurement start fail event */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   331
        return measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   332
                                         MSR_SRV_EVENT_START_FAILURE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   333
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   334
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   335
    TRACE6( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": measure start command sent. Params:\n channel=%d, band=%d, duration=%d, \n configOptions=0x%x, filterOptions=0x%x, status=%d, \n", pMeasurementCmd.channel, pMeasurementCmd.band, pMeasurementCmd.duration, pMeasurementCmd.ConfigOptions, pMeasurementCmd.FilterOptions, status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   336
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   337
    /* start the FW guard timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   338
    pMeasurementSRV->bStartStopTimerRunning = TI_TRUE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   339
    tmr_StartTimer (pMeasurementSRV->hStartStopTimer,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   340
                    MacServices_measurementSRV_startStopTimerExpired,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   341
                    (TI_HANDLE)pMeasurementSRV,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   342
                    MSR_FW_GUARD_TIME,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   343
                    TI_FALSE);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   344
  
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   345
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   346
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   347
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   348
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   349
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   350
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   351
 * \brief Handle a START_SUCCESS event by starting different measure types and setting timers.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   352
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   353
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   354
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   355
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   356
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   357
TI_STATUS measurementSRVSM_startMeasureTypes( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   358
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   359
    measurementSRV_t      *pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   360
    TI_UINT8                 requestIndex, rangeIndex;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   361
    TI_INT8                  rangeUpperBound;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   362
    TTwdParamInfo         tTwdParam;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   363
    TI_STATUS             status;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   364
    TNoiseHistogram       pNoiseHistParams;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   365
    TApDiscoveryParams    pApDiscoveryParams;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   366
    TI_UINT32                currentTime = os_timeStampMs( pMeasurementSRV->hOS );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   367
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   368
    /* check if request time has expired (note: timer wrap-around is also handled)*/
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   369
    if ( (pMeasurementSRV->requestRecptionTimeStampMs + pMeasurementSRV->timeToRequestExpiryMs)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   370
                    < currentTime )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   371
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   372
        TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   373
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   374
        TRACE2( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": request time has expired, request expiry time:%d, current time:%d\n", pMeasurementSRV->requestRecptionTimeStampMs + pMeasurementSRV->timeToRequestExpiryMs, currentTime);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   375
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   376
        /* mark that all measurement types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   377
        for ( i = 0; i < pMeasurementSRV->msrRequest.numberOfTypes; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   378
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   379
            pMeasurementSRV->msrReply.msrTypes[ i ].status = MSR_REJECT_MAX_DELAY_PASSED;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   380
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   381
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   382
        /* send a measurement complete event */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   383
        measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   384
                                  MSR_SRV_EVENT_ALL_TYPES_COMPLETE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   385
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   386
        return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   387
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   388
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   389
    /* Going over all request types that should be executed in parallel 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   390
    to start their timers and execute the measurement */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   391
    for ( requestIndex = 0; requestIndex < pMeasurementSRV->msrRequest.numberOfTypes ; requestIndex++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   392
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   393
        switch (pMeasurementSRV->msrRequest.msrTypes[ requestIndex ].msrType)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   394
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   395
        case MSR_TYPE_CCA_LOAD_MEASUREMENT:    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   396
            /* Clearing the Medium Occupancy Register */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   397
            tTwdParam.paramType = TWD_MEDIUM_OCCUPANCY_PARAM_ID;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   398
            tTwdParam.content.interogateCmdCBParams.fCb = (void *)MacServices_measurementSRV_dummyChannelLoadParamCB;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   399
            tTwdParam.content.interogateCmdCBParams.hCb = hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   400
            tTwdParam.content.interogateCmdCBParams.pCb = 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   401
                    (TI_UINT8*)&pMeasurementSRV->mediumOccupancyResults;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   402
            status = cmdBld_GetParam (pMeasurementSRV->hCmdBld, &tTwdParam);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   403
            if( TI_OK == status  )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   404
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   405
                TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": Medium Usage has been nullified, starting timer.\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   406
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   407
                /* Start Timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   408
                tmr_StartTimer (pMeasurementSRV->hRequestTimer[requestIndex],
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   409
                                MacServices_measurementSRV_requestTimerExpired,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   410
                                (TI_HANDLE)pMeasurementSRV,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   411
                                pMeasurementSRV->msrRequest.msrTypes[requestIndex].duration, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   412
                                TI_FALSE);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   413
                pMeasurementSRV->bRequestTimerRunning[requestIndex] = TI_TRUE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   414
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   415
            else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   416
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   417
                TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": TWD_GetParam (for channel load) returned status %d\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   418
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   419
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   420
            break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   421
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   422
        case MSR_TYPE_NOISE_HISTOGRAM_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   423
            /* Set Noise Histogram Cmd Params */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   424
            pNoiseHistParams.cmd = START_NOISE_HIST;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   425
            pNoiseHistParams.sampleInterval = DEF_SAMPLE_INTERVAL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   426
            os_memoryZero( pMeasurementSRV->hOS, &(pNoiseHistParams.ranges[0]), MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   427
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   428
            /* Set Ranges */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   429
            /* (-87) - First Range's Upper Bound */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   430
            rangeUpperBound = -87;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   431
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   432
            /* Previously we converted from RxLevel to dBm - now this isn't necessary */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   433
            /* rangeUpperBound = TWD_convertRSSIToRxLevel( pMeasurementSRV->hTWD, -87); */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   434
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   435
            for(rangeIndex = 0; rangeIndex < MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES -1; rangeIndex++)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   436
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   437
                if(rangeUpperBound > 0)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   438
                {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   439
                    pNoiseHistParams.ranges[rangeIndex] = 0;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   440
                }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   441
                else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   442
                {               
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   443
                    pNoiseHistParams.ranges[rangeIndex] = rangeUpperBound;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   444
                }         
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   445
                rangeUpperBound += 5; 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   446
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   447
            pNoiseHistParams.ranges[rangeIndex] = 0xFE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   448
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   449
            /* Print for Debug */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   450
            TRACE8(pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ":Noise histogram Measurement Ranges:\n%d %d %d %d %d %d %d %d\n", (TI_INT8) pNoiseHistParams.ranges[0], (TI_INT8) pNoiseHistParams.ranges[1], (TI_INT8) pNoiseHistParams.ranges[2], (TI_INT8) pNoiseHistParams.ranges[3], (TI_INT8) pNoiseHistParams.ranges[4], (TI_INT8) pNoiseHistParams.ranges[5], (TI_INT8) pNoiseHistParams.ranges[6], (TI_INT8) pNoiseHistParams.ranges[7]);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   451
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   452
            /* Send a Start command to the FW */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   453
            status = cmdBld_CmdNoiseHistogram (pMeasurementSRV->hCmdBld, &pNoiseHistParams, NULL, NULL);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   454
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   455
            if ( TI_OK == status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   456
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   457
                /* Print for Debug */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   458
                TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": Sent noise histogram command. Starting timer\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   459
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   460
                /* Start Timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   461
                tmr_StartTimer (pMeasurementSRV->hRequestTimer[requestIndex],
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   462
                                MacServices_measurementSRV_requestTimerExpired,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   463
                                (TI_HANDLE)pMeasurementSRV,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   464
                                pMeasurementSRV->msrRequest.msrTypes[requestIndex].duration, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   465
                                TI_FALSE);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   466
                pMeasurementSRV->bRequestTimerRunning[requestIndex] = TI_TRUE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   467
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   468
            else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   469
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   470
                TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": TWD_NoiseHistogramCmd returned status %d\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   471
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   472
            break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   473
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   474
        case MSR_TYPE_BEACON_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   475
            /* set all parameters in the AP discovery command */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   476
            pApDiscoveryParams.scanDuration = pMeasurementSRV->msrRequest.msrTypes[ requestIndex ].duration * 1000; 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   477
            pApDiscoveryParams.numOfProbRqst = 1;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   478
            pApDiscoveryParams.txdRateSet = HW_BIT_RATE_1MBPS;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   479
            pApDiscoveryParams.ConfigOptions = RX_CONFIG_OPTION_FOR_MEASUREMENT;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   480
            pApDiscoveryParams.FilterOptions = RX_FILTER_OPTION_DEF_PRSP_BCN;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   481
            pApDiscoveryParams.txPowerDbm = pMeasurementSRV->msrRequest.txPowerDbm;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   482
            pApDiscoveryParams.scanOptions = SCAN_ACTIVE; /* both scan type and band are 0 for active and */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   483
                                                          /* 2.4 GHz, respectively, but 2.4 is not defined */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   484
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   485
            /* band determined at the initiate measurement command not at that structure */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   486
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   487
            /* scan mode go into the scan option field */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   488
            if ( MSR_SCAN_MODE_PASSIVE == pMeasurementSRV->msrRequest.msrTypes[ requestIndex ].scanMode )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   489
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   490
                pApDiscoveryParams.scanOptions |= SCAN_PASSIVE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   491
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   492
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   493
            /* Send AP Discovery command */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   494
            status = cmdBld_CmdApDiscovery (pMeasurementSRV->hCmdBld, &pApDiscoveryParams, NULL, NULL);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   495
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   496
            if ( TI_OK == status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   497
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   498
                TRACE7( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": AP discovery command sent. Params:\n scanDuration=%d, scanOptions=%d, numOfProbRqst=%d, txdRateSet=%d, txPowerDbm=%d, configOptions=%d, filterOptions=%d\n Starting timer...\n", pApDiscoveryParams.scanDuration, pApDiscoveryParams.scanOptions, pApDiscoveryParams.numOfProbRqst, pApDiscoveryParams.txdRateSet, pApDiscoveryParams.txPowerDbm, pApDiscoveryParams.ConfigOptions, pApDiscoveryParams.FilterOptions);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   499
        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   500
                /* Start Timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   501
                tmr_StartTimer (pMeasurementSRV->hRequestTimer[requestIndex],
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   502
                                MacServices_measurementSRV_requestTimerExpired,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   503
                                (TI_HANDLE)pMeasurementSRV,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   504
                                pMeasurementSRV->msrRequest.msrTypes[requestIndex].duration, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   505
                                TI_FALSE);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   506
                pMeasurementSRV->bRequestTimerRunning[ requestIndex ] = TI_TRUE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   507
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   508
            else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   509
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   510
                TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": TWD_ApDiscoveryCmd returned status %d\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   511
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   512
            break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   513
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   514
        case MSR_TYPE_BASIC_MEASUREMENT: /* not supported in current implemntation */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   515
        case MSR_TYPE_FRAME_MEASUREMENT: /* not supported in current implemntation */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   516
        default:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   517
            TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": Measurement type %d is not supported\n", pMeasurementSRV->msrRequest.msrTypes[ requestIndex ].msrType);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   518
            break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   519
        }        
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   520
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   521
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   522
    /* if no measurement types are running, sen al types complete event.
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   523
       This can happen if all types failed to start */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   524
    if ( TI_TRUE == measurementSRVIsMeasurementComplete( hMeasurementSRV ))
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   525
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   526
        /* send the event */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   527
        measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState), 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   528
                                  MSR_SRV_EVENT_ALL_TYPES_COMPLETE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   529
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   530
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   531
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   532
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   533
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   534
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   535
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   536
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   537
 * \brief Handle an ALL_TYPE_COMPLETE event by sending a stop measure command to the FW.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   538
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   539
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   540
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   541
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   542
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   543
TI_STATUS measurementSRVSM_requestMeasureStop( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   544
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   545
    measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   546
    TI_STATUS status;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   547
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   548
    /* since this function may also be called when stop is requested and start complete event
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   549
       has not yet been received from the FW, we may need to stop the FW guard timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   550
    if (pMeasurementSRV->bStartStopTimerRunning)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   551
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   552
		tmr_StopTimer (pMeasurementSRV->hStartStopTimer);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   553
        pMeasurementSRV->bStartStopTimerRunning = TI_FALSE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   554
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   555
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   556
    /* Send Measurement Stop command to the FW */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   557
    status = cmdBld_CmdMeasurementStop (pMeasurementSRV->hCmdBld, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   558
                                        (void *)pMeasurementSRV->commandResponseCBFunc,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   559
                                        pMeasurementSRV->commandResponseCBObj);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   560
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   561
    pMeasurementSRV->commandResponseCBFunc = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   562
    pMeasurementSRV->commandResponseCBObj = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   563
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   564
    if ( TI_OK != status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   565
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   566
        TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": Failed to send measurement stop command, statud=%d,\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   567
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   568
        /* send a measurement complete event - since it can't be stopped */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   569
        measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState), MSR_SRV_EVENT_STOP_COMPLETE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   570
        return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   571
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   572
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   573
    TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": measure stop command sent.\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   574
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   575
    /* start the FW guard timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   576
    pMeasurementSRV->bStartStopTimerRunning = TI_TRUE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   577
    tmr_StartTimer (pMeasurementSRV->hStartStopTimer,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   578
                    MacServices_measurementSRV_startStopTimerExpired,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   579
                    (TI_HANDLE)pMeasurementSRV,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   580
                    MSR_FW_GUARD_TIME,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   581
                    TI_FALSE);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   582
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   583
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   584
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   585
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   586
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   587
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   588
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   589
 * \brief Handle a STOP_COMPLETE event by exiting driver mode and calling the complete CB.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   590
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   591
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   592
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   593
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   594
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   595
TI_STATUS measurementSRVSM_completeMeasure( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   596
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   597
    measurementSRV_t *pMeasurementSRV = (measurementSRV_t *)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   598
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   599
    /* Switch Power Save SRV back to user mode */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   600
    powerSrv_ReleasePS( pMeasurementSRV->hPowerSaveSRV, pMeasurementSRV->bSendNullDataWhenExitPs, NULL, NULL );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   601
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   602
    /* if the response CB is still pending, call it (when requestExpiryTimeStamp was reached) */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   603
    if ( NULL != pMeasurementSRV->commandResponseCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   604
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   605
        pMeasurementSRV->commandResponseCBFunc( pMeasurementSRV->commandResponseCBObj, TI_OK );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   606
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   607
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   608
    /* call the complete CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   609
    if ( NULL != pMeasurementSRV->measurmentCompleteCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   610
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   611
        pMeasurementSRV->measurmentCompleteCBFunc( pMeasurementSRV->measurementCompleteCBObj, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   612
                                                   &(pMeasurementSRV->msrReply));
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   613
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   614
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   615
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   616
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   617
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   618
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   619
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   620
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   621
 * \brief Handle a STOP_REQUEST event when in WAIT_FOR_DRIVER_MODE state by exiting driver mode.
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   622
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   623
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   624
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   625
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   626
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   627
TI_STATUS measurementSRVSM_stopFromWaitForDriverMode( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   628
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   629
    measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   630
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   631
    /* Switch Power Save SRV back to user mode */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   632
    powerSrv_ReleasePS( pMeasurementSRV->hPowerSaveSRV, pMeasurementSRV->bSendNullDataWhenExitPs, NULL, NULL );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   633
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   634
    /* if we are not running within a stop request context (shouldn't happen), call the CBs */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   635
    if ( TI_FALSE == pMeasurementSRV->bInRequest )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   636
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   637
        TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": stop from wait for driver mode: not within a request context?!? \n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   638
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   639
        /* call the response CB - this shouldn't happen, as only GWSI has response CB, and it shouldn't call
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   640
           stop before driver */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   641
        if ( NULL != pMeasurementSRV->commandResponseCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   642
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   643
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": stop from wait for driver mode: command response CB is not NULL?!? \n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   644
            pMeasurementSRV->commandResponseCBFunc( pMeasurementSRV->commandResponseCBObj, TI_OK );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   645
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   646
            pMeasurementSRV->commandResponseCBFunc = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   647
            pMeasurementSRV->commandResponseCBObj = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   648
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   649
        /* call the complete CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   650
        if ( NULL != pMeasurementSRV->measurmentCompleteCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   651
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   652
            /* mark that all types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   653
            TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   654
            for ( i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   655
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   656
                pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   657
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   658
            /* call the complete CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   659
            pMeasurementSRV->measurmentCompleteCBFunc( pMeasurementSRV->measurementCompleteCBObj, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   660
                                                       &(pMeasurementSRV->msrReply));
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   661
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   662
        else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   663
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   664
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": stop from wait for driver mode and response CB is NULL!!!\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   665
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   666
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   667
    /* we are within a stop request context */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   668
    else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   669
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   670
        /* if the command response Cb is valid, send a measure stop command to the FW - 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   671
           although it is not necessary, we need it to get a different context for the command response.
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   672
           This shouldn't happen, as only GWSI has command response, and it shouldn't call stop measure
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   673
           before it got the commadn response for start measure */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   674
        if ( NULL != pMeasurementSRV->commandResponseCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   675
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   676
            /* shouldn't happen - a command response is valid (GWSI) and stop measure called 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   677
               before measure start response was received (driver) */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   678
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": stop from wait for driver mode - within request context and command response is not NULL?!?\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   679
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   680
            cmdBld_CmdMeasurementStop (pMeasurementSRV->hCmdBld, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   681
                                       (void *)pMeasurementSRV->commandResponseCBFunc,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   682
                                       pMeasurementSRV->commandResponseCBObj);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   683
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   684
            pMeasurementSRV->commandResponseCBFunc = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   685
            pMeasurementSRV->commandResponseCBObj = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   686
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   687
        if ( NULL != pMeasurementSRV->measurmentCompleteCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   688
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   689
            /* Note: this is being called from request context, but there's npthing else that can be done */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   690
            /* mark that all types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   691
            TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   692
            for ( i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   693
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   694
                pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   695
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   696
            /* call the complete CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   697
            pMeasurementSRV->measurmentCompleteCBFunc( pMeasurementSRV->measurementCompleteCBObj, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   698
                                                       &(pMeasurementSRV->msrReply));
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   699
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   700
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   701
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   702
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   703
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   704
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   705
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   706
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   707
 * \date 27-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   708
 * \brief handle a STOP_REQUEST event when in WAIT_FOR_DRIVER_MODE by marking negative result status
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   709
 * \brief and calling the ordinary stop function
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   710
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   711
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   712
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   713
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   714
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   715
TI_STATUS measurementSRVSM_stopFromWaitForMeasureStart( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   716
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   717
    measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   718
    TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   719
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   720
    /* mark that all types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   721
    for ( i = 0; i < pMeasurementSRV->msrRequest.numberOfTypes; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   722
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   723
        pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   724
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   725
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   726
    /* call the ordinary stop function (will send a measure stop command to FW) */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   727
    measurementSRVSM_requestMeasureStop( hMeasurementSRV );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   728
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   729
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   730
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   731
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   732
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   733
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   734
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   735
 * \brief handle a STOP_REQUEST event when in MEASURE_IN_PROGRESS by stopping all measure types and
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   736
 * \brief requesting measure stop from the FW.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   737
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   738
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   739
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   740
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   741
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   742
TI_STATUS measurementSRVSM_stopFromMeasureInProgress( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   743
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   744
    measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   745
    TNoiseHistogram   pNoiseHistParams;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   746
    TI_STATUS         status;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   747
    TI_INT32          i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   748
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   749
    /* stop all running measure types */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   750
    for (i = 0; i < pMeasurementSRV->msrRequest.numberOfTypes; i++)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   751
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   752
        if (pMeasurementSRV->bRequestTimerRunning[i])
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   753
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   754
            /* stop timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   755
			tmr_StopTimer (pMeasurementSRV->hRequestTimer[i]);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   756
            pMeasurementSRV->bRequestTimerRunning[i] = TI_FALSE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   757
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   758
            /* if necessary, stop measurement type */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   759
            switch ( pMeasurementSRV->msrRequest.msrTypes[ i ].msrType )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   760
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   761
            case MSR_TYPE_BEACON_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   762
                /* send stop AP discovery command */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   763
                status = cmdBld_CmdApDiscoveryStop (pMeasurementSRV->hCmdBld, NULL, NULL);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   764
                if ( TI_OK != status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   765
                {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   766
                    TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": TWD_ApDiscoveryStop returned status %d\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   767
                }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   768
                break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   769
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   770
            case MSR_TYPE_NOISE_HISTOGRAM_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   771
                /* Set Noise Histogram Cmd Params */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   772
                pNoiseHistParams.cmd = STOP_NOISE_HIST;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   773
                pNoiseHistParams.sampleInterval = 0;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   774
                os_memoryZero( pMeasurementSRV->hOS, &(pNoiseHistParams.ranges[ 0 ]), MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   775
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   776
                /* Send a Stop command to the FW */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   777
                status = cmdBld_CmdNoiseHistogram (pMeasurementSRV->hCmdBld, &pNoiseHistParams, NULL, NULL);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   778
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   779
                if ( TI_OK != status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   780
                {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   781
                    TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": TWD_NoiseHistogramCmd returned status %d\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   782
                }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   783
                break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   784
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   785
            /* These are just to avoid compilation warnings, nothing is actualy done here! */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   786
            case MSR_TYPE_BASIC_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   787
            case MSR_TYPE_CCA_LOAD_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   788
            case MSR_TYPE_FRAME_MEASUREMENT:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   789
            case MSR_TYPE_MAX_NUM_OF_MEASURE_TYPES:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   790
            default:
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   791
                TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": unsupported measurement type: %d\n", pMeasurementSRV->msrRequest.msrTypes[ i ].msrType);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   792
                break;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   793
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   794
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   795
            /* mark that measurement has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   796
            pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   797
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   798
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   799
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   800
    /* Send Measurement Stop command to the FW */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   801
    status = cmdBld_CmdMeasurementStop (pMeasurementSRV->hCmdBld,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   802
                                        (void *)pMeasurementSRV->commandResponseCBFunc,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   803
                                        pMeasurementSRV->commandResponseCBObj);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   804
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   805
    pMeasurementSRV->commandResponseCBFunc = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   806
    pMeasurementSRV->commandResponseCBObj = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   807
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   808
    if ( TI_OK != status )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   809
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   810
        TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": Failed to send measurement stop command, statud=%d,\n", status);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   811
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   812
        /* send a measurement complete event - since it can't be stopped */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   813
        measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   814
                                  MSR_SRV_EVENT_STOP_COMPLETE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   815
        return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   816
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   817
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   818
    TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": measure stop command sent.\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   819
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   820
    /* start the FW guard timer */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   821
    pMeasurementSRV->bStartStopTimerRunning = TI_TRUE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   822
    tmr_StartTimer (pMeasurementSRV->hStartStopTimer,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   823
                    MacServices_measurementSRV_startStopTimerExpired,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   824
                    (TI_HANDLE)pMeasurementSRV,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   825
                    MSR_FW_GUARD_TIME,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   826
                    TI_FALSE);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   827
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   828
    return TI_OK; 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   829
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   830
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   831
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   832
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   833
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   834
 * \brief handle a DRIVER_MODE_FAILURE event by calling the response and complete CBs.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   835
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   836
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   837
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   838
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   839
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   840
TI_STATUS measurementSRVSM_DriverModeFailure( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   841
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   842
    measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   843
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   844
    /* this function can be called from within a request (when the power save SRV returned an immediate error),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   845
       or in a different context, when power save entry failed. The latter is a valid status, whereas the former
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   846
       indicates a severe error. However, as there is nothing to do with the former (other than debug it), the same
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   847
       failure indication is used for both of them, which will make the upper layer (Palau driver or TI measurement
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   848
       manager) to return to idle state. Still, for the former the error is returned as the return status from the
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   849
       measurement start API call whereas for the latter the error is indicated both by the command response and
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   850
       measurement complete CBs status */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   851
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   852
    /* if we are running within a request context, don't call the CBs! The startMeasurement function
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   853
       will return an invalid status instead */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   854
    if ( TI_FALSE == pMeasurementSRV->bInRequest )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   855
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   856
        /* if a response CB is available (GWSI) call it */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   857
        if ( NULL != pMeasurementSRV->commandResponseCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   858
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   859
            pMeasurementSRV->commandResponseCBFunc( pMeasurementSRV->commandResponseCBObj, TI_NOK );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   860
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   861
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   862
        /* if a complete CB is available (both GWSI and TI driver), call it */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   863
        if ( NULL != pMeasurementSRV->measurmentCompleteCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   864
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   865
            /* mark that all types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   866
            TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   867
            for ( i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   868
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   869
                pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   870
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   871
            /* call the complete CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   872
            pMeasurementSRV->measurmentCompleteCBFunc( pMeasurementSRV->measurementCompleteCBObj, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   873
                                                       &(pMeasurementSRV->msrReply));
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   874
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   875
        else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   876
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   877
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": driver mode failure and complete CB is NULL!!!\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   878
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   879
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   880
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   881
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   882
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   883
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   884
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   885
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   886
 * \date 08-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   887
 * \brief handle a START_FAILURE event by exiting driver mode and calling the complete CB.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   888
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   889
 * Function Scope \e Public.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   890
 * \param hMeasurementSrv - handle to the Measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   891
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   892
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   893
TI_STATUS measurementSRVSM_measureStartFailure( TI_HANDLE hMeasurementSRV )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   894
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   895
    measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   896
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   897
    /* This function can be called from within a request context (if the driver mode entry process
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   898
       was immediate), or from the driver mode CB context. Regardless of teh context in which it runs,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   899
       The error indicates that something is wrong in the HAL. There is no way to solve this (other than debug it).
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   900
       The error is either indicating by the measurement start API return status (if still in the request context),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   901
       or by calling the response (if available, only in GWSI) and complete CBs with invalid status */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   902
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   903
    /* Switch Power save SRV back to user mode */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   904
    powerSrv_ReleasePS( pMeasurementSRV->hPowerSaveSRV, pMeasurementSRV->bSendNullDataWhenExitPs, NULL, NULL );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   905
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   906
    /* if we are running within a request context, don't call the CB! The startMeasurement function
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   907
       will return an invalid status instead */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   908
    if ( TI_FALSE == pMeasurementSRV->bInRequest )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   909
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   910
        /* if a response CB is available (GWSI) call it */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   911
        if ( NULL != pMeasurementSRV->commandResponseCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   912
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   913
            pMeasurementSRV->commandResponseCBFunc( pMeasurementSRV->commandResponseCBObj, TI_NOK );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   914
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   915
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   916
        /* if a complete CB is available (both GWSI and TI driver), call it */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   917
        if ( NULL != pMeasurementSRV->measurmentCompleteCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   918
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   919
            /* mark that all types has failed */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   920
            TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   921
            for ( i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   922
            {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   923
                pMeasurementSRV->msrReply.msrTypes[ i ].status = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   924
            }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   925
            /* call the complete CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   926
            pMeasurementSRV->measurmentCompleteCBFunc( pMeasurementSRV->measurementCompleteCBObj, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   927
                                                       &(pMeasurementSRV->msrReply));
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   928
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   929
        else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   930
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   931
            TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_ERROR, ": Start measurement failure and response and complete CBs are NULL!!!\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   932
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   933
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   934
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   935
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   936
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   937
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   938
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   939
static void measurementSRVSM_requestMeasureStartResponseCB(TI_HANDLE hMeasurementSRV, TI_UINT16 uMboxStatus)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   940
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   941
	measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   942
	TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   943
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   944
TRACE1( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": FW has responded with CMD_STATUS = %d\n", uMboxStatus);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   945
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   946
	if (uMboxStatus == TI_OK) 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   947
	{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   948
TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": FW has responded with CMD_STATUS_SUCCESS!\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   949
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   950
		if ( NULL != pMeasurementSRV->commandResponseCBFunc )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   951
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   952
            pMeasurementSRV->commandResponseCBFunc( pMeasurementSRV->commandResponseCBObj, TI_OK );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   953
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   954
	}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   955
	else
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   956
	{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   957
		if (uMboxStatus == SG_REJECT_MEAS_SG_ACTIVE) 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   958
		{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   959
TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": FW has responded with CMD_STATUS_REJECT_MEAS_SG_ACTIVE!\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   960
		}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   961
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   962
TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, ": FW has responded with CMD_STATUS NOK!!!\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   963
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   964
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   965
		/* if a timer is running, stop it */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   966
		if ( TI_TRUE == pMeasurementSRV->bStartStopTimerRunning )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   967
		{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   968
TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_INFORMATION, "***** STOP TIMER 8 *****\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   969
			tmr_StopTimer( pMeasurementSRV->hStartStopTimer );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   970
			pMeasurementSRV->bStartStopTimerRunning = TI_FALSE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   971
		}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   972
		for ( i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++ )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   973
		{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   974
			if ( TI_TRUE == pMeasurementSRV->bRequestTimerRunning[ i ] )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   975
			{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   976
				tmr_StopTimer( pMeasurementSRV->hRequestTimer[ i ] );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   977
				pMeasurementSRV->bRequestTimerRunning[ i ] = TI_FALSE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   978
			}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   979
		}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   980
		
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   981
		measurementSRVSM_SMEvent( hMeasurementSRV, &(pMeasurementSRV->SMState),
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   982
											 MSR_SRV_EVENT_START_FAILURE );
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   983
	}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   984
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   985
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   986
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   987
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   988
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   989
 * \date 23-December-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   990
 * \brief Handles a stop request when no stop is needed (SM is either idle or already send stop command to FW.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   991
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   992
 * Function Scope \e Private.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   993
 * \param hMeasurementSrv - handle to the measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   994
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   995
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   996
TI_STATUS measurementSRVSRVSM_dummyStop( TI_HANDLE hMeasurementSrv )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   997
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   998
    measurementSRV_t *pMeasurementSRV = (measurementSRV_t*)hMeasurementSrv;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
   999
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1000
    TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_WARNING, ": sending unnecessary stop measurement command to FW...\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1001
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1002
    /* send a stop command to FW, to obtain a different context in ehich to cal the command response CB */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1003
    cmdBld_CmdMeasurementStop (pMeasurementSRV->hCmdBld, 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1004
                               (void *)pMeasurementSRV->commandResponseCBFunc,
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1005
                               pMeasurementSRV->commandResponseCBObj);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1006
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1007
    pMeasurementSRV->commandResponseCBFunc = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1008
    pMeasurementSRV->commandResponseCBObj = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1009
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1010
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1011
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1012
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1013
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1014
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1015
 * \date 17-November-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1016
 * \brief Handles an unexpected event.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1017
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1018
 * Function Scope \e Private.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1019
 * \param hMeasurementSrv - handle to the measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1020
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1021
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1022
TI_STATUS actionUnexpected( TI_HANDLE hMeasurementSrv ) 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1023
{
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1024
    measurementSRV_t *pMeasurementSRV = (measurementSRV_t*)hMeasurementSrv;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1025
    TI_INT32 i;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1026
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1027
    TRACE0( pMeasurementSRV->hReport, REPORT_SEVERITY_SM, ": measurement SRV state machine error, unexpected Event\n");
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1028
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1029
    if (pMeasurementSRV->bStartStopTimerRunning)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1030
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1031
		tmr_StopTimer (pMeasurementSRV->hStartStopTimer);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1032
        pMeasurementSRV->bStartStopTimerRunning = TI_FALSE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1033
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1034
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1035
    for (i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++)
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1036
    {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1037
        if (pMeasurementSRV->bRequestTimerRunning[i])
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1038
        {
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1039
			tmr_StopTimer (pMeasurementSRV->hRequestTimer[i]);
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1040
            pMeasurementSRV->bRequestTimerRunning[i] = TI_FALSE;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1041
        }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1042
    }
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1043
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1044
    /* we must clean the old command response CB since they are no longer relevant 
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1045
      since the state machine may be corrupted */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1046
    pMeasurementSRV->commandResponseCBFunc = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1047
    pMeasurementSRV->commandResponseCBObj = NULL;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1048
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1049
    /* indicate the unexpected event in the return status */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1050
    pMeasurementSRV->returnStatus = TI_NOK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1051
    
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1052
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1053
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1054
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1055
/**
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1056
 * \author Ronen Kalish\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1057
 * \date 10-Jan-2005\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1058
 * \brief Handles an event that doesn't require any action.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1059
 *
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1060
 * Function Scope \e Private.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1061
 * \param hMeasurementSrv - handle to the measurement SRV object.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1062
 * \return always TI_OK.\n
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1063
 */
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1064
TI_STATUS actionNop( TI_HANDLE hMeasurementSrv )
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1065
{   
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1066
    return TI_OK;
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1067
}
10c42ec6c05f version WiLink_Driver_6.1.1.0.8
shahar_levi@ti.com
parents:
diff changeset
  1068