OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / system / wlan / ti / wilink_6_1 / TWD / TWDriver / TWDriverMsr.h
1 /*
2  * TWDriverMsr.h
3  *
4  * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.      
5  * All rights reserved.                                                  
6  *                                                                       
7  * Redistribution and use in source and binary forms, with or without    
8  * modification, are permitted provided that the following conditions    
9  * are met:                                                              
10  *                                                                       
11  *  * Redistributions of source code must retain the above copyright     
12  *    notice, this list of conditions and the following disclaimer.      
13  *  * Redistributions in binary form must reproduce the above copyright  
14  *    notice, this list of conditions and the following disclaimer in    
15  *    the documentation and/or other materials provided with the         
16  *    distribution.                                                      
17  *  * Neither the name Texas Instruments nor the names of its            
18  *    contributors may be used to endorse or promote products derived    
19  *    from this software without specific prior written permission.      
20  *                                                                       
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      
27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33
34 #ifndef TWDDRIVERMSR_H
35 #define TWDDRIVERMSR_H
36
37 /** \file  TWDriverMsr.h 
38  *  \brief TWDriver Measurement APIs
39  *
40  *  \see 
41  */
42
43 #include "TWDriverScan.h"
44 #include "tidef.h"
45 #include "public_radio.h"
46
47 #define NOISE_HISTOGRAM_LENGTH              8
48 #define MAX_NUM_OF_MSR_TYPES_IN_PARALLEL    3
49
50 /* The size of the time frame in which we must start the */
51 /* measurement request or give up */
52 #define MSR_START_MAX_DELAY             50
53
54 /* In non unicast measurement requests a random delay */
55 /* between 4 and 40 milliseconds */
56 #define MSR_ACTIVATION_DELAY_RANDOM     36
57 #define MSR_ACTIVATION_DELAY_OFFSET     4
58
59
60 /** \enum EMeasurementType
61  * \brief different measurement types
62  * 
63  * \par Description
64  * 
65  * \sa
66  */
67 typedef enum 
68 {
69 /*      0       */      MSR_TYPE_BASIC_MEASUREMENT  = 0,                        /**< */
70 /*      1       */      MSR_TYPE_CCA_LOAD_MEASUREMENT,                          /**< */
71 /*      2       */      MSR_TYPE_NOISE_HISTOGRAM_MEASUREMENT,           /**< */
72 /*      3       */      MSR_TYPE_BEACON_MEASUREMENT,                            /**< */
73 /*      4       */      MSR_TYPE_FRAME_MEASUREMENT,                                     /**< */
74 /*      5       */      MSR_TYPE_MAX_NUM_OF_MEASURE_TYPES                       /**< */
75
76 } EMeasurementType;
77
78 /** \enum EMeasurementScanMode
79  * \brief Measurement Scan Modes
80  * 
81  * \par Description
82  * enumerates the different scan modes available for beacon measurement
83  * 
84  * \sa
85  */
86 typedef enum
87 {
88 /*      0       */      MSR_SCAN_MODE_PASSIVE = 0,                              /**< Passive Scan Mode                  */
89 /*      1       */      MSR_SCAN_MODE_ACTIVE,                                   /**< Active Scan Mode                   */
90 /*      2       */      MSR_SCAN_MODE_BEACON_TABLE,                             /**< Beacon Table Scan Mode             */
91 /*      3       */      MSR_SCAN_MODE_MAX_NUM_OF_SCAN_MODES             /**< Max number of Scan Modes   */
92
93 } EMeasurementScanMode;
94
95 /** \enum EMeasurementFrameType
96  * \brief Measurement Frame Types
97  * 
98  * \par Description
99  * 
100  * \sa
101  */
102 typedef enum 
103 {
104 /*      0       */      MSR_FRAME_TYPE_NO_ACTIVE = 0,   /**< */
105 /*      1       */      MSR_FRAME_TYPE_BROADCAST,               /**< */
106 /*      2       */      MSR_FRAME_TYPE_MULTICAST,               /**< */
107 /*      3       */      MSR_FRAME_TYPE_UNICAST                  /**< */
108
109 } EMeasurementFrameType;
110
111 /** \enum EMeasurementMode
112  * \brief Measurement Modes
113  * 
114  * \par Description
115  * 
116  * \sa
117  */
118 typedef enum
119 {
120 /*      0       */      MSR_MODE_NONE = 0,                              /**< */
121 /*      1       */      MSR_MODE_XCC,                                   /**< */
122 /*      2       */      MSR_MODE_SPECTRUM_MANAGEMENT    /**< */
123
124 } EMeasurementMode;
125
126 /** \enum EMeasurementRejectReason
127  * \brief Measurement Reject Reason
128  * 
129  * \par Description
130  * 
131  * \sa
132  */
133 typedef enum 
134 {
135 /*      1       */      MSR_REJECT_OTHER_REASON = 1,                            /**< */
136 /*      2       */      MSR_REJECT_INVALID_MEASUREMENT_TYPE,            /**< */         
137 /*      3       */      MSR_REJECT_DTIM_OVERLAP,                                        /**< */
138 /*      4       */      MSR_REJECT_DURATION_EXCEED_MAX_DURATION,        /**< */
139 /*      5       */      MSR_REJECT_TRAFFIC_INTENSITY_TOO_HIGH,          /**< */
140 /*      6       */      MSR_REJECT_SCR_UNAVAILABLE,                                     /**< */
141 /*      7       */      MSR_REJECT_MAX_DELAY_PASSED,                            /**< */
142 /*      8       */      MSR_REJECT_INVALID_CHANNEL,                                     /**< */
143 /*      9       */      MSR_REJECT_NOISE_HIST_FAIL,                                     /**< */
144 /*      10      */      MSR_REJECT_CHANNEL_LOAD_FAIL,                           /**< */
145 /*      11      */      MSR_REJECT_EMPTY_REPORT                                         /**< */
146
147 } EMeasurementRejectReason;
148
149  /*
150  ***********************************************************************
151  *  Unions.
152  ***********************************************************************
153  */
154 /** \union TMeasurementReplyValue
155  * \brief Measurement possible Reply Values 
156  * 
157  * \par Description
158  * 
159  * \sa
160  */
161 typedef union
162 {
163     TI_UINT8                            CCABusyFraction;                                                /**< */
164     TI_UINT8                            RPIDensity[ NOISE_HISTOGRAM_LENGTH ];   /**< */
165
166 } TMeasurementReplyValue;
167
168 /***********************************************************************
169  *  Structure definitions.
170  ***********************************************************************
171  */
172 /** \struct TMeasurementTypeRequest
173  * \brief Measurement Type Request 
174  * 
175  * \par Description
176  * This structure defines single channel parameters for normal scan operation (inc. triggered)
177  * 
178  * \sa
179  */
180 typedef struct
181 {
182     EMeasurementType                    msrType;        /**< */
183     EMeasurementScanMode                scanMode;       /**< */
184     TI_UINT32                           duration;       /**< */
185     TI_UINT8                            reserved;       /**< */
186
187 } TMeasurementTypeRequest;
188
189 /** \struct TMeasurementRequest
190  * \brief Measurement Request 
191  * 
192  * \par Description
193  * This structure defines measurement parameters of several measurement request types
194  * for one channel
195  * 
196  * \sa
197  */
198 typedef struct
199 {
200     ERadioBand                          band;                                                                                           /**< */
201     TI_UINT8                            channel;                                                                                        /**< */
202     TI_UINT64                           startTime;                                                                                      /**< */
203     TI_UINT8                            txPowerDbm;                                                                                     /**< */                         
204     EScanResultTag                      eTag;                                                                                           /**< */
205     TI_UINT8                            numberOfTypes;                                                                          /**< */
206     TMeasurementTypeRequest             msrTypes[ MAX_NUM_OF_MSR_TYPES_IN_PARALLEL ];           /**< */
207
208 } TMeasurementRequest;
209
210 /** \struct TMeasurementTypeReply
211  * \brief Measurement Type Reply 
212  * 
213  * \par Description
214  * This structure defines the reply parameters for measurement of specific type performed
215  * (the type is indicated in the msrType field)
216  * 
217  * \sa
218  */
219 typedef struct
220 {
221     EMeasurementType                    msrType;                /**< The type of performed measurement the reply reffer to      */
222     TI_UINT8                            status;                 /**< The status of measurement performed                                        */
223     TMeasurementReplyValue              replyValue;             /**< The Reply Value of performed measurement                           */
224     TI_UINT8                            reserved;               /**< */
225
226 } TMeasurementTypeReply;
227
228 /** \struct TMeasurementReply
229  * \brief Measurement Reply 
230  * 
231  * \par Description
232  * This structure defines the reply parameters for some measurements of some types performed
233  * 
234  * \sa
235  */
236 typedef struct 
237 {
238     TI_UINT8                            numberOfTypes;                                                                  /**< Number of measurements types (equal to number of measurement replys)       */
239     TMeasurementTypeReply               msrTypes[ MAX_NUM_OF_MSR_TYPES_IN_PARALLEL ];   /**< Measurements Replys buffer. One Reply per type                                                     */
240
241 } TMeasurementReply;
242
243 /** \struct TMeasurementFrameHdr
244  * \brief Measurement Frame Header 
245  * 
246  * \par Description
247  * This structure defines a Header of a measurement
248  * 
249  * \sa
250  */
251 typedef struct 
252 {
253     TI_UINT16                           dialogToken;                    /**< Indicates if the received Measurement is the same as the one that is being processed       */
254     TI_UINT8                            activatioDelay;                 /**< */
255     TI_UINT8                            measurementOffset;              /**< */
256
257 } TMeasurementFrameHdr;
258
259 /** \struct TMeasurementFrameRequest
260  * \brief Measurement Frame Request 
261  * 
262  * \par Description
263  * 
264  * \sa
265  */
266 typedef struct 
267 {
268     TMeasurementFrameHdr                 *hdr;                  /**< */
269     EMeasurementFrameType                frameType;             /**< */
270     TI_UINT8                             *requests;             /**< */
271     TI_INT32                             requestsLen;   /**< */
272
273 } TMeasurementFrameRequest;
274
275
276 #endif /* #define TWDDRIVERMSR_H */