Vergil Cola
/
MQTTGateway2
Fork of my original MQTTGateway
Embed:
(wiki syntax)
Show/hide line numbers
SPIRIT_Qi.h
Go to the documentation of this file.
00001 /** 00002 ****************************************************************************** 00003 * @file SPIRIT_Qi.h 00004 * @author VMA division - AMS 00005 * @version 3.2.2 00006 * @date 08-July-2015 00007 * @brief Configuration and management of SPIRIT QI. 00008 * @details 00009 * 00010 * This module can be used to configure and read some quality indicators 00011 * used by Spirit. 00012 * API to set thresholds and to read values in raw mode or in dBm are 00013 * provided. 00014 * 00015 * <b>Example:</b> 00016 * @code 00017 * 00018 * float rssiValuedBm; 00019 * uint8_t pqiValue, sqiValue; 00020 * 00021 * SpiritQiPqiCheck(S_ENABLE); 00022 * SpiritQiSqiCheck(S_ENABLE); 00023 * 00024 * ... 00025 * 00026 * rssiValueDbm = SpiritQiGetRssidBm(); 00027 * pqiValue = SpiritQiGetPqi(); 00028 * sqiValue = SpiritQiGetSqi(); 00029 * 00030 * ... 00031 * 00032 * @endcode 00033 * 00034 * @attention 00035 * 00036 * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> 00037 * 00038 * Redistribution and use in source and binary forms, with or without modification, 00039 * are permitted provided that the following conditions are met: 00040 * 1. Redistributions of source code must retain the above copyright notice, 00041 * this list of conditions and the following disclaimer. 00042 * 2. Redistributions in binary form must reproduce the above copyright notice, 00043 * this list of conditions and the following disclaimer in the documentation 00044 * and/or other materials provided with the distribution. 00045 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00046 * may be used to endorse or promote products derived from this software 00047 * without specific prior written permission. 00048 * 00049 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00050 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00051 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00052 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00053 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00054 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00055 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00056 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00057 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00058 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00059 * 00060 ****************************************************************************** 00061 */ 00062 00063 /* Define to prevent recursive inclusion -------------------------------------*/ 00064 #ifndef __SPIRIT_QI_H 00065 #define __SPIRIT_QI_H 00066 00067 00068 /* Includes ------------------------------------------------------------------*/ 00069 00070 #include "SPIRIT_Regs.h" 00071 #include "SPIRIT_Types.h" 00072 00073 00074 #ifdef __cplusplus 00075 extern "C" { 00076 #endif 00077 00078 00079 /** 00080 * @addtogroup SPIRIT_Libraries 00081 * @{ 00082 */ 00083 00084 00085 /** 00086 * @defgroup SPIRIT_Qi QI 00087 * @brief Configuration and management of SPIRIT QI. 00088 * @details See the file <i>@ref SPIRIT_Qi.h</i> for more details. 00089 * @{ 00090 */ 00091 00092 /** 00093 * @defgroup Qi_Exported_Types QI Exported Types 00094 * @{ 00095 */ 00096 00097 00098 /** 00099 * @brief PQI threshold value enumeration. 00100 */ 00101 typedef enum 00102 { 00103 PQI_TH_0=0x00, 00104 PQI_TH_1=0x04, 00105 PQI_TH_2=0x08, 00106 PQI_TH_3=0x0C, 00107 PQI_TH_4=0x10, 00108 PQI_TH_5=0x14, 00109 PQI_TH_6=0x18, 00110 PQI_TH_7=0x1C, 00111 PQI_TH_8=0x20, 00112 PQI_TH_9=0x24, 00113 PQI_TH_10=0x28, 00114 PQI_TH_11=0x2C, 00115 PQI_TH_12=0x30, 00116 PQI_TH_13=0x34, 00117 PQI_TH_14=0x38, 00118 PQI_TH_15=0x3C 00119 00120 } PqiThreshold; 00121 00122 #define IS_PQI_THR(VALUE) (VALUE==PQI_TH_0 ||\ 00123 VALUE==PQI_TH_1 ||\ 00124 VALUE==PQI_TH_2 ||\ 00125 VALUE==PQI_TH_3 ||\ 00126 VALUE==PQI_TH_4 ||\ 00127 VALUE==PQI_TH_5 ||\ 00128 VALUE==PQI_TH_6 ||\ 00129 VALUE==PQI_TH_7 ||\ 00130 VALUE==PQI_TH_8 ||\ 00131 VALUE==PQI_TH_9 ||\ 00132 VALUE==PQI_TH_10 ||\ 00133 VALUE==PQI_TH_11 ||\ 00134 VALUE==PQI_TH_12 ||\ 00135 VALUE==PQI_TH_13 ||\ 00136 VALUE==PQI_TH_14 ||\ 00137 VALUE==PQI_TH_15) 00138 00139 /** 00140 * @brief SQI threshold value enumeration. 00141 */ 00142 typedef enum 00143 { 00144 SQI_TH_0=0x00, 00145 SQI_TH_1=0x40, 00146 SQI_TH_2=0x80, 00147 SQI_TH_3=0xC0 00148 00149 } SqiThreshold; 00150 00151 #define IS_SQI_THR(VALUE) (VALUE==SQI_TH_0 ||\ 00152 VALUE==SQI_TH_1 ||\ 00153 VALUE==SQI_TH_2 ||\ 00154 VALUE==SQI_TH_3) 00155 00156 00157 /** 00158 * @brief RSSI filter gain value enumeration. 00159 */ 00160 typedef enum 00161 { 00162 RSSI_FG_0=0x00, 00163 RSSI_FG_1=0x10, 00164 RSSI_FG_2=0x20, 00165 RSSI_FG_3=0x30, 00166 RSSI_FG_4=0x40, 00167 RSSI_FG_5=0x50, 00168 RSSI_FG_6=0x60, 00169 RSSI_FG_7=0x70, 00170 RSSI_FG_8=0x80, 00171 RSSI_FG_9=0x90, 00172 RSSI_FG_10=0xA0, 00173 RSSI_FG_11=0xB0, 00174 RSSI_FG_12=0xC0, 00175 RSSI_FG_13=0xD0, 00176 RSSI_FG_14=0xE0, /*<! recommended value */ 00177 RSSI_FG_15=0xF0 00178 00179 } RssiFilterGain; 00180 00181 #define IS_RSSI_FILTER_GAIN(VALUE) (VALUE==RSSI_FG_0 ||\ 00182 VALUE==RSSI_FG_1 ||\ 00183 VALUE==RSSI_FG_2 ||\ 00184 VALUE==RSSI_FG_3 ||\ 00185 VALUE==RSSI_FG_4 ||\ 00186 VALUE==RSSI_FG_5 ||\ 00187 VALUE==RSSI_FG_6 ||\ 00188 VALUE==RSSI_FG_7 ||\ 00189 VALUE==RSSI_FG_8 ||\ 00190 VALUE==RSSI_FG_9 ||\ 00191 VALUE==RSSI_FG_10 ||\ 00192 VALUE==RSSI_FG_11 ||\ 00193 VALUE==RSSI_FG_12 ||\ 00194 VALUE==RSSI_FG_13 ||\ 00195 VALUE==RSSI_FG_14 ||\ 00196 VALUE==RSSI_FG_15) 00197 00198 /** 00199 * @brief CS mode enumeration. 00200 */ 00201 typedef enum 00202 { 00203 CS_MODE_STATIC_3DB=0x00, 00204 CS_MODE_DYNAMIC_6DB=0x04, 00205 CS_MODE_DYNAMIC_12DB=0x08, 00206 CS_MODE_DYNAMIC_18DB=0x0C 00207 00208 } CSMode; 00209 00210 #define IS_CS_MODE(MODE) (MODE==CS_MODE_STATIC_3DB ||\ 00211 MODE==CS_MODE_DYNAMIC_6DB ||\ 00212 MODE==CS_MODE_DYNAMIC_12DB ||\ 00213 MODE==CS_MODE_DYNAMIC_18DB) 00214 00215 /** 00216 *@} 00217 */ 00218 00219 00220 /** 00221 * @defgroup Qi_Exported_Constants QI Exported Constants 00222 * @{ 00223 */ 00224 00225 /* range for the RSSI Threshold in dBm */ 00226 #define IS_RSSI_THR_DBM(VALUE) (VALUE>=-130 && VALUE<=-2) 00227 00228 /** 00229 *@} 00230 */ 00231 00232 00233 /** 00234 * @defgroup Qi_Exported_Macros QI Exported Macros 00235 * @{ 00236 */ 00237 00238 /** 00239 * @brief Macro to obtain the RSSI value in dBm 00240 * @param None. 00241 * @retval RSSI in dBm. 00242 * This parameter is a float. 00243 */ 00244 #define SpiritQiGetRssidBm() (-120.0+((float)(SpiritQiGetRssi()-20))/2) 00245 00246 /** 00247 *@} 00248 */ 00249 00250 00251 /** 00252 * @defgroup Qi_Exported_Functions QI Exported Functions 00253 * @{ 00254 */ 00255 00256 void SpiritQiPqiCheck(SpiritFunctionalState xNewState); 00257 void SpiritQiSqiCheck(SpiritFunctionalState xNewState); 00258 void SpiritQiSetPqiThreshold(PqiThreshold xPqiThr); 00259 PqiThreshold SpiritQiGetPqiThreshold(void); 00260 void SpiritQiSetSqiThreshold(SqiThreshold xSqiThr); 00261 SqiThreshold SpiritQiGetSqiThreshold(void); 00262 void SpiritQiSetRssiThreshold(uint8_t cRssiThr); 00263 uint8_t SpiritQiGetRssiThreshold(void); 00264 uint8_t SpiritQiComputeRssiThreshold(int cDbmValue); 00265 void SpiritQiSetRssiThresholddBm(int nDbmValue); 00266 uint8_t SpiritQiGetPqi(void); 00267 uint8_t SpiritQiGetSqi(void); 00268 uint8_t SpiritQiGetLqi(void); 00269 SpiritFlagStatus SpiritQiGetCs(void); 00270 uint8_t SpiritQiGetRssi(void); 00271 void SpiritQiSetRssiFilterGain(RssiFilterGain xRssiFg); 00272 RssiFilterGain SpiritQiGetRssiFilterGain(void); 00273 void SpiritQiSetCsMode(CSMode xCsMode); 00274 CSMode SpiritQiGetCsMode(void); 00275 void SpiritQiCsTimeoutMask(SpiritFunctionalState xNewState); 00276 void SpiritQiPqiTimeoutMask(SpiritFunctionalState xNewState); 00277 void SpiritQiSqiTimeoutMask(SpiritFunctionalState xNewState); 00278 00279 00280 /** 00281 *@} 00282 */ 00283 00284 /** 00285 *@} 00286 */ 00287 00288 00289 /** 00290 *@} 00291 */ 00292 00293 00294 #ifdef __cplusplus 00295 } 00296 #endif 00297 00298 #endif 00299 00300 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/
Generated on Tue Jul 12 2022 18:06:47 by 1.7.2