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_PktBasic.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 Basic 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_PktBasic.h"
rosarium 0:2ddc0583bcec 41 #include "MCU_Interface.h"
rosarium 0:2ddc0583bcec 42
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_PktBasic
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 PktBasic_Private_TypesDefinitions Pkt Basic 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 PktBasic_Private_Defines Pkt Basic 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 PktBasic_Private_Macros Pkt Basic 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 PktBasic_Private_Variables Pkt Basic 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 /**
rosarium 0:2ddc0583bcec 98 * @defgroup PktBasic_Private_FunctionPrototypes Pkt Basic Private Function Prototypes
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 /**
rosarium 0:2ddc0583bcec 108 * @defgroup PktBasic_Private_Functions Pkt Basic Private Functions
rosarium 0:2ddc0583bcec 109 * @{
rosarium 0:2ddc0583bcec 110 */
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 /**
rosarium 0:2ddc0583bcec 113 * @brief Initializes the SPIRIT Basic packet according to the specified parameters in the PktBasicInit struct.
rosarium 0:2ddc0583bcec 114 * Notice that this function sets the autofiltering option on CRC if it is set to any value different from BASIC_NO_CRC.
rosarium 0:2ddc0583bcec 115 * @param pxPktBasicInit Basic packet init structure.
rosarium 0:2ddc0583bcec 116 * This parameter is a pointer to @ref PktBasicInit.
rosarium 0:2ddc0583bcec 117 * @retval None.
rosarium 0:2ddc0583bcec 118 */
rosarium 0:2ddc0583bcec 119 void SpiritPktBasicInit(PktBasicInit* pxPktBasicInit)
rosarium 0:2ddc0583bcec 120 {
rosarium 0:2ddc0583bcec 121 uint8_t tempRegValue[4], i;
rosarium 0:2ddc0583bcec 122
rosarium 0:2ddc0583bcec 123 /* Check the parameters */
rosarium 0:2ddc0583bcec 124 s_assert_param(IS_BASIC_PREAMBLE_LENGTH(pxPktBasicInit->xPreambleLength));
rosarium 0:2ddc0583bcec 125 s_assert_param(IS_BASIC_SYNC_LENGTH(pxPktBasicInit->xSyncLength));
rosarium 0:2ddc0583bcec 126 s_assert_param(IS_BASIC_CRC_MODE(pxPktBasicInit->xCrcMode));
rosarium 0:2ddc0583bcec 127 s_assert_param(IS_BASIC_LENGTH_WIDTH_BITS(pxPktBasicInit->cPktLengthWidth));
rosarium 0:2ddc0583bcec 128 s_assert_param(IS_BASIC_FIX_VAR_LENGTH(pxPktBasicInit->xFixVarLength));
rosarium 0:2ddc0583bcec 129 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(pxPktBasicInit->xAddressField));
rosarium 0:2ddc0583bcec 130 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(pxPktBasicInit->xFec));
rosarium 0:2ddc0583bcec 131 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(pxPktBasicInit->xDataWhitening));
rosarium 0:2ddc0583bcec 132 s_assert_param(IS_BASIC_CONTROL_LENGTH(pxPktBasicInit->xControlLength));
rosarium 0:2ddc0583bcec 133
rosarium 0:2ddc0583bcec 134 /* Reads the PROTOCOL1 register */
rosarium 0:2ddc0583bcec 135 g_xStatus = SpiritSpiReadRegisters(PROTOCOL1_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 136
rosarium 0:2ddc0583bcec 137 /* Mask a reserved bit */
rosarium 0:2ddc0583bcec 138 tempRegValue[0] &= ~0x20;
rosarium 0:2ddc0583bcec 139
rosarium 0:2ddc0583bcec 140 /* Always set the automatic packet filtering */
rosarium 0:2ddc0583bcec 141 tempRegValue[0] |= PROTOCOL1_AUTO_PCKT_FLT_MASK;
rosarium 0:2ddc0583bcec 142
rosarium 0:2ddc0583bcec 143 /* Writes the value on register */
rosarium 0:2ddc0583bcec 144 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL1_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 145
rosarium 0:2ddc0583bcec 146 /* Reads the PCKT_FLT_OPTIONS register */
rosarium 0:2ddc0583bcec 147 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 148
rosarium 0:2ddc0583bcec 149 /* Always reset the control and source filtering (also if it is not present in basic) */
rosarium 0:2ddc0583bcec 150 tempRegValue[0] &= ~(PCKT_FLT_OPTIONS_SOURCE_FILTERING_MASK | PCKT_FLT_OPTIONS_CONTROL_FILTERING_MASK);
rosarium 0:2ddc0583bcec 151
rosarium 0:2ddc0583bcec 152 /* Writes the value on register */
rosarium 0:2ddc0583bcec 153 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 154
rosarium 0:2ddc0583bcec 155 if(pxPktBasicInit->xAddressField == S_ENABLE)
rosarium 0:2ddc0583bcec 156 {
rosarium 0:2ddc0583bcec 157 tempRegValue[0]=0x08;
rosarium 0:2ddc0583bcec 158 }
rosarium 0:2ddc0583bcec 159 else
rosarium 0:2ddc0583bcec 160 {
rosarium 0:2ddc0583bcec 161 tempRegValue[0]=0x00;
rosarium 0:2ddc0583bcec 162 }
rosarium 0:2ddc0583bcec 163 /* Address and control length setting */
rosarium 0:2ddc0583bcec 164 tempRegValue[0] |= ((uint8_t) pxPktBasicInit->xControlLength);
rosarium 0:2ddc0583bcec 165
rosarium 0:2ddc0583bcec 166 /* Packet format and width length setting */
rosarium 0:2ddc0583bcec 167 pxPktBasicInit->cPktLengthWidth == 0 ? pxPktBasicInit->cPktLengthWidth=1 : pxPktBasicInit->cPktLengthWidth;
rosarium 0:2ddc0583bcec 168 tempRegValue[1] = ((uint8_t) PCKTCTRL3_PCKT_FRMT_BASIC) | ((uint8_t)(pxPktBasicInit->cPktLengthWidth-1));
rosarium 0:2ddc0583bcec 169
rosarium 0:2ddc0583bcec 170 /* Preamble, sync and fixed or variable length setting */
rosarium 0:2ddc0583bcec 171 tempRegValue[2] = ((uint8_t) pxPktBasicInit->xPreambleLength) | ((uint8_t) pxPktBasicInit->xSyncLength) |
rosarium 0:2ddc0583bcec 172 ((uint8_t) pxPktBasicInit->xFixVarLength);
rosarium 0:2ddc0583bcec 173
rosarium 0:2ddc0583bcec 174 /* CRC length, whitening and FEC setting */
rosarium 0:2ddc0583bcec 175 tempRegValue[3] = (uint8_t) pxPktBasicInit->xCrcMode;
rosarium 0:2ddc0583bcec 176
rosarium 0:2ddc0583bcec 177 if(pxPktBasicInit->xDataWhitening == S_ENABLE)
rosarium 0:2ddc0583bcec 178 {
rosarium 0:2ddc0583bcec 179 tempRegValue[3] |= PCKTCTRL1_WHIT_MASK;
rosarium 0:2ddc0583bcec 180 }
rosarium 0:2ddc0583bcec 181
rosarium 0:2ddc0583bcec 182 if(pxPktBasicInit->xFec == S_ENABLE)
rosarium 0:2ddc0583bcec 183 {
rosarium 0:2ddc0583bcec 184 tempRegValue[3] |= PCKTCTRL1_FEC_MASK;
rosarium 0:2ddc0583bcec 185 }
rosarium 0:2ddc0583bcec 186
rosarium 0:2ddc0583bcec 187 /* Writes registers */
rosarium 0:2ddc0583bcec 188 SpiritSpiWriteRegisters(PCKTCTRL4_BASE, 4, tempRegValue);
rosarium 0:2ddc0583bcec 189
rosarium 0:2ddc0583bcec 190 /* Sync words setting */
rosarium 0:2ddc0583bcec 191 for(i=0;i<4;i++)
rosarium 0:2ddc0583bcec 192 {
rosarium 0:2ddc0583bcec 193 if(i<3-(pxPktBasicInit->xSyncLength >>1))
rosarium 0:2ddc0583bcec 194 {
rosarium 0:2ddc0583bcec 195 tempRegValue[i]=0;
rosarium 0:2ddc0583bcec 196 }
rosarium 0:2ddc0583bcec 197 else
rosarium 0:2ddc0583bcec 198 {
rosarium 0:2ddc0583bcec 199 tempRegValue[i] = (uint8_t)(pxPktBasicInit->lSyncWords>>(8*i));
rosarium 0:2ddc0583bcec 200 }
rosarium 0:2ddc0583bcec 201 }
rosarium 0:2ddc0583bcec 202
rosarium 0:2ddc0583bcec 203 /* Sets CRC check bit */
rosarium 0:2ddc0583bcec 204 if(pxPktBasicInit->xCrcMode == PKT_NO_CRC)
rosarium 0:2ddc0583bcec 205 {
rosarium 0:2ddc0583bcec 206 SpiritPktBasicFilterOnCrc(S_DISABLE);
rosarium 0:2ddc0583bcec 207 }
rosarium 0:2ddc0583bcec 208 else
rosarium 0:2ddc0583bcec 209 {
rosarium 0:2ddc0583bcec 210 SpiritPktBasicFilterOnCrc(S_ENABLE);
rosarium 0:2ddc0583bcec 211 }
rosarium 0:2ddc0583bcec 212
rosarium 0:2ddc0583bcec 213
rosarium 0:2ddc0583bcec 214 g_xStatus = SpiritSpiWriteRegisters(SYNC4_BASE, 4, tempRegValue);
rosarium 0:2ddc0583bcec 215
rosarium 0:2ddc0583bcec 216 }
rosarium 0:2ddc0583bcec 217
rosarium 0:2ddc0583bcec 218
rosarium 0:2ddc0583bcec 219 /**
rosarium 0:2ddc0583bcec 220 * @brief Returns the SPIRIT Basic packet structure according to the specified parameters in the registers.
rosarium 0:2ddc0583bcec 221 * @param pxPktBasicInit Basic packet init structure.
rosarium 0:2ddc0583bcec 222 * This parameter is a pointer to @ref PktBasicInit.
rosarium 0:2ddc0583bcec 223 * @retval None.
rosarium 0:2ddc0583bcec 224 */
rosarium 0:2ddc0583bcec 225 void SpiritPktBasicGetInfo(PktBasicInit* pxPktBasicInit)
rosarium 0:2ddc0583bcec 226 {
rosarium 0:2ddc0583bcec 227 uint8_t tempRegValue[10];
rosarium 0:2ddc0583bcec 228
rosarium 0:2ddc0583bcec 229 /* Reads registers */
rosarium 0:2ddc0583bcec 230 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL4_BASE, 10, tempRegValue);
rosarium 0:2ddc0583bcec 231
rosarium 0:2ddc0583bcec 232 /* Length width */
rosarium 0:2ddc0583bcec 233 pxPktBasicInit->cPktLengthWidth=(tempRegValue[1] & 0x0F)+1;
rosarium 0:2ddc0583bcec 234
rosarium 0:2ddc0583bcec 235 /* Address field */
rosarium 0:2ddc0583bcec 236 pxPktBasicInit->xAddressField=(SpiritFunctionalState)((tempRegValue[0]>>3) & 0x01);
rosarium 0:2ddc0583bcec 237
rosarium 0:2ddc0583bcec 238 /* Control length */
rosarium 0:2ddc0583bcec 239 pxPktBasicInit->xControlLength=(BasicControlLength)(tempRegValue[0] & 0x07);
rosarium 0:2ddc0583bcec 240
rosarium 0:2ddc0583bcec 241 /* CRC mode */
rosarium 0:2ddc0583bcec 242 pxPktBasicInit->xCrcMode=(BasicCrcMode)(tempRegValue[3] & 0xE0);
rosarium 0:2ddc0583bcec 243
rosarium 0:2ddc0583bcec 244 /* Whitening */
rosarium 0:2ddc0583bcec 245 pxPktBasicInit->xDataWhitening=(SpiritFunctionalState)((tempRegValue[3] >> 4) & 0x01);
rosarium 0:2ddc0583bcec 246
rosarium 0:2ddc0583bcec 247 /* FEC */
rosarium 0:2ddc0583bcec 248 pxPktBasicInit->xFec=(SpiritFunctionalState)(tempRegValue[3] & 0x01);
rosarium 0:2ddc0583bcec 249
rosarium 0:2ddc0583bcec 250 /* FIX or VAR bit */
rosarium 0:2ddc0583bcec 251 pxPktBasicInit->xFixVarLength=(BasicFixVarLength)(tempRegValue[2] & 0x01);
rosarium 0:2ddc0583bcec 252
rosarium 0:2ddc0583bcec 253 /* Preamble length */
rosarium 0:2ddc0583bcec 254 pxPktBasicInit->xPreambleLength=(BasicPreambleLength)(tempRegValue[2] & 0xF8);
rosarium 0:2ddc0583bcec 255
rosarium 0:2ddc0583bcec 256 /* Sync length */
rosarium 0:2ddc0583bcec 257 pxPktBasicInit->xSyncLength=(BasicSyncLength)(tempRegValue[2] & 0x06);
rosarium 0:2ddc0583bcec 258
rosarium 0:2ddc0583bcec 259 /* sync Words */
rosarium 0:2ddc0583bcec 260 pxPktBasicInit->lSyncWords=0;
rosarium 0:2ddc0583bcec 261 for(uint8_t i=0 ; i<4 ; i++)
rosarium 0:2ddc0583bcec 262 {
rosarium 0:2ddc0583bcec 263 if(i>2-(((uint8_t)pxPktBasicInit->xSyncLength) >>1))
rosarium 0:2ddc0583bcec 264 {
rosarium 0:2ddc0583bcec 265 pxPktBasicInit->lSyncWords |= (uint32_t)(tempRegValue[i+6])<<(8*i);
rosarium 0:2ddc0583bcec 266 }
rosarium 0:2ddc0583bcec 267 }
rosarium 0:2ddc0583bcec 268
rosarium 0:2ddc0583bcec 269 }
rosarium 0:2ddc0583bcec 270
rosarium 0:2ddc0583bcec 271
rosarium 0:2ddc0583bcec 272 /**
rosarium 0:2ddc0583bcec 273 * @brief Initializes the SPIRIT Basic packet addresses according to the specified
rosarium 0:2ddc0583bcec 274 * parameters in the PktBasicAddressesInit struct.
rosarium 0:2ddc0583bcec 275 * @param pxPktBasicAddresses Basic packet addresses init structure.
rosarium 0:2ddc0583bcec 276 * This parameter is a pointer to @ref PktBasicAddresses.
rosarium 0:2ddc0583bcec 277 * @retval None.
rosarium 0:2ddc0583bcec 278 */
rosarium 0:2ddc0583bcec 279 void SpiritPktBasicAddressesInit(PktBasicAddressesInit* pxPktBasicAddresses)
rosarium 0:2ddc0583bcec 280 {
rosarium 0:2ddc0583bcec 281 uint8_t tempRegValue[3];
rosarium 0:2ddc0583bcec 282
rosarium 0:2ddc0583bcec 283 /* Check the parameters */
rosarium 0:2ddc0583bcec 284 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(pxPktBasicAddresses->xFilterOnMyAddress));
rosarium 0:2ddc0583bcec 285 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(pxPktBasicAddresses->xFilterOnMulticastAddress));
rosarium 0:2ddc0583bcec 286 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(pxPktBasicAddresses->xFilterOnBroadcastAddress));
rosarium 0:2ddc0583bcec 287
rosarium 0:2ddc0583bcec 288
rosarium 0:2ddc0583bcec 289 /* Reads the PCKT_FLT_OPTIONS ragister */
rosarium 0:2ddc0583bcec 290 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 291
rosarium 0:2ddc0583bcec 292 /* Enables or disables filtering on my address */
rosarium 0:2ddc0583bcec 293 if(pxPktBasicAddresses->xFilterOnMyAddress == S_ENABLE)
rosarium 0:2ddc0583bcec 294 {
rosarium 0:2ddc0583bcec 295 tempRegValue[0] |= PCKT_FLT_OPTIONS_DEST_VS_TX_ADDR_MASK;
rosarium 0:2ddc0583bcec 296 }
rosarium 0:2ddc0583bcec 297 else
rosarium 0:2ddc0583bcec 298 {
rosarium 0:2ddc0583bcec 299 tempRegValue[0] &= ~PCKT_FLT_OPTIONS_DEST_VS_TX_ADDR_MASK;
rosarium 0:2ddc0583bcec 300 }
rosarium 0:2ddc0583bcec 301
rosarium 0:2ddc0583bcec 302 /* Enables or disables filtering on multicast address */
rosarium 0:2ddc0583bcec 303 if(pxPktBasicAddresses->xFilterOnMulticastAddress == S_ENABLE)
rosarium 0:2ddc0583bcec 304 {
rosarium 0:2ddc0583bcec 305 tempRegValue[0] |= PCKT_FLT_OPTIONS_DEST_VS_MULTICAST_ADDR_MASK;
rosarium 0:2ddc0583bcec 306 }
rosarium 0:2ddc0583bcec 307 else
rosarium 0:2ddc0583bcec 308 {
rosarium 0:2ddc0583bcec 309 tempRegValue[0] &= ~PCKT_FLT_OPTIONS_DEST_VS_MULTICAST_ADDR_MASK;
rosarium 0:2ddc0583bcec 310 }
rosarium 0:2ddc0583bcec 311
rosarium 0:2ddc0583bcec 312 /* Enables or disables filtering on broadcast address */
rosarium 0:2ddc0583bcec 313 if(pxPktBasicAddresses->xFilterOnBroadcastAddress == S_ENABLE)
rosarium 0:2ddc0583bcec 314 {
rosarium 0:2ddc0583bcec 315 tempRegValue[0] |= PCKT_FLT_OPTIONS_DEST_VS_BROADCAST_ADDR_MASK;
rosarium 0:2ddc0583bcec 316 }
rosarium 0:2ddc0583bcec 317 else
rosarium 0:2ddc0583bcec 318 {
rosarium 0:2ddc0583bcec 319 tempRegValue[0] &= ~PCKT_FLT_OPTIONS_DEST_VS_BROADCAST_ADDR_MASK;
rosarium 0:2ddc0583bcec 320 }
rosarium 0:2ddc0583bcec 321
rosarium 0:2ddc0583bcec 322 /* Writes the new value on the PCKT_FLT_OPTIONS register */
rosarium 0:2ddc0583bcec 323 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 324
rosarium 0:2ddc0583bcec 325 /* Fills the array with the addresses passed in the structure */
rosarium 0:2ddc0583bcec 326 tempRegValue[0] = pxPktBasicAddresses->cBroadcastAddress;
rosarium 0:2ddc0583bcec 327 tempRegValue[1] = pxPktBasicAddresses->cMulticastAddress;
rosarium 0:2ddc0583bcec 328 tempRegValue[2] = pxPktBasicAddresses->cMyAddress;
rosarium 0:2ddc0583bcec 329
rosarium 0:2ddc0583bcec 330 /* Writes values on the PCKT_FLT_GOALS registers */
rosarium 0:2ddc0583bcec 331 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_BROADCAST_BASE, 3, tempRegValue);
rosarium 0:2ddc0583bcec 332
rosarium 0:2ddc0583bcec 333
rosarium 0:2ddc0583bcec 334 }
rosarium 0:2ddc0583bcec 335
rosarium 0:2ddc0583bcec 336
rosarium 0:2ddc0583bcec 337 /**
rosarium 0:2ddc0583bcec 338 * @brief Returns the SPIRIT Basic packet addresses structure according to the specified
rosarium 0:2ddc0583bcec 339 * parameters in the registers.
rosarium 0:2ddc0583bcec 340 * @param pxPktBasicAddresses Basic packet addresses init structure.
rosarium 0:2ddc0583bcec 341 * This parameter is a pointer to @ref PktBasicAddresses.
rosarium 0:2ddc0583bcec 342 * @retval None.
rosarium 0:2ddc0583bcec 343 */
rosarium 0:2ddc0583bcec 344 void SpiritPktBasicGetAddressesInfo(PktBasicAddressesInit* pxPktBasicAddresses)
rosarium 0:2ddc0583bcec 345 {
rosarium 0:2ddc0583bcec 346 uint8_t tempRegValue[3];
rosarium 0:2ddc0583bcec 347
rosarium 0:2ddc0583bcec 348 /* Reads values on the PCKT_FLT_GOALS registers */
rosarium 0:2ddc0583bcec 349 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_BROADCAST_BASE, 3, tempRegValue);
rosarium 0:2ddc0583bcec 350
rosarium 0:2ddc0583bcec 351 /* Fit the structure with the read addresses */
rosarium 0:2ddc0583bcec 352 pxPktBasicAddresses->cBroadcastAddress = tempRegValue[0];
rosarium 0:2ddc0583bcec 353 pxPktBasicAddresses->cMulticastAddress = tempRegValue[1];
rosarium 0:2ddc0583bcec 354 pxPktBasicAddresses->cMyAddress = tempRegValue[2];
rosarium 0:2ddc0583bcec 355
rosarium 0:2ddc0583bcec 356 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue[0]);
rosarium 0:2ddc0583bcec 357
rosarium 0:2ddc0583bcec 358 /* Fit the structure with the read filtering bits */
rosarium 0:2ddc0583bcec 359 pxPktBasicAddresses->xFilterOnBroadcastAddress = (SpiritFunctionalState)((tempRegValue[0] >> 1) & 0x01);
rosarium 0:2ddc0583bcec 360 pxPktBasicAddresses->xFilterOnMulticastAddress = (SpiritFunctionalState)((tempRegValue[0] >> 2) & 0x01);
rosarium 0:2ddc0583bcec 361 pxPktBasicAddresses->xFilterOnMyAddress = (SpiritFunctionalState)((tempRegValue[0] >> 3) & 0x01);
rosarium 0:2ddc0583bcec 362
rosarium 0:2ddc0583bcec 363 }
rosarium 0:2ddc0583bcec 364
rosarium 0:2ddc0583bcec 365
rosarium 0:2ddc0583bcec 366 /**
rosarium 0:2ddc0583bcec 367 * @brief Configures the Basic packet format as packet used by SPIRIT.
rosarium 0:2ddc0583bcec 368 * @param None.
rosarium 0:2ddc0583bcec 369 * @retval None.
rosarium 0:2ddc0583bcec 370 */
rosarium 0:2ddc0583bcec 371 void SpiritPktBasicSetFormat(void)
rosarium 0:2ddc0583bcec 372 {
rosarium 0:2ddc0583bcec 373 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 374
rosarium 0:2ddc0583bcec 375 /* Reads the register value */
rosarium 0:2ddc0583bcec 376 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 377
rosarium 0:2ddc0583bcec 378 /* Build the new value. Also set to 0 the direct RX mode bits */
rosarium 0:2ddc0583bcec 379 tempRegValue &= 0x0F;
rosarium 0:2ddc0583bcec 380 tempRegValue |= (uint8_t)PCKTCTRL3_PCKT_FRMT_BASIC;
rosarium 0:2ddc0583bcec 381
rosarium 0:2ddc0583bcec 382 /* Writes the value on the PCKTCTRL3 register */
rosarium 0:2ddc0583bcec 383 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 384
rosarium 0:2ddc0583bcec 385 /* Reads the PCKTCTRL1_BASE register */
rosarium 0:2ddc0583bcec 386 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 387
rosarium 0:2ddc0583bcec 388 /* Build the new value. Set to 0 the direct TX mode bits */
rosarium 0:2ddc0583bcec 389 tempRegValue &= 0xF3;
rosarium 0:2ddc0583bcec 390
rosarium 0:2ddc0583bcec 391 /* Writes the value on the PCKTCTRL1 register */
rosarium 0:2ddc0583bcec 392 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 393
rosarium 0:2ddc0583bcec 394 /* Reads the PROTOCOL1 register */
rosarium 0:2ddc0583bcec 395 g_xStatus = SpiritSpiReadRegisters(PROTOCOL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 396
rosarium 0:2ddc0583bcec 397 /* Mask a reserved bit */
rosarium 0:2ddc0583bcec 398 tempRegValue &= ~0x20;
rosarium 0:2ddc0583bcec 399
rosarium 0:2ddc0583bcec 400 /* Writes the value on register */
rosarium 0:2ddc0583bcec 401 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 402 }
rosarium 0:2ddc0583bcec 403
rosarium 0:2ddc0583bcec 404
rosarium 0:2ddc0583bcec 405 /**
rosarium 0:2ddc0583bcec 406 * @brief Sets the address length for SPIRIT Basic packets.
rosarium 0:2ddc0583bcec 407 * @param xAddressField length of ADDRESS in bytes.
rosarium 0:2ddc0583bcec 408 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 409 * @retval None.
rosarium 0:2ddc0583bcec 410 */
rosarium 0:2ddc0583bcec 411 void SpiritPktBasicAddressField(SpiritFunctionalState xAddressField)
rosarium 0:2ddc0583bcec 412 {
rosarium 0:2ddc0583bcec 413 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 414
rosarium 0:2ddc0583bcec 415 /* Check the parameters */
rosarium 0:2ddc0583bcec 416 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xAddressField));
rosarium 0:2ddc0583bcec 417
rosarium 0:2ddc0583bcec 418 /* Reads the PCKTCTRL4 register value */
rosarium 0:2ddc0583bcec 419 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL4_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 420
rosarium 0:2ddc0583bcec 421 /* Build the address length for the register */
rosarium 0:2ddc0583bcec 422 if(xAddressField==S_ENABLE)
rosarium 0:2ddc0583bcec 423 {
rosarium 0:2ddc0583bcec 424 tempRegValue |= 0x08;
rosarium 0:2ddc0583bcec 425 }
rosarium 0:2ddc0583bcec 426 else
rosarium 0:2ddc0583bcec 427 {
rosarium 0:2ddc0583bcec 428 tempRegValue &= 0x07;
rosarium 0:2ddc0583bcec 429 }
rosarium 0:2ddc0583bcec 430
rosarium 0:2ddc0583bcec 431 /* Writes the new value on the PCKTCTRL4 register */
rosarium 0:2ddc0583bcec 432 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL4_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 433
rosarium 0:2ddc0583bcec 434 }
rosarium 0:2ddc0583bcec 435
rosarium 0:2ddc0583bcec 436
rosarium 0:2ddc0583bcec 437 /**
rosarium 0:2ddc0583bcec 438 * @brief Specifies if the Address field for SPIRIT Basic packets is enabled or disabled.
rosarium 0:2ddc0583bcec 439 * @param None.
rosarium 0:2ddc0583bcec 440 * @retval SpiritFunctionalState Notifies if the address field is enabled or disabled.
rosarium 0:2ddc0583bcec 441 */
rosarium 0:2ddc0583bcec 442 SpiritFunctionalState SpiritPktBasicGetAddressField(void)
rosarium 0:2ddc0583bcec 443 {
rosarium 0:2ddc0583bcec 444 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 445
rosarium 0:2ddc0583bcec 446 /* Reads the PCKTCTRL4 register value */
rosarium 0:2ddc0583bcec 447 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL4_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 448
rosarium 0:2ddc0583bcec 449 /* Returns the address field value */
rosarium 0:2ddc0583bcec 450 if(tempRegValue & PCKTCTRL4_ADDRESS_LEN_MASK)
rosarium 0:2ddc0583bcec 451 {
rosarium 0:2ddc0583bcec 452 return S_ENABLE;
rosarium 0:2ddc0583bcec 453 }
rosarium 0:2ddc0583bcec 454 else
rosarium 0:2ddc0583bcec 455 {
rosarium 0:2ddc0583bcec 456 return S_DISABLE;
rosarium 0:2ddc0583bcec 457 }
rosarium 0:2ddc0583bcec 458
rosarium 0:2ddc0583bcec 459 }
rosarium 0:2ddc0583bcec 460
rosarium 0:2ddc0583bcec 461
rosarium 0:2ddc0583bcec 462 /**
rosarium 0:2ddc0583bcec 463 * @brief Sets the payload length for SPIRIT Basic packets. Since the packet length
rosarium 0:2ddc0583bcec 464 * depends from the address and the control field size, this
rosarium 0:2ddc0583bcec 465 * function reads the correspondent registers in order to determine
rosarium 0:2ddc0583bcec 466 * the correct packet length to be written.
rosarium 0:2ddc0583bcec 467 * @param nPayloadLength payload length in bytes.
rosarium 0:2ddc0583bcec 468 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 469 * @retval None.
rosarium 0:2ddc0583bcec 470 */
rosarium 0:2ddc0583bcec 471 void SpiritPktBasicSetPayloadLength(uint16_t nPayloadLength)
rosarium 0:2ddc0583bcec 472 {
rosarium 0:2ddc0583bcec 473 uint8_t tempRegValue[2];
rosarium 0:2ddc0583bcec 474 uint16_t overSize=0;
rosarium 0:2ddc0583bcec 475
rosarium 0:2ddc0583bcec 476 /* Computes the oversize (address + control) size */
rosarium 0:2ddc0583bcec 477 if(SpiritPktBasicGetAddressField())
rosarium 0:2ddc0583bcec 478 {
rosarium 0:2ddc0583bcec 479 overSize=1;
rosarium 0:2ddc0583bcec 480 }
rosarium 0:2ddc0583bcec 481 overSize += (uint16_t) SpiritPktBasicGetControlLength();
rosarium 0:2ddc0583bcec 482
rosarium 0:2ddc0583bcec 483 /* Computes PCKTLEN0 value from nPayloadLength */
rosarium 0:2ddc0583bcec 484 tempRegValue[1]=BASIC_BUILD_PCKTLEN0(nPayloadLength+overSize);
rosarium 0:2ddc0583bcec 485 /* Computes PCKTLEN1 value from nPayloadLength */
rosarium 0:2ddc0583bcec 486 tempRegValue[0]=BASIC_BUILD_PCKTLEN1(nPayloadLength+overSize);
rosarium 0:2ddc0583bcec 487
rosarium 0:2ddc0583bcec 488 /* Writes data on the PCKTLEN1/0 register */
rosarium 0:2ddc0583bcec 489 g_xStatus = SpiritSpiWriteRegisters(PCKTLEN1_BASE, 2, tempRegValue);
rosarium 0:2ddc0583bcec 490
rosarium 0:2ddc0583bcec 491 }
rosarium 0:2ddc0583bcec 492
rosarium 0:2ddc0583bcec 493
rosarium 0:2ddc0583bcec 494 /**
rosarium 0:2ddc0583bcec 495 * @brief Returns the payload length for SPIRIT Basic packets. Since the
rosarium 0:2ddc0583bcec 496 * packet length depends from the address and the control
rosarium 0:2ddc0583bcec 497 * field size, this function reads the correspondent
rosarium 0:2ddc0583bcec 498 * registers in order to determine the correct payload length
rosarium 0:2ddc0583bcec 499 * to be returned.
rosarium 0:2ddc0583bcec 500 * @param None.
rosarium 0:2ddc0583bcec 501 * @retval uint16_t Payload length in bytes.
rosarium 0:2ddc0583bcec 502 */
rosarium 0:2ddc0583bcec 503 uint16_t SpiritPktBasicGetPayloadLength(void)
rosarium 0:2ddc0583bcec 504 {
rosarium 0:2ddc0583bcec 505 uint8_t tempRegValue[2];
rosarium 0:2ddc0583bcec 506 uint16_t overSize=0;
rosarium 0:2ddc0583bcec 507
rosarium 0:2ddc0583bcec 508 /* Computes the oversize (address + control) size */
rosarium 0:2ddc0583bcec 509 if(SpiritPktBasicGetAddressField())
rosarium 0:2ddc0583bcec 510 {
rosarium 0:2ddc0583bcec 511 overSize=1;
rosarium 0:2ddc0583bcec 512 }
rosarium 0:2ddc0583bcec 513 overSize += (uint16_t) SpiritPktBasicGetControlLength();
rosarium 0:2ddc0583bcec 514
rosarium 0:2ddc0583bcec 515 /* Reads the packet length registers */
rosarium 0:2ddc0583bcec 516 g_xStatus = SpiritSpiReadRegisters(PCKTLEN1_BASE, 2, tempRegValue);
rosarium 0:2ddc0583bcec 517
rosarium 0:2ddc0583bcec 518 /* Returns the packet length */
rosarium 0:2ddc0583bcec 519 return ((((uint16_t)tempRegValue[0])<<8) + (uint16_t) tempRegValue[1]) - overSize;
rosarium 0:2ddc0583bcec 520 }
rosarium 0:2ddc0583bcec 521
rosarium 0:2ddc0583bcec 522 /**
rosarium 0:2ddc0583bcec 523 * @brief Returns the packet length field of the received packet.
rosarium 0:2ddc0583bcec 524 * @param None.
rosarium 0:2ddc0583bcec 525 * @retval uint16_t Packet length.
rosarium 0:2ddc0583bcec 526 */
rosarium 0:2ddc0583bcec 527 uint16_t SpiritPktBasicGetReceivedPktLength(void)
rosarium 0:2ddc0583bcec 528 {
rosarium 0:2ddc0583bcec 529 uint8_t tempRegValue[2];
rosarium 0:2ddc0583bcec 530 uint16_t overSize=0;
rosarium 0:2ddc0583bcec 531
rosarium 0:2ddc0583bcec 532 /* Computes the oversize (address + control) size */
rosarium 0:2ddc0583bcec 533 if(SpiritPktBasicGetAddressField())
rosarium 0:2ddc0583bcec 534 {
rosarium 0:2ddc0583bcec 535 overSize=1;
rosarium 0:2ddc0583bcec 536 }
rosarium 0:2ddc0583bcec 537 overSize += (uint16_t) SpiritPktBasicGetControlLength();
rosarium 0:2ddc0583bcec 538
rosarium 0:2ddc0583bcec 539 /* Reads the RX_PCKT_LENx registers value */
rosarium 0:2ddc0583bcec 540 g_xStatus = SpiritSpiReadRegisters(RX_PCKT_LEN1_BASE, 2, tempRegValue);
rosarium 0:2ddc0583bcec 541
rosarium 0:2ddc0583bcec 542 /* Rebuild and return the length field */
rosarium 0:2ddc0583bcec 543 return (((((uint16_t) tempRegValue[0]) << 8) + (uint16_t) tempRegValue[1]) - overSize);
rosarium 0:2ddc0583bcec 544 }
rosarium 0:2ddc0583bcec 545
rosarium 0:2ddc0583bcec 546 /**
rosarium 0:2ddc0583bcec 547 * @brief Computes and sets the variable payload length for SPIRIT Basic packets.
rosarium 0:2ddc0583bcec 548 * @param nMaxPayloadLength payload length in bytes.
rosarium 0:2ddc0583bcec 549 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 550 * @param xAddressField Enable or Disable Address Field.
rosarium 0:2ddc0583bcec 551 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 552 * @param xControlLength Control length in bytes.
rosarium 0:2ddc0583bcec 553 * This parameter can be any value of @ref BasicControlLength.
rosarium 0:2ddc0583bcec 554 * @retval None.
rosarium 0:2ddc0583bcec 555 */
rosarium 0:2ddc0583bcec 556 void SpiritPktBasicSetVarLengthWidth(uint16_t nMaxPayloadLength, SpiritFunctionalState xAddressField, BasicControlLength xControlLength)
rosarium 0:2ddc0583bcec 557 {
rosarium 0:2ddc0583bcec 558 uint8_t tempRegValue,
rosarium 0:2ddc0583bcec 559 addressLength,
rosarium 0:2ddc0583bcec 560 i;
rosarium 0:2ddc0583bcec 561 uint32_t packetLength;
rosarium 0:2ddc0583bcec 562
rosarium 0:2ddc0583bcec 563 /* Sets the address length according to xAddressField */
rosarium 0:2ddc0583bcec 564 if(xAddressField == S_ENABLE)
rosarium 0:2ddc0583bcec 565 {
rosarium 0:2ddc0583bcec 566 addressLength=1;
rosarium 0:2ddc0583bcec 567 }
rosarium 0:2ddc0583bcec 568 else
rosarium 0:2ddc0583bcec 569 {
rosarium 0:2ddc0583bcec 570 addressLength=0;
rosarium 0:2ddc0583bcec 571 }
rosarium 0:2ddc0583bcec 572
rosarium 0:2ddc0583bcec 573 /* packet length = payload length + address length + control length */
rosarium 0:2ddc0583bcec 574 packetLength=nMaxPayloadLength+addressLength+xControlLength;
rosarium 0:2ddc0583bcec 575
rosarium 0:2ddc0583bcec 576 /* Computes the number of bits */
rosarium 0:2ddc0583bcec 577 for(i=0;i<16;i++)
rosarium 0:2ddc0583bcec 578 {
rosarium 0:2ddc0583bcec 579 if(packetLength == 0) break;
rosarium 0:2ddc0583bcec 580 {
rosarium 0:2ddc0583bcec 581 packetLength >>= 1;
rosarium 0:2ddc0583bcec 582 }
rosarium 0:2ddc0583bcec 583 }
rosarium 0:2ddc0583bcec 584 i==0 ? i=1 : i;
rosarium 0:2ddc0583bcec 585
rosarium 0:2ddc0583bcec 586 /* Reads the PCKTCTRL3 register value */
rosarium 0:2ddc0583bcec 587 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 588
rosarium 0:2ddc0583bcec 589 /* Build value for the length width */
rosarium 0:2ddc0583bcec 590 tempRegValue &= ~PCKTCTRL3_LEN_WID_MASK;
rosarium 0:2ddc0583bcec 591 tempRegValue |= (uint8_t)(i-1);
rosarium 0:2ddc0583bcec 592
rosarium 0:2ddc0583bcec 593 /* Writes the PCKTCTRL3 register value */
rosarium 0:2ddc0583bcec 594 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 595
rosarium 0:2ddc0583bcec 596 }
rosarium 0:2ddc0583bcec 597
rosarium 0:2ddc0583bcec 598
rosarium 0:2ddc0583bcec 599
rosarium 0:2ddc0583bcec 600 /**
rosarium 0:2ddc0583bcec 601 *@}
rosarium 0:2ddc0583bcec 602 */
rosarium 0:2ddc0583bcec 603
rosarium 0:2ddc0583bcec 604 /**
rosarium 0:2ddc0583bcec 605 *@}
rosarium 0:2ddc0583bcec 606 */
rosarium 0:2ddc0583bcec 607
rosarium 0:2ddc0583bcec 608
rosarium 0:2ddc0583bcec 609 /**
rosarium 0:2ddc0583bcec 610 *@}
rosarium 0:2ddc0583bcec 611 */
rosarium 0:2ddc0583bcec 612
rosarium 0:2ddc0583bcec 613
rosarium 0:2ddc0583bcec 614
rosarium 0:2ddc0583bcec 615 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/