Fork of my original MQTTGateway

Dependencies:   mbed-http

Committer:
vpcola
Date:
Sat Apr 08 14:43:14 2017 +0000
Revision:
0:a1734fe1ec4b
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vpcola 0:a1734fe1ec4b 1 /**
vpcola 0:a1734fe1ec4b 2 ******************************************************************************
vpcola 0:a1734fe1ec4b 3 * @file SPIRIT_Qi.h
vpcola 0:a1734fe1ec4b 4 * @author VMA division - AMS
vpcola 0:a1734fe1ec4b 5 * @version 3.2.2
vpcola 0:a1734fe1ec4b 6 * @date 08-July-2015
vpcola 0:a1734fe1ec4b 7 * @brief Configuration and management of SPIRIT QI.
vpcola 0:a1734fe1ec4b 8 * @details
vpcola 0:a1734fe1ec4b 9 *
vpcola 0:a1734fe1ec4b 10 * This module can be used to configure and read some quality indicators
vpcola 0:a1734fe1ec4b 11 * used by Spirit.
vpcola 0:a1734fe1ec4b 12 * API to set thresholds and to read values in raw mode or in dBm are
vpcola 0:a1734fe1ec4b 13 * provided.
vpcola 0:a1734fe1ec4b 14 *
vpcola 0:a1734fe1ec4b 15 * <b>Example:</b>
vpcola 0:a1734fe1ec4b 16 * @code
vpcola 0:a1734fe1ec4b 17 *
vpcola 0:a1734fe1ec4b 18 * float rssiValuedBm;
vpcola 0:a1734fe1ec4b 19 * uint8_t pqiValue, sqiValue;
vpcola 0:a1734fe1ec4b 20 *
vpcola 0:a1734fe1ec4b 21 * SpiritQiPqiCheck(S_ENABLE);
vpcola 0:a1734fe1ec4b 22 * SpiritQiSqiCheck(S_ENABLE);
vpcola 0:a1734fe1ec4b 23 *
vpcola 0:a1734fe1ec4b 24 * ...
vpcola 0:a1734fe1ec4b 25 *
vpcola 0:a1734fe1ec4b 26 * rssiValueDbm = SpiritQiGetRssidBm();
vpcola 0:a1734fe1ec4b 27 * pqiValue = SpiritQiGetPqi();
vpcola 0:a1734fe1ec4b 28 * sqiValue = SpiritQiGetSqi();
vpcola 0:a1734fe1ec4b 29 *
vpcola 0:a1734fe1ec4b 30 * ...
vpcola 0:a1734fe1ec4b 31 *
vpcola 0:a1734fe1ec4b 32 * @endcode
vpcola 0:a1734fe1ec4b 33 *
vpcola 0:a1734fe1ec4b 34 * @attention
vpcola 0:a1734fe1ec4b 35 *
vpcola 0:a1734fe1ec4b 36 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
vpcola 0:a1734fe1ec4b 37 *
vpcola 0:a1734fe1ec4b 38 * Redistribution and use in source and binary forms, with or without modification,
vpcola 0:a1734fe1ec4b 39 * are permitted provided that the following conditions are met:
vpcola 0:a1734fe1ec4b 40 * 1. Redistributions of source code must retain the above copyright notice,
vpcola 0:a1734fe1ec4b 41 * this list of conditions and the following disclaimer.
vpcola 0:a1734fe1ec4b 42 * 2. Redistributions in binary form must reproduce the above copyright notice,
vpcola 0:a1734fe1ec4b 43 * this list of conditions and the following disclaimer in the documentation
vpcola 0:a1734fe1ec4b 44 * and/or other materials provided with the distribution.
vpcola 0:a1734fe1ec4b 45 * 3. Neither the name of STMicroelectronics nor the names of its contributors
vpcola 0:a1734fe1ec4b 46 * may be used to endorse or promote products derived from this software
vpcola 0:a1734fe1ec4b 47 * without specific prior written permission.
vpcola 0:a1734fe1ec4b 48 *
vpcola 0:a1734fe1ec4b 49 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
vpcola 0:a1734fe1ec4b 50 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
vpcola 0:a1734fe1ec4b 51 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
vpcola 0:a1734fe1ec4b 52 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
vpcola 0:a1734fe1ec4b 53 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
vpcola 0:a1734fe1ec4b 54 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
vpcola 0:a1734fe1ec4b 55 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
vpcola 0:a1734fe1ec4b 56 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
vpcola 0:a1734fe1ec4b 57 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
vpcola 0:a1734fe1ec4b 58 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
vpcola 0:a1734fe1ec4b 59 *
vpcola 0:a1734fe1ec4b 60 ******************************************************************************
vpcola 0:a1734fe1ec4b 61 */
vpcola 0:a1734fe1ec4b 62
vpcola 0:a1734fe1ec4b 63 /* Define to prevent recursive inclusion -------------------------------------*/
vpcola 0:a1734fe1ec4b 64 #ifndef __SPIRIT_QI_H
vpcola 0:a1734fe1ec4b 65 #define __SPIRIT_QI_H
vpcola 0:a1734fe1ec4b 66
vpcola 0:a1734fe1ec4b 67
vpcola 0:a1734fe1ec4b 68 /* Includes ------------------------------------------------------------------*/
vpcola 0:a1734fe1ec4b 69
vpcola 0:a1734fe1ec4b 70 #include "SPIRIT_Regs.h"
vpcola 0:a1734fe1ec4b 71 #include "SPIRIT_Types.h"
vpcola 0:a1734fe1ec4b 72
vpcola 0:a1734fe1ec4b 73
vpcola 0:a1734fe1ec4b 74 #ifdef __cplusplus
vpcola 0:a1734fe1ec4b 75 extern "C" {
vpcola 0:a1734fe1ec4b 76 #endif
vpcola 0:a1734fe1ec4b 77
vpcola 0:a1734fe1ec4b 78
vpcola 0:a1734fe1ec4b 79 /**
vpcola 0:a1734fe1ec4b 80 * @addtogroup SPIRIT_Libraries
vpcola 0:a1734fe1ec4b 81 * @{
vpcola 0:a1734fe1ec4b 82 */
vpcola 0:a1734fe1ec4b 83
vpcola 0:a1734fe1ec4b 84
vpcola 0:a1734fe1ec4b 85 /**
vpcola 0:a1734fe1ec4b 86 * @defgroup SPIRIT_Qi QI
vpcola 0:a1734fe1ec4b 87 * @brief Configuration and management of SPIRIT QI.
vpcola 0:a1734fe1ec4b 88 * @details See the file <i>@ref SPIRIT_Qi.h</i> for more details.
vpcola 0:a1734fe1ec4b 89 * @{
vpcola 0:a1734fe1ec4b 90 */
vpcola 0:a1734fe1ec4b 91
vpcola 0:a1734fe1ec4b 92 /**
vpcola 0:a1734fe1ec4b 93 * @defgroup Qi_Exported_Types QI Exported Types
vpcola 0:a1734fe1ec4b 94 * @{
vpcola 0:a1734fe1ec4b 95 */
vpcola 0:a1734fe1ec4b 96
vpcola 0:a1734fe1ec4b 97
vpcola 0:a1734fe1ec4b 98 /**
vpcola 0:a1734fe1ec4b 99 * @brief PQI threshold value enumeration.
vpcola 0:a1734fe1ec4b 100 */
vpcola 0:a1734fe1ec4b 101 typedef enum
vpcola 0:a1734fe1ec4b 102 {
vpcola 0:a1734fe1ec4b 103 PQI_TH_0=0x00,
vpcola 0:a1734fe1ec4b 104 PQI_TH_1=0x04,
vpcola 0:a1734fe1ec4b 105 PQI_TH_2=0x08,
vpcola 0:a1734fe1ec4b 106 PQI_TH_3=0x0C,
vpcola 0:a1734fe1ec4b 107 PQI_TH_4=0x10,
vpcola 0:a1734fe1ec4b 108 PQI_TH_5=0x14,
vpcola 0:a1734fe1ec4b 109 PQI_TH_6=0x18,
vpcola 0:a1734fe1ec4b 110 PQI_TH_7=0x1C,
vpcola 0:a1734fe1ec4b 111 PQI_TH_8=0x20,
vpcola 0:a1734fe1ec4b 112 PQI_TH_9=0x24,
vpcola 0:a1734fe1ec4b 113 PQI_TH_10=0x28,
vpcola 0:a1734fe1ec4b 114 PQI_TH_11=0x2C,
vpcola 0:a1734fe1ec4b 115 PQI_TH_12=0x30,
vpcola 0:a1734fe1ec4b 116 PQI_TH_13=0x34,
vpcola 0:a1734fe1ec4b 117 PQI_TH_14=0x38,
vpcola 0:a1734fe1ec4b 118 PQI_TH_15=0x3C
vpcola 0:a1734fe1ec4b 119
vpcola 0:a1734fe1ec4b 120 } PqiThreshold;
vpcola 0:a1734fe1ec4b 121
vpcola 0:a1734fe1ec4b 122 #define IS_PQI_THR(VALUE) (VALUE==PQI_TH_0 ||\
vpcola 0:a1734fe1ec4b 123 VALUE==PQI_TH_1 ||\
vpcola 0:a1734fe1ec4b 124 VALUE==PQI_TH_2 ||\
vpcola 0:a1734fe1ec4b 125 VALUE==PQI_TH_3 ||\
vpcola 0:a1734fe1ec4b 126 VALUE==PQI_TH_4 ||\
vpcola 0:a1734fe1ec4b 127 VALUE==PQI_TH_5 ||\
vpcola 0:a1734fe1ec4b 128 VALUE==PQI_TH_6 ||\
vpcola 0:a1734fe1ec4b 129 VALUE==PQI_TH_7 ||\
vpcola 0:a1734fe1ec4b 130 VALUE==PQI_TH_8 ||\
vpcola 0:a1734fe1ec4b 131 VALUE==PQI_TH_9 ||\
vpcola 0:a1734fe1ec4b 132 VALUE==PQI_TH_10 ||\
vpcola 0:a1734fe1ec4b 133 VALUE==PQI_TH_11 ||\
vpcola 0:a1734fe1ec4b 134 VALUE==PQI_TH_12 ||\
vpcola 0:a1734fe1ec4b 135 VALUE==PQI_TH_13 ||\
vpcola 0:a1734fe1ec4b 136 VALUE==PQI_TH_14 ||\
vpcola 0:a1734fe1ec4b 137 VALUE==PQI_TH_15)
vpcola 0:a1734fe1ec4b 138
vpcola 0:a1734fe1ec4b 139 /**
vpcola 0:a1734fe1ec4b 140 * @brief SQI threshold value enumeration.
vpcola 0:a1734fe1ec4b 141 */
vpcola 0:a1734fe1ec4b 142 typedef enum
vpcola 0:a1734fe1ec4b 143 {
vpcola 0:a1734fe1ec4b 144 SQI_TH_0=0x00,
vpcola 0:a1734fe1ec4b 145 SQI_TH_1=0x40,
vpcola 0:a1734fe1ec4b 146 SQI_TH_2=0x80,
vpcola 0:a1734fe1ec4b 147 SQI_TH_3=0xC0
vpcola 0:a1734fe1ec4b 148
vpcola 0:a1734fe1ec4b 149 } SqiThreshold;
vpcola 0:a1734fe1ec4b 150
vpcola 0:a1734fe1ec4b 151 #define IS_SQI_THR(VALUE) (VALUE==SQI_TH_0 ||\
vpcola 0:a1734fe1ec4b 152 VALUE==SQI_TH_1 ||\
vpcola 0:a1734fe1ec4b 153 VALUE==SQI_TH_2 ||\
vpcola 0:a1734fe1ec4b 154 VALUE==SQI_TH_3)
vpcola 0:a1734fe1ec4b 155
vpcola 0:a1734fe1ec4b 156
vpcola 0:a1734fe1ec4b 157 /**
vpcola 0:a1734fe1ec4b 158 * @brief RSSI filter gain value enumeration.
vpcola 0:a1734fe1ec4b 159 */
vpcola 0:a1734fe1ec4b 160 typedef enum
vpcola 0:a1734fe1ec4b 161 {
vpcola 0:a1734fe1ec4b 162 RSSI_FG_0=0x00,
vpcola 0:a1734fe1ec4b 163 RSSI_FG_1=0x10,
vpcola 0:a1734fe1ec4b 164 RSSI_FG_2=0x20,
vpcola 0:a1734fe1ec4b 165 RSSI_FG_3=0x30,
vpcola 0:a1734fe1ec4b 166 RSSI_FG_4=0x40,
vpcola 0:a1734fe1ec4b 167 RSSI_FG_5=0x50,
vpcola 0:a1734fe1ec4b 168 RSSI_FG_6=0x60,
vpcola 0:a1734fe1ec4b 169 RSSI_FG_7=0x70,
vpcola 0:a1734fe1ec4b 170 RSSI_FG_8=0x80,
vpcola 0:a1734fe1ec4b 171 RSSI_FG_9=0x90,
vpcola 0:a1734fe1ec4b 172 RSSI_FG_10=0xA0,
vpcola 0:a1734fe1ec4b 173 RSSI_FG_11=0xB0,
vpcola 0:a1734fe1ec4b 174 RSSI_FG_12=0xC0,
vpcola 0:a1734fe1ec4b 175 RSSI_FG_13=0xD0,
vpcola 0:a1734fe1ec4b 176 RSSI_FG_14=0xE0, /*<! recommended value */
vpcola 0:a1734fe1ec4b 177 RSSI_FG_15=0xF0
vpcola 0:a1734fe1ec4b 178
vpcola 0:a1734fe1ec4b 179 } RssiFilterGain;
vpcola 0:a1734fe1ec4b 180
vpcola 0:a1734fe1ec4b 181 #define IS_RSSI_FILTER_GAIN(VALUE) (VALUE==RSSI_FG_0 ||\
vpcola 0:a1734fe1ec4b 182 VALUE==RSSI_FG_1 ||\
vpcola 0:a1734fe1ec4b 183 VALUE==RSSI_FG_2 ||\
vpcola 0:a1734fe1ec4b 184 VALUE==RSSI_FG_3 ||\
vpcola 0:a1734fe1ec4b 185 VALUE==RSSI_FG_4 ||\
vpcola 0:a1734fe1ec4b 186 VALUE==RSSI_FG_5 ||\
vpcola 0:a1734fe1ec4b 187 VALUE==RSSI_FG_6 ||\
vpcola 0:a1734fe1ec4b 188 VALUE==RSSI_FG_7 ||\
vpcola 0:a1734fe1ec4b 189 VALUE==RSSI_FG_8 ||\
vpcola 0:a1734fe1ec4b 190 VALUE==RSSI_FG_9 ||\
vpcola 0:a1734fe1ec4b 191 VALUE==RSSI_FG_10 ||\
vpcola 0:a1734fe1ec4b 192 VALUE==RSSI_FG_11 ||\
vpcola 0:a1734fe1ec4b 193 VALUE==RSSI_FG_12 ||\
vpcola 0:a1734fe1ec4b 194 VALUE==RSSI_FG_13 ||\
vpcola 0:a1734fe1ec4b 195 VALUE==RSSI_FG_14 ||\
vpcola 0:a1734fe1ec4b 196 VALUE==RSSI_FG_15)
vpcola 0:a1734fe1ec4b 197
vpcola 0:a1734fe1ec4b 198 /**
vpcola 0:a1734fe1ec4b 199 * @brief CS mode enumeration.
vpcola 0:a1734fe1ec4b 200 */
vpcola 0:a1734fe1ec4b 201 typedef enum
vpcola 0:a1734fe1ec4b 202 {
vpcola 0:a1734fe1ec4b 203 CS_MODE_STATIC_3DB=0x00,
vpcola 0:a1734fe1ec4b 204 CS_MODE_DYNAMIC_6DB=0x04,
vpcola 0:a1734fe1ec4b 205 CS_MODE_DYNAMIC_12DB=0x08,
vpcola 0:a1734fe1ec4b 206 CS_MODE_DYNAMIC_18DB=0x0C
vpcola 0:a1734fe1ec4b 207
vpcola 0:a1734fe1ec4b 208 } CSMode;
vpcola 0:a1734fe1ec4b 209
vpcola 0:a1734fe1ec4b 210 #define IS_CS_MODE(MODE) (MODE==CS_MODE_STATIC_3DB ||\
vpcola 0:a1734fe1ec4b 211 MODE==CS_MODE_DYNAMIC_6DB ||\
vpcola 0:a1734fe1ec4b 212 MODE==CS_MODE_DYNAMIC_12DB ||\
vpcola 0:a1734fe1ec4b 213 MODE==CS_MODE_DYNAMIC_18DB)
vpcola 0:a1734fe1ec4b 214
vpcola 0:a1734fe1ec4b 215 /**
vpcola 0:a1734fe1ec4b 216 *@}
vpcola 0:a1734fe1ec4b 217 */
vpcola 0:a1734fe1ec4b 218
vpcola 0:a1734fe1ec4b 219
vpcola 0:a1734fe1ec4b 220 /**
vpcola 0:a1734fe1ec4b 221 * @defgroup Qi_Exported_Constants QI Exported Constants
vpcola 0:a1734fe1ec4b 222 * @{
vpcola 0:a1734fe1ec4b 223 */
vpcola 0:a1734fe1ec4b 224
vpcola 0:a1734fe1ec4b 225 /* range for the RSSI Threshold in dBm */
vpcola 0:a1734fe1ec4b 226 #define IS_RSSI_THR_DBM(VALUE) (VALUE>=-130 && VALUE<=-2)
vpcola 0:a1734fe1ec4b 227
vpcola 0:a1734fe1ec4b 228 /**
vpcola 0:a1734fe1ec4b 229 *@}
vpcola 0:a1734fe1ec4b 230 */
vpcola 0:a1734fe1ec4b 231
vpcola 0:a1734fe1ec4b 232
vpcola 0:a1734fe1ec4b 233 /**
vpcola 0:a1734fe1ec4b 234 * @defgroup Qi_Exported_Macros QI Exported Macros
vpcola 0:a1734fe1ec4b 235 * @{
vpcola 0:a1734fe1ec4b 236 */
vpcola 0:a1734fe1ec4b 237
vpcola 0:a1734fe1ec4b 238 /**
vpcola 0:a1734fe1ec4b 239 * @brief Macro to obtain the RSSI value in dBm
vpcola 0:a1734fe1ec4b 240 * @param None.
vpcola 0:a1734fe1ec4b 241 * @retval RSSI in dBm.
vpcola 0:a1734fe1ec4b 242 * This parameter is a float.
vpcola 0:a1734fe1ec4b 243 */
vpcola 0:a1734fe1ec4b 244 #define SpiritQiGetRssidBm() (-120.0+((float)(SpiritQiGetRssi()-20))/2)
vpcola 0:a1734fe1ec4b 245
vpcola 0:a1734fe1ec4b 246 /**
vpcola 0:a1734fe1ec4b 247 *@}
vpcola 0:a1734fe1ec4b 248 */
vpcola 0:a1734fe1ec4b 249
vpcola 0:a1734fe1ec4b 250
vpcola 0:a1734fe1ec4b 251 /**
vpcola 0:a1734fe1ec4b 252 * @defgroup Qi_Exported_Functions QI Exported Functions
vpcola 0:a1734fe1ec4b 253 * @{
vpcola 0:a1734fe1ec4b 254 */
vpcola 0:a1734fe1ec4b 255
vpcola 0:a1734fe1ec4b 256 void SpiritQiPqiCheck(SpiritFunctionalState xNewState);
vpcola 0:a1734fe1ec4b 257 void SpiritQiSqiCheck(SpiritFunctionalState xNewState);
vpcola 0:a1734fe1ec4b 258 void SpiritQiSetPqiThreshold(PqiThreshold xPqiThr);
vpcola 0:a1734fe1ec4b 259 PqiThreshold SpiritQiGetPqiThreshold(void);
vpcola 0:a1734fe1ec4b 260 void SpiritQiSetSqiThreshold(SqiThreshold xSqiThr);
vpcola 0:a1734fe1ec4b 261 SqiThreshold SpiritQiGetSqiThreshold(void);
vpcola 0:a1734fe1ec4b 262 void SpiritQiSetRssiThreshold(uint8_t cRssiThr);
vpcola 0:a1734fe1ec4b 263 uint8_t SpiritQiGetRssiThreshold(void);
vpcola 0:a1734fe1ec4b 264 uint8_t SpiritQiComputeRssiThreshold(int cDbmValue);
vpcola 0:a1734fe1ec4b 265 void SpiritQiSetRssiThresholddBm(int nDbmValue);
vpcola 0:a1734fe1ec4b 266 uint8_t SpiritQiGetPqi(void);
vpcola 0:a1734fe1ec4b 267 uint8_t SpiritQiGetSqi(void);
vpcola 0:a1734fe1ec4b 268 uint8_t SpiritQiGetLqi(void);
vpcola 0:a1734fe1ec4b 269 SpiritFlagStatus SpiritQiGetCs(void);
vpcola 0:a1734fe1ec4b 270 uint8_t SpiritQiGetRssi(void);
vpcola 0:a1734fe1ec4b 271 void SpiritQiSetRssiFilterGain(RssiFilterGain xRssiFg);
vpcola 0:a1734fe1ec4b 272 RssiFilterGain SpiritQiGetRssiFilterGain(void);
vpcola 0:a1734fe1ec4b 273 void SpiritQiSetCsMode(CSMode xCsMode);
vpcola 0:a1734fe1ec4b 274 CSMode SpiritQiGetCsMode(void);
vpcola 0:a1734fe1ec4b 275 void SpiritQiCsTimeoutMask(SpiritFunctionalState xNewState);
vpcola 0:a1734fe1ec4b 276 void SpiritQiPqiTimeoutMask(SpiritFunctionalState xNewState);
vpcola 0:a1734fe1ec4b 277 void SpiritQiSqiTimeoutMask(SpiritFunctionalState xNewState);
vpcola 0:a1734fe1ec4b 278
vpcola 0:a1734fe1ec4b 279
vpcola 0:a1734fe1ec4b 280 /**
vpcola 0:a1734fe1ec4b 281 *@}
vpcola 0:a1734fe1ec4b 282 */
vpcola 0:a1734fe1ec4b 283
vpcola 0:a1734fe1ec4b 284 /**
vpcola 0:a1734fe1ec4b 285 *@}
vpcola 0:a1734fe1ec4b 286 */
vpcola 0:a1734fe1ec4b 287
vpcola 0:a1734fe1ec4b 288
vpcola 0:a1734fe1ec4b 289 /**
vpcola 0:a1734fe1ec4b 290 *@}
vpcola 0:a1734fe1ec4b 291 */
vpcola 0:a1734fe1ec4b 292
vpcola 0:a1734fe1ec4b 293
vpcola 0:a1734fe1ec4b 294 #ifdef __cplusplus
vpcola 0:a1734fe1ec4b 295 }
vpcola 0:a1734fe1ec4b 296 #endif
vpcola 0:a1734fe1ec4b 297
vpcola 0:a1734fe1ec4b 298 #endif
vpcola 0:a1734fe1ec4b 299
vpcola 0:a1734fe1ec4b 300 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/