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_Csma.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 CSMA.
rosarium 0:2ddc0583bcec 8 * @details
rosarium 0:2ddc0583bcec 9 *
rosarium 0:2ddc0583bcec 10 * The Spirit CSMA feature, when configured and enabled, is transparent
rosarium 0:2ddc0583bcec 11 * for the user. It means the user has only to call the <i>@ref SpiritCsmaInit()</i>
rosarium 0:2ddc0583bcec 12 * function on a filled structure and then enable the CSMA policy using the <i>@ref SpiritCsma()</i>
rosarium 0:2ddc0583bcec 13 * function.
rosarium 0:2ddc0583bcec 14 *
rosarium 0:2ddc0583bcec 15 * <b>Example:</b>
rosarium 0:2ddc0583bcec 16 * @code
rosarium 0:2ddc0583bcec 17 *
rosarium 0:2ddc0583bcec 18 * CsmaInit csmaInit={
rosarium 0:2ddc0583bcec 19 * S_DISABLE, // persistent mode
rosarium 0:2ddc0583bcec 20 * TBIT_TIME_64, // Tbit time
rosarium 0:2ddc0583bcec 21 * TCCA_TIME_3, // Tcca time
rosarium 0:2ddc0583bcec 22 * 5, // max number of backoffs
rosarium 0:2ddc0583bcec 23 * 0xFA21, // BU counter seed
rosarium 0:2ddc0583bcec 24 * 32 // CU prescaler
rosarium 0:2ddc0583bcec 25 * };
rosarium 0:2ddc0583bcec 26 *
rosarium 0:2ddc0583bcec 27 * ...
rosarium 0:2ddc0583bcec 28 *
rosarium 0:2ddc0583bcec 29 * SpiritCsmaInit(&csmaInit);
rosarium 0:2ddc0583bcec 30 * SpiritCsma(S_ENABLE);
rosarium 0:2ddc0583bcec 31 *
rosarium 0:2ddc0583bcec 32 *
rosarium 0:2ddc0583bcec 33 * @endcode
rosarium 0:2ddc0583bcec 34 *
rosarium 0:2ddc0583bcec 35 * @note The CS status depends of the RSSI threshold set. Please see the Spirit_Qi
rosarium 0:2ddc0583bcec 36 * module for details.
rosarium 0:2ddc0583bcec 37 *
rosarium 0:2ddc0583bcec 38 * @attention
rosarium 0:2ddc0583bcec 39 *
rosarium 0:2ddc0583bcec 40 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 41 *
rosarium 0:2ddc0583bcec 42 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 43 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 44 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 45 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 46 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 47 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 48 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 49 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 50 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 51 * without specific prior written permission.
rosarium 0:2ddc0583bcec 52 *
rosarium 0:2ddc0583bcec 53 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 54 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 55 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 56 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 57 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 58 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 59 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 60 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 61 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 62 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 63 *
rosarium 0:2ddc0583bcec 64 ******************************************************************************
rosarium 0:2ddc0583bcec 65 */
rosarium 0:2ddc0583bcec 66
rosarium 0:2ddc0583bcec 67 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 68 #ifndef __SPIRIT_CSMA_H
rosarium 0:2ddc0583bcec 69 #define __SPIRIT_CSMA_H
rosarium 0:2ddc0583bcec 70
rosarium 0:2ddc0583bcec 71
rosarium 0:2ddc0583bcec 72 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 73
rosarium 0:2ddc0583bcec 74 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 75 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 76
rosarium 0:2ddc0583bcec 77
rosarium 0:2ddc0583bcec 78 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 79 extern "C" {
rosarium 0:2ddc0583bcec 80 #endif
rosarium 0:2ddc0583bcec 81
rosarium 0:2ddc0583bcec 82
rosarium 0:2ddc0583bcec 83 /**
rosarium 0:2ddc0583bcec 84 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 85 * @{
rosarium 0:2ddc0583bcec 86 */
rosarium 0:2ddc0583bcec 87
rosarium 0:2ddc0583bcec 88
rosarium 0:2ddc0583bcec 89 /**
rosarium 0:2ddc0583bcec 90 * @defgroup SPIRIT_Csma CSMA
rosarium 0:2ddc0583bcec 91 * @brief Configuration and management of SPIRIT CSMA.
rosarium 0:2ddc0583bcec 92 * @details See the file <i>@ref SPIRIT_Csma.h</i> for more details.
rosarium 0:2ddc0583bcec 93 * @{
rosarium 0:2ddc0583bcec 94 */
rosarium 0:2ddc0583bcec 95
rosarium 0:2ddc0583bcec 96 /**
rosarium 0:2ddc0583bcec 97 * @defgroup Csma_Exported_Types CSMA Exported Types
rosarium 0:2ddc0583bcec 98 * @{
rosarium 0:2ddc0583bcec 99 */
rosarium 0:2ddc0583bcec 100
rosarium 0:2ddc0583bcec 101
rosarium 0:2ddc0583bcec 102 /**
rosarium 0:2ddc0583bcec 103 * @brief Multiplier for Tcca time enumeration (Tcca = Multiplier*Tbit).
rosarium 0:2ddc0583bcec 104 */
rosarium 0:2ddc0583bcec 105 typedef enum
rosarium 0:2ddc0583bcec 106 {
rosarium 0:2ddc0583bcec 107 TBIT_TIME_64 = CSMA_CCA_PERIOD_64TBIT, /*!< CSMA/CA: Sets CCA period to 64*TBIT */
rosarium 0:2ddc0583bcec 108 TBIT_TIME_128 = CSMA_CCA_PERIOD_128TBIT, /*!< CSMA/CA: Sets CCA period to 128*TBIT */
rosarium 0:2ddc0583bcec 109 TBIT_TIME_256 = CSMA_CCA_PERIOD_256TBIT, /*!< CSMA/CA: Sets CCA period to 256*TBIT */
rosarium 0:2ddc0583bcec 110 TBIT_TIME_512 = CSMA_CCA_PERIOD_512TBIT, /*!< CSMA/CA: Sets CCA period to 512*TBIT */
rosarium 0:2ddc0583bcec 111 }CcaPeriod;
rosarium 0:2ddc0583bcec 112
rosarium 0:2ddc0583bcec 113 #define IS_CCA_PERIOD(PERIOD) (PERIOD == TBIT_TIME_64 || \
rosarium 0:2ddc0583bcec 114 PERIOD == TBIT_TIME_128 || \
rosarium 0:2ddc0583bcec 115 PERIOD == TBIT_TIME_256 || \
rosarium 0:2ddc0583bcec 116 PERIOD == TBIT_TIME_512)
rosarium 0:2ddc0583bcec 117
rosarium 0:2ddc0583bcec 118
rosarium 0:2ddc0583bcec 119 /**
rosarium 0:2ddc0583bcec 120 * @brief Multiplier of Tcca time enumeration to obtain Tlisten (Tlisten = [1...15]*Tcca).
rosarium 0:2ddc0583bcec 121 */
rosarium 0:2ddc0583bcec 122 typedef enum
rosarium 0:2ddc0583bcec 123 {
rosarium 0:2ddc0583bcec 124 TCCA_TIME_0 = 0x00, /*!< CSMA/CA: Sets CCA length to 0 */
rosarium 0:2ddc0583bcec 125 TCCA_TIME_1 = 0x10, /*!< CSMA/CA: Sets CCA length to 1*TLISTEN */
rosarium 0:2ddc0583bcec 126 TCCA_TIME_2 = 0x20, /*!< CSMA/CA: Sets CCA length to 2*TLISTEN */
rosarium 0:2ddc0583bcec 127 TCCA_TIME_3 = 0x30, /*!< CSMA/CA: Sets CCA length to 3*TLISTEN */
rosarium 0:2ddc0583bcec 128 TCCA_TIME_4 = 0x40, /*!< CSMA/CA: Sets CCA length to 4*TLISTEN */
rosarium 0:2ddc0583bcec 129 TCCA_TIME_5 = 0x50, /*!< CSMA/CA: Sets CCA length to 5*TLISTEN */
rosarium 0:2ddc0583bcec 130 TCCA_TIME_6 = 0x60, /*!< CSMA/CA: Sets CCA length to 6*TLISTEN */
rosarium 0:2ddc0583bcec 131 TCCA_TIME_7 = 0x70, /*!< CSMA/CA: Sets CCA length to 7*TLISTEN */
rosarium 0:2ddc0583bcec 132 TCCA_TIME_8 = 0x80, /*!< CSMA/CA: Sets CCA length to 8*TLISTEN */
rosarium 0:2ddc0583bcec 133 TCCA_TIME_9 = 0x90, /*!< CSMA/CA: Sets CCA length to 9*TLISTEN */
rosarium 0:2ddc0583bcec 134 TCCA_TIME_10 = 0xA0, /*!< CSMA/CA: Sets CCA length to 10*TLISTEN */
rosarium 0:2ddc0583bcec 135 TCCA_TIME_11 = 0xB0, /*!< CSMA/CA: Sets CCA length to 11*TLISTEN */
rosarium 0:2ddc0583bcec 136 TCCA_TIME_12 = 0xC0, /*!< CSMA/CA: Sets CCA length to 12*TLISTEN */
rosarium 0:2ddc0583bcec 137 TCCA_TIME_13 = 0xD0, /*!< CSMA/CA: Sets CCA length to 13*TLISTEN */
rosarium 0:2ddc0583bcec 138 TCCA_TIME_14 = 0xE0, /*!< CSMA/CA: Sets CCA length to 14*TLISTEN */
rosarium 0:2ddc0583bcec 139 TCCA_TIME_15 = 0xF0, /*!< CSMA/CA: Sets CCA length to 15*TLISTEN */
rosarium 0:2ddc0583bcec 140 }CsmaLength;
rosarium 0:2ddc0583bcec 141
rosarium 0:2ddc0583bcec 142 #define IS_CSMA_LENGTH(LENGTH) (LENGTH == TCCA_TIME_0 || \
rosarium 0:2ddc0583bcec 143 LENGTH == TCCA_TIME_1 || \
rosarium 0:2ddc0583bcec 144 LENGTH == TCCA_TIME_2 || \
rosarium 0:2ddc0583bcec 145 LENGTH == TCCA_TIME_3 || \
rosarium 0:2ddc0583bcec 146 LENGTH == TCCA_TIME_4 || \
rosarium 0:2ddc0583bcec 147 LENGTH == TCCA_TIME_5 || \
rosarium 0:2ddc0583bcec 148 LENGTH == TCCA_TIME_6 || \
rosarium 0:2ddc0583bcec 149 LENGTH == TCCA_TIME_7 || \
rosarium 0:2ddc0583bcec 150 LENGTH == TCCA_TIME_8 || \
rosarium 0:2ddc0583bcec 151 LENGTH == TCCA_TIME_9 || \
rosarium 0:2ddc0583bcec 152 LENGTH == TCCA_TIME_10 || \
rosarium 0:2ddc0583bcec 153 LENGTH == TCCA_TIME_11 || \
rosarium 0:2ddc0583bcec 154 LENGTH == TCCA_TIME_12 || \
rosarium 0:2ddc0583bcec 155 LENGTH == TCCA_TIME_13 || \
rosarium 0:2ddc0583bcec 156 LENGTH == TCCA_TIME_14 || \
rosarium 0:2ddc0583bcec 157 LENGTH == TCCA_TIME_15)
rosarium 0:2ddc0583bcec 158
rosarium 0:2ddc0583bcec 159
rosarium 0:2ddc0583bcec 160 /**
rosarium 0:2ddc0583bcec 161 * @brief SPIRIT CSMA Init structure definition
rosarium 0:2ddc0583bcec 162 */
rosarium 0:2ddc0583bcec 163 typedef struct
rosarium 0:2ddc0583bcec 164 {
rosarium 0:2ddc0583bcec 165 SpiritFunctionalState xCsmaPersistentMode; /*!< Specifies if the CSMA persistent mode has to be on or off.
rosarium 0:2ddc0583bcec 166 This parameter can be S_ENABLE or S_DISABLE */
rosarium 0:2ddc0583bcec 167 CcaPeriod xMultiplierTbit; /*!< Specifies the Tbit multiplier to obtain the Tcca.
rosarium 0:2ddc0583bcec 168 This parameter can be a value of @ref CcaPeriod */
rosarium 0:2ddc0583bcec 169 CsmaLength xCcaLength; /*!< Specifies the Tcca multiplier to determinate the Tlisten.
rosarium 0:2ddc0583bcec 170 This parameter can be a value of @ref CsmaLength. */
rosarium 0:2ddc0583bcec 171 uint8_t cMaxNb; /*!< Specifies the max number of backoff cycles. Not used in persistent mode.
rosarium 0:2ddc0583bcec 172 This parameter is an uint8_t. */
rosarium 0:2ddc0583bcec 173 uint16_t nBuCounterSeed; /*!< Specifies the BU counter seed. Not used in persistent mode.
rosarium 0:2ddc0583bcec 174 This parameter can be a value of 16 bits. */
rosarium 0:2ddc0583bcec 175 uint8_t cBuPrescaler; /*!< Specifies the BU prescaler. Not used in persistent mode.
rosarium 0:2ddc0583bcec 176 This parameter can be a value of 6 bits. */
rosarium 0:2ddc0583bcec 177 }CsmaInit;
rosarium 0:2ddc0583bcec 178
rosarium 0:2ddc0583bcec 179
rosarium 0:2ddc0583bcec 180 /**
rosarium 0:2ddc0583bcec 181 *@}
rosarium 0:2ddc0583bcec 182 */
rosarium 0:2ddc0583bcec 183
rosarium 0:2ddc0583bcec 184
rosarium 0:2ddc0583bcec 185 /**
rosarium 0:2ddc0583bcec 186 * @defgroup Csma_Exported_Constants CSMA Exported Constants
rosarium 0:2ddc0583bcec 187 * @{
rosarium 0:2ddc0583bcec 188 */
rosarium 0:2ddc0583bcec 189
rosarium 0:2ddc0583bcec 190 /**
rosarium 0:2ddc0583bcec 191 * @defgroup Csma_Parameters CSMA Parameters
rosarium 0:2ddc0583bcec 192 * @{
rosarium 0:2ddc0583bcec 193 */
rosarium 0:2ddc0583bcec 194
rosarium 0:2ddc0583bcec 195 #define IS_BU_COUNTER_SEED(SEED) (SEED!=0)
rosarium 0:2ddc0583bcec 196 #define IS_BU_PRESCALER(PRESCALER) (PRESCALER<64)
rosarium 0:2ddc0583bcec 197 #define IS_CMAX_NB(NB) (NB<8)
rosarium 0:2ddc0583bcec 198
rosarium 0:2ddc0583bcec 199 /**
rosarium 0:2ddc0583bcec 200 *@}
rosarium 0:2ddc0583bcec 201 */
rosarium 0:2ddc0583bcec 202
rosarium 0:2ddc0583bcec 203 /**
rosarium 0:2ddc0583bcec 204 *@}
rosarium 0:2ddc0583bcec 205 */
rosarium 0:2ddc0583bcec 206
rosarium 0:2ddc0583bcec 207
rosarium 0:2ddc0583bcec 208 /**
rosarium 0:2ddc0583bcec 209 * @defgroup Csma_Exported_Macros CSMA Exported Macros
rosarium 0:2ddc0583bcec 210 * @{
rosarium 0:2ddc0583bcec 211 */
rosarium 0:2ddc0583bcec 212
rosarium 0:2ddc0583bcec 213
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 * @defgroup Csma_Exported_Functions CSMA Exported Functions
rosarium 0:2ddc0583bcec 221 * @{
rosarium 0:2ddc0583bcec 222 */
rosarium 0:2ddc0583bcec 223
rosarium 0:2ddc0583bcec 224 void SpiritCsmaInit(CsmaInit* pxCsmaInit);
rosarium 0:2ddc0583bcec 225 void SpiritCsmaGetInfo(CsmaInit* pxCsmaInit);
rosarium 0:2ddc0583bcec 226 void SpiritCsma(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 227 SpiritFunctionalState SpiritCsmaGetCsma(void);
rosarium 0:2ddc0583bcec 228 void SpiritCsmaPersistentMode(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 229 SpiritFunctionalState SpiritCsmaGetPersistentMode(void);
rosarium 0:2ddc0583bcec 230 void SpiritCsmaSeedReloadMode(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 231 SpiritFunctionalState SpiritCsmaGetSeedReloadMode(void);
rosarium 0:2ddc0583bcec 232 void SpiritCsmaSetBuCounterSeed(uint16_t nBuCounterSeed);
rosarium 0:2ddc0583bcec 233 uint16_t SpiritCsmaGetBuCounterSeed(void);
rosarium 0:2ddc0583bcec 234 void SpiritCsmaSetBuPrescaler(uint8_t cBuPrescaler);
rosarium 0:2ddc0583bcec 235 uint8_t SpiritCsmaGetBuPrescaler(void);
rosarium 0:2ddc0583bcec 236 void SpiritCsmaSetCcaPeriod(CcaPeriod xMultiplierTbit);
rosarium 0:2ddc0583bcec 237 CcaPeriod SpiritCsmaGetCcaPeriod(void);
rosarium 0:2ddc0583bcec 238 void SpiritCsmaSetCcaLength(CsmaLength xCcaLength);
rosarium 0:2ddc0583bcec 239 uint8_t SpiritCsmaGetCcaLength(void);
rosarium 0:2ddc0583bcec 240 void SpiritCsmaSetMaxNumberBackoff(uint8_t cMaxNb);
rosarium 0:2ddc0583bcec 241 uint8_t SpiritCsmaGetMaxNumberBackoff(void);
rosarium 0:2ddc0583bcec 242
rosarium 0:2ddc0583bcec 243
rosarium 0:2ddc0583bcec 244 /**
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
rosarium 0:2ddc0583bcec 253 /**
rosarium 0:2ddc0583bcec 254 *@}
rosarium 0:2ddc0583bcec 255 */
rosarium 0:2ddc0583bcec 256
rosarium 0:2ddc0583bcec 257 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 258 }
rosarium 0:2ddc0583bcec 259 #endif
rosarium 0:2ddc0583bcec 260
rosarium 0:2ddc0583bcec 261 #endif
rosarium 0:2ddc0583bcec 262
rosarium 0:2ddc0583bcec 263 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/