wifi test

Dependencies:   X_NUCLEO_IKS01A2 mbed-http

Committer:
JMF
Date:
Wed Sep 05 14:28:24 2018 +0000
Revision:
0:24d3eb812fd4
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:24d3eb812fd4 1 /**
JMF 0:24d3eb812fd4 2 ******************************************************************************
JMF 0:24d3eb812fd4 3 * @file SPIRIT_PktCommon.c
JMF 0:24d3eb812fd4 4 * @author VMA division - AMS
JMF 0:24d3eb812fd4 5 * @version 3.2.2
JMF 0:24d3eb812fd4 6 * @date 08-July-2015
JMF 0:24d3eb812fd4 7 * @brief Configuration and management of the common features of SPIRIT packets.
JMF 0:24d3eb812fd4 8 * @details
JMF 0:24d3eb812fd4 9 *
JMF 0:24d3eb812fd4 10 * @attention
JMF 0:24d3eb812fd4 11 *
JMF 0:24d3eb812fd4 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
JMF 0:24d3eb812fd4 13 *
JMF 0:24d3eb812fd4 14 * Redistribution and use in source and binary forms, with or without modification,
JMF 0:24d3eb812fd4 15 * are permitted provided that the following conditions are met:
JMF 0:24d3eb812fd4 16 * 1. Redistributions of source code must retain the above copyright notice,
JMF 0:24d3eb812fd4 17 * this list of conditions and the following disclaimer.
JMF 0:24d3eb812fd4 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
JMF 0:24d3eb812fd4 19 * this list of conditions and the following disclaimer in the documentation
JMF 0:24d3eb812fd4 20 * and/or other materials provided with the distribution.
JMF 0:24d3eb812fd4 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
JMF 0:24d3eb812fd4 22 * may be used to endorse or promote products derived from this software
JMF 0:24d3eb812fd4 23 * without specific prior written permission.
JMF 0:24d3eb812fd4 24 *
JMF 0:24d3eb812fd4 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
JMF 0:24d3eb812fd4 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
JMF 0:24d3eb812fd4 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
JMF 0:24d3eb812fd4 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
JMF 0:24d3eb812fd4 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
JMF 0:24d3eb812fd4 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
JMF 0:24d3eb812fd4 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
JMF 0:24d3eb812fd4 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
JMF 0:24d3eb812fd4 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
JMF 0:24d3eb812fd4 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
JMF 0:24d3eb812fd4 35 *
JMF 0:24d3eb812fd4 36 ******************************************************************************
JMF 0:24d3eb812fd4 37 */
JMF 0:24d3eb812fd4 38
JMF 0:24d3eb812fd4 39 /* Includes ------------------------------------------------------------------*/
JMF 0:24d3eb812fd4 40 #include "SPIRIT_PktCommon.h"
JMF 0:24d3eb812fd4 41 #include "MCU_Interface.h"
JMF 0:24d3eb812fd4 42
JMF 0:24d3eb812fd4 43
JMF 0:24d3eb812fd4 44 /**
JMF 0:24d3eb812fd4 45 * @addtogroup SPIRIT_Libraries
JMF 0:24d3eb812fd4 46 * @{
JMF 0:24d3eb812fd4 47 */
JMF 0:24d3eb812fd4 48
JMF 0:24d3eb812fd4 49
JMF 0:24d3eb812fd4 50 /**
JMF 0:24d3eb812fd4 51 * @addtogroup SPIRIT_PktCommon
JMF 0:24d3eb812fd4 52 * @{
JMF 0:24d3eb812fd4 53 */
JMF 0:24d3eb812fd4 54
JMF 0:24d3eb812fd4 55
JMF 0:24d3eb812fd4 56 /**
JMF 0:24d3eb812fd4 57 * @defgroup PktCommon_Private_TypesDefinitions Pkt Common Private Types Definitions
JMF 0:24d3eb812fd4 58 * @{
JMF 0:24d3eb812fd4 59 */
JMF 0:24d3eb812fd4 60
JMF 0:24d3eb812fd4 61 /**
JMF 0:24d3eb812fd4 62 *@}
JMF 0:24d3eb812fd4 63 */
JMF 0:24d3eb812fd4 64
JMF 0:24d3eb812fd4 65
JMF 0:24d3eb812fd4 66 /**
JMF 0:24d3eb812fd4 67 * @defgroup PktCommon_Private_Defines Pkt Common Private Defines
JMF 0:24d3eb812fd4 68 * @{
JMF 0:24d3eb812fd4 69 */
JMF 0:24d3eb812fd4 70
JMF 0:24d3eb812fd4 71 /**
JMF 0:24d3eb812fd4 72 *@}
JMF 0:24d3eb812fd4 73 */
JMF 0:24d3eb812fd4 74
JMF 0:24d3eb812fd4 75
JMF 0:24d3eb812fd4 76 /**
JMF 0:24d3eb812fd4 77 * @defgroup PktCommon_Private_Macros Pkt Common Private Macros
JMF 0:24d3eb812fd4 78 * @{
JMF 0:24d3eb812fd4 79 */
JMF 0:24d3eb812fd4 80
JMF 0:24d3eb812fd4 81 /**
JMF 0:24d3eb812fd4 82 *@}
JMF 0:24d3eb812fd4 83 */
JMF 0:24d3eb812fd4 84
JMF 0:24d3eb812fd4 85
JMF 0:24d3eb812fd4 86 /**
JMF 0:24d3eb812fd4 87 * @defgroup PktCommon_Private_Variables Pkt Common Private Variables
JMF 0:24d3eb812fd4 88 * @{
JMF 0:24d3eb812fd4 89 */
JMF 0:24d3eb812fd4 90
JMF 0:24d3eb812fd4 91 /**
JMF 0:24d3eb812fd4 92 *@}
JMF 0:24d3eb812fd4 93 */
JMF 0:24d3eb812fd4 94
JMF 0:24d3eb812fd4 95
JMF 0:24d3eb812fd4 96
JMF 0:24d3eb812fd4 97 /**
JMF 0:24d3eb812fd4 98 * @defgroup PktCommon_Private_FunctionPrototypes Pkt Common Private Function Prototypes
JMF 0:24d3eb812fd4 99 * @{
JMF 0:24d3eb812fd4 100 */
JMF 0:24d3eb812fd4 101
JMF 0:24d3eb812fd4 102 /**
JMF 0:24d3eb812fd4 103 *@}
JMF 0:24d3eb812fd4 104 */
JMF 0:24d3eb812fd4 105
JMF 0:24d3eb812fd4 106
JMF 0:24d3eb812fd4 107 /**
JMF 0:24d3eb812fd4 108 * @defgroup PktCommon_Private_Functions Pkt Common Private Functions
JMF 0:24d3eb812fd4 109 * @{
JMF 0:24d3eb812fd4 110 */
JMF 0:24d3eb812fd4 111
JMF 0:24d3eb812fd4 112 /**
JMF 0:24d3eb812fd4 113 * @brief Sets the CONTROL field length for SPIRIT packets.
JMF 0:24d3eb812fd4 114 * @param xControlLength length of CONTROL field in bytes.
JMF 0:24d3eb812fd4 115 * This parameter can be any value of @ref PktControlLength.
JMF 0:24d3eb812fd4 116 * @retval None.
JMF 0:24d3eb812fd4 117 */
JMF 0:24d3eb812fd4 118 void SpiritPktCommonSetControlLength(PktControlLength xControlLength)
JMF 0:24d3eb812fd4 119 {
JMF 0:24d3eb812fd4 120 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 121
JMF 0:24d3eb812fd4 122 /* Check the parameters */
JMF 0:24d3eb812fd4 123 s_assert_param(IS_PKT_CONTROL_LENGTH(xControlLength));
JMF 0:24d3eb812fd4 124
JMF 0:24d3eb812fd4 125 /* Reads the PCKTCTRL4 register value */
JMF 0:24d3eb812fd4 126 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL4_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 127
JMF 0:24d3eb812fd4 128 /* Set the control length */
JMF 0:24d3eb812fd4 129 tempRegValue &= ~PCKTCTRL4_CONTROL_LEN_MASK;
JMF 0:24d3eb812fd4 130 tempRegValue |= (uint8_t)xControlLength;
JMF 0:24d3eb812fd4 131
JMF 0:24d3eb812fd4 132 /* Writes the new value on the PCKTCTRL4 register */
JMF 0:24d3eb812fd4 133 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL4_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 134 }
JMF 0:24d3eb812fd4 135
JMF 0:24d3eb812fd4 136
JMF 0:24d3eb812fd4 137 /**
JMF 0:24d3eb812fd4 138 * @brief Returns the CONTROL field length for SPIRIT packets.
JMF 0:24d3eb812fd4 139 * @param None.
JMF 0:24d3eb812fd4 140 * @retval uint8_t Control field length.
JMF 0:24d3eb812fd4 141 */
JMF 0:24d3eb812fd4 142 uint8_t SpiritPktCommonGetControlLength(void)
JMF 0:24d3eb812fd4 143 {
JMF 0:24d3eb812fd4 144 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 145
JMF 0:24d3eb812fd4 146 /* Reads the PCKTCTRL4 register value */
JMF 0:24d3eb812fd4 147 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL4_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 148
JMF 0:24d3eb812fd4 149 /* Rebuild and return value */
JMF 0:24d3eb812fd4 150 return (tempRegValue & PCKTCTRL4_CONTROL_LEN_MASK);
JMF 0:24d3eb812fd4 151 }
JMF 0:24d3eb812fd4 152
JMF 0:24d3eb812fd4 153
JMF 0:24d3eb812fd4 154 /**
JMF 0:24d3eb812fd4 155 * @brief Sets the PREAMBLE field Length mode for SPIRIT packets.
JMF 0:24d3eb812fd4 156 * @param xPreambleLength length of PREAMBLE field in bytes.
JMF 0:24d3eb812fd4 157 * This parameter can be any value of @ref PktPreambleLength.
JMF 0:24d3eb812fd4 158 * @retval None.
JMF 0:24d3eb812fd4 159 */
JMF 0:24d3eb812fd4 160 void SpiritPktCommonSetPreambleLength(PktPreambleLength xPreambleLength)
JMF 0:24d3eb812fd4 161 {
JMF 0:24d3eb812fd4 162 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 163
JMF 0:24d3eb812fd4 164 /* Check the parameters */
JMF 0:24d3eb812fd4 165 s_assert_param(IS_PKT_PREAMBLE_LENGTH(xPreambleLength));
JMF 0:24d3eb812fd4 166
JMF 0:24d3eb812fd4 167 /* Reads the PCKTCTRL2 register value */
JMF 0:24d3eb812fd4 168 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 169
JMF 0:24d3eb812fd4 170 /* Set the preamble length */
JMF 0:24d3eb812fd4 171 tempRegValue &= ~PCKTCTRL2_PREAMBLE_LENGTH_MASK;
JMF 0:24d3eb812fd4 172 tempRegValue |= (uint8_t)xPreambleLength;
JMF 0:24d3eb812fd4 173
JMF 0:24d3eb812fd4 174 /* Writes the new value on the PCKTCTRL2 register */
JMF 0:24d3eb812fd4 175 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 176 }
JMF 0:24d3eb812fd4 177
JMF 0:24d3eb812fd4 178
JMF 0:24d3eb812fd4 179 /**
JMF 0:24d3eb812fd4 180 * @brief Returns the PREAMBLE field Length mode for SPIRIT packets.
JMF 0:24d3eb812fd4 181 * @param None.
JMF 0:24d3eb812fd4 182 * @retval uint8_t Preamble field length in bytes.
JMF 0:24d3eb812fd4 183 */
JMF 0:24d3eb812fd4 184 uint8_t SpiritPktCommonGetPreambleLength(void)
JMF 0:24d3eb812fd4 185 {
JMF 0:24d3eb812fd4 186 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 187
JMF 0:24d3eb812fd4 188 /* Reads the PCKTCTRL2 register value */
JMF 0:24d3eb812fd4 189 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 190
JMF 0:24d3eb812fd4 191 /* Rebuild and return value */
JMF 0:24d3eb812fd4 192 return ((tempRegValue & PCKTCTRL2_PREAMBLE_LENGTH_MASK)>>3) + 1;
JMF 0:24d3eb812fd4 193
JMF 0:24d3eb812fd4 194 }
JMF 0:24d3eb812fd4 195
JMF 0:24d3eb812fd4 196
JMF 0:24d3eb812fd4 197 /**
JMF 0:24d3eb812fd4 198 * @brief Sets the SYNC field Length for SPIRIT packets.
JMF 0:24d3eb812fd4 199 * @param xSyncLength length of SYNC field in bytes.
JMF 0:24d3eb812fd4 200 * This parameter can be any value of @ref PktSyncLength.
JMF 0:24d3eb812fd4 201 * @retval None.
JMF 0:24d3eb812fd4 202 */
JMF 0:24d3eb812fd4 203 void SpiritPktCommonSetSyncLength(PktSyncLength xSyncLength)
JMF 0:24d3eb812fd4 204 {
JMF 0:24d3eb812fd4 205 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 206
JMF 0:24d3eb812fd4 207 /* Check the parameters */
JMF 0:24d3eb812fd4 208 s_assert_param(IS_PKT_SYNC_LENGTH(xSyncLength));
JMF 0:24d3eb812fd4 209
JMF 0:24d3eb812fd4 210 /* Reads the PCKTCTRL2 register value */
JMF 0:24d3eb812fd4 211 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 212
JMF 0:24d3eb812fd4 213 /* Set the sync length */
JMF 0:24d3eb812fd4 214 tempRegValue &= ~PCKTCTRL2_SYNC_LENGTH_MASK;
JMF 0:24d3eb812fd4 215 tempRegValue |= (uint8_t)xSyncLength;
JMF 0:24d3eb812fd4 216
JMF 0:24d3eb812fd4 217 /* Writes the new value on the PCKTCTRL2 register */
JMF 0:24d3eb812fd4 218 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 219
JMF 0:24d3eb812fd4 220 }
JMF 0:24d3eb812fd4 221
JMF 0:24d3eb812fd4 222
JMF 0:24d3eb812fd4 223 /**
JMF 0:24d3eb812fd4 224 * @brief Returns the SYNC field Length for SPIRIT packets.
JMF 0:24d3eb812fd4 225 * @param None.
JMF 0:24d3eb812fd4 226 * @retval uint8_t Sync field length in bytes.
JMF 0:24d3eb812fd4 227 */
JMF 0:24d3eb812fd4 228 uint8_t SpiritPktCommonGetSyncLength(void)
JMF 0:24d3eb812fd4 229 {
JMF 0:24d3eb812fd4 230 uint8_t tempRetValue;
JMF 0:24d3eb812fd4 231
JMF 0:24d3eb812fd4 232 /* Reads the PCKTCTRL2 register value */
JMF 0:24d3eb812fd4 233 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL2_BASE, 1, &tempRetValue);
JMF 0:24d3eb812fd4 234
JMF 0:24d3eb812fd4 235 /* Rebuild and return value */
JMF 0:24d3eb812fd4 236 return ((tempRetValue & PCKTCTRL2_SYNC_LENGTH_MASK)>>1) + 1;
JMF 0:24d3eb812fd4 237
JMF 0:24d3eb812fd4 238 }
JMF 0:24d3eb812fd4 239
JMF 0:24d3eb812fd4 240
JMF 0:24d3eb812fd4 241 /**
JMF 0:24d3eb812fd4 242 * @brief Sets fixed or variable payload length mode for SPIRIT packets.
JMF 0:24d3eb812fd4 243 * @param xFixVarLength variable or fixed length.
JMF 0:24d3eb812fd4 244 * PKT_FIXED_LENGTH_VAR -> variable (the length is extracted from the received packet).
JMF 0:24d3eb812fd4 245 * PKT_FIXED_LENGTH_FIX -> fix (the length is set by PCKTLEN0 and PCKTLEN1).
JMF 0:24d3eb812fd4 246 * @retval None.
JMF 0:24d3eb812fd4 247 */
JMF 0:24d3eb812fd4 248 void SpiritPktCommonSetFixVarLength(PktFixVarLength xFixVarLength)
JMF 0:24d3eb812fd4 249 {
JMF 0:24d3eb812fd4 250 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 251
JMF 0:24d3eb812fd4 252 /* Check the parameters */
JMF 0:24d3eb812fd4 253 s_assert_param(IS_PKT_FIX_VAR_LENGTH(xFixVarLength));
JMF 0:24d3eb812fd4 254
JMF 0:24d3eb812fd4 255 /* Reads the PCKTCTRL2 register value */
JMF 0:24d3eb812fd4 256 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 257
JMF 0:24d3eb812fd4 258 /* Set fixed or variable address mode */
JMF 0:24d3eb812fd4 259 tempRegValue &= ~PCKTCTRL2_FIX_VAR_LEN_MASK;
JMF 0:24d3eb812fd4 260 tempRegValue |= (uint8_t)xFixVarLength;
JMF 0:24d3eb812fd4 261
JMF 0:24d3eb812fd4 262 /* Writes the new value on the PCKTCTRL2 register */
JMF 0:24d3eb812fd4 263 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 264
JMF 0:24d3eb812fd4 265 }
JMF 0:24d3eb812fd4 266
JMF 0:24d3eb812fd4 267
JMF 0:24d3eb812fd4 268 /**
JMF 0:24d3eb812fd4 269 * @brief Enables or Disables the filtering on CRC.
JMF 0:24d3eb812fd4 270 * @param xNewState new state for CRC_CHECK.
JMF 0:24d3eb812fd4 271 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 272 * @retval None.
JMF 0:24d3eb812fd4 273 */
JMF 0:24d3eb812fd4 274 void SpiritPktCommonFilterOnCrc(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 275 {
JMF 0:24d3eb812fd4 276 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 277
JMF 0:24d3eb812fd4 278 /* Check the parameters */
JMF 0:24d3eb812fd4 279 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 280
JMF 0:24d3eb812fd4 281 /* Reads the PCKT_FLT_OPTIONS register value */
JMF 0:24d3eb812fd4 282 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 283
JMF 0:24d3eb812fd4 284 /* Modify the register value: enable or disable the CRC filtering */
JMF 0:24d3eb812fd4 285 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 286 {
JMF 0:24d3eb812fd4 287 tempRegValue |= PCKT_FLT_OPTIONS_CRC_CHECK_MASK;
JMF 0:24d3eb812fd4 288 }
JMF 0:24d3eb812fd4 289 else
JMF 0:24d3eb812fd4 290 {
JMF 0:24d3eb812fd4 291 tempRegValue &= ~PCKT_FLT_OPTIONS_CRC_CHECK_MASK;
JMF 0:24d3eb812fd4 292 }
JMF 0:24d3eb812fd4 293
JMF 0:24d3eb812fd4 294 /* Writes the PCKT_FLT_OPTIONS register value */
JMF 0:24d3eb812fd4 295 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 296
JMF 0:24d3eb812fd4 297 }
JMF 0:24d3eb812fd4 298
JMF 0:24d3eb812fd4 299
JMF 0:24d3eb812fd4 300 /**
JMF 0:24d3eb812fd4 301 * @brief Returns the CRC filtering enable bit.
JMF 0:24d3eb812fd4 302 * @param None.
JMF 0:24d3eb812fd4 303 * @retval SpiritFunctionalState CRC filtering.
JMF 0:24d3eb812fd4 304 */
JMF 0:24d3eb812fd4 305 SpiritFunctionalState SpiritPktCommonGetFilterOnCrc(void)
JMF 0:24d3eb812fd4 306 {
JMF 0:24d3eb812fd4 307 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 308
JMF 0:24d3eb812fd4 309
JMF 0:24d3eb812fd4 310 /* Reads the PCKT_FLT_OPTIONS register value */
JMF 0:24d3eb812fd4 311 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 312
JMF 0:24d3eb812fd4 313 /* Check the CRC filtering bit */
JMF 0:24d3eb812fd4 314 if(tempRegValue & PCKT_FLT_OPTIONS_CRC_CHECK_MASK)
JMF 0:24d3eb812fd4 315 {
JMF 0:24d3eb812fd4 316 return S_ENABLE;
JMF 0:24d3eb812fd4 317 }
JMF 0:24d3eb812fd4 318 else
JMF 0:24d3eb812fd4 319 {
JMF 0:24d3eb812fd4 320 return S_DISABLE;
JMF 0:24d3eb812fd4 321 }
JMF 0:24d3eb812fd4 322
JMF 0:24d3eb812fd4 323 }
JMF 0:24d3eb812fd4 324
JMF 0:24d3eb812fd4 325
JMF 0:24d3eb812fd4 326 /**
JMF 0:24d3eb812fd4 327 * @brief Sets the CRC mode for SPIRIT packets.
JMF 0:24d3eb812fd4 328 * @param xCrcMode length of CRC field in bytes.
JMF 0:24d3eb812fd4 329 * This parameter can be any value of @ref PktCrcMode.
JMF 0:24d3eb812fd4 330 * @retval None.
JMF 0:24d3eb812fd4 331 */
JMF 0:24d3eb812fd4 332 void SpiritPktCommonSetCrcMode(PktCrcMode xCrcMode)
JMF 0:24d3eb812fd4 333 {
JMF 0:24d3eb812fd4 334 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 335
JMF 0:24d3eb812fd4 336 /* Check the parameters */
JMF 0:24d3eb812fd4 337 s_assert_param(IS_PKT_CRC_MODE(xCrcMode));
JMF 0:24d3eb812fd4 338
JMF 0:24d3eb812fd4 339 /* Reads the PCKTCTRL1 register value */
JMF 0:24d3eb812fd4 340 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 341
JMF 0:24d3eb812fd4 342 /* Build data to write setting the CRC mode */
JMF 0:24d3eb812fd4 343 tempRegValue &= ~PCKTCTRL1_CRC_MODE_MASK;
JMF 0:24d3eb812fd4 344 tempRegValue |= (uint8_t)xCrcMode;
JMF 0:24d3eb812fd4 345
JMF 0:24d3eb812fd4 346 /* Writes the new value on the PCKTCTRL1 register */
JMF 0:24d3eb812fd4 347 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 348
JMF 0:24d3eb812fd4 349 }
JMF 0:24d3eb812fd4 350
JMF 0:24d3eb812fd4 351
JMF 0:24d3eb812fd4 352 /**
JMF 0:24d3eb812fd4 353 * @brief Returns the CRC mode for SPIRIT packets.
JMF 0:24d3eb812fd4 354 * @param None.
JMF 0:24d3eb812fd4 355 * @retval PktCrcMode Crc mode.
JMF 0:24d3eb812fd4 356 */
JMF 0:24d3eb812fd4 357 PktCrcMode SpiritPktCommonGetCrcMode(void)
JMF 0:24d3eb812fd4 358 {
JMF 0:24d3eb812fd4 359 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 360
JMF 0:24d3eb812fd4 361 /* Reads the PCKTCTRL1 register */
JMF 0:24d3eb812fd4 362 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 363
JMF 0:24d3eb812fd4 364 /* Rebuild and return value */
JMF 0:24d3eb812fd4 365 return (PktCrcMode)(tempRegValue & 0xE0);
JMF 0:24d3eb812fd4 366
JMF 0:24d3eb812fd4 367 }
JMF 0:24d3eb812fd4 368
JMF 0:24d3eb812fd4 369
JMF 0:24d3eb812fd4 370 /**
JMF 0:24d3eb812fd4 371 * @brief Enables or Disables WHITENING for SPIRIT packets.
JMF 0:24d3eb812fd4 372 * @param xNewState new state for WHITENING mode.
JMF 0:24d3eb812fd4 373 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 374 * @retval None.
JMF 0:24d3eb812fd4 375 */
JMF 0:24d3eb812fd4 376 void SpiritPktCommonWhitening(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 377 {
JMF 0:24d3eb812fd4 378 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 379
JMF 0:24d3eb812fd4 380 /* Check the parameters */
JMF 0:24d3eb812fd4 381 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 382
JMF 0:24d3eb812fd4 383 /* Reads the PCKTCTRL1 register value */
JMF 0:24d3eb812fd4 384 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 385
JMF 0:24d3eb812fd4 386 /* Build data to write: set or reset the whitening enable bit */
JMF 0:24d3eb812fd4 387 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 388 {
JMF 0:24d3eb812fd4 389 tempRegValue |= PCKTCTRL1_WHIT_MASK;
JMF 0:24d3eb812fd4 390 }
JMF 0:24d3eb812fd4 391 else
JMF 0:24d3eb812fd4 392 {
JMF 0:24d3eb812fd4 393 tempRegValue &= ~PCKTCTRL1_WHIT_MASK;
JMF 0:24d3eb812fd4 394 }
JMF 0:24d3eb812fd4 395
JMF 0:24d3eb812fd4 396 /* Writes the new value on the PCKTCTRL1 register */
JMF 0:24d3eb812fd4 397 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 398
JMF 0:24d3eb812fd4 399 }
JMF 0:24d3eb812fd4 400
JMF 0:24d3eb812fd4 401
JMF 0:24d3eb812fd4 402 /**
JMF 0:24d3eb812fd4 403 * @brief Enables or Disables FEC for SPIRIT packets.
JMF 0:24d3eb812fd4 404 * @param xNewState new state for FEC mode.
JMF 0:24d3eb812fd4 405 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 406 * @retval None.
JMF 0:24d3eb812fd4 407 */
JMF 0:24d3eb812fd4 408 void SpiritPktCommonFec(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 409 {
JMF 0:24d3eb812fd4 410 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 411
JMF 0:24d3eb812fd4 412 /* Check the parameters */
JMF 0:24d3eb812fd4 413 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 414
JMF 0:24d3eb812fd4 415 /* Reads the PCKTCTRL1 register value */
JMF 0:24d3eb812fd4 416 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 417
JMF 0:24d3eb812fd4 418 /* Build data to write: set or reset the FEC enable bit */
JMF 0:24d3eb812fd4 419 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 420 {
JMF 0:24d3eb812fd4 421 tempRegValue |= PCKTCTRL1_FEC_MASK;
JMF 0:24d3eb812fd4 422 }
JMF 0:24d3eb812fd4 423 else
JMF 0:24d3eb812fd4 424 {
JMF 0:24d3eb812fd4 425 tempRegValue &= ~PCKTCTRL1_FEC_MASK;
JMF 0:24d3eb812fd4 426 }
JMF 0:24d3eb812fd4 427
JMF 0:24d3eb812fd4 428 /* Writes data on the PCKTCTRL1 register */
JMF 0:24d3eb812fd4 429 g_xStatus = SpiritSpiWriteRegisters(PCKTCTRL1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 430
JMF 0:24d3eb812fd4 431 }
JMF 0:24d3eb812fd4 432
JMF 0:24d3eb812fd4 433
JMF 0:24d3eb812fd4 434 /**
JMF 0:24d3eb812fd4 435 * @brief Sets a specific SYNC word for SPIRIT packets.
JMF 0:24d3eb812fd4 436 * @param xSyncX SYNC word number to be set.
JMF 0:24d3eb812fd4 437 * This parameter can be any value of @ref PktSyncX.
JMF 0:24d3eb812fd4 438 * @param cSyncWord SYNC word.
JMF 0:24d3eb812fd4 439 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 440 * @retval None.
JMF 0:24d3eb812fd4 441 */
JMF 0:24d3eb812fd4 442 void SpiritPktCommonSetSyncxWord(PktSyncX xSyncX , uint8_t cSyncWord)
JMF 0:24d3eb812fd4 443 {
JMF 0:24d3eb812fd4 444 uint8_t tempRegAddress;
JMF 0:24d3eb812fd4 445
JMF 0:24d3eb812fd4 446 /* Check the parameters */
JMF 0:24d3eb812fd4 447 s_assert_param(IS_PKT_SYNCx(xSyncX));
JMF 0:24d3eb812fd4 448
JMF 0:24d3eb812fd4 449 /* Set the specified address */
JMF 0:24d3eb812fd4 450 switch(xSyncX)
JMF 0:24d3eb812fd4 451 {
JMF 0:24d3eb812fd4 452 case PKT_SYNC_WORD_1:
JMF 0:24d3eb812fd4 453 tempRegAddress=SYNC1_BASE;
JMF 0:24d3eb812fd4 454 break;
JMF 0:24d3eb812fd4 455 case PKT_SYNC_WORD_2:
JMF 0:24d3eb812fd4 456 tempRegAddress=SYNC2_BASE;
JMF 0:24d3eb812fd4 457 break;
JMF 0:24d3eb812fd4 458 case PKT_SYNC_WORD_3:
JMF 0:24d3eb812fd4 459 tempRegAddress=SYNC3_BASE;
JMF 0:24d3eb812fd4 460 break;
JMF 0:24d3eb812fd4 461 default:
JMF 0:24d3eb812fd4 462 tempRegAddress=SYNC4_BASE;
JMF 0:24d3eb812fd4 463 break;
JMF 0:24d3eb812fd4 464 }
JMF 0:24d3eb812fd4 465
JMF 0:24d3eb812fd4 466 /* Writes value on the selected register */
JMF 0:24d3eb812fd4 467 g_xStatus = SpiritSpiWriteRegisters(tempRegAddress, 1, &cSyncWord);
JMF 0:24d3eb812fd4 468
JMF 0:24d3eb812fd4 469 }
JMF 0:24d3eb812fd4 470
JMF 0:24d3eb812fd4 471
JMF 0:24d3eb812fd4 472 /**
JMF 0:24d3eb812fd4 473 * @brief Returns a specific SYNC word for SPIRIT packets.
JMF 0:24d3eb812fd4 474 * @param xSyncX SYNC word number to be get.
JMF 0:24d3eb812fd4 475 * This parameter can be any value of @ref PktSyncX.
JMF 0:24d3eb812fd4 476 * @retval uint8_t Sync word x.
JMF 0:24d3eb812fd4 477 */
JMF 0:24d3eb812fd4 478 uint8_t SpiritPktCommonGetSyncxWord(PktSyncX xSyncX)
JMF 0:24d3eb812fd4 479 {
JMF 0:24d3eb812fd4 480 uint8_t tempRegAddress, tempRegValue;
JMF 0:24d3eb812fd4 481
JMF 0:24d3eb812fd4 482 /* Check the parameters */
JMF 0:24d3eb812fd4 483 s_assert_param(IS_PKT_SYNCx(xSyncX));
JMF 0:24d3eb812fd4 484
JMF 0:24d3eb812fd4 485 /* Set the specified address */
JMF 0:24d3eb812fd4 486 switch(xSyncX)
JMF 0:24d3eb812fd4 487 {
JMF 0:24d3eb812fd4 488 case PKT_SYNC_WORD_1:
JMF 0:24d3eb812fd4 489 tempRegAddress=SYNC1_BASE;
JMF 0:24d3eb812fd4 490 break;
JMF 0:24d3eb812fd4 491 case PKT_SYNC_WORD_2:
JMF 0:24d3eb812fd4 492 tempRegAddress=SYNC2_BASE;
JMF 0:24d3eb812fd4 493 break;
JMF 0:24d3eb812fd4 494 case PKT_SYNC_WORD_3:
JMF 0:24d3eb812fd4 495 tempRegAddress=SYNC3_BASE;
JMF 0:24d3eb812fd4 496 break;
JMF 0:24d3eb812fd4 497 default:
JMF 0:24d3eb812fd4 498 tempRegAddress=SYNC4_BASE;
JMF 0:24d3eb812fd4 499 break;
JMF 0:24d3eb812fd4 500 }
JMF 0:24d3eb812fd4 501
JMF 0:24d3eb812fd4 502 /* Reads the selected register value */
JMF 0:24d3eb812fd4 503 g_xStatus = SpiritSpiReadRegisters(tempRegAddress, 1, &tempRegValue);
JMF 0:24d3eb812fd4 504
JMF 0:24d3eb812fd4 505 /* Returns the read value */
JMF 0:24d3eb812fd4 506 return tempRegValue;
JMF 0:24d3eb812fd4 507
JMF 0:24d3eb812fd4 508 }
JMF 0:24d3eb812fd4 509
JMF 0:24d3eb812fd4 510
JMF 0:24d3eb812fd4 511 /**
JMF 0:24d3eb812fd4 512 * @brief Sets multiple SYNC words for SPIRIT packets.
JMF 0:24d3eb812fd4 513 * @param lSyncWords SYNC words to be set with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
JMF 0:24d3eb812fd4 514 * This parameter is a uint32_t.
JMF 0:24d3eb812fd4 515 * @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
JMF 0:24d3eb812fd4 516 * until the number of bytes in xSyncLength has been stored.
JMF 0:24d3eb812fd4 517 * This parameter is a @ref PktSyncLength.
JMF 0:24d3eb812fd4 518 * @retval None.
JMF 0:24d3eb812fd4 519 */
JMF 0:24d3eb812fd4 520 void SpiritPktCommonSetSyncWords(uint32_t lSyncWords, PktSyncLength xSyncLength)
JMF 0:24d3eb812fd4 521 {
JMF 0:24d3eb812fd4 522 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 523
JMF 0:24d3eb812fd4 524 /* Split the 32-bit value in 4 8-bit values */
JMF 0:24d3eb812fd4 525 for(uint8_t i=0 ; i<4 ; i++)
JMF 0:24d3eb812fd4 526 {
JMF 0:24d3eb812fd4 527 if(i< ((3-xSyncLength) >>1) )
JMF 0:24d3eb812fd4 528 {
JMF 0:24d3eb812fd4 529 tempRegValue[i]=0;
JMF 0:24d3eb812fd4 530 }
JMF 0:24d3eb812fd4 531 else
JMF 0:24d3eb812fd4 532 {
JMF 0:24d3eb812fd4 533 tempRegValue[i]=(uint8_t)(lSyncWords>>(8*i));
JMF 0:24d3eb812fd4 534 }
JMF 0:24d3eb812fd4 535 }
JMF 0:24d3eb812fd4 536
JMF 0:24d3eb812fd4 537 /* Writes SYNC value on the SYNCx registers */
JMF 0:24d3eb812fd4 538 g_xStatus = SpiritSpiWriteRegisters(SYNC4_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 539
JMF 0:24d3eb812fd4 540 }
JMF 0:24d3eb812fd4 541
JMF 0:24d3eb812fd4 542
JMF 0:24d3eb812fd4 543 /**
JMF 0:24d3eb812fd4 544 * @brief Returns multiple SYNC words for SPIRIT packets.
JMF 0:24d3eb812fd4 545 * @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
JMF 0:24d3eb812fd4 546 * until the number of bytes in xSyncLength has been stored.
JMF 0:24d3eb812fd4 547 * This parameter is a pointer to @ref PktSyncLength.
JMF 0:24d3eb812fd4 548 * @retval uint32_t Sync words. The format of the read 32 bit word is 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
JMF 0:24d3eb812fd4 549 */
JMF 0:24d3eb812fd4 550 uint32_t SpiritPktCommonGetSyncWords(PktSyncLength xSyncLength)
JMF 0:24d3eb812fd4 551 {
JMF 0:24d3eb812fd4 552 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 553 uint32_t tempRetValue=0;
JMF 0:24d3eb812fd4 554
JMF 0:24d3eb812fd4 555 /* Reads the SYNCx registers value */
JMF 0:24d3eb812fd4 556 g_xStatus = SpiritSpiReadRegisters(SYNC4_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 557
JMF 0:24d3eb812fd4 558 /* Rebuild the SYNC words */
JMF 0:24d3eb812fd4 559 for(uint8_t i=0 ; i<4 ; i++)
JMF 0:24d3eb812fd4 560 {
JMF 0:24d3eb812fd4 561 if(i>2-(xSyncLength >>1))
JMF 0:24d3eb812fd4 562 {
JMF 0:24d3eb812fd4 563 tempRetValue |= tempRegValue[i]<<(8*i);
JMF 0:24d3eb812fd4 564 }
JMF 0:24d3eb812fd4 565 }
JMF 0:24d3eb812fd4 566
JMF 0:24d3eb812fd4 567 /* Return SYNC words */
JMF 0:24d3eb812fd4 568 return tempRetValue;
JMF 0:24d3eb812fd4 569
JMF 0:24d3eb812fd4 570 }
JMF 0:24d3eb812fd4 571
JMF 0:24d3eb812fd4 572
JMF 0:24d3eb812fd4 573 /**
JMF 0:24d3eb812fd4 574 * @brief Returns the variable length width (in number of bits).
JMF 0:24d3eb812fd4 575 * @param None.
JMF 0:24d3eb812fd4 576 * @retval uint8_t Variable length width in bits.
JMF 0:24d3eb812fd4 577 */
JMF 0:24d3eb812fd4 578 uint8_t SpiritPktCommonGetVarLengthWidth(void)
JMF 0:24d3eb812fd4 579 {
JMF 0:24d3eb812fd4 580 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 581
JMF 0:24d3eb812fd4 582 /* Reads the PCKTCTRL3 register value */
JMF 0:24d3eb812fd4 583 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 584
JMF 0:24d3eb812fd4 585 /* Rebuild and return value */
JMF 0:24d3eb812fd4 586 return (tempRegValue & PCKTCTRL3_LEN_WID_MASK)+1;
JMF 0:24d3eb812fd4 587
JMF 0:24d3eb812fd4 588 }
JMF 0:24d3eb812fd4 589
JMF 0:24d3eb812fd4 590
JMF 0:24d3eb812fd4 591 /**
JMF 0:24d3eb812fd4 592 * @brief Sets the destination address for the Tx packet.
JMF 0:24d3eb812fd4 593 * @param cAddress Destination address.
JMF 0:24d3eb812fd4 594 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 595 * @retval None.
JMF 0:24d3eb812fd4 596 */
JMF 0:24d3eb812fd4 597 void SpiritPktCommonSetDestinationAddress(uint8_t cAddress)
JMF 0:24d3eb812fd4 598 {
JMF 0:24d3eb812fd4 599 /* Writes value on PCKT_FLT_GOALS_SOURCE_ADDR register */
JMF 0:24d3eb812fd4 600 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_SOURCE_ADDR_BASE, 1, &cAddress);
JMF 0:24d3eb812fd4 601
JMF 0:24d3eb812fd4 602 }
JMF 0:24d3eb812fd4 603
JMF 0:24d3eb812fd4 604
JMF 0:24d3eb812fd4 605 /**
JMF 0:24d3eb812fd4 606 * @brief Returns the settled destination address.
JMF 0:24d3eb812fd4 607 * @param None.
JMF 0:24d3eb812fd4 608 * @retval uint8_t Transmitted destination address.
JMF 0:24d3eb812fd4 609 */
JMF 0:24d3eb812fd4 610 uint8_t SpiritPktCommonGetTransmittedDestAddress(void)
JMF 0:24d3eb812fd4 611 {
JMF 0:24d3eb812fd4 612 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 613
JMF 0:24d3eb812fd4 614 /* Reads value on the PCKT_FLT_GOALS_SOURCE_ADDR register */
JMF 0:24d3eb812fd4 615 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_SOURCE_ADDR_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 616
JMF 0:24d3eb812fd4 617 /* Return value */
JMF 0:24d3eb812fd4 618 return tempRegValue;
JMF 0:24d3eb812fd4 619
JMF 0:24d3eb812fd4 620 }
JMF 0:24d3eb812fd4 621
JMF 0:24d3eb812fd4 622
JMF 0:24d3eb812fd4 623 /**
JMF 0:24d3eb812fd4 624 * @brief Sets the node my address. When the filtering on my address is on, if the destination address extracted from the received packet is equal to the content of the
JMF 0:24d3eb812fd4 625 * my address, then the packet is accepted (this is the address of the node).
JMF 0:24d3eb812fd4 626 * @param cAddress Address of the present node.
JMF 0:24d3eb812fd4 627 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 628 * @retval None.
JMF 0:24d3eb812fd4 629 */
JMF 0:24d3eb812fd4 630 void SpiritPktCommonSetMyAddress(uint8_t cAddress)
JMF 0:24d3eb812fd4 631 {
JMF 0:24d3eb812fd4 632 /* Writes value on the PCKT_FLT_GOALS_TX_ADDR register */
JMF 0:24d3eb812fd4 633 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_TX_ADDR_BASE, 1, &cAddress);
JMF 0:24d3eb812fd4 634
JMF 0:24d3eb812fd4 635 }
JMF 0:24d3eb812fd4 636
JMF 0:24d3eb812fd4 637
JMF 0:24d3eb812fd4 638 /**
JMF 0:24d3eb812fd4 639 * @brief Returns the address of the present node.
JMF 0:24d3eb812fd4 640 * @param None.
JMF 0:24d3eb812fd4 641 * @retval uint8_t My address (address of this node).
JMF 0:24d3eb812fd4 642 */
JMF 0:24d3eb812fd4 643 uint8_t SpiritPktCommonGetMyAddress(void)
JMF 0:24d3eb812fd4 644 {
JMF 0:24d3eb812fd4 645 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 646
JMF 0:24d3eb812fd4 647 /* Reads value on the PCKT_FLT_GOALS_TX_ADDR register */
JMF 0:24d3eb812fd4 648 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_TX_ADDR_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 649
JMF 0:24d3eb812fd4 650 /* Return value */
JMF 0:24d3eb812fd4 651 return tempRegValue;
JMF 0:24d3eb812fd4 652
JMF 0:24d3eb812fd4 653 }
JMF 0:24d3eb812fd4 654
JMF 0:24d3eb812fd4 655
JMF 0:24d3eb812fd4 656 /**
JMF 0:24d3eb812fd4 657 * @brief Sets the broadcast address. If the destination address extracted from the received packet is equal to the content of the
JMF 0:24d3eb812fd4 658 * BROADCAST_ADDR register, then the packet is accepted.
JMF 0:24d3eb812fd4 659 * @param cAddress Broadcast address.
JMF 0:24d3eb812fd4 660 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 661 * @retval None.
JMF 0:24d3eb812fd4 662 */
JMF 0:24d3eb812fd4 663 void SpiritPktCommonSetBroadcastAddress(uint8_t cAddress)
JMF 0:24d3eb812fd4 664 {
JMF 0:24d3eb812fd4 665 /* Writes value on the PCKT_FLT_GOALS_BROADCAST register */
JMF 0:24d3eb812fd4 666 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_BROADCAST_BASE, 1, &cAddress);
JMF 0:24d3eb812fd4 667
JMF 0:24d3eb812fd4 668 }
JMF 0:24d3eb812fd4 669
JMF 0:24d3eb812fd4 670
JMF 0:24d3eb812fd4 671 /**
JMF 0:24d3eb812fd4 672 * @brief Returns the broadcast address.
JMF 0:24d3eb812fd4 673 * @param None.
JMF 0:24d3eb812fd4 674 * @retval uint8_t Broadcast address.
JMF 0:24d3eb812fd4 675 */
JMF 0:24d3eb812fd4 676 uint8_t SpiritPktCommonGetBroadcastAddress(void)
JMF 0:24d3eb812fd4 677 {
JMF 0:24d3eb812fd4 678 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 679
JMF 0:24d3eb812fd4 680 /* Reads value on the PCKT_FLT_GOALS_BROADCAST register */
JMF 0:24d3eb812fd4 681 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_BROADCAST_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 682
JMF 0:24d3eb812fd4 683 /* Return value */
JMF 0:24d3eb812fd4 684 return tempRegValue;
JMF 0:24d3eb812fd4 685
JMF 0:24d3eb812fd4 686 }
JMF 0:24d3eb812fd4 687
JMF 0:24d3eb812fd4 688
JMF 0:24d3eb812fd4 689 /**
JMF 0:24d3eb812fd4 690 * @brief Sets the multicast address. When the multicast filtering is on, if the destination address extracted from the received packet is equal to the content of the
JMF 0:24d3eb812fd4 691 * MULTICAST_ADDR register, then the packet is accepted.
JMF 0:24d3eb812fd4 692 * @param cAddress Multicast address.
JMF 0:24d3eb812fd4 693 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 694 * @retval None.
JMF 0:24d3eb812fd4 695 */
JMF 0:24d3eb812fd4 696 void SpiritPktCommonSetMulticastAddress(uint8_t cAddress)
JMF 0:24d3eb812fd4 697 {
JMF 0:24d3eb812fd4 698 /* Writes value on the PCKT_FLT_GOALS_MULTICAST register */
JMF 0:24d3eb812fd4 699 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_MULTICAST_BASE, 1, &cAddress);
JMF 0:24d3eb812fd4 700
JMF 0:24d3eb812fd4 701 }
JMF 0:24d3eb812fd4 702
JMF 0:24d3eb812fd4 703
JMF 0:24d3eb812fd4 704 /**
JMF 0:24d3eb812fd4 705 * @brief Returns the multicast address.
JMF 0:24d3eb812fd4 706 * @param None.
JMF 0:24d3eb812fd4 707 * @retval uint8_t Multicast address.
JMF 0:24d3eb812fd4 708 */
JMF 0:24d3eb812fd4 709 uint8_t SpiritPktCommonGetMulticastAddress(void)
JMF 0:24d3eb812fd4 710 {
JMF 0:24d3eb812fd4 711 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 712
JMF 0:24d3eb812fd4 713 /* Reads value on the PCKT_FLT_GOALS_MULTICAST register */
JMF 0:24d3eb812fd4 714 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_MULTICAST_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 715
JMF 0:24d3eb812fd4 716 /* Return value */
JMF 0:24d3eb812fd4 717 return tempRegValue;
JMF 0:24d3eb812fd4 718
JMF 0:24d3eb812fd4 719 }
JMF 0:24d3eb812fd4 720
JMF 0:24d3eb812fd4 721
JMF 0:24d3eb812fd4 722 /**
JMF 0:24d3eb812fd4 723 * @brief Sets the control mask. The 1 bits of the CONTROL_MASK indicate the
JMF 0:24d3eb812fd4 724 * bits to be used in filtering. (All 0s no filtering)
JMF 0:24d3eb812fd4 725 * @param lMask Control mask.
JMF 0:24d3eb812fd4 726 * This parameter is an uint32_t.
JMF 0:24d3eb812fd4 727 * @retval None.
JMF 0:24d3eb812fd4 728 */
JMF 0:24d3eb812fd4 729 void SpiritPktCommonSetCtrlMask(uint32_t lMask)
JMF 0:24d3eb812fd4 730 {
JMF 0:24d3eb812fd4 731 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 732
JMF 0:24d3eb812fd4 733 /* Split the 32-bit value in 4 8-bit values */
JMF 0:24d3eb812fd4 734 tempRegValue[0] = (uint8_t) lMask;
JMF 0:24d3eb812fd4 735 tempRegValue[1] = (uint8_t)(lMask >> 8);
JMF 0:24d3eb812fd4 736 tempRegValue[2] = (uint8_t)(lMask >> 16);
JMF 0:24d3eb812fd4 737 tempRegValue[3] = (uint8_t)(lMask >> 24);
JMF 0:24d3eb812fd4 738
JMF 0:24d3eb812fd4 739 /* Writes values on the CKT_FLT_GOALS_CONTROLx_MASK registers */
JMF 0:24d3eb812fd4 740 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_CONTROL0_MASK_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 741
JMF 0:24d3eb812fd4 742 }
JMF 0:24d3eb812fd4 743
JMF 0:24d3eb812fd4 744
JMF 0:24d3eb812fd4 745 /**
JMF 0:24d3eb812fd4 746 * @brief Returns the control mask. The 1 bits of the CONTROL_MASK indicate the
JMF 0:24d3eb812fd4 747 * bits to be used in filtering. (All 0s no filtering)
JMF 0:24d3eb812fd4 748 * @param None.
JMF 0:24d3eb812fd4 749 * @retval uint32_t Control mask.
JMF 0:24d3eb812fd4 750 */
JMF 0:24d3eb812fd4 751 uint32_t SpiritPktCommonGetCtrlMask(void)
JMF 0:24d3eb812fd4 752 {
JMF 0:24d3eb812fd4 753 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 754 uint32_t tempRetValue=0;
JMF 0:24d3eb812fd4 755
JMF 0:24d3eb812fd4 756 /* Reads the PCKT_FLT_GOALS_CONTROLx_MASK registers */
JMF 0:24d3eb812fd4 757 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_CONTROL0_MASK_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 758
JMF 0:24d3eb812fd4 759 /* Rebuild the control mask value on a 32-bit integer variable */
JMF 0:24d3eb812fd4 760 for(uint8_t i=0 ; i<4 ; i++)
JMF 0:24d3eb812fd4 761 {
JMF 0:24d3eb812fd4 762 tempRetValue |= ((uint32_t)tempRegValue[i])<<(8*i);
JMF 0:24d3eb812fd4 763 }
JMF 0:24d3eb812fd4 764
JMF 0:24d3eb812fd4 765 /* Return value */
JMF 0:24d3eb812fd4 766 return tempRetValue;
JMF 0:24d3eb812fd4 767 }
JMF 0:24d3eb812fd4 768
JMF 0:24d3eb812fd4 769 /**
JMF 0:24d3eb812fd4 770 * @brief Sets the control field reference. If the bits enabled by the CONTROL_MASK
JMF 0:24d3eb812fd4 771 * match the ones of the control fields extracted from the received packet
JMF 0:24d3eb812fd4 772 * then the packet is accepted.
JMF 0:24d3eb812fd4 773 * @param lReference Control reference.
JMF 0:24d3eb812fd4 774 * This parameter is an uint32_t.
JMF 0:24d3eb812fd4 775 * @retval None.
JMF 0:24d3eb812fd4 776 */
JMF 0:24d3eb812fd4 777 void SpiritPktCommonSetCtrlReference(uint32_t lReference)
JMF 0:24d3eb812fd4 778 {
JMF 0:24d3eb812fd4 779 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 780
JMF 0:24d3eb812fd4 781 /* Split the 32-bit value in 4 8-bit values */
JMF 0:24d3eb812fd4 782 tempRegValue[0] = (uint8_t) lReference;
JMF 0:24d3eb812fd4 783 tempRegValue[1] = (uint8_t)(lReference >> 8);
JMF 0:24d3eb812fd4 784 tempRegValue[2] = (uint8_t)(lReference >> 16);
JMF 0:24d3eb812fd4 785 tempRegValue[3] = (uint8_t)(lReference >> 24);
JMF 0:24d3eb812fd4 786
JMF 0:24d3eb812fd4 787 /* Writes values on the CKT_FLT_GOALS_CONTROLx_FIELD registers */
JMF 0:24d3eb812fd4 788 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_GOALS_CONTROL0_FIELD_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 789
JMF 0:24d3eb812fd4 790 }
JMF 0:24d3eb812fd4 791
JMF 0:24d3eb812fd4 792
JMF 0:24d3eb812fd4 793 /**
JMF 0:24d3eb812fd4 794 * @brief Returns the control field reference.
JMF 0:24d3eb812fd4 795 * @param None.
JMF 0:24d3eb812fd4 796 * @retval uint32_t Control reference.
JMF 0:24d3eb812fd4 797 */
JMF 0:24d3eb812fd4 798 uint32_t SpiritPktCommonGetCtrlReference(void)
JMF 0:24d3eb812fd4 799 {
JMF 0:24d3eb812fd4 800 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 801 uint32_t tempRetValue=0;
JMF 0:24d3eb812fd4 802
JMF 0:24d3eb812fd4 803 /* Reads the PCKT_FLT_GOALS_CONTROLx_FIELD registers */
JMF 0:24d3eb812fd4 804 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_GOALS_CONTROL0_FIELD_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 805
JMF 0:24d3eb812fd4 806 /* Rebuild the control mask value on a 32-bit integer variable */
JMF 0:24d3eb812fd4 807 for(uint8_t i=0 ; i<4 ; i++)
JMF 0:24d3eb812fd4 808 {
JMF 0:24d3eb812fd4 809 tempRetValue |= ((uint32_t)tempRegValue[i])<<(8*i);
JMF 0:24d3eb812fd4 810 }
JMF 0:24d3eb812fd4 811
JMF 0:24d3eb812fd4 812 /* Return value */
JMF 0:24d3eb812fd4 813 return tempRetValue;
JMF 0:24d3eb812fd4 814 }
JMF 0:24d3eb812fd4 815
JMF 0:24d3eb812fd4 816
JMF 0:24d3eb812fd4 817 /**
JMF 0:24d3eb812fd4 818 * @brief Sets the TX control field.
JMF 0:24d3eb812fd4 819 * @param lField Tx contro field.
JMF 0:24d3eb812fd4 820 * This parameter is an uint32_t.
JMF 0:24d3eb812fd4 821 * @retval None.
JMF 0:24d3eb812fd4 822 */
JMF 0:24d3eb812fd4 823 void SpiritPktCommonSetTransmittedCtrlField(uint32_t lField)
JMF 0:24d3eb812fd4 824 {
JMF 0:24d3eb812fd4 825 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 826
JMF 0:24d3eb812fd4 827 /* Split the 32-bit value in 4 8-bit values */
JMF 0:24d3eb812fd4 828 tempRegValue[3] = (uint8_t) lField;
JMF 0:24d3eb812fd4 829 tempRegValue[2] = (uint8_t)(lField >> 8);
JMF 0:24d3eb812fd4 830 tempRegValue[1] = (uint8_t)(lField >> 16);
JMF 0:24d3eb812fd4 831 tempRegValue[0] = (uint8_t)(lField >> 24);
JMF 0:24d3eb812fd4 832
JMF 0:24d3eb812fd4 833 /* Writes value on the TX_CTRL_FIELDx register */
JMF 0:24d3eb812fd4 834 g_xStatus = SpiritSpiWriteRegisters(TX_CTRL_FIELD3_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 835
JMF 0:24d3eb812fd4 836 }
JMF 0:24d3eb812fd4 837
JMF 0:24d3eb812fd4 838
JMF 0:24d3eb812fd4 839 /**
JMF 0:24d3eb812fd4 840 * @brief Returns the Tx control field.
JMF 0:24d3eb812fd4 841 * @param None.
JMF 0:24d3eb812fd4 842 * @retval uint32_t Control field of the transmitted packet.
JMF 0:24d3eb812fd4 843 */
JMF 0:24d3eb812fd4 844 uint32_t SpiritPktCommonGetTransmittedCtrlField(void)
JMF 0:24d3eb812fd4 845 {
JMF 0:24d3eb812fd4 846 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 847 uint32_t tempRetValue=0;
JMF 0:24d3eb812fd4 848
JMF 0:24d3eb812fd4 849 /* Reads the TX_CTRL_FIELDx registers */
JMF 0:24d3eb812fd4 850 g_xStatus = SpiritSpiReadRegisters(TX_CTRL_FIELD3_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 851
JMF 0:24d3eb812fd4 852 /* Rebuild value: build a 32-bit value from the read bytes */
JMF 0:24d3eb812fd4 853 for(uint8_t i=0 ; i<4 ; i++)
JMF 0:24d3eb812fd4 854 {
JMF 0:24d3eb812fd4 855 tempRetValue |= ((uint32_t)tempRegValue[i])<<(8*(3-i));
JMF 0:24d3eb812fd4 856 }
JMF 0:24d3eb812fd4 857
JMF 0:24d3eb812fd4 858 /* Return value */
JMF 0:24d3eb812fd4 859 return tempRetValue;
JMF 0:24d3eb812fd4 860
JMF 0:24d3eb812fd4 861 }
JMF 0:24d3eb812fd4 862
JMF 0:24d3eb812fd4 863
JMF 0:24d3eb812fd4 864 /**
JMF 0:24d3eb812fd4 865 * @brief If enabled RX packet is accepted if its destination address matches with My address.
JMF 0:24d3eb812fd4 866 * @param xNewState new state for DEST_VS_SOURCE_ADDRESS.
JMF 0:24d3eb812fd4 867 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 868 * @retval None.
JMF 0:24d3eb812fd4 869 */
JMF 0:24d3eb812fd4 870 void SpiritPktCommonFilterOnMyAddress(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 871 {
JMF 0:24d3eb812fd4 872 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 873
JMF 0:24d3eb812fd4 874 /* Check the parameters */
JMF 0:24d3eb812fd4 875 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 876
JMF 0:24d3eb812fd4 877
JMF 0:24d3eb812fd4 878 /* Modify the register value: set or reset the TX source address control */
JMF 0:24d3eb812fd4 879 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 880
JMF 0:24d3eb812fd4 881 /* Set or reset the DESTINATION vs TX enabling bit */
JMF 0:24d3eb812fd4 882 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 883 {
JMF 0:24d3eb812fd4 884 tempRegValue |= PCKT_FLT_OPTIONS_DEST_VS_TX_ADDR_MASK;
JMF 0:24d3eb812fd4 885 }
JMF 0:24d3eb812fd4 886 else
JMF 0:24d3eb812fd4 887 {
JMF 0:24d3eb812fd4 888 tempRegValue &= ~PCKT_FLT_OPTIONS_DEST_VS_TX_ADDR_MASK;
JMF 0:24d3eb812fd4 889 }
JMF 0:24d3eb812fd4 890
JMF 0:24d3eb812fd4 891 /* Writes the new value on the PCKT_FLT_OPTIONS register */
JMF 0:24d3eb812fd4 892 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 893
JMF 0:24d3eb812fd4 894 }
JMF 0:24d3eb812fd4 895
JMF 0:24d3eb812fd4 896
JMF 0:24d3eb812fd4 897 /**
JMF 0:24d3eb812fd4 898 * @brief If enabled RX packet is accepted if its destination address matches with multicast address.
JMF 0:24d3eb812fd4 899 * @param xNewState new state for DEST_VS_MULTICAST_ADDRESS.
JMF 0:24d3eb812fd4 900 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 901 * @retval None.
JMF 0:24d3eb812fd4 902 */
JMF 0:24d3eb812fd4 903 void SpiritPktCommonFilterOnMulticastAddress(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 904 {
JMF 0:24d3eb812fd4 905 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 906
JMF 0:24d3eb812fd4 907 /* Check the parameters */
JMF 0:24d3eb812fd4 908 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 909
JMF 0:24d3eb812fd4 910 /* Reads the PCKT_FLT_OPTIONS register value */
JMF 0:24d3eb812fd4 911 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 912
JMF 0:24d3eb812fd4 913 /* Enable or disable the filtering option */
JMF 0:24d3eb812fd4 914 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 915 {
JMF 0:24d3eb812fd4 916 tempRegValue |= PCKT_FLT_OPTIONS_DEST_VS_MULTICAST_ADDR_MASK;
JMF 0:24d3eb812fd4 917 }
JMF 0:24d3eb812fd4 918 else
JMF 0:24d3eb812fd4 919 {
JMF 0:24d3eb812fd4 920 tempRegValue &= ~PCKT_FLT_OPTIONS_DEST_VS_MULTICAST_ADDR_MASK;
JMF 0:24d3eb812fd4 921 }
JMF 0:24d3eb812fd4 922
JMF 0:24d3eb812fd4 923 /* Writes the new value on the PCKT_FLT_OPTIONS register */
JMF 0:24d3eb812fd4 924 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 925
JMF 0:24d3eb812fd4 926 }
JMF 0:24d3eb812fd4 927
JMF 0:24d3eb812fd4 928
JMF 0:24d3eb812fd4 929 /**
JMF 0:24d3eb812fd4 930 * @brief If enabled RX packet is accepted if its destination address matches with broadcast address.
JMF 0:24d3eb812fd4 931 * @param xNewState new state for DEST_VS_BROADCAST_ADDRESS.
JMF 0:24d3eb812fd4 932 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 933 * @retval None.
JMF 0:24d3eb812fd4 934 */
JMF 0:24d3eb812fd4 935 void SpiritPktCommonFilterOnBroadcastAddress(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 936 {
JMF 0:24d3eb812fd4 937 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 938
JMF 0:24d3eb812fd4 939 /* Check the parameters */
JMF 0:24d3eb812fd4 940 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 941
JMF 0:24d3eb812fd4 942 /* Reads the register value */
JMF 0:24d3eb812fd4 943 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 944
JMF 0:24d3eb812fd4 945 /* Enable or disable the filtering option */
JMF 0:24d3eb812fd4 946 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 947 {
JMF 0:24d3eb812fd4 948 tempRegValue |= PCKT_FLT_OPTIONS_DEST_VS_BROADCAST_ADDR_MASK;
JMF 0:24d3eb812fd4 949 }
JMF 0:24d3eb812fd4 950 else
JMF 0:24d3eb812fd4 951 {
JMF 0:24d3eb812fd4 952 tempRegValue &= ~PCKT_FLT_OPTIONS_DEST_VS_BROADCAST_ADDR_MASK;
JMF 0:24d3eb812fd4 953 }
JMF 0:24d3eb812fd4 954
JMF 0:24d3eb812fd4 955 /* Writes the new value on the PCKT_FLT_OPTIONS register */
JMF 0:24d3eb812fd4 956 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 957
JMF 0:24d3eb812fd4 958 }
JMF 0:24d3eb812fd4 959
JMF 0:24d3eb812fd4 960
JMF 0:24d3eb812fd4 961 /**
JMF 0:24d3eb812fd4 962 * @brief Returns the enable bit of the my address filtering.
JMF 0:24d3eb812fd4 963 * @param None.
JMF 0:24d3eb812fd4 964 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 965 */
JMF 0:24d3eb812fd4 966 SpiritFunctionalState SpiritPktCommonGetFilterOnMyAddress(void)
JMF 0:24d3eb812fd4 967 {
JMF 0:24d3eb812fd4 968 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 969
JMF 0:24d3eb812fd4 970 /* Reads the register value */
JMF 0:24d3eb812fd4 971 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 972
JMF 0:24d3eb812fd4 973 /* Gets the enable/disable bit in form of SpiritFunctionalState type */
JMF 0:24d3eb812fd4 974 if(tempRegValue & 0x08)
JMF 0:24d3eb812fd4 975 {
JMF 0:24d3eb812fd4 976 return S_ENABLE;
JMF 0:24d3eb812fd4 977 }
JMF 0:24d3eb812fd4 978 else
JMF 0:24d3eb812fd4 979 {
JMF 0:24d3eb812fd4 980 return S_DISABLE;
JMF 0:24d3eb812fd4 981 }
JMF 0:24d3eb812fd4 982
JMF 0:24d3eb812fd4 983 }
JMF 0:24d3eb812fd4 984
JMF 0:24d3eb812fd4 985 /**
JMF 0:24d3eb812fd4 986 * @brief Returns the enable bit of the multicast address filtering.
JMF 0:24d3eb812fd4 987 * @param None.
JMF 0:24d3eb812fd4 988 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 989 */
JMF 0:24d3eb812fd4 990 SpiritFunctionalState SpiritPktCommonGetFilterOnMulticastAddress(void)
JMF 0:24d3eb812fd4 991 {
JMF 0:24d3eb812fd4 992 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 993
JMF 0:24d3eb812fd4 994 /* Reads the register value */
JMF 0:24d3eb812fd4 995 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 996
JMF 0:24d3eb812fd4 997 /* Get the enable/disable bit in form of SpiritFunctionalState type */
JMF 0:24d3eb812fd4 998 if(tempRegValue & 0x04)
JMF 0:24d3eb812fd4 999 {
JMF 0:24d3eb812fd4 1000 return S_ENABLE;
JMF 0:24d3eb812fd4 1001 }
JMF 0:24d3eb812fd4 1002 else
JMF 0:24d3eb812fd4 1003 {
JMF 0:24d3eb812fd4 1004 return S_DISABLE;
JMF 0:24d3eb812fd4 1005 }
JMF 0:24d3eb812fd4 1006
JMF 0:24d3eb812fd4 1007 }
JMF 0:24d3eb812fd4 1008
JMF 0:24d3eb812fd4 1009 /**
JMF 0:24d3eb812fd4 1010 * @brief Returns the enable bit of the broadcast address filtering.
JMF 0:24d3eb812fd4 1011 * @param None.
JMF 0:24d3eb812fd4 1012 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1013 */
JMF 0:24d3eb812fd4 1014 SpiritFunctionalState SpiritPktCommonGetFilterOnBroadcastAddress(void)
JMF 0:24d3eb812fd4 1015 {
JMF 0:24d3eb812fd4 1016 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1017
JMF 0:24d3eb812fd4 1018 /* Reads the register value */
JMF 0:24d3eb812fd4 1019 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1020
JMF 0:24d3eb812fd4 1021 /* Get the enable/disable bit in form of SpiritFunctionalState type */
JMF 0:24d3eb812fd4 1022 if(tempRegValue & 0x02)
JMF 0:24d3eb812fd4 1023 {
JMF 0:24d3eb812fd4 1024 return S_ENABLE;
JMF 0:24d3eb812fd4 1025 }
JMF 0:24d3eb812fd4 1026 else
JMF 0:24d3eb812fd4 1027 {
JMF 0:24d3eb812fd4 1028 return S_DISABLE;
JMF 0:24d3eb812fd4 1029 }
JMF 0:24d3eb812fd4 1030
JMF 0:24d3eb812fd4 1031 }
JMF 0:24d3eb812fd4 1032
JMF 0:24d3eb812fd4 1033
JMF 0:24d3eb812fd4 1034 /**
JMF 0:24d3eb812fd4 1035 * @brief Returns the destination address of the received packet.
JMF 0:24d3eb812fd4 1036 * @param None.
JMF 0:24d3eb812fd4 1037 * @retval uint8_t Destination address of the received address.
JMF 0:24d3eb812fd4 1038 */
JMF 0:24d3eb812fd4 1039 uint8_t SpiritPktCommonGetReceivedDestAddress(void)
JMF 0:24d3eb812fd4 1040 {
JMF 0:24d3eb812fd4 1041 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1042
JMF 0:24d3eb812fd4 1043 /* Reads the RX_ADDR_FIELD0 register value */
JMF 0:24d3eb812fd4 1044 g_xStatus = SpiritSpiReadRegisters(RX_ADDR_FIELD0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1045
JMF 0:24d3eb812fd4 1046 /* Return value */
JMF 0:24d3eb812fd4 1047 return tempRegValue;
JMF 0:24d3eb812fd4 1048
JMF 0:24d3eb812fd4 1049 }
JMF 0:24d3eb812fd4 1050
JMF 0:24d3eb812fd4 1051
JMF 0:24d3eb812fd4 1052 /**
JMF 0:24d3eb812fd4 1053 * @brief Returns the control field of the received packet.
JMF 0:24d3eb812fd4 1054 * @param None.
JMF 0:24d3eb812fd4 1055 * @retval uint32_t Received control field.
JMF 0:24d3eb812fd4 1056 */
JMF 0:24d3eb812fd4 1057 uint32_t SpiritPktCommonGetReceivedCtrlField(void)
JMF 0:24d3eb812fd4 1058 {
JMF 0:24d3eb812fd4 1059 uint8_t tempRegValue[4];
JMF 0:24d3eb812fd4 1060 uint32_t tempRetValue=0;
JMF 0:24d3eb812fd4 1061
JMF 0:24d3eb812fd4 1062 /* Reads the PCKT_FLT_GOALS_CONTROLx_MASK registers */
JMF 0:24d3eb812fd4 1063 g_xStatus = SpiritSpiReadRegisters(RX_CTRL_FIELD0_BASE, 4, tempRegValue);
JMF 0:24d3eb812fd4 1064
JMF 0:24d3eb812fd4 1065 /* Rebuild the control mask value on a 32-bit integer variable */
JMF 0:24d3eb812fd4 1066 for(uint8_t i=0 ; i<4 ; i++)
JMF 0:24d3eb812fd4 1067 {
JMF 0:24d3eb812fd4 1068 tempRetValue |= ((uint32_t)tempRegValue[i])<<(8*i);
JMF 0:24d3eb812fd4 1069 }
JMF 0:24d3eb812fd4 1070
JMF 0:24d3eb812fd4 1071 /* Returns value */
JMF 0:24d3eb812fd4 1072 return tempRetValue;
JMF 0:24d3eb812fd4 1073 }
JMF 0:24d3eb812fd4 1074
JMF 0:24d3eb812fd4 1075
JMF 0:24d3eb812fd4 1076 /**
JMF 0:24d3eb812fd4 1077 * @brief Returns the CRC field of the received packet.
JMF 0:24d3eb812fd4 1078 * @param cCrcFieldVect array in which the CRC field has to be stored.
JMF 0:24d3eb812fd4 1079 * This parameter is an uint8_t array of 3 elements.
JMF 0:24d3eb812fd4 1080 * @retval None.
JMF 0:24d3eb812fd4 1081 */
JMF 0:24d3eb812fd4 1082 void SpiritPktCommonGetReceivedCrcField(uint8_t* cCrcFieldVect)
JMF 0:24d3eb812fd4 1083 {
JMF 0:24d3eb812fd4 1084 uint8_t tempRegValue[3],crcLength;
JMF 0:24d3eb812fd4 1085 PktCrcMode crcMode;
JMF 0:24d3eb812fd4 1086
JMF 0:24d3eb812fd4 1087 /* Gets the CRC mode in PktCrcMode enum */
JMF 0:24d3eb812fd4 1088 crcMode=SpiritPktCommonGetCrcMode();
JMF 0:24d3eb812fd4 1089
JMF 0:24d3eb812fd4 1090 /* Cast to uint8_t */
JMF 0:24d3eb812fd4 1091 crcLength = (uint8_t)crcMode;
JMF 0:24d3eb812fd4 1092
JMF 0:24d3eb812fd4 1093 /* Obtains the real length: see the @ref PktCrcMode enumeration */
JMF 0:24d3eb812fd4 1094 crcLength >>= 5;
JMF 0:24d3eb812fd4 1095 if(crcLength>=3) crcLength--;
JMF 0:24d3eb812fd4 1096
JMF 0:24d3eb812fd4 1097 /* Reads the CRC_FIELDx registers value */
JMF 0:24d3eb812fd4 1098 g_xStatus = SpiritSpiReadRegisters(CRC_FIELD2_BASE, 3,tempRegValue);
JMF 0:24d3eb812fd4 1099
JMF 0:24d3eb812fd4 1100 /* Sets the array to be returned */
JMF 0:24d3eb812fd4 1101 for(uint8_t i=0 ; i<3 ; i++)
JMF 0:24d3eb812fd4 1102 {
JMF 0:24d3eb812fd4 1103 if(i<crcLength)
JMF 0:24d3eb812fd4 1104 {
JMF 0:24d3eb812fd4 1105 cCrcFieldVect[i]=tempRegValue[2-i];
JMF 0:24d3eb812fd4 1106 }
JMF 0:24d3eb812fd4 1107 else
JMF 0:24d3eb812fd4 1108 {
JMF 0:24d3eb812fd4 1109 cCrcFieldVect[i]=0;
JMF 0:24d3eb812fd4 1110 }
JMF 0:24d3eb812fd4 1111 }
JMF 0:24d3eb812fd4 1112
JMF 0:24d3eb812fd4 1113 }
JMF 0:24d3eb812fd4 1114
JMF 0:24d3eb812fd4 1115
JMF 0:24d3eb812fd4 1116 /**
JMF 0:24d3eb812fd4 1117 * @brief Sets the AUTO ACKNOLEDGEMENT mechanism on the receiver. When the feature is enabled and
JMF 0:24d3eb812fd4 1118 * a data packet has been correctly received, then an acknowledgement packet is sent back to the originator of the received
JMF 0:24d3eb812fd4 1119 * packet. If the PIGGYBACKING bit is also set, payload data will be read from the FIFO; otherwise an empty packet is sent
JMF 0:24d3eb812fd4 1120 * only containing the source and destination addresses and the sequence number of the packet being acknowledged.
JMF 0:24d3eb812fd4 1121 * @param xAutoAck new state for autoack.
JMF 0:24d3eb812fd4 1122 * This parameter can be: S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1123 * @param xPiggybacking new state for autoack.
JMF 0:24d3eb812fd4 1124 * This parameter can be: S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1125 * @retval None.
JMF 0:24d3eb812fd4 1126 */
JMF 0:24d3eb812fd4 1127 void SpiritPktCommonAutoAck(SpiritFunctionalState xAutoAck , SpiritFunctionalState xPiggybacking)
JMF 0:24d3eb812fd4 1128 {
JMF 0:24d3eb812fd4 1129 uint8_t tempRegValue[2];
JMF 0:24d3eb812fd4 1130
JMF 0:24d3eb812fd4 1131 /* Check the parameters */
JMF 0:24d3eb812fd4 1132 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xAutoAck));
JMF 0:24d3eb812fd4 1133 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xPiggybacking));
JMF 0:24d3eb812fd4 1134 /* Check if piggybacking is enabled and autoack is disabled */
JMF 0:24d3eb812fd4 1135 s_assert_param(!(xPiggybacking==S_ENABLE && xAutoAck==S_DISABLE));
JMF 0:24d3eb812fd4 1136
JMF 0:24d3eb812fd4 1137 /* Reads the PROTOCOL[1:0] registers value */
JMF 0:24d3eb812fd4 1138 g_xStatus = SpiritSpiReadRegisters(PROTOCOL1_BASE, 2, tempRegValue);
JMF 0:24d3eb812fd4 1139
JMF 0:24d3eb812fd4 1140 /* Sets the specified LLP option */
JMF 0:24d3eb812fd4 1141 /* Autoack setting */
JMF 0:24d3eb812fd4 1142 if(xAutoAck == S_ENABLE)
JMF 0:24d3eb812fd4 1143 {
JMF 0:24d3eb812fd4 1144 tempRegValue[1] |= PROTOCOL0_AUTO_ACK_MASK;
JMF 0:24d3eb812fd4 1145 }
JMF 0:24d3eb812fd4 1146 else
JMF 0:24d3eb812fd4 1147 {
JMF 0:24d3eb812fd4 1148 tempRegValue[1] &= (~PROTOCOL0_AUTO_ACK_MASK);
JMF 0:24d3eb812fd4 1149 }
JMF 0:24d3eb812fd4 1150
JMF 0:24d3eb812fd4 1151 /* Piggybacking setting */
JMF 0:24d3eb812fd4 1152 if(xPiggybacking == S_ENABLE)
JMF 0:24d3eb812fd4 1153 {
JMF 0:24d3eb812fd4 1154 tempRegValue[0] |= PROTOCOL1_PIGGYBACKING_MASK;
JMF 0:24d3eb812fd4 1155 }
JMF 0:24d3eb812fd4 1156 else
JMF 0:24d3eb812fd4 1157 {
JMF 0:24d3eb812fd4 1158 tempRegValue[0] &= (~PROTOCOL1_PIGGYBACKING_MASK);
JMF 0:24d3eb812fd4 1159 }
JMF 0:24d3eb812fd4 1160
JMF 0:24d3eb812fd4 1161 /* Writes data on the PROTOCOL[1:0] registers */
JMF 0:24d3eb812fd4 1162 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL1_BASE, 2, tempRegValue);
JMF 0:24d3eb812fd4 1163
JMF 0:24d3eb812fd4 1164 }
JMF 0:24d3eb812fd4 1165
JMF 0:24d3eb812fd4 1166
JMF 0:24d3eb812fd4 1167 /**
JMF 0:24d3eb812fd4 1168 * @brief Sets the AUTO ACKNOLEDGEMENT mechanism on the transmitter. On the transmitter side, the NACK_TX field can be used to require or not an acknowledgment for each individual packet: if
JMF 0:24d3eb812fd4 1169 * NACK_TX is set to "1" then acknowledgment will not be required; if NACK_TX is set to "0" then acknowledgment will be
JMF 0:24d3eb812fd4 1170 * required.
JMF 0:24d3eb812fd4 1171 * @param xNewState new state for TX_AUTOACK.
JMF 0:24d3eb812fd4 1172 * This parameter can be: S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1173 * @retval None.
JMF 0:24d3eb812fd4 1174 */
JMF 0:24d3eb812fd4 1175 void SpiritPktCommonRequireAck(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 1176 {
JMF 0:24d3eb812fd4 1177 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1178
JMF 0:24d3eb812fd4 1179 /* Check the parameters */
JMF 0:24d3eb812fd4 1180 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 1181
JMF 0:24d3eb812fd4 1182 /* Reads value on the PROTOCOL0 register */
JMF 0:24d3eb812fd4 1183 g_xStatus = SpiritSpiReadRegisters(PROTOCOL0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1184
JMF 0:24d3eb812fd4 1185 /* Enables or disables the ack requirement option */
JMF 0:24d3eb812fd4 1186 if(xNewState == S_DISABLE)
JMF 0:24d3eb812fd4 1187 {
JMF 0:24d3eb812fd4 1188 tempRegValue |= PROTOCOL0_NACK_TX_MASK;
JMF 0:24d3eb812fd4 1189 }
JMF 0:24d3eb812fd4 1190 else
JMF 0:24d3eb812fd4 1191 {
JMF 0:24d3eb812fd4 1192 tempRegValue &= ~PROTOCOL0_NACK_TX_MASK;
JMF 0:24d3eb812fd4 1193 }
JMF 0:24d3eb812fd4 1194
JMF 0:24d3eb812fd4 1195 /* Writes value on the PROTOCOL0 register */
JMF 0:24d3eb812fd4 1196 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1197
JMF 0:24d3eb812fd4 1198 }
JMF 0:24d3eb812fd4 1199
JMF 0:24d3eb812fd4 1200
JMF 0:24d3eb812fd4 1201 /**
JMF 0:24d3eb812fd4 1202 * @brief Sets the TX sequence number to be used to start counting.
JMF 0:24d3eb812fd4 1203 * @param cSeqNumberReload new value for Tx seq number reload.
JMF 0:24d3eb812fd4 1204 * @retval None.
JMF 0:24d3eb812fd4 1205 */
JMF 0:24d3eb812fd4 1206 void SpiritPktCommonSetTransmittedSeqNumberReload(uint8_t cSeqNumberReload){
JMF 0:24d3eb812fd4 1207 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1208
JMF 0:24d3eb812fd4 1209 /* Check the parameters */
JMF 0:24d3eb812fd4 1210 s_assert_param(IS_PKT_SEQ_NUMBER_RELOAD(cSeqNumberReload));
JMF 0:24d3eb812fd4 1211
JMF 0:24d3eb812fd4 1212 /* Reads value on the PROTOCOL2 register */
JMF 0:24d3eb812fd4 1213 g_xStatus = SpiritSpiReadRegisters(PROTOCOL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1214
JMF 0:24d3eb812fd4 1215 tempRegValue &= 0xE7;
JMF 0:24d3eb812fd4 1216 tempRegValue |= (cSeqNumberReload << 3);
JMF 0:24d3eb812fd4 1217
JMF 0:24d3eb812fd4 1218 /* Writes value on the PROTOCOL2 register */
JMF 0:24d3eb812fd4 1219 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1220
JMF 0:24d3eb812fd4 1221 }
JMF 0:24d3eb812fd4 1222
JMF 0:24d3eb812fd4 1223
JMF 0:24d3eb812fd4 1224 /**
JMF 0:24d3eb812fd4 1225 * @brief Sets the TX sequence number to be used to start counting.
JMF 0:24d3eb812fd4 1226 * @param cSeqNumberReload new value for Tx seq number reload.
JMF 0:24d3eb812fd4 1227 * This parameter can be: S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1228 * @retval None.
JMF 0:24d3eb812fd4 1229 */
JMF 0:24d3eb812fd4 1230 void SpiritPktCommonSetNMaxReTx(PktNMaxReTx xNMaxReTx)
JMF 0:24d3eb812fd4 1231 {
JMF 0:24d3eb812fd4 1232 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1233
JMF 0:24d3eb812fd4 1234 /* Check the parameters */
JMF 0:24d3eb812fd4 1235 s_assert_param(IS_PKT_NMAX_RETX(xNMaxReTx));
JMF 0:24d3eb812fd4 1236
JMF 0:24d3eb812fd4 1237 /* Reads the PROTOCOL0 register value */
JMF 0:24d3eb812fd4 1238 g_xStatus = SpiritSpiReadRegisters(PROTOCOL0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1239
JMF 0:24d3eb812fd4 1240 /* Build the value to be written */
JMF 0:24d3eb812fd4 1241 tempRegValue &= ~PROTOCOL0_NMAX_RETX_MASK;
JMF 0:24d3eb812fd4 1242 tempRegValue |= xNMaxReTx;
JMF 0:24d3eb812fd4 1243
JMF 0:24d3eb812fd4 1244 /* Writes value on the PROTOCOL0 register */
JMF 0:24d3eb812fd4 1245 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1246
JMF 0:24d3eb812fd4 1247 }
JMF 0:24d3eb812fd4 1248
JMF 0:24d3eb812fd4 1249
JMF 0:24d3eb812fd4 1250 /**
JMF 0:24d3eb812fd4 1251 * @brief Returns the max number of automatic retransmission.
JMF 0:24d3eb812fd4 1252 * @param None.
JMF 0:24d3eb812fd4 1253 * @retval uint8_t Max number of retransmissions.
JMF 0:24d3eb812fd4 1254 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 1255 */
JMF 0:24d3eb812fd4 1256 uint8_t SpiritPktCommonGetNMaxReTx(void)
JMF 0:24d3eb812fd4 1257 {
JMF 0:24d3eb812fd4 1258 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1259
JMF 0:24d3eb812fd4 1260 /* Reads the PROTOCOL0 register value */
JMF 0:24d3eb812fd4 1261 g_xStatus = SpiritSpiReadRegisters(PROTOCOL0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1262
JMF 0:24d3eb812fd4 1263 /* Build the value to be written */
JMF 0:24d3eb812fd4 1264 return ((tempRegValue & PROTOCOL0_NMAX_RETX_MASK)>>4);
JMF 0:24d3eb812fd4 1265
JMF 0:24d3eb812fd4 1266 }
JMF 0:24d3eb812fd4 1267
JMF 0:24d3eb812fd4 1268 /**
JMF 0:24d3eb812fd4 1269 * @brief Returns the TX ACK request
JMF 0:24d3eb812fd4 1270 * @param None.
JMF 0:24d3eb812fd4 1271 * @retval uint8_t Max number of retransmissions.
JMF 0:24d3eb812fd4 1272 * This parameter is an uint8_t.
JMF 0:24d3eb812fd4 1273 */
JMF 0:24d3eb812fd4 1274 SpiritFunctionalState SpiritPktCommonGetTxAckRequest(void)
JMF 0:24d3eb812fd4 1275 {
JMF 0:24d3eb812fd4 1276 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1277
JMF 0:24d3eb812fd4 1278 /* Reads the PROTOCOL0 register value */
JMF 0:24d3eb812fd4 1279 g_xStatus = SpiritSpiReadRegisters(RX_PCKT_INFO_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1280
JMF 0:24d3eb812fd4 1281 /* Build the value to be written */
JMF 0:24d3eb812fd4 1282 return (SpiritFunctionalState)((tempRegValue & TX_PCKT_INFO_NACK_RX)>>2);
JMF 0:24d3eb812fd4 1283
JMF 0:24d3eb812fd4 1284 }
JMF 0:24d3eb812fd4 1285
JMF 0:24d3eb812fd4 1286
JMF 0:24d3eb812fd4 1287 /**
JMF 0:24d3eb812fd4 1288 * @brief Returns the source address of the received packet.
JMF 0:24d3eb812fd4 1289 * @param None.
JMF 0:24d3eb812fd4 1290 * @retval uint8_t Source address of the received packet.
JMF 0:24d3eb812fd4 1291 */
JMF 0:24d3eb812fd4 1292 uint8_t SpiritPktCommonGetReceivedSourceAddress(void)
JMF 0:24d3eb812fd4 1293 {
JMF 0:24d3eb812fd4 1294 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1295
JMF 0:24d3eb812fd4 1296 /* Reads the RX_ADDR_FIELD1 register value */
JMF 0:24d3eb812fd4 1297 g_xStatus = SpiritSpiReadRegisters(RX_ADDR_FIELD1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1298
JMF 0:24d3eb812fd4 1299 /* Returns value */
JMF 0:24d3eb812fd4 1300 return tempRegValue;
JMF 0:24d3eb812fd4 1301
JMF 0:24d3eb812fd4 1302 }
JMF 0:24d3eb812fd4 1303
JMF 0:24d3eb812fd4 1304
JMF 0:24d3eb812fd4 1305 /**
JMF 0:24d3eb812fd4 1306 * @brief Returns the sequence number of the received packet.
JMF 0:24d3eb812fd4 1307 * @param None.
JMF 0:24d3eb812fd4 1308 * @retval uint8_t Received Sequence number.
JMF 0:24d3eb812fd4 1309 */
JMF 0:24d3eb812fd4 1310 uint8_t SpiritPktCommonGetReceivedSeqNumber(void)
JMF 0:24d3eb812fd4 1311 {
JMF 0:24d3eb812fd4 1312 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1313
JMF 0:24d3eb812fd4 1314 /* Reads the RX_PCKT_INFO register value */
JMF 0:24d3eb812fd4 1315 g_xStatus = SpiritSpiReadRegisters(RX_PCKT_INFO_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1316
JMF 0:24d3eb812fd4 1317 /* Obtains and returns the sequence number */
JMF 0:24d3eb812fd4 1318 return tempRegValue & 0x03;
JMF 0:24d3eb812fd4 1319
JMF 0:24d3eb812fd4 1320 }
JMF 0:24d3eb812fd4 1321
JMF 0:24d3eb812fd4 1322
JMF 0:24d3eb812fd4 1323 /**
JMF 0:24d3eb812fd4 1324 * @brief Returns the Nack bit of the received packet
JMF 0:24d3eb812fd4 1325 * @param None.
JMF 0:24d3eb812fd4 1326 * @retval uint8_t Value of the Nack bit.
JMF 0:24d3eb812fd4 1327 */
JMF 0:24d3eb812fd4 1328 uint8_t SpiritPktCommonGetReceivedNackRx(void)
JMF 0:24d3eb812fd4 1329 {
JMF 0:24d3eb812fd4 1330 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1331
JMF 0:24d3eb812fd4 1332 /* Reads the RX_PCKT_INFO register value */
JMF 0:24d3eb812fd4 1333 g_xStatus = SpiritSpiReadRegisters(RX_PCKT_INFO_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1334
JMF 0:24d3eb812fd4 1335 /* Obtains and returns the RX nack bit */
JMF 0:24d3eb812fd4 1336 return (tempRegValue >> 2) & 0x01;
JMF 0:24d3eb812fd4 1337
JMF 0:24d3eb812fd4 1338 }
JMF 0:24d3eb812fd4 1339
JMF 0:24d3eb812fd4 1340
JMF 0:24d3eb812fd4 1341 /**
JMF 0:24d3eb812fd4 1342 * @brief Returns the sequence number of the transmitted packet.
JMF 0:24d3eb812fd4 1343 * @param None.
JMF 0:24d3eb812fd4 1344 * @retval uint8_t Sequence number of the transmitted packet.
JMF 0:24d3eb812fd4 1345 */
JMF 0:24d3eb812fd4 1346 uint8_t SpiritPktCommonGetTransmittedSeqNumber(void)
JMF 0:24d3eb812fd4 1347 {
JMF 0:24d3eb812fd4 1348 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1349
JMF 0:24d3eb812fd4 1350 /* Reads the TX_PCKT_INFO register value */
JMF 0:24d3eb812fd4 1351 g_xStatus = SpiritSpiReadRegisters(TX_PCKT_INFO_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1352
JMF 0:24d3eb812fd4 1353 /* Obtains and returns the TX sequence number */
JMF 0:24d3eb812fd4 1354 return (tempRegValue >> 4) & 0x07;
JMF 0:24d3eb812fd4 1355
JMF 0:24d3eb812fd4 1356 }
JMF 0:24d3eb812fd4 1357
JMF 0:24d3eb812fd4 1358
JMF 0:24d3eb812fd4 1359 /**
JMF 0:24d3eb812fd4 1360 * @brief Returns the number of retransmission done on the transmitted packet.
JMF 0:24d3eb812fd4 1361 * @param None.
JMF 0:24d3eb812fd4 1362 * @retval uint8_t Number of retransmissions done until now.
JMF 0:24d3eb812fd4 1363 */
JMF 0:24d3eb812fd4 1364 uint8_t SpiritPktCommonGetNReTx(void)
JMF 0:24d3eb812fd4 1365 {
JMF 0:24d3eb812fd4 1366 uint8_t tempRetValue;
JMF 0:24d3eb812fd4 1367
JMF 0:24d3eb812fd4 1368 /* Reads the TX_PCKT_INFO register value */
JMF 0:24d3eb812fd4 1369 g_xStatus = SpiritSpiReadRegisters(TX_PCKT_INFO_BASE, 1, &tempRetValue);
JMF 0:24d3eb812fd4 1370
JMF 0:24d3eb812fd4 1371 /* Obtains and returns the number of retransmission done */
JMF 0:24d3eb812fd4 1372 return (tempRetValue & 0x0F);
JMF 0:24d3eb812fd4 1373
JMF 0:24d3eb812fd4 1374 }
JMF 0:24d3eb812fd4 1375
JMF 0:24d3eb812fd4 1376
JMF 0:24d3eb812fd4 1377 /**
JMF 0:24d3eb812fd4 1378 * @brief If enabled RX packet is accepted only if the masked control field matches the
JMF 0:24d3eb812fd4 1379 * masked control field reference (CONTROL_MASK & CONTROL_FIELD_REF == CONTROL_MASK & RX_CONTROL_FIELD).
JMF 0:24d3eb812fd4 1380 * @param xNewState new state for Control filtering enable bit.
JMF 0:24d3eb812fd4 1381 * This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1382 * @retval None.
JMF 0:24d3eb812fd4 1383 * @note This filtering control is enabled by default but the control mask is by default set to 0.
JMF 0:24d3eb812fd4 1384 * As a matter of fact the user has to enable the control filtering bit after the packet initialization
JMF 0:24d3eb812fd4 1385 * because the PktInit routine disables it.
JMF 0:24d3eb812fd4 1386 */
JMF 0:24d3eb812fd4 1387 void SpiritPktCommonFilterOnControlField(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 1388 {
JMF 0:24d3eb812fd4 1389 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1390
JMF 0:24d3eb812fd4 1391 /* Check the parameters */
JMF 0:24d3eb812fd4 1392 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 1393
JMF 0:24d3eb812fd4 1394
JMF 0:24d3eb812fd4 1395 /* Modify the register value: set or reset the control bit filtering */
JMF 0:24d3eb812fd4 1396 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1397
JMF 0:24d3eb812fd4 1398 /* Set or reset the CONTROL filtering enabling bit */
JMF 0:24d3eb812fd4 1399 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 1400 {
JMF 0:24d3eb812fd4 1401 tempRegValue |= PCKT_FLT_OPTIONS_CONTROL_FILTERING_MASK;
JMF 0:24d3eb812fd4 1402 }
JMF 0:24d3eb812fd4 1403 else
JMF 0:24d3eb812fd4 1404 {
JMF 0:24d3eb812fd4 1405 tempRegValue &= ~PCKT_FLT_OPTIONS_CONTROL_FILTERING_MASK;
JMF 0:24d3eb812fd4 1406 }
JMF 0:24d3eb812fd4 1407
JMF 0:24d3eb812fd4 1408 /* Writes the new value on the PCKT_FLT_OPTIONS register */
JMF 0:24d3eb812fd4 1409 g_xStatus = SpiritSpiWriteRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1410
JMF 0:24d3eb812fd4 1411 }
JMF 0:24d3eb812fd4 1412
JMF 0:24d3eb812fd4 1413
JMF 0:24d3eb812fd4 1414 /**
JMF 0:24d3eb812fd4 1415 * @brief Returns the enable bit of the control field filtering.
JMF 0:24d3eb812fd4 1416 * @param None.
JMF 0:24d3eb812fd4 1417 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 1418 */
JMF 0:24d3eb812fd4 1419 SpiritFunctionalState SpiritPktCommonGetFilterOnControlField(void)
JMF 0:24d3eb812fd4 1420 {
JMF 0:24d3eb812fd4 1421 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 1422
JMF 0:24d3eb812fd4 1423 /* Reads the register value */
JMF 0:24d3eb812fd4 1424 g_xStatus = SpiritSpiReadRegisters(PCKT_FLT_OPTIONS_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 1425
JMF 0:24d3eb812fd4 1426 /* Gets the enable/disable bit in form of SpiritFunctionalState type */
JMF 0:24d3eb812fd4 1427 if(tempRegValue & PCKT_FLT_OPTIONS_CONTROL_FILTERING_MASK)
JMF 0:24d3eb812fd4 1428 {
JMF 0:24d3eb812fd4 1429 return S_ENABLE;
JMF 0:24d3eb812fd4 1430 }
JMF 0:24d3eb812fd4 1431 else
JMF 0:24d3eb812fd4 1432 {
JMF 0:24d3eb812fd4 1433 return S_DISABLE;
JMF 0:24d3eb812fd4 1434 }
JMF 0:24d3eb812fd4 1435
JMF 0:24d3eb812fd4 1436 }
JMF 0:24d3eb812fd4 1437
JMF 0:24d3eb812fd4 1438
JMF 0:24d3eb812fd4 1439 /**
JMF 0:24d3eb812fd4 1440 *@}
JMF 0:24d3eb812fd4 1441 */
JMF 0:24d3eb812fd4 1442
JMF 0:24d3eb812fd4 1443 /**
JMF 0:24d3eb812fd4 1444 *@}
JMF 0:24d3eb812fd4 1445 */
JMF 0:24d3eb812fd4 1446
JMF 0:24d3eb812fd4 1447
JMF 0:24d3eb812fd4 1448 /**
JMF 0:24d3eb812fd4 1449 *@}
JMF 0:24d3eb812fd4 1450 */
JMF 0:24d3eb812fd4 1451
JMF 0:24d3eb812fd4 1452
JMF 0:24d3eb812fd4 1453 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/