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_PktMbus.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 MBUS packets.
rosarium 0:2ddc0583bcec 8 *
rosarium 0:2ddc0583bcec 9 * @details
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * This module can be used to manage the configuration of Spirit MBUS
rosarium 0:2ddc0583bcec 12 * packets.
rosarium 0:2ddc0583bcec 13 * The user can obtain a packet configuration filling the structure
rosarium 0:2ddc0583bcec 14 * <i>@ref PktMbusInit</i>, defining in it some general parameters
rosarium 0:2ddc0583bcec 15 * for the Spirit MBUS packet format.
rosarium 0:2ddc0583bcec 16 * Since the MBUS protocol is a standard, the configuration of a MBUS
rosarium 0:2ddc0583bcec 17 * packet is very simple to do.
rosarium 0:2ddc0583bcec 18 *
rosarium 0:2ddc0583bcec 19 * <b>Example:</b>
rosarium 0:2ddc0583bcec 20 * @code
rosarium 0:2ddc0583bcec 21 *
rosarium 0:2ddc0583bcec 22 * PktMbusInit mbusInit={
rosarium 0:2ddc0583bcec 23 * MBUS_SUBMODE_S1_S2_LONG_HEADER, // MBUS submode selection
rosarium 0:2ddc0583bcec 24 * 36, // added "01" chips on preamble
rosarium 0:2ddc0583bcec 25 * 16 // postamble length in "01" chips
rosarium 0:2ddc0583bcec 26 * };
rosarium 0:2ddc0583bcec 27 *
rosarium 0:2ddc0583bcec 28 * ...
rosarium 0:2ddc0583bcec 29 *
rosarium 0:2ddc0583bcec 30 * SpiritPktMbusInit(&mbusInit);
rosarium 0:2ddc0583bcec 31 *
rosarium 0:2ddc0583bcec 32 * ...
rosarium 0:2ddc0583bcec 33 *
rosarium 0:2ddc0583bcec 34 * @endcode
rosarium 0:2ddc0583bcec 35 *
rosarium 0:2ddc0583bcec 36 * The module provides some other functions that can be used to modify
rosarium 0:2ddc0583bcec 37 * or read only some configuration parameters.
rosarium 0:2ddc0583bcec 38 *
rosarium 0:2ddc0583bcec 39 *
rosarium 0:2ddc0583bcec 40 * @attention
rosarium 0:2ddc0583bcec 41 *
rosarium 0:2ddc0583bcec 42 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 43 *
rosarium 0:2ddc0583bcec 44 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 45 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 46 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 47 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 48 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 49 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 50 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 51 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 52 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 53 * without specific prior written permission.
rosarium 0:2ddc0583bcec 54 *
rosarium 0:2ddc0583bcec 55 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 56 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 57 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 58 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 59 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 60 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 61 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 62 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 63 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 64 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 65 *
rosarium 0:2ddc0583bcec 66 ******************************************************************************
rosarium 0:2ddc0583bcec 67 */
rosarium 0:2ddc0583bcec 68
rosarium 0:2ddc0583bcec 69 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 70 #ifndef __SPIRIT_PACKET_MBUS_H
rosarium 0:2ddc0583bcec 71 #define __SPIRIT_PACKET_MBUS_H
rosarium 0:2ddc0583bcec 72
rosarium 0:2ddc0583bcec 73
rosarium 0:2ddc0583bcec 74
rosarium 0:2ddc0583bcec 75 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 76
rosarium 0:2ddc0583bcec 77 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 78 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 79 #include "SPIRIT_PktCommon.h"
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 82 extern "C" {
rosarium 0:2ddc0583bcec 83 #endif
rosarium 0:2ddc0583bcec 84
rosarium 0:2ddc0583bcec 85
rosarium 0:2ddc0583bcec 86
rosarium 0:2ddc0583bcec 87 /**
rosarium 0:2ddc0583bcec 88 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 89 * @{
rosarium 0:2ddc0583bcec 90 */
rosarium 0:2ddc0583bcec 91
rosarium 0:2ddc0583bcec 92
rosarium 0:2ddc0583bcec 93 /**
rosarium 0:2ddc0583bcec 94 * @defgroup SPIRIT_PktMbus Pkt MBUS
rosarium 0:2ddc0583bcec 95 * @brief Configuration and management of SPIRIT MBUS packets.
rosarium 0:2ddc0583bcec 96 * @details See the file <i>@ref SPIRIT_PktMbus.h</i> for more details.
rosarium 0:2ddc0583bcec 97 * @{
rosarium 0:2ddc0583bcec 98 */
rosarium 0:2ddc0583bcec 99
rosarium 0:2ddc0583bcec 100 /**
rosarium 0:2ddc0583bcec 101 * @defgroup PktMbus_Exported_Types Pkt MBUS Exported Types
rosarium 0:2ddc0583bcec 102 * @{
rosarium 0:2ddc0583bcec 103 */
rosarium 0:2ddc0583bcec 104
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106
rosarium 0:2ddc0583bcec 107 /**
rosarium 0:2ddc0583bcec 108 * @brief MBUS submode enumeration.
rosarium 0:2ddc0583bcec 109 */
rosarium 0:2ddc0583bcec 110
rosarium 0:2ddc0583bcec 111 typedef enum
rosarium 0:2ddc0583bcec 112 {
rosarium 0:2ddc0583bcec 113 MBUS_SUBMODE_S1_S2_LONG_HEADER = MBUS_CTRL_MBUS_SUBMODE_S1_S2L, /*!< MBUS submode S1, S2 (long header) - Header length = mbus_prmbl_ctrl + 279 (in "01" bit pairs) , Sync word = 0x7696 (length 18 bits) */
rosarium 0:2ddc0583bcec 114 MBUS_SUBMODE_S1_M_S2_T2_OTHER_TO_METER = MBUS_CTRL_MBUS_SUBMODE_S2_S1M_T2_OTHER, /*!< MBUS submode S1-m, S2, T2 (other to meter) - Header length = mbus_prmbl_ctrl + 15 (in "01" bit pairs) , Sync word = 0x7696 (length 18 bits)*/
rosarium 0:2ddc0583bcec 115 MBUS_SUBMODE_T1_T2_METER_TO_OTHER = MBUS_CTRL_MBUS_SUBMODE_T1_T2_METER, /*!< MBUS submode T1, T2 (meter to other) - Header length = mbus_prmbl_ctrl + 19 (in "01" bit pairs) , Sync word = 0x3D (length 10 bits)*/
rosarium 0:2ddc0583bcec 116 MBUS_SUBMODE_R2_SHORT_HEADER = MBUS_CTRL_MBUS_SUBMODE_R2, /*!< MBUS submode R2, short header - Header length = mbus_prmbl_ctrl + 39 (in "01" bit pairs) , Sync word = 0x7696 (length 18 bits)*/
rosarium 0:2ddc0583bcec 117
rosarium 0:2ddc0583bcec 118 }MbusSubmode;
rosarium 0:2ddc0583bcec 119
rosarium 0:2ddc0583bcec 120 #define IS_MBUS_SUBMODE(MODE) (((MODE) == MBUS_SUBMODE_S1_S2_LONG_HEADER) || \
rosarium 0:2ddc0583bcec 121 ((MODE) == MBUS_SUBMODE_S1_M_S2_T2_OTHER_TO_METER) || \
rosarium 0:2ddc0583bcec 122 ((MODE) == MBUS_SUBMODE_T1_T2_METER_TO_OTHER) || \
rosarium 0:2ddc0583bcec 123 ((MODE) == MBUS_SUBMODE_R2_SHORT_HEADER))
rosarium 0:2ddc0583bcec 124
rosarium 0:2ddc0583bcec 125
rosarium 0:2ddc0583bcec 126 /**
rosarium 0:2ddc0583bcec 127 * @brief SPIRIT MBUS Packet Init structure definition
rosarium 0:2ddc0583bcec 128 */
rosarium 0:2ddc0583bcec 129 typedef struct
rosarium 0:2ddc0583bcec 130 {
rosarium 0:2ddc0583bcec 131 MbusSubmode xMbusSubmode; /*!< Specifies the SUBMODE to be configured.
rosarium 0:2ddc0583bcec 132 This parameter can be a value of @ref MbusSubmode */
rosarium 0:2ddc0583bcec 133
rosarium 0:2ddc0583bcec 134 uint8_t cPreambleLength; /*!< Specifies the PREAMBLE length.
rosarium 0:2ddc0583bcec 135 This parameter can be any value between 0 and 255 chip sequence '01' */
rosarium 0:2ddc0583bcec 136
rosarium 0:2ddc0583bcec 137 uint8_t cPostambleLength; /*!< Specifies the POSTAMBLE length.
rosarium 0:2ddc0583bcec 138 This parameter can be any value between 0 and 255 chip sequence '01' */
rosarium 0:2ddc0583bcec 139
rosarium 0:2ddc0583bcec 140 }PktMbusInit;
rosarium 0:2ddc0583bcec 141
rosarium 0:2ddc0583bcec 142 /**
rosarium 0:2ddc0583bcec 143 *@}
rosarium 0:2ddc0583bcec 144 */
rosarium 0:2ddc0583bcec 145
rosarium 0:2ddc0583bcec 146
rosarium 0:2ddc0583bcec 147 /**
rosarium 0:2ddc0583bcec 148 * @defgroup PktMbus_Exported_Constants Pkt MBUS Exported Constants
rosarium 0:2ddc0583bcec 149 * @{
rosarium 0:2ddc0583bcec 150 */
rosarium 0:2ddc0583bcec 151
rosarium 0:2ddc0583bcec 152
rosarium 0:2ddc0583bcec 153 /**
rosarium 0:2ddc0583bcec 154 *@}
rosarium 0:2ddc0583bcec 155 */
rosarium 0:2ddc0583bcec 156
rosarium 0:2ddc0583bcec 157
rosarium 0:2ddc0583bcec 158 /**
rosarium 0:2ddc0583bcec 159 * @defgroup PktMbus_Exported_Macros Pkt MBUS Exported Macros
rosarium 0:2ddc0583bcec 160 * @{
rosarium 0:2ddc0583bcec 161 */
rosarium 0:2ddc0583bcec 162
rosarium 0:2ddc0583bcec 163
rosarium 0:2ddc0583bcec 164 /**
rosarium 0:2ddc0583bcec 165 *@}
rosarium 0:2ddc0583bcec 166 */
rosarium 0:2ddc0583bcec 167
rosarium 0:2ddc0583bcec 168
rosarium 0:2ddc0583bcec 169 /**
rosarium 0:2ddc0583bcec 170 * @defgroup PktMbus_Exported_Functions Pkt MBUS Exported Functions
rosarium 0:2ddc0583bcec 171 * @{
rosarium 0:2ddc0583bcec 172 */
rosarium 0:2ddc0583bcec 173 void SpiritPktMbusInit(PktMbusInit* pxPktMbusInit);
rosarium 0:2ddc0583bcec 174 void SpiritPktMbusGetInfo(PktMbusInit* pxPktMbusInit);
rosarium 0:2ddc0583bcec 175 void SpiritPktMbusSetFormat(void);
rosarium 0:2ddc0583bcec 176 void SpiritPktMbusSetPreamble(uint8_t cPreamble);
rosarium 0:2ddc0583bcec 177 uint8_t SpiritPktMbusGetPreamble(void);
rosarium 0:2ddc0583bcec 178 void SpiritPktMbusSetPostamble(uint8_t cPostamble);
rosarium 0:2ddc0583bcec 179 uint8_t SpiritPktMbusGetPostamble(void);
rosarium 0:2ddc0583bcec 180 void SpiritPktMbusSetSubmode(MbusSubmode xMbusSubmode);
rosarium 0:2ddc0583bcec 181 MbusSubmode SpiritPktMbusGetSubmode(void);
rosarium 0:2ddc0583bcec 182 void SpiritPktMbusSetPayloadLength(uint16_t nPayloadLength);
rosarium 0:2ddc0583bcec 183 uint16_t SpiritPktMbusGetPayloadLength(void);
rosarium 0:2ddc0583bcec 184
rosarium 0:2ddc0583bcec 185
rosarium 0:2ddc0583bcec 186 /**
rosarium 0:2ddc0583bcec 187 *@}
rosarium 0:2ddc0583bcec 188 */
rosarium 0:2ddc0583bcec 189
rosarium 0:2ddc0583bcec 190 /**
rosarium 0:2ddc0583bcec 191 *@}
rosarium 0:2ddc0583bcec 192 */
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
rosarium 0:2ddc0583bcec 200 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 201 }
rosarium 0:2ddc0583bcec 202 #endif
rosarium 0:2ddc0583bcec 203
rosarium 0:2ddc0583bcec 204 #endif
rosarium 0:2ddc0583bcec 205
rosarium 0:2ddc0583bcec 206 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/