diff -r 000000000000 -r 10c42ec6c05f TWD/TWDriver/TWDriverMsr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TWD/TWDriver/TWDriverMsr.h Tue Jun 29 12:34:26 2010 +0100 @@ -0,0 +1,281 @@ +/* + * TWDriverMsr.h + * + * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 or BSD License which accompanies + * this distribution. The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Texas Instruments nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TWDDRIVERMSR_H +#define TWDDRIVERMSR_H + +/** \file TWDriverMsr.h + * \brief TWDriver Measurement APIs + * + * \see + */ + +#include "TWDriverScan.h" +#include "tidef.h" +#include "public_radio.h" + +#define NOISE_HISTOGRAM_LENGTH 8 +#define MAX_NUM_OF_MSR_TYPES_IN_PARALLEL 3 + +/* The size of the time frame in which we must start the */ +/* measurement request or give up */ +#define MSR_START_MAX_DELAY 50 + +/* In non unicast measurement requests a random delay */ +/* between 4 and 40 milliseconds */ +#define MSR_ACTIVATION_DELAY_RANDOM 36 +#define MSR_ACTIVATION_DELAY_OFFSET 4 + + +/** \enum EMeasurementType + * \brief different measurement types + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ MSR_TYPE_BASIC_MEASUREMENT = 0, /**< */ +/* 1 */ MSR_TYPE_CCA_LOAD_MEASUREMENT, /**< */ +/* 2 */ MSR_TYPE_NOISE_HISTOGRAM_MEASUREMENT, /**< */ +/* 3 */ MSR_TYPE_BEACON_MEASUREMENT, /**< */ +/* 4 */ MSR_TYPE_FRAME_MEASUREMENT, /**< */ +/* 5 */ MSR_TYPE_MAX_NUM_OF_MEASURE_TYPES /**< */ + +} EMeasurementType; + +/** \enum EMeasurementScanMode + * \brief Measurement Scan Modes + * + * \par Description + * enumerates the different scan modes available for beacon measurement + * + * \sa + */ +typedef enum +{ +/* 0 */ MSR_SCAN_MODE_PASSIVE = 0, /**< Passive Scan Mode */ +/* 1 */ MSR_SCAN_MODE_ACTIVE, /**< Active Scan Mode */ +/* 2 */ MSR_SCAN_MODE_BEACON_TABLE, /**< Beacon Table Scan Mode */ +/* 3 */ MSR_SCAN_MODE_MAX_NUM_OF_SCAN_MODES /**< Max number of Scan Modes */ + +} EMeasurementScanMode; + +/** \enum EMeasurementFrameType + * \brief Measurement Frame Types + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ MSR_FRAME_TYPE_NO_ACTIVE = 0, /**< */ +/* 1 */ MSR_FRAME_TYPE_BROADCAST, /**< */ +/* 2 */ MSR_FRAME_TYPE_MULTICAST, /**< */ +/* 3 */ MSR_FRAME_TYPE_UNICAST /**< */ + +} EMeasurementFrameType; + +/** \enum EMeasurementMode + * \brief Measurement Modes + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 0 */ MSR_MODE_NONE = 0, /**< */ +/* 1 */ MSR_MODE_XCC, /**< */ +/* 2 */ MSR_MODE_SPECTRUM_MANAGEMENT /**< */ + +} EMeasurementMode; + +/** \enum EMeasurementRejectReason + * \brief Measurement Reject Reason + * + * \par Description + * + * \sa + */ +typedef enum +{ +/* 1 */ MSR_REJECT_OTHER_REASON = 1, /**< */ +/* 2 */ MSR_REJECT_INVALID_MEASUREMENT_TYPE, /**< */ +/* 3 */ MSR_REJECT_DTIM_OVERLAP, /**< */ +/* 4 */ MSR_REJECT_DURATION_EXCEED_MAX_DURATION, /**< */ +/* 5 */ MSR_REJECT_TRAFFIC_INTENSITY_TOO_HIGH, /**< */ +/* 6 */ MSR_REJECT_SCR_UNAVAILABLE, /**< */ +/* 7 */ MSR_REJECT_MAX_DELAY_PASSED, /**< */ +/* 8 */ MSR_REJECT_INVALID_CHANNEL, /**< */ +/* 9 */ MSR_REJECT_NOISE_HIST_FAIL, /**< */ +/* 10 */ MSR_REJECT_CHANNEL_LOAD_FAIL, /**< */ +/* 11 */ MSR_REJECT_EMPTY_REPORT /**< */ + +} EMeasurementRejectReason; + + /* + *********************************************************************** + * Unions. + *********************************************************************** + */ +/** \union TMeasurementReplyValue + * \brief Measurement possible Reply Values + * + * \par Description + * + * \sa + */ +typedef union +{ + TI_UINT8 CCABusyFraction; /**< */ + TI_UINT8 RPIDensity[ NOISE_HISTOGRAM_LENGTH ]; /**< */ + +} TMeasurementReplyValue; + +/*********************************************************************** + * Structure definitions. + *********************************************************************** + */ +/** \struct TMeasurementTypeRequest + * \brief Measurement Type Request + * + * \par Description + * This structure defines single channel parameters for normal scan operation (inc. triggered) + * + * \sa + */ +typedef struct +{ + EMeasurementType msrType; /**< */ + EMeasurementScanMode scanMode; /**< */ + TI_UINT32 duration; /**< */ + TI_UINT8 reserved; /**< */ + +} TMeasurementTypeRequest; + +/** \struct TMeasurementRequest + * \brief Measurement Request + * + * \par Description + * This structure defines measurement parameters of several measurement request types + * for one channel + * + * \sa + */ +typedef struct +{ + ERadioBand band; /**< */ + TI_UINT8 channel; /**< */ + TI_UINT64 startTime; /**< */ + TI_UINT8 txPowerDbm; /**< */ + EScanResultTag eTag; /**< */ + TI_UINT8 numberOfTypes; /**< */ + TMeasurementTypeRequest msrTypes[ MAX_NUM_OF_MSR_TYPES_IN_PARALLEL ]; /**< */ + +} TMeasurementRequest; + +/** \struct TMeasurementTypeReply + * \brief Measurement Type Reply + * + * \par Description + * This structure defines the reply parameters for measurement of specific type performed + * (the type is indicated in the msrType field) + * + * \sa + */ +typedef struct +{ + EMeasurementType msrType; /**< The type of performed measurement the reply reffer to */ + TI_UINT8 status; /**< The status of measurement performed */ + TMeasurementReplyValue replyValue; /**< The Reply Value of performed measurement */ + TI_UINT8 reserved; /**< */ + +} TMeasurementTypeReply; + +/** \struct TMeasurementReply + * \brief Measurement Reply + * + * \par Description + * This structure defines the reply parameters for some measurements of some types performed + * + * \sa + */ +typedef struct +{ + TI_UINT8 numberOfTypes; /**< Number of measurements types (equal to number of measurement replys) */ + TMeasurementTypeReply msrTypes[ MAX_NUM_OF_MSR_TYPES_IN_PARALLEL ]; /**< Measurements Replys buffer. One Reply per type */ + +} TMeasurementReply; + +/** \struct TMeasurementFrameHdr + * \brief Measurement Frame Header + * + * \par Description + * This structure defines a Header of a measurement + * + * \sa + */ +typedef struct +{ + TI_UINT16 dialogToken; /**< Indicates if the received Measurement is the same as the one that is being processed */ + TI_UINT8 activatioDelay; /**< */ + TI_UINT8 measurementOffset; /**< */ + +} TMeasurementFrameHdr; + +/** \struct TMeasurementFrameRequest + * \brief Measurement Frame Request + * + * \par Description + * + * \sa + */ +typedef struct +{ + TMeasurementFrameHdr *hdr; /**< */ + EMeasurementFrameType frameType; /**< */ + TI_UINT8 *requests; /**< */ + TI_INT32 requestsLen; /**< */ + +} TMeasurementFrameRequest; + + +#endif /* #define TWDDRIVERMSR_H */