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