164064216a8433360745f69edddce19a606659163The Android Open Source Project
264064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
364064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
464064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
564064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
664064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved.                                                  |**
764064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
864064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without    |**
964064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions    |**
1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met:                                                              |**
1164064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
1264064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions of source code must retain the above copyright     |**
1364064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer.      |**
1464064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions in binary form must reproduce the above copyright  |**
1564064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer in    |**
1664064216a8433360745f69edddce19a606659163The Android Open Source Project**|    the documentation and/or other materials provided with the         |**
1764064216a8433360745f69edddce19a606659163The Android Open Source Project**|    distribution.                                                      |**
1864064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Neither the name Texas Instruments nor the names of its            |**
1964064216a8433360745f69edddce19a606659163The Android Open Source Project**|    contributors may be used to endorse or promote products derived    |**
2064064216a8433360745f69edddce19a606659163The Android Open Source Project**|    from this software without specific prior written permission.      |**
2164064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
3364064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
3464064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
3564064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
3664064216a8433360745f69edddce19a606659163The Android Open Source Project
3764064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************/
3864064216a8433360745f69edddce19a606659163The Android Open Source Project/*																		   */
3964064216a8433360745f69edddce19a606659163The Android Open Source Project/*	  MODULE:	measurementMgr.h										   */
4064064216a8433360745f69edddce19a606659163The Android Open Source Project/*    PURPOSE:	measurement Manager module header file					   */
4164064216a8433360745f69edddce19a606659163The Android Open Source Project/*																		   */
4264064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************/
4364064216a8433360745f69edddce19a606659163The Android Open Source Project
4464064216a8433360745f69edddce19a606659163The Android Open Source Project
4564064216a8433360745f69edddce19a606659163The Android Open Source Project
4664064216a8433360745f69edddce19a606659163The Android Open Source Project
4764064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef __MEASUREMENTMGR_H__
4864064216a8433360745f69edddce19a606659163The Android Open Source Project#define __MEASUREMENTMGR_H__
4964064216a8433360745f69edddce19a606659163The Android Open Source Project
5064064216a8433360745f69edddce19a606659163The Android Open Source Project
5164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "report.h"
5264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramOut.h"
5364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "requestHandler.h"
5464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "measurementMgrSM.h"
5564064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef EXC_MODULE_INCLUDED
5664064216a8433360745f69edddce19a606659163The Android Open Source Project #include "excRMMngrParam.h"
5764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
5864064216a8433360745f69edddce19a606659163The Android Open Source Project
5964064216a8433360745f69edddce19a606659163The Android Open Source Project
6064064216a8433360745f69edddce19a606659163The Android Open Source Project/* Functions Pointers Definitions */
6164064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef TI_STATUS (*parserFrameReq_t)   (TI_HANDLE hMeasurementMgr,
6264064216a8433360745f69edddce19a606659163The Android Open Source Project                                         UINT8 *pData, INT32 dataLen,
6364064216a8433360745f69edddce19a606659163The Android Open Source Project                                         measurement_frameRequest_t *frameReq);
6464064216a8433360745f69edddce19a606659163The Android Open Source Project
6564064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef BOOL (*isTypeValid_t)           (TI_HANDLE hMeasurementMgr,
6664064216a8433360745f69edddce19a606659163The Android Open Source Project                                         measurement_type_e type,
6764064216a8433360745f69edddce19a606659163The Android Open Source Project                                         measurement_scanMode_e scanMode);
6864064216a8433360745f69edddce19a606659163The Android Open Source Project
6964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef TI_STATUS (*buildRejectReport_t) (TI_HANDLE hMeasurementMgr,
7064064216a8433360745f69edddce19a606659163The Android Open Source Project										  MeasurementRequest_t *pRequestArr[],
7164064216a8433360745f69edddce19a606659163The Android Open Source Project										  UINT8	numOfRequestsInParallel,
7264064216a8433360745f69edddce19a606659163The Android Open Source Project										  measurement_rejectReason_e rejectReason);
7364064216a8433360745f69edddce19a606659163The Android Open Source Project
7464064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef TI_STATUS (*buildReport_t)		(TI_HANDLE hMeasurementMgr,
7564064216a8433360745f69edddce19a606659163The Android Open Source Project										 MeasurementRequest_t request,
7664064216a8433360745f69edddce19a606659163The Android Open Source Project										 measurement_typeReply_t * reply);
7764064216a8433360745f69edddce19a606659163The Android Open Source Project
7864064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef TI_STATUS (*sendReportAndCleanObj_t)(TI_HANDLE hMeasurementMgr);
7964064216a8433360745f69edddce19a606659163The Android Open Source Project
8064064216a8433360745f69edddce19a606659163The Android Open Source Project
8164064216a8433360745f69edddce19a606659163The Android Open Source Project
8264064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct
8364064216a8433360745f69edddce19a606659163The Android Open Source Project{
8464064216a8433360745f69edddce19a606659163The Android Open Source Project
8564064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Timers */
8664064216a8433360745f69edddce19a606659163The Android Open Source Project	void *						pActivationDelayTimer;
8764064216a8433360745f69edddce19a606659163The Android Open Source Project
8864064216a8433360745f69edddce19a606659163The Android Open Source Project
8964064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Methods */
9064064216a8433360745f69edddce19a606659163The Android Open Source Project    parserFrameReq_t            parserFrameReq;
9164064216a8433360745f69edddce19a606659163The Android Open Source Project    isTypeValid_t               isTypeValid;
9264064216a8433360745f69edddce19a606659163The Android Open Source Project    buildRejectReport_t			buildRejectReport;
9364064216a8433360745f69edddce19a606659163The Android Open Source Project	buildReport_t				buildReport;
9464064216a8433360745f69edddce19a606659163The Android Open Source Project	sendReportAndCleanObj_t		sendReportAndCleanObj;
9564064216a8433360745f69edddce19a606659163The Android Open Source Project
9664064216a8433360745f69edddce19a606659163The Android Open Source Project
9764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Data */
9864064216a8433360745f69edddce19a606659163The Android Open Source Project    BOOL						Enabled;
9964064216a8433360745f69edddce19a606659163The Android Open Source Project	BOOL						Connected;
10064064216a8433360745f69edddce19a606659163The Android Open Source Project
10164064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8						servingChannelID;
10264064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8						measuredChannelID;
10364064216a8433360745f69edddce19a606659163The Android Open Source Project
10464064216a8433360745f69edddce19a606659163The Android Open Source Project	measurement_mode_e			Mode;
10564064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8						Capabilities;
10664064216a8433360745f69edddce19a606659163The Android Open Source Project	BOOL                        isModuleRegistered;
10764064216a8433360745f69edddce19a606659163The Android Open Source Project
10864064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT16						trafficIntensityThreshold;
10964064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT16                      maxDurationOnNonServingChannel;
11064064216a8433360745f69edddce19a606659163The Android Open Source Project
11164064216a8433360745f69edddce19a606659163The Android Open Source Project
11264064216a8433360745f69edddce19a606659163The Android Open Source Project    /* State Machine Params */
11364064216a8433360745f69edddce19a606659163The Android Open Source Project    fsm_stateMachine_t *		pMeasurementMgrSm;
11464064216a8433360745f69edddce19a606659163The Android Open Source Project    measurementMgrSM_States		currentState;
11564064216a8433360745f69edddce19a606659163The Android Open Source Project
11664064216a8433360745f69edddce19a606659163The Android Open Source Project
11764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Report Frame Params */
11864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef EXC_MODULE_INCLUDED
11964064216a8433360745f69edddce19a606659163The Android Open Source Project	RM_report_frame_t			excFrameReport;
12064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
12164064216a8433360745f69edddce19a606659163The Android Open Source Project	MeasurementReportFrame_t	dot11hFrameReport;
12264064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT16						nextEmptySpaceInReport;
12364064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT16						frameLength;
12464064216a8433360745f69edddce19a606659163The Android Open Source Project
12564064216a8433360745f69edddce19a606659163The Android Open Source Project
12664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Request Frame Params */
12764064216a8433360745f69edddce19a606659163The Android Open Source Project    MeasurementRequest_t *      currentRequest[MAX_NUM_REQ];
12864064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8						currentNumOfRequestsInParallel;
12964064216a8433360745f69edddce19a606659163The Android Open Source Project	measurement_frameType_e		currentFrameType;
13064064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT32						currentRequestStartTime;
13164064216a8433360745f69edddce19a606659163The Android Open Source Project    measurement_frameRequest_t	newFrameRequest;
13264064216a8433360745f69edddce19a606659163The Android Open Source Project
13364064216a8433360745f69edddce19a606659163The Android Open Source Project
13464064216a8433360745f69edddce19a606659163The Android Open Source Project	/* EXC Traffic Stream Metrics measurement parameters */
13564064216a8433360745f69edddce19a606659163The Android Open Source Project	void 						*pTsMetricsReportTimer[MAX_NUM_OF_AC];
13664064216a8433360745f69edddce19a606659163The Android Open Source Project	BOOL 						isTsMetricsEnabled[MAX_NUM_OF_AC];
13764064216a8433360745f69edddce19a606659163The Android Open Source Project
13864064216a8433360745f69edddce19a606659163The Android Open Source Project	/* Handles to other modules */
13964064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hRequestH;
14064064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hMacServices;
14164064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hRegulatoryDomain;
14264064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hExcMngr;
14364064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hSiteMgr;
14464064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hHalCtrl;
14564064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hMlme;
14664064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE                   hTrafficMonitor;
14764064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hReport;
14864064216a8433360745f69edddce19a606659163The Android Open Source Project	TI_HANDLE					hOs;
14964064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE                   hScr;
15064064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE                   hHealthMonitor;
15164064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE                   hApConn;
15264064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE                   hTx;
15364064216a8433360745f69edddce19a606659163The Android Open Source Project} measurementMgr_t;
15464064216a8433360745f69edddce19a606659163The Android Open Source Project
15564064216a8433360745f69edddce19a606659163The Android Open Source Project
15664064216a8433360745f69edddce19a606659163The Android Open Source Project
15764064216a8433360745f69edddce19a606659163The Android Open Source Project
15864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS measurementMgr_activateNextRequest(TI_HANDLE pContext);
15964064216a8433360745f69edddce19a606659163The Android Open Source Project
16064064216a8433360745f69edddce19a606659163The Android Open Source Project
16164064216a8433360745f69edddce19a606659163The Android Open Source Project
16264064216a8433360745f69edddce19a606659163The Android Open Source Project
16364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* __MEASUREMENTMGR_H__*/
16464064216a8433360745f69edddce19a606659163The Android Open Source Project
165