HelloWorld_IDS01A4 mbed application for Spirit1 P2P demo.

Dependencies:   mbed

Fork of HelloWorld_IDS01A5_Program by rosarium pila

mbed 2.0 (a.k.a classic) HelloWorld example for Spirit1 to transfer data from one node to another.
To send the predefined data packet from the sender to the receiver, user needs to press User Button on the board. The LED on the receiver expansion board will toggle on reception of data successfully.
Data packets sent and received can be seen on USB serial terminal.

EVALUATION BOARDS RF FREQUENCY DESCRIPTION :
X-NUCLEO-IDS01A4 868 MHz 868 MHz RF expansion board based on SPIRIT1

Committer:
rosarium
Date:
Thu May 25 16:38:55 2017 +0000
Revision:
0:2ddc0583bcec
First draft version of HelloWorld_IDS01A5

Who changed what in which revision?

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