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.c
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 * @details
rosarium 0:2ddc0583bcec 9 *
rosarium 0:2ddc0583bcec 10 * @attention
rosarium 0:2ddc0583bcec 11 *
rosarium 0:2ddc0583bcec 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 13 *
rosarium 0:2ddc0583bcec 14 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 15 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 16 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 17 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 19 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 20 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 22 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 23 * without specific prior written permission.
rosarium 0:2ddc0583bcec 24 *
rosarium 0:2ddc0583bcec 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 35 *
rosarium 0:2ddc0583bcec 36 ******************************************************************************
rosarium 0:2ddc0583bcec 37 */
rosarium 0:2ddc0583bcec 38
rosarium 0:2ddc0583bcec 39 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 40 #include "SPIRIT_PktMbus.h"
rosarium 0:2ddc0583bcec 41 #include "SPIRIT_Radio.h"
rosarium 0:2ddc0583bcec 42 #include "MCU_Interface.h"
rosarium 0:2ddc0583bcec 43
rosarium 0:2ddc0583bcec 44 /**
rosarium 0:2ddc0583bcec 45 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 46 * @{
rosarium 0:2ddc0583bcec 47 */
rosarium 0:2ddc0583bcec 48
rosarium 0:2ddc0583bcec 49
rosarium 0:2ddc0583bcec 50 /**
rosarium 0:2ddc0583bcec 51 * @addtogroup SPIRIT_PktMbus
rosarium 0:2ddc0583bcec 52 * @{
rosarium 0:2ddc0583bcec 53 */
rosarium 0:2ddc0583bcec 54
rosarium 0:2ddc0583bcec 55
rosarium 0:2ddc0583bcec 56 /**
rosarium 0:2ddc0583bcec 57 * @defgroup PktMbus_Private_TypesDefinitions Pkt MBUS Private Types Definitions
rosarium 0:2ddc0583bcec 58 * @{
rosarium 0:2ddc0583bcec 59 */
rosarium 0:2ddc0583bcec 60
rosarium 0:2ddc0583bcec 61 /**
rosarium 0:2ddc0583bcec 62 *@}
rosarium 0:2ddc0583bcec 63 */
rosarium 0:2ddc0583bcec 64
rosarium 0:2ddc0583bcec 65
rosarium 0:2ddc0583bcec 66 /**
rosarium 0:2ddc0583bcec 67 * @defgroup PktMbus_Private_Defines Pkt MBUS Private Defines
rosarium 0:2ddc0583bcec 68 * @{
rosarium 0:2ddc0583bcec 69 */
rosarium 0:2ddc0583bcec 70
rosarium 0:2ddc0583bcec 71 /**
rosarium 0:2ddc0583bcec 72 *@}
rosarium 0:2ddc0583bcec 73 */
rosarium 0:2ddc0583bcec 74
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76 /**
rosarium 0:2ddc0583bcec 77 * @defgroup PktMbus_Private_Macros Pkt MBUS Private Macros
rosarium 0:2ddc0583bcec 78 * @{
rosarium 0:2ddc0583bcec 79 */
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 /**
rosarium 0:2ddc0583bcec 82 *@}
rosarium 0:2ddc0583bcec 83 */
rosarium 0:2ddc0583bcec 84
rosarium 0:2ddc0583bcec 85
rosarium 0:2ddc0583bcec 86 /**
rosarium 0:2ddc0583bcec 87 * @defgroup PktMbus_Private_Variables Pkt MBUS Private Variables
rosarium 0:2ddc0583bcec 88 * @{
rosarium 0:2ddc0583bcec 89 */
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91 /**
rosarium 0:2ddc0583bcec 92 *@}
rosarium 0:2ddc0583bcec 93 */
rosarium 0:2ddc0583bcec 94
rosarium 0:2ddc0583bcec 95
rosarium 0:2ddc0583bcec 96 /**
rosarium 0:2ddc0583bcec 97 * @defgroup PktMbus_Private_FunctionPrototypes Pkt MBUS Private Function Prototypes
rosarium 0:2ddc0583bcec 98 * @{
rosarium 0:2ddc0583bcec 99 */
rosarium 0:2ddc0583bcec 100
rosarium 0:2ddc0583bcec 101 /**
rosarium 0:2ddc0583bcec 102 *@}
rosarium 0:2ddc0583bcec 103 */
rosarium 0:2ddc0583bcec 104
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106 /**
rosarium 0:2ddc0583bcec 107 * @defgroup PktMbus_Private_Functions Pkt MBUS Private Functions
rosarium 0:2ddc0583bcec 108 * @{
rosarium 0:2ddc0583bcec 109 */
rosarium 0:2ddc0583bcec 110
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 /**
rosarium 0:2ddc0583bcec 113 * @brief Initializes the SPIRIT MBUS packet according to the specified parameters in the PktMbusInit struct.
rosarium 0:2ddc0583bcec 114 * @param pxPktMbusInit pointer to a PktMbusInit structure that contains the configuration information for the specified SPIRIT MBUS PACKET FORMAT.
rosarium 0:2ddc0583bcec 115 * This parameter is a pointer to @ref PktMbusInit.
rosarium 0:2ddc0583bcec 116 * @retval None.
rosarium 0:2ddc0583bcec 117 */
rosarium 0:2ddc0583bcec 118 void SpiritPktMbusInit(PktMbusInit* pxPktMbusInit)
rosarium 0:2ddc0583bcec 119 {
rosarium 0:2ddc0583bcec 120 uint8_t tempRegValue[3];
rosarium 0:2ddc0583bcec 121
rosarium 0:2ddc0583bcec 122 /* Check the parameters */
rosarium 0:2ddc0583bcec 123 s_assert_param(IS_MBUS_SUBMODE(pxPktMbusInit->xMbusSubmode));
rosarium 0:2ddc0583bcec 124
rosarium 0:2ddc0583bcec 125 /* Packet format config */
rosarium 0:2ddc0583bcec 126 SpiritPktMbusSetFormat();
rosarium 0:2ddc0583bcec 127 SpiritPktCommonFilterOnCrc(S_DISABLE);
rosarium 0:2ddc0583bcec 128 SpiritRadioCsBlanking(S_ENABLE);
rosarium 0:2ddc0583bcec 129
rosarium 0:2ddc0583bcec 130 /* Preamble, postamble and submode config */
rosarium 0:2ddc0583bcec 131 tempRegValue[0] = pxPktMbusInit->cPreambleLength;
rosarium 0:2ddc0583bcec 132 tempRegValue[1] = pxPktMbusInit->cPostambleLength;
rosarium 0:2ddc0583bcec 133 tempRegValue[2] = (uint8_t) pxPktMbusInit->xMbusSubmode;
rosarium 0:2ddc0583bcec 134
rosarium 0:2ddc0583bcec 135 /* Writes the new values on the MBUS_PRMBL registers */
rosarium 0:2ddc0583bcec 136 g_xStatus = SpiritSpiWriteRegisters(MBUS_PRMBL_BASE, 3, tempRegValue);
rosarium 0:2ddc0583bcec 137
rosarium 0:2ddc0583bcec 138 }
rosarium 0:2ddc0583bcec 139
rosarium 0:2ddc0583bcec 140 /**
rosarium 0:2ddc0583bcec 141 * @brief Returns the SPIRIT MBUS packet structure according to the specified parameters in the registers.
rosarium 0:2ddc0583bcec 142 * @param pxPktMbusInit MBUS packet init structure.
rosarium 0:2ddc0583bcec 143 * This parameter is a pointer to @ref PktMbusInit.
rosarium 0:2ddc0583bcec 144 * @retval None.
rosarium 0:2ddc0583bcec 145 */
rosarium 0:2ddc0583bcec 146 void SpiritPktMbusGetInfo(PktMbusInit* pxPktMbusInit)
rosarium 0:2ddc0583bcec 147 {
rosarium 0:2ddc0583bcec 148 uint8_t tempRegValue[3];
rosarium 0:2ddc0583bcec 149
rosarium 0:2ddc0583bcec 150 /* Reads the MBUS regs value */
rosarium 0:2ddc0583bcec 151 g_xStatus = SpiritSpiReadRegisters(MBUS_PRMBL_BASE, 3, tempRegValue);
rosarium 0:2ddc0583bcec 152
rosarium 0:2ddc0583bcec 153 /* Fit the structure */
rosarium 0:2ddc0583bcec 154 pxPktMbusInit->cPreambleLength = tempRegValue[0];
rosarium 0:2ddc0583bcec 155 pxPktMbusInit->cPostambleLength = tempRegValue[1];
rosarium 0:2ddc0583bcec 156 pxPktMbusInit->xMbusSubmode = (MbusSubmode) (tempRegValue[2]&0x0E);
rosarium 0:2ddc0583bcec 157
rosarium 0:2ddc0583bcec 158 }
rosarium 0:2ddc0583bcec 159
rosarium 0:2ddc0583bcec 160
rosarium 0:2ddc0583bcec 161 /**
rosarium 0:2ddc0583bcec 162 * @brief Configures the MBUS packet format as the one used by SPIRIT.
rosarium 0:2ddc0583bcec 163 * @param None.
rosarium 0:2ddc0583bcec 164 * @retval None.
rosarium 0:2ddc0583bcec 165 */
rosarium 0:2ddc0583bcec 166 void SpiritPktMbusSetFormat(void)
rosarium 0:2ddc0583bcec 167 {
rosarium 0:2ddc0583bcec 168 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 169
rosarium 0:2ddc0583bcec 170 /* Reads the PCKTCTRL3 register value */
rosarium 0:2ddc0583bcec 171 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 172
rosarium 0:2ddc0583bcec 173 /* Sets format bits. Also set to 0 the direct RX mode bits */
rosarium 0:2ddc0583bcec 174 tempRegValue &= 0x0F;
rosarium 0:2ddc0583bcec 175 tempRegValue |= ((uint8_t)PCKTCTRL3_PCKT_FRMT_MBUS);
rosarium 0:2ddc0583bcec 176
rosarium 0:2ddc0583bcec 177 /* Writes value on the PCKTCTRL3 register */
rosarium 0:2ddc0583bcec 178 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 179
rosarium 0:2ddc0583bcec 180 /* Reads the PCKTCTRL1 register value */
rosarium 0:2ddc0583bcec 181 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 182
rosarium 0:2ddc0583bcec 183 /* Build the new value. Set to 0 the direct TX mode bits */
rosarium 0:2ddc0583bcec 184 tempRegValue &= 0xF3;
rosarium 0:2ddc0583bcec 185
rosarium 0:2ddc0583bcec 186 /* Writes the value on the PCKTCTRL1 register */
rosarium 0:2ddc0583bcec 187 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 188
rosarium 0:2ddc0583bcec 189 /* Reads the PROTOCOL1 register */
rosarium 0:2ddc0583bcec 190 g_xStatus = SpiritSpiReadRegisters(PROTOCOL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 191
rosarium 0:2ddc0583bcec 192 /* Mask a reserved bit */
rosarium 0:2ddc0583bcec 193 tempRegValue &= ~0x20;
rosarium 0:2ddc0583bcec 194
rosarium 0:2ddc0583bcec 195 /* Writes the value on the PROTOCOL1 register */
rosarium 0:2ddc0583bcec 196 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 197
rosarium 0:2ddc0583bcec 198 }
rosarium 0:2ddc0583bcec 199
rosarium 0:2ddc0583bcec 200
rosarium 0:2ddc0583bcec 201 /**
rosarium 0:2ddc0583bcec 202 * @brief Sets how many chip sequence “01” shall be added in the preamble
rosarium 0:2ddc0583bcec 203 * respect to the minimum value as defined according to the specified sub-mode.
rosarium 0:2ddc0583bcec 204 * @param cPreamble the number of chip sequence.
rosarium 0:2ddc0583bcec 205 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 206 * @retval None.
rosarium 0:2ddc0583bcec 207 */
rosarium 0:2ddc0583bcec 208 void SpiritPktMbusSetPreamble(uint8_t cPreamble)
rosarium 0:2ddc0583bcec 209 {
rosarium 0:2ddc0583bcec 210 /* Modifies the MBUS_PRMBL register value */
rosarium 0:2ddc0583bcec 211 g_xStatus = SpiritSpiWriteRegisters(MBUS_PRMBL_BASE, 1, &cPreamble);
rosarium 0:2ddc0583bcec 212
rosarium 0:2ddc0583bcec 213 }
rosarium 0:2ddc0583bcec 214
rosarium 0:2ddc0583bcec 215
rosarium 0:2ddc0583bcec 216 /**
rosarium 0:2ddc0583bcec 217 * @brief Returns how many chip sequence "01" are added in the preamble
rosarium 0:2ddc0583bcec 218 * respect to the minimum value as defined according to the specified sub-mode.
rosarium 0:2ddc0583bcec 219 * @param None.
rosarium 0:2ddc0583bcec 220 * @retval uint8_t Preable in number of "01" chip sequences.
rosarium 0:2ddc0583bcec 221 */
rosarium 0:2ddc0583bcec 222 uint8_t SpiritPktMbusGetPreamble(void)
rosarium 0:2ddc0583bcec 223 {
rosarium 0:2ddc0583bcec 224 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 225
rosarium 0:2ddc0583bcec 226 /* Modifies the MBUS_PRMBL register value */
rosarium 0:2ddc0583bcec 227 g_xStatus = SpiritSpiReadRegisters(MBUS_PRMBL_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 228
rosarium 0:2ddc0583bcec 229 /* Return value */
rosarium 0:2ddc0583bcec 230 return tempRegValue;
rosarium 0:2ddc0583bcec 231
rosarium 0:2ddc0583bcec 232 }
rosarium 0:2ddc0583bcec 233
rosarium 0:2ddc0583bcec 234
rosarium 0:2ddc0583bcec 235 /**
rosarium 0:2ddc0583bcec 236 * @brief Sets how many chip sequence “01” will be used in postamble
rosarium 0:2ddc0583bcec 237 * @param cPostamble the number of chip sequence.
rosarium 0:2ddc0583bcec 238 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 239 * @retval None.
rosarium 0:2ddc0583bcec 240 */
rosarium 0:2ddc0583bcec 241 void SpiritPktMbusSetPostamble(uint8_t cPostamble)
rosarium 0:2ddc0583bcec 242 {
rosarium 0:2ddc0583bcec 243 /* Modifies the MBUS_PSTMBL register value */
rosarium 0:2ddc0583bcec 244 g_xStatus = SpiritSpiWriteRegisters(MBUS_PSTMBL_BASE, 1, &cPostamble);
rosarium 0:2ddc0583bcec 245
rosarium 0:2ddc0583bcec 246 }
rosarium 0:2ddc0583bcec 247
rosarium 0:2ddc0583bcec 248
rosarium 0:2ddc0583bcec 249 /**
rosarium 0:2ddc0583bcec 250 * @brief Returns how many chip sequence "01" are used in the postamble
rosarium 0:2ddc0583bcec 251 * @param None.
rosarium 0:2ddc0583bcec 252 * @retval uint8_t Postamble in number of "01" chip sequences.
rosarium 0:2ddc0583bcec 253 */
rosarium 0:2ddc0583bcec 254 uint8_t SpiritPktMbusGetPostamble(void)
rosarium 0:2ddc0583bcec 255 {
rosarium 0:2ddc0583bcec 256 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 257
rosarium 0:2ddc0583bcec 258 /* Reads the MBUS_PSTMBL register */
rosarium 0:2ddc0583bcec 259 g_xStatus = SpiritSpiReadRegisters(MBUS_PSTMBL_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 260
rosarium 0:2ddc0583bcec 261 /* Returns value */
rosarium 0:2ddc0583bcec 262 return tempRegValue;
rosarium 0:2ddc0583bcec 263
rosarium 0:2ddc0583bcec 264 }
rosarium 0:2ddc0583bcec 265
rosarium 0:2ddc0583bcec 266
rosarium 0:2ddc0583bcec 267 /**
rosarium 0:2ddc0583bcec 268 * @brief Sets the MBUS submode used.
rosarium 0:2ddc0583bcec 269 * @param xMbusSubmode the submode used.
rosarium 0:2ddc0583bcec 270 * This parameter can be any value of @ref MbusSubmode.
rosarium 0:2ddc0583bcec 271 * @retval None.
rosarium 0:2ddc0583bcec 272 */
rosarium 0:2ddc0583bcec 273 void SpiritPktMbusSetSubmode(MbusSubmode xMbusSubmode)
rosarium 0:2ddc0583bcec 274 {
rosarium 0:2ddc0583bcec 275 /* Modifies the MBUS_CTRL register value */
rosarium 0:2ddc0583bcec 276 g_xStatus = SpiritSpiWriteRegisters(MBUS_CTRL_BASE, 1, (uint8_t*)xMbusSubmode);
rosarium 0:2ddc0583bcec 277
rosarium 0:2ddc0583bcec 278 }
rosarium 0:2ddc0583bcec 279
rosarium 0:2ddc0583bcec 280
rosarium 0:2ddc0583bcec 281 /**
rosarium 0:2ddc0583bcec 282 * @brief Returns the MBUS submode used.
rosarium 0:2ddc0583bcec 283 * @param None.
rosarium 0:2ddc0583bcec 284 * @retval MbusSubmode MBUS submode.
rosarium 0:2ddc0583bcec 285 */
rosarium 0:2ddc0583bcec 286 MbusSubmode SpiritPktMbusGetSubmode(void)
rosarium 0:2ddc0583bcec 287 {
rosarium 0:2ddc0583bcec 288 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 289
rosarium 0:2ddc0583bcec 290 /* Reads the MBUS_CTRL register value */
rosarium 0:2ddc0583bcec 291 g_xStatus = SpiritSpiReadRegisters(MBUS_CTRL_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 292
rosarium 0:2ddc0583bcec 293 /* Returns value */
rosarium 0:2ddc0583bcec 294 return (MbusSubmode) tempRegValue;
rosarium 0:2ddc0583bcec 295
rosarium 0:2ddc0583bcec 296 }
rosarium 0:2ddc0583bcec 297
rosarium 0:2ddc0583bcec 298
rosarium 0:2ddc0583bcec 299 /**
rosarium 0:2ddc0583bcec 300 * @brief Sets the payload length for SPIRIT MBUS packets.
rosarium 0:2ddc0583bcec 301 * @param nPayloadLength payload length in bytes.
rosarium 0:2ddc0583bcec 302 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 303 * @retval None.
rosarium 0:2ddc0583bcec 304 */
rosarium 0:2ddc0583bcec 305 void SpiritPktMbusSetPayloadLength(uint16_t nPayloadLength)
rosarium 0:2ddc0583bcec 306 {
rosarium 0:2ddc0583bcec 307 uint8_t tempRegValue[2];
rosarium 0:2ddc0583bcec 308
rosarium 0:2ddc0583bcec 309 /* Computes PCKTLEN0 value from nPayloadLength */
rosarium 0:2ddc0583bcec 310 tempRegValue[1]=BUILD_PCKTLEN0(nPayloadLength);//(uint8_t)nPayloadLength;
rosarium 0:2ddc0583bcec 311 /* Computes PCKTLEN1 value from nPayloadLength */
rosarium 0:2ddc0583bcec 312 tempRegValue[0]=BUILD_PCKTLEN1(nPayloadLength);//(uint8_t)(nPayloadLength>>8);
rosarium 0:2ddc0583bcec 313
rosarium 0:2ddc0583bcec 314 /* Writes data on the PCKTLEN1/0 register */
rosarium 0:2ddc0583bcec 315 g_xStatus = SpiritSpiWriteRegisters(PCKTLEN1_BASE, 2, tempRegValue);
rosarium 0:2ddc0583bcec 316
rosarium 0:2ddc0583bcec 317 }
rosarium 0:2ddc0583bcec 318
rosarium 0:2ddc0583bcec 319
rosarium 0:2ddc0583bcec 320 /**
rosarium 0:2ddc0583bcec 321 * @brief Returns the payload length for SPIRIT MBUS packets.
rosarium 0:2ddc0583bcec 322 * @param None.
rosarium 0:2ddc0583bcec 323 * @retval uint16_t Payload length in bytes.
rosarium 0:2ddc0583bcec 324 */
rosarium 0:2ddc0583bcec 325 uint16_t SpiritPktMbusGetPayloadLength(void)
rosarium 0:2ddc0583bcec 326 {
rosarium 0:2ddc0583bcec 327 uint8_t tempRegValue[2];
rosarium 0:2ddc0583bcec 328
rosarium 0:2ddc0583bcec 329 /* Reads the packet length registers */
rosarium 0:2ddc0583bcec 330 g_xStatus = SpiritSpiReadRegisters(PCKTLEN1_BASE, 2, tempRegValue);
rosarium 0:2ddc0583bcec 331
rosarium 0:2ddc0583bcec 332 /* Returns the packet length */
rosarium 0:2ddc0583bcec 333 return ((((uint16_t)tempRegValue[0])<<8) + (uint16_t) tempRegValue[1]);
rosarium 0:2ddc0583bcec 334
rosarium 0:2ddc0583bcec 335 }
rosarium 0:2ddc0583bcec 336
rosarium 0:2ddc0583bcec 337 /**
rosarium 0:2ddc0583bcec 338 *@}
rosarium 0:2ddc0583bcec 339 */
rosarium 0:2ddc0583bcec 340
rosarium 0:2ddc0583bcec 341 /**
rosarium 0:2ddc0583bcec 342 *@}
rosarium 0:2ddc0583bcec 343 */
rosarium 0:2ddc0583bcec 344
rosarium 0:2ddc0583bcec 345
rosarium 0:2ddc0583bcec 346 /**
rosarium 0:2ddc0583bcec 347 *@}
rosarium 0:2ddc0583bcec 348 */
rosarium 0:2ddc0583bcec 349
rosarium 0:2ddc0583bcec 350
rosarium 0:2ddc0583bcec 351
rosarium 0:2ddc0583bcec 352
rosarium 0:2ddc0583bcec 353
rosarium 0:2ddc0583bcec 354 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/