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_Types.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 Header file for SPIRIT types.
rosarium 0:2ddc0583bcec 8 * @details
rosarium 0:2ddc0583bcec 9 *
rosarium 0:2ddc0583bcec 10 * This module provide some types definitions which will be used in
rosarium 0:2ddc0583bcec 11 * all the modules of this library. Here is defined also the global
rosarium 0:2ddc0583bcec 12 * variable @ref g_xStatus which contains the status of Spirit and
rosarium 0:2ddc0583bcec 13 * is updated every time an SPI transaction occurs.
rosarium 0:2ddc0583bcec 14 *
rosarium 0:2ddc0583bcec 15 * @attention
rosarium 0:2ddc0583bcec 16 *
rosarium 0:2ddc0583bcec 17 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 18 *
rosarium 0:2ddc0583bcec 19 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 20 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 21 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 22 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 23 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 24 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 25 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 26 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 27 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 28 * without specific prior written permission.
rosarium 0:2ddc0583bcec 29 *
rosarium 0:2ddc0583bcec 30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 31 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 33 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 34 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 36 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 37 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 38 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 39 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 40 *
rosarium 0:2ddc0583bcec 41 ******************************************************************************
rosarium 0:2ddc0583bcec 42 */
rosarium 0:2ddc0583bcec 43
rosarium 0:2ddc0583bcec 44 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 45 #ifndef __SPIRIT_GENERICTYPES_H
rosarium 0:2ddc0583bcec 46 #define __SPIRIT_GENERICTYPES_H
rosarium 0:2ddc0583bcec 47
rosarium 0:2ddc0583bcec 48
rosarium 0:2ddc0583bcec 49 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 50
rosarium 0:2ddc0583bcec 51 /* Include all integer types definitions */
rosarium 0:2ddc0583bcec 52 #include <stdint.h>
rosarium 0:2ddc0583bcec 53 #include <stdio.h>
rosarium 0:2ddc0583bcec 54 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 55
rosarium 0:2ddc0583bcec 56
rosarium 0:2ddc0583bcec 57
rosarium 0:2ddc0583bcec 58 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 59 extern "C" {
rosarium 0:2ddc0583bcec 60 #endif
rosarium 0:2ddc0583bcec 61
rosarium 0:2ddc0583bcec 62
rosarium 0:2ddc0583bcec 63 /**
rosarium 0:2ddc0583bcec 64 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 65 * @{
rosarium 0:2ddc0583bcec 66 */
rosarium 0:2ddc0583bcec 67
rosarium 0:2ddc0583bcec 68
rosarium 0:2ddc0583bcec 69 /**
rosarium 0:2ddc0583bcec 70 * @defgroup SPIRIT_Types Types
rosarium 0:2ddc0583bcec 71 * @brief Module for SPIRIT types definition.
rosarium 0:2ddc0583bcec 72 * * @details See the file <i>@ref SPIRIT_Types.h</i> for more details.
rosarium 0:2ddc0583bcec 73 * @{
rosarium 0:2ddc0583bcec 74 */
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76 /**
rosarium 0:2ddc0583bcec 77 * @defgroup Types_Exported_Types Types Exported Types
rosarium 0:2ddc0583bcec 78 * @{
rosarium 0:2ddc0583bcec 79 */
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 /**
rosarium 0:2ddc0583bcec 82 * @brief Spirit Functional state. Used to enable or disable a specific option.
rosarium 0:2ddc0583bcec 83 */
rosarium 0:2ddc0583bcec 84 typedef enum
rosarium 0:2ddc0583bcec 85 {
rosarium 0:2ddc0583bcec 86 S_DISABLE = 0,
rosarium 0:2ddc0583bcec 87 S_ENABLE = !S_DISABLE
rosarium 0:2ddc0583bcec 88
rosarium 0:2ddc0583bcec 89 } SpiritFunctionalState;
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91 #define IS_SPIRIT_FUNCTIONAL_STATE(STATE) (STATE == S_DISABLE || STATE == S_ENABLE)
rosarium 0:2ddc0583bcec 92
rosarium 0:2ddc0583bcec 93 /**
rosarium 0:2ddc0583bcec 94 * @brief Spirit Flag status. Used to control the state of a flag.
rosarium 0:2ddc0583bcec 95 */
rosarium 0:2ddc0583bcec 96 typedef enum
rosarium 0:2ddc0583bcec 97 {
rosarium 0:2ddc0583bcec 98 S_RESET = 0,
rosarium 0:2ddc0583bcec 99 S_SET = !S_RESET
rosarium 0:2ddc0583bcec 100
rosarium 0:2ddc0583bcec 101 } SpiritFlagStatus;
rosarium 0:2ddc0583bcec 102
rosarium 0:2ddc0583bcec 103 #define IS_SPIRIT_FLAG_STATUS(STATUS) (STATUS == S_RESET || STATUS == S_SET)
rosarium 0:2ddc0583bcec 104
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106 /**
rosarium 0:2ddc0583bcec 107 * @brief boolean type enumeration.
rosarium 0:2ddc0583bcec 108 */
rosarium 0:2ddc0583bcec 109 typedef enum
rosarium 0:2ddc0583bcec 110 {
rosarium 0:2ddc0583bcec 111 S_FALSE = 0,
rosarium 0:2ddc0583bcec 112 S_TRUE = !S_FALSE
rosarium 0:2ddc0583bcec 113
rosarium 0:2ddc0583bcec 114 } SpiritBool;
rosarium 0:2ddc0583bcec 115
rosarium 0:2ddc0583bcec 116
rosarium 0:2ddc0583bcec 117 /**
rosarium 0:2ddc0583bcec 118 * @brief SPIRIT States enumeration.
rosarium 0:2ddc0583bcec 119 */
rosarium 0:2ddc0583bcec 120 typedef enum
rosarium 0:2ddc0583bcec 121 {
rosarium 0:2ddc0583bcec 122 MC_STATE_STANDBY =0x40, /*!< STANDBY */
rosarium 0:2ddc0583bcec 123 MC_STATE_SLEEP =0x36, /*!< SLEEP */
rosarium 0:2ddc0583bcec 124 MC_STATE_READY =0x03, /*!< READY */
rosarium 0:2ddc0583bcec 125 MC_STATE_PM_SETUP =0x3D, /*!< PM_SETUP */
rosarium 0:2ddc0583bcec 126 MC_STATE_XO_SETTLING =0x23, /*!< XO_SETTLING */
rosarium 0:2ddc0583bcec 127 MC_STATE_SYNTH_SETUP =0x53, /*!< SYNT_SETUP */
rosarium 0:2ddc0583bcec 128 MC_STATE_PROTOCOL =0x1F, /*!< PROTOCOL */
rosarium 0:2ddc0583bcec 129 MC_STATE_SYNTH_CALIBRATION =0x4F, /*!< SYNTH */
rosarium 0:2ddc0583bcec 130 MC_STATE_LOCK =0x0F, /*!< LOCK */
rosarium 0:2ddc0583bcec 131 MC_STATE_RX =0x33, /*!< RX */
rosarium 0:2ddc0583bcec 132 MC_STATE_TX =0x5F /*!< TX */
rosarium 0:2ddc0583bcec 133
rosarium 0:2ddc0583bcec 134 } SpiritState;
rosarium 0:2ddc0583bcec 135
rosarium 0:2ddc0583bcec 136
rosarium 0:2ddc0583bcec 137
rosarium 0:2ddc0583bcec 138 /**
rosarium 0:2ddc0583bcec 139 * @brief SPIRIT Status. This definition represents the single field of the SPIRIT
rosarium 0:2ddc0583bcec 140 * status returned on each SPI transaction, equal also to the MC_STATE registers.
rosarium 0:2ddc0583bcec 141 * This field-oriented structure allows user to address in simple way the single
rosarium 0:2ddc0583bcec 142 * field of the SPIRIT status.
rosarium 0:2ddc0583bcec 143 * The user shall define a variable of SpiritStatus type to access on SPIRIT status fields.
rosarium 0:2ddc0583bcec 144 * @note The fields order in the structure depends on used endianness (little or big
rosarium 0:2ddc0583bcec 145 * endian). The actual definition is valid ONLY for LITTLE ENDIAN mode. Be sure to
rosarium 0:2ddc0583bcec 146 * change opportunely the fields order when use a different endianness.
rosarium 0:2ddc0583bcec 147 */
rosarium 0:2ddc0583bcec 148
rosarium 0:2ddc0583bcec 149 typedef struct
rosarium 0:2ddc0583bcec 150 {
rosarium 0:2ddc0583bcec 151 uint8_t XO_ON:1; /*!< This one bit field notifies if XO is operating
rosarium 0:2ddc0583bcec 152 (XO_ON is 1) or not (XO_On is 0) */
rosarium 0:2ddc0583bcec 153 SpiritState MC_STATE: 7; /*!< This 7 bits field indicates the state of the
rosarium 0:2ddc0583bcec 154 Main Controller of SPIRIT. The possible states
rosarium 0:2ddc0583bcec 155 and their corresponding values are defined in
rosarium 0:2ddc0583bcec 156 @ref SpiritState */
rosarium 0:2ddc0583bcec 157 uint8_t ERROR_LOCK: 1; /*!< This one bit field notifies if there is an
rosarium 0:2ddc0583bcec 158 error on RCO calibration (ERROR_LOCK is 1) or
rosarium 0:2ddc0583bcec 159 not (ERROR_LOCK is 0) */
rosarium 0:2ddc0583bcec 160 uint8_t RX_FIFO_EMPTY: 1; /*!< This one bit field notifies if RX FIFO is empty
rosarium 0:2ddc0583bcec 161 (RX_FIFO_EMPTY is 1) or not (RX_FIFO_EMPTY is 0) */
rosarium 0:2ddc0583bcec 162 uint8_t TX_FIFO_FULL: 1; /*!< This one bit field notifies if TX FIFO is full
rosarium 0:2ddc0583bcec 163 (TX_FIFO_FULL is 1) or not (TX_FIFO_FULL is 0) */
rosarium 0:2ddc0583bcec 164 uint8_t ANT_SELECT: 1; /*!< This one bit field notifies the currently selected
rosarium 0:2ddc0583bcec 165 antenna */
rosarium 0:2ddc0583bcec 166 uint8_t : 4; /*!< This 4 bits field are reserved and equal to 5 */
rosarium 0:2ddc0583bcec 167
rosarium 0:2ddc0583bcec 168 }SpiritStatus;
rosarium 0:2ddc0583bcec 169
rosarium 0:2ddc0583bcec 170
rosarium 0:2ddc0583bcec 171
rosarium 0:2ddc0583bcec 172 /**
rosarium 0:2ddc0583bcec 173 * @}
rosarium 0:2ddc0583bcec 174 */
rosarium 0:2ddc0583bcec 175
rosarium 0:2ddc0583bcec 176
rosarium 0:2ddc0583bcec 177 /**
rosarium 0:2ddc0583bcec 178 * @defgroup Types_Exported_Constants Types Exported Constants
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
rosarium 0:2ddc0583bcec 187 /**
rosarium 0:2ddc0583bcec 188 * @defgroup Types_Exported_Variables Types Exported Variables
rosarium 0:2ddc0583bcec 189 * @{
rosarium 0:2ddc0583bcec 190 */
rosarium 0:2ddc0583bcec 191
rosarium 0:2ddc0583bcec 192 extern volatile SpiritStatus g_xStatus;
rosarium 0:2ddc0583bcec 193
rosarium 0:2ddc0583bcec 194 /**
rosarium 0:2ddc0583bcec 195 * @}
rosarium 0:2ddc0583bcec 196 */
rosarium 0:2ddc0583bcec 197
rosarium 0:2ddc0583bcec 198 /**
rosarium 0:2ddc0583bcec 199 * @defgroup Types_Exported_Macros Types Exported Macros
rosarium 0:2ddc0583bcec 200 * @{
rosarium 0:2ddc0583bcec 201 */
rosarium 0:2ddc0583bcec 202
rosarium 0:2ddc0583bcec 203 #ifdef SPIRIT_USE_FULL_ASSERT
rosarium 0:2ddc0583bcec 204 /**
rosarium 0:2ddc0583bcec 205 * @brief The s_assert_param macro is used for function's parameters check.
rosarium 0:2ddc0583bcec 206 * @param expr If expr is false, it calls assert_failed function which reports
rosarium 0:2ddc0583bcec 207 * the name of the source file and the source line number of the call
rosarium 0:2ddc0583bcec 208 * that failed. If expr is true, it returns no value.
rosarium 0:2ddc0583bcec 209 * @retval None
rosarium 0:2ddc0583bcec 210 */
rosarium 0:2ddc0583bcec 211 #define s_assert_param(expr) ((expr) ? (void)0 : s_assert_failed((uint8_t *)__FILE__, __LINE__))
rosarium 0:2ddc0583bcec 212 void s_assert_failed(uint8_t* file, uint32_t line);
rosarium 0:2ddc0583bcec 213 #elif SPIRIT_USE_VCOM_ASSERT
rosarium 0:2ddc0583bcec 214 /**
rosarium 0:2ddc0583bcec 215 * @brief The s_assert_param macro is used for function's parameters check.
rosarium 0:2ddc0583bcec 216 * @param expr If expr is false, it calls assert_failed function which reports
rosarium 0:2ddc0583bcec 217 * the name of the source file and the source line number of the call
rosarium 0:2ddc0583bcec 218 * that failed. If expr is true, it returns no value.
rosarium 0:2ddc0583bcec 219 * @retval None
rosarium 0:2ddc0583bcec 220 */
rosarium 0:2ddc0583bcec 221 #define s_assert_param(expr) ((expr) ? (void)0 : s_assert_failed((uint8_t *)__FILE__, __LINE__,#expr))
rosarium 0:2ddc0583bcec 222 void s_assert_failed(uint8_t* file, uint32_t line, char* expression);
rosarium 0:2ddc0583bcec 223
rosarium 0:2ddc0583bcec 224 #elif SPIRIT_USE_FRAME_ASSERT
rosarium 0:2ddc0583bcec 225 /**
rosarium 0:2ddc0583bcec 226 * @brief The s_assert_param macro is used for function's parameters check.
rosarium 0:2ddc0583bcec 227 * @param expr If expr is false, it calls assert_failed function which reports
rosarium 0:2ddc0583bcec 228 * the name of the source file and the source line number of the call
rosarium 0:2ddc0583bcec 229 * that failed. If expr is true, it returns no value.
rosarium 0:2ddc0583bcec 230 * @retval None
rosarium 0:2ddc0583bcec 231 */
rosarium 0:2ddc0583bcec 232 #define s_assert_param(expr) ((expr) ? (void)0 : s_assert_failed(#expr))
rosarium 0:2ddc0583bcec 233 void s_assert_failed(char* expression);
rosarium 0:2ddc0583bcec 234 #else
rosarium 0:2ddc0583bcec 235 #define s_assert_param(expr) {}
rosarium 0:2ddc0583bcec 236 #endif
rosarium 0:2ddc0583bcec 237
rosarium 0:2ddc0583bcec 238 /**
rosarium 0:2ddc0583bcec 239 * @brief Returns the absolute value.
rosarium 0:2ddc0583bcec 240 */
rosarium 0:2ddc0583bcec 241 #define S_ABS(a) ((a)>0?(a):-(a))
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 * @defgroup Types_Exported_Functions Types Exported Functions
rosarium 0:2ddc0583bcec 251 * @{
rosarium 0:2ddc0583bcec 252 */
rosarium 0:2ddc0583bcec 253
rosarium 0:2ddc0583bcec 254 void SpiritRefreshStatus(void);
rosarium 0:2ddc0583bcec 255
rosarium 0:2ddc0583bcec 256 /**
rosarium 0:2ddc0583bcec 257 *@}
rosarium 0:2ddc0583bcec 258 */
rosarium 0:2ddc0583bcec 259
rosarium 0:2ddc0583bcec 260 /**
rosarium 0:2ddc0583bcec 261 * @}
rosarium 0:2ddc0583bcec 262 */
rosarium 0:2ddc0583bcec 263
rosarium 0:2ddc0583bcec 264
rosarium 0:2ddc0583bcec 265 /**
rosarium 0:2ddc0583bcec 266 * @}
rosarium 0:2ddc0583bcec 267 */
rosarium 0:2ddc0583bcec 268
rosarium 0:2ddc0583bcec 269
rosarium 0:2ddc0583bcec 270 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 271 }
rosarium 0:2ddc0583bcec 272 #endif
rosarium 0:2ddc0583bcec 273
rosarium 0:2ddc0583bcec 274 #endif
rosarium 0:2ddc0583bcec 275
rosarium 0:2ddc0583bcec 276 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/