wifi test

Dependencies:   X_NUCLEO_IKS01A2 mbed-http

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:24d3eb812fd4 1 /**
JMF 0:24d3eb812fd4 2 ******************************************************************************
JMF 0:24d3eb812fd4 3 * @file SPIRIT_Csma.h
JMF 0:24d3eb812fd4 4 * @author VMA division - AMS
JMF 0:24d3eb812fd4 5 * @version 3.2.2
JMF 0:24d3eb812fd4 6 * @date 08-July-2015
JMF 0:24d3eb812fd4 7 * @brief Configuration and management of SPIRIT CSMA.
JMF 0:24d3eb812fd4 8 * @details
JMF 0:24d3eb812fd4 9 *
JMF 0:24d3eb812fd4 10 * The Spirit CSMA feature, when configured and enabled, is transparent
JMF 0:24d3eb812fd4 11 * for the user. It means the user has only to call the <i>@ref SpiritCsmaInit()</i>
JMF 0:24d3eb812fd4 12 * function on a filled structure and then enable the CSMA policy using the <i>@ref SpiritCsma()</i>
JMF 0:24d3eb812fd4 13 * function.
JMF 0:24d3eb812fd4 14 *
JMF 0:24d3eb812fd4 15 * <b>Example:</b>
JMF 0:24d3eb812fd4 16 * @code
JMF 0:24d3eb812fd4 17 *
JMF 0:24d3eb812fd4 18 * CsmaInit csmaInit={
JMF 0:24d3eb812fd4 19 * S_DISABLE, // persistent mode
JMF 0:24d3eb812fd4 20 * TBIT_TIME_64, // Tbit time
JMF 0:24d3eb812fd4 21 * TCCA_TIME_3, // Tcca time
JMF 0:24d3eb812fd4 22 * 5, // max number of backoffs
JMF 0:24d3eb812fd4 23 * 0xFA21, // BU counter seed
JMF 0:24d3eb812fd4 24 * 32 // CU prescaler
JMF 0:24d3eb812fd4 25 * };
JMF 0:24d3eb812fd4 26 *
JMF 0:24d3eb812fd4 27 * ...
JMF 0:24d3eb812fd4 28 *
JMF 0:24d3eb812fd4 29 * SpiritCsmaInit(&csmaInit);
JMF 0:24d3eb812fd4 30 * SpiritCsma(S_ENABLE);
JMF 0:24d3eb812fd4 31 *
JMF 0:24d3eb812fd4 32 *
JMF 0:24d3eb812fd4 33 * @endcode
JMF 0:24d3eb812fd4 34 *
JMF 0:24d3eb812fd4 35 * @note The CS status depends of the RSSI threshold set. Please see the Spirit_Qi
JMF 0:24d3eb812fd4 36 * module for details.
JMF 0:24d3eb812fd4 37 *
JMF 0:24d3eb812fd4 38 * @attention
JMF 0:24d3eb812fd4 39 *
JMF 0:24d3eb812fd4 40 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
JMF 0:24d3eb812fd4 41 *
JMF 0:24d3eb812fd4 42 * Redistribution and use in source and binary forms, with or without modification,
JMF 0:24d3eb812fd4 43 * are permitted provided that the following conditions are met:
JMF 0:24d3eb812fd4 44 * 1. Redistributions of source code must retain the above copyright notice,
JMF 0:24d3eb812fd4 45 * this list of conditions and the following disclaimer.
JMF 0:24d3eb812fd4 46 * 2. Redistributions in binary form must reproduce the above copyright notice,
JMF 0:24d3eb812fd4 47 * this list of conditions and the following disclaimer in the documentation
JMF 0:24d3eb812fd4 48 * and/or other materials provided with the distribution.
JMF 0:24d3eb812fd4 49 * 3. Neither the name of STMicroelectronics nor the names of its contributors
JMF 0:24d3eb812fd4 50 * may be used to endorse or promote products derived from this software
JMF 0:24d3eb812fd4 51 * without specific prior written permission.
JMF 0:24d3eb812fd4 52 *
JMF 0:24d3eb812fd4 53 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
JMF 0:24d3eb812fd4 54 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
JMF 0:24d3eb812fd4 55 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
JMF 0:24d3eb812fd4 56 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
JMF 0:24d3eb812fd4 57 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
JMF 0:24d3eb812fd4 58 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
JMF 0:24d3eb812fd4 59 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
JMF 0:24d3eb812fd4 60 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
JMF 0:24d3eb812fd4 61 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
JMF 0:24d3eb812fd4 62 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
JMF 0:24d3eb812fd4 63 *
JMF 0:24d3eb812fd4 64 ******************************************************************************
JMF 0:24d3eb812fd4 65 */
JMF 0:24d3eb812fd4 66
JMF 0:24d3eb812fd4 67 /* Define to prevent recursive inclusion -------------------------------------*/
JMF 0:24d3eb812fd4 68 #ifndef __SPIRIT_CSMA_H
JMF 0:24d3eb812fd4 69 #define __SPIRIT_CSMA_H
JMF 0:24d3eb812fd4 70
JMF 0:24d3eb812fd4 71
JMF 0:24d3eb812fd4 72 /* Includes ------------------------------------------------------------------*/
JMF 0:24d3eb812fd4 73
JMF 0:24d3eb812fd4 74 #include "SPIRIT_Types.h"
JMF 0:24d3eb812fd4 75 #include "SPIRIT_Regs.h"
JMF 0:24d3eb812fd4 76
JMF 0:24d3eb812fd4 77
JMF 0:24d3eb812fd4 78 #ifdef __cplusplus
JMF 0:24d3eb812fd4 79 extern "C" {
JMF 0:24d3eb812fd4 80 #endif
JMF 0:24d3eb812fd4 81
JMF 0:24d3eb812fd4 82
JMF 0:24d3eb812fd4 83 /**
JMF 0:24d3eb812fd4 84 * @addtogroup SPIRIT_Libraries
JMF 0:24d3eb812fd4 85 * @{
JMF 0:24d3eb812fd4 86 */
JMF 0:24d3eb812fd4 87
JMF 0:24d3eb812fd4 88
JMF 0:24d3eb812fd4 89 /**
JMF 0:24d3eb812fd4 90 * @defgroup SPIRIT_Csma CSMA
JMF 0:24d3eb812fd4 91 * @brief Configuration and management of SPIRIT CSMA.
JMF 0:24d3eb812fd4 92 * @details See the file <i>@ref SPIRIT_Csma.h</i> for more details.
JMF 0:24d3eb812fd4 93 * @{
JMF 0:24d3eb812fd4 94 */
JMF 0:24d3eb812fd4 95
JMF 0:24d3eb812fd4 96 /**
JMF 0:24d3eb812fd4 97 * @defgroup Csma_Exported_Types CSMA Exported Types
JMF 0:24d3eb812fd4 98 * @{
JMF 0:24d3eb812fd4 99 */
JMF 0:24d3eb812fd4 100
JMF 0:24d3eb812fd4 101
JMF 0:24d3eb812fd4 102 /**
JMF 0:24d3eb812fd4 103 * @brief Multiplier for Tcca time enumeration (Tcca = Multiplier*Tbit).
JMF 0:24d3eb812fd4 104 */
JMF 0:24d3eb812fd4 105 typedef enum
JMF 0:24d3eb812fd4 106 {
JMF 0:24d3eb812fd4 107 TBIT_TIME_64 = CSMA_CCA_PERIOD_64TBIT, /*!< CSMA/CA: Sets CCA period to 64*TBIT */
JMF 0:24d3eb812fd4 108 TBIT_TIME_128 = CSMA_CCA_PERIOD_128TBIT, /*!< CSMA/CA: Sets CCA period to 128*TBIT */
JMF 0:24d3eb812fd4 109 TBIT_TIME_256 = CSMA_CCA_PERIOD_256TBIT, /*!< CSMA/CA: Sets CCA period to 256*TBIT */
JMF 0:24d3eb812fd4 110 TBIT_TIME_512 = CSMA_CCA_PERIOD_512TBIT, /*!< CSMA/CA: Sets CCA period to 512*TBIT */
JMF 0:24d3eb812fd4 111 }CcaPeriod;
JMF 0:24d3eb812fd4 112
JMF 0:24d3eb812fd4 113 #define IS_CCA_PERIOD(PERIOD) (PERIOD == TBIT_TIME_64 || \
JMF 0:24d3eb812fd4 114 PERIOD == TBIT_TIME_128 || \
JMF 0:24d3eb812fd4 115 PERIOD == TBIT_TIME_256 || \
JMF 0:24d3eb812fd4 116 PERIOD == TBIT_TIME_512)
JMF 0:24d3eb812fd4 117
JMF 0:24d3eb812fd4 118
JMF 0:24d3eb812fd4 119 /**
JMF 0:24d3eb812fd4 120 * @brief Multiplier of Tcca time enumeration to obtain Tlisten (Tlisten = [1...15]*Tcca).
JMF 0:24d3eb812fd4 121 */
JMF 0:24d3eb812fd4 122 typedef enum
JMF 0:24d3eb812fd4 123 {
JMF 0:24d3eb812fd4 124 TCCA_TIME_0 = 0x00, /*!< CSMA/CA: Sets CCA length to 0 */
JMF 0:24d3eb812fd4 125 TCCA_TIME_1 = 0x10, /*!< CSMA/CA: Sets CCA length to 1*TLISTEN */
JMF 0:24d3eb812fd4 126 TCCA_TIME_2 = 0x20, /*!< CSMA/CA: Sets CCA length to 2*TLISTEN */
JMF 0:24d3eb812fd4 127 TCCA_TIME_3 = 0x30, /*!< CSMA/CA: Sets CCA length to 3*TLISTEN */
JMF 0:24d3eb812fd4 128 TCCA_TIME_4 = 0x40, /*!< CSMA/CA: Sets CCA length to 4*TLISTEN */
JMF 0:24d3eb812fd4 129 TCCA_TIME_5 = 0x50, /*!< CSMA/CA: Sets CCA length to 5*TLISTEN */
JMF 0:24d3eb812fd4 130 TCCA_TIME_6 = 0x60, /*!< CSMA/CA: Sets CCA length to 6*TLISTEN */
JMF 0:24d3eb812fd4 131 TCCA_TIME_7 = 0x70, /*!< CSMA/CA: Sets CCA length to 7*TLISTEN */
JMF 0:24d3eb812fd4 132 TCCA_TIME_8 = 0x80, /*!< CSMA/CA: Sets CCA length to 8*TLISTEN */
JMF 0:24d3eb812fd4 133 TCCA_TIME_9 = 0x90, /*!< CSMA/CA: Sets CCA length to 9*TLISTEN */
JMF 0:24d3eb812fd4 134 TCCA_TIME_10 = 0xA0, /*!< CSMA/CA: Sets CCA length to 10*TLISTEN */
JMF 0:24d3eb812fd4 135 TCCA_TIME_11 = 0xB0, /*!< CSMA/CA: Sets CCA length to 11*TLISTEN */
JMF 0:24d3eb812fd4 136 TCCA_TIME_12 = 0xC0, /*!< CSMA/CA: Sets CCA length to 12*TLISTEN */
JMF 0:24d3eb812fd4 137 TCCA_TIME_13 = 0xD0, /*!< CSMA/CA: Sets CCA length to 13*TLISTEN */
JMF 0:24d3eb812fd4 138 TCCA_TIME_14 = 0xE0, /*!< CSMA/CA: Sets CCA length to 14*TLISTEN */
JMF 0:24d3eb812fd4 139 TCCA_TIME_15 = 0xF0, /*!< CSMA/CA: Sets CCA length to 15*TLISTEN */
JMF 0:24d3eb812fd4 140 }CsmaLength;
JMF 0:24d3eb812fd4 141
JMF 0:24d3eb812fd4 142 #define IS_CSMA_LENGTH(LENGTH) (LENGTH == TCCA_TIME_0 || \
JMF 0:24d3eb812fd4 143 LENGTH == TCCA_TIME_1 || \
JMF 0:24d3eb812fd4 144 LENGTH == TCCA_TIME_2 || \
JMF 0:24d3eb812fd4 145 LENGTH == TCCA_TIME_3 || \
JMF 0:24d3eb812fd4 146 LENGTH == TCCA_TIME_4 || \
JMF 0:24d3eb812fd4 147 LENGTH == TCCA_TIME_5 || \
JMF 0:24d3eb812fd4 148 LENGTH == TCCA_TIME_6 || \
JMF 0:24d3eb812fd4 149 LENGTH == TCCA_TIME_7 || \
JMF 0:24d3eb812fd4 150 LENGTH == TCCA_TIME_8 || \
JMF 0:24d3eb812fd4 151 LENGTH == TCCA_TIME_9 || \
JMF 0:24d3eb812fd4 152 LENGTH == TCCA_TIME_10 || \
JMF 0:24d3eb812fd4 153 LENGTH == TCCA_TIME_11 || \
JMF 0:24d3eb812fd4 154 LENGTH == TCCA_TIME_12 || \
JMF 0:24d3eb812fd4 155 LENGTH == TCCA_TIME_13 || \
JMF 0:24d3eb812fd4 156 LENGTH == TCCA_TIME_14 || \
JMF 0:24d3eb812fd4 157 LENGTH == TCCA_TIME_15)
JMF 0:24d3eb812fd4 158
JMF 0:24d3eb812fd4 159
JMF 0:24d3eb812fd4 160 /**
JMF 0:24d3eb812fd4 161 * @brief SPIRIT CSMA Init structure definition
JMF 0:24d3eb812fd4 162 */
JMF 0:24d3eb812fd4 163 typedef struct
JMF 0:24d3eb812fd4 164 {
JMF 0:24d3eb812fd4 165 SpiritFunctionalState xCsmaPersistentMode; /*!< Specifies if the CSMA persistent mode has to be on or off.
JMF 0:24d3eb812fd4 166 This parameter can be S_ENABLE or S_DISABLE */
JMF 0:24d3eb812fd4 167 CcaPeriod xMultiplierTbit; /*!< Specifies the Tbit multiplier to obtain the Tcca.
JMF 0:24d3eb812fd4 168 This parameter can be a value of @ref CcaPeriod */
JMF 0:24d3eb812fd4 169 CsmaLength xCcaLength; /*!< Specifies the Tcca multiplier to determinate the Tlisten.
JMF 0:24d3eb812fd4 170 This parameter can be a value of @ref CsmaLength. */
JMF 0:24d3eb812fd4 171 uint8_t cMaxNb; /*!< Specifies the max number of backoff cycles. Not used in persistent mode.
JMF 0:24d3eb812fd4 172 This parameter is an uint8_t. */
JMF 0:24d3eb812fd4 173 uint16_t nBuCounterSeed; /*!< Specifies the BU counter seed. Not used in persistent mode.
JMF 0:24d3eb812fd4 174 This parameter can be a value of 16 bits. */
JMF 0:24d3eb812fd4 175 uint8_t cBuPrescaler; /*!< Specifies the BU prescaler. Not used in persistent mode.
JMF 0:24d3eb812fd4 176 This parameter can be a value of 6 bits. */
JMF 0:24d3eb812fd4 177 }CsmaInit;
JMF 0:24d3eb812fd4 178
JMF 0:24d3eb812fd4 179
JMF 0:24d3eb812fd4 180 /**
JMF 0:24d3eb812fd4 181 *@}
JMF 0:24d3eb812fd4 182 */
JMF 0:24d3eb812fd4 183
JMF 0:24d3eb812fd4 184
JMF 0:24d3eb812fd4 185 /**
JMF 0:24d3eb812fd4 186 * @defgroup Csma_Exported_Constants CSMA Exported Constants
JMF 0:24d3eb812fd4 187 * @{
JMF 0:24d3eb812fd4 188 */
JMF 0:24d3eb812fd4 189
JMF 0:24d3eb812fd4 190 /**
JMF 0:24d3eb812fd4 191 * @defgroup Csma_Parameters CSMA Parameters
JMF 0:24d3eb812fd4 192 * @{
JMF 0:24d3eb812fd4 193 */
JMF 0:24d3eb812fd4 194
JMF 0:24d3eb812fd4 195 #define IS_BU_COUNTER_SEED(SEED) (SEED!=0)
JMF 0:24d3eb812fd4 196 #define IS_BU_PRESCALER(PRESCALER) (PRESCALER<64)
JMF 0:24d3eb812fd4 197 #define IS_CMAX_NB(NB) (NB<8)
JMF 0:24d3eb812fd4 198
JMF 0:24d3eb812fd4 199 /**
JMF 0:24d3eb812fd4 200 *@}
JMF 0:24d3eb812fd4 201 */
JMF 0:24d3eb812fd4 202
JMF 0:24d3eb812fd4 203 /**
JMF 0:24d3eb812fd4 204 *@}
JMF 0:24d3eb812fd4 205 */
JMF 0:24d3eb812fd4 206
JMF 0:24d3eb812fd4 207
JMF 0:24d3eb812fd4 208 /**
JMF 0:24d3eb812fd4 209 * @defgroup Csma_Exported_Macros CSMA Exported Macros
JMF 0:24d3eb812fd4 210 * @{
JMF 0:24d3eb812fd4 211 */
JMF 0:24d3eb812fd4 212
JMF 0:24d3eb812fd4 213
JMF 0:24d3eb812fd4 214 /**
JMF 0:24d3eb812fd4 215 *@}
JMF 0:24d3eb812fd4 216 */
JMF 0:24d3eb812fd4 217
JMF 0:24d3eb812fd4 218
JMF 0:24d3eb812fd4 219 /**
JMF 0:24d3eb812fd4 220 * @defgroup Csma_Exported_Functions CSMA Exported Functions
JMF 0:24d3eb812fd4 221 * @{
JMF 0:24d3eb812fd4 222 */
JMF 0:24d3eb812fd4 223
JMF 0:24d3eb812fd4 224 void SpiritCsmaInit(CsmaInit* pxCsmaInit);
JMF 0:24d3eb812fd4 225 void SpiritCsmaGetInfo(CsmaInit* pxCsmaInit);
JMF 0:24d3eb812fd4 226 void SpiritCsma(SpiritFunctionalState xNewState);
JMF 0:24d3eb812fd4 227 SpiritFunctionalState SpiritCsmaGetCsma(void);
JMF 0:24d3eb812fd4 228 void SpiritCsmaPersistentMode(SpiritFunctionalState xNewState);
JMF 0:24d3eb812fd4 229 SpiritFunctionalState SpiritCsmaGetPersistentMode(void);
JMF 0:24d3eb812fd4 230 void SpiritCsmaSeedReloadMode(SpiritFunctionalState xNewState);
JMF 0:24d3eb812fd4 231 SpiritFunctionalState SpiritCsmaGetSeedReloadMode(void);
JMF 0:24d3eb812fd4 232 void SpiritCsmaSetBuCounterSeed(uint16_t nBuCounterSeed);
JMF 0:24d3eb812fd4 233 uint16_t SpiritCsmaGetBuCounterSeed(void);
JMF 0:24d3eb812fd4 234 void SpiritCsmaSetBuPrescaler(uint8_t cBuPrescaler);
JMF 0:24d3eb812fd4 235 uint8_t SpiritCsmaGetBuPrescaler(void);
JMF 0:24d3eb812fd4 236 void SpiritCsmaSetCcaPeriod(CcaPeriod xMultiplierTbit);
JMF 0:24d3eb812fd4 237 CcaPeriod SpiritCsmaGetCcaPeriod(void);
JMF 0:24d3eb812fd4 238 void SpiritCsmaSetCcaLength(CsmaLength xCcaLength);
JMF 0:24d3eb812fd4 239 uint8_t SpiritCsmaGetCcaLength(void);
JMF 0:24d3eb812fd4 240 void SpiritCsmaSetMaxNumberBackoff(uint8_t cMaxNb);
JMF 0:24d3eb812fd4 241 uint8_t SpiritCsmaGetMaxNumberBackoff(void);
JMF 0:24d3eb812fd4 242
JMF 0:24d3eb812fd4 243
JMF 0:24d3eb812fd4 244 /**
JMF 0:24d3eb812fd4 245 *@}
JMF 0:24d3eb812fd4 246 */
JMF 0:24d3eb812fd4 247
JMF 0:24d3eb812fd4 248 /**
JMF 0:24d3eb812fd4 249 *@}
JMF 0:24d3eb812fd4 250 */
JMF 0:24d3eb812fd4 251
JMF 0:24d3eb812fd4 252
JMF 0:24d3eb812fd4 253 /**
JMF 0:24d3eb812fd4 254 *@}
JMF 0:24d3eb812fd4 255 */
JMF 0:24d3eb812fd4 256
JMF 0:24d3eb812fd4 257 #ifdef __cplusplus
JMF 0:24d3eb812fd4 258 }
JMF 0:24d3eb812fd4 259 #endif
JMF 0:24d3eb812fd4 260
JMF 0:24d3eb812fd4 261 #endif
JMF 0:24d3eb812fd4 262
JMF 0:24d3eb812fd4 263 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/