Easily add all supported connectivity methods to your mbed OS project

Dependencies:   type-yd-driver

Committer:
MACRUM
Date:
Wed Jul 12 10:52:58 2017 +0000
Revision:
0:615f90842ce8
Initial commit

Who changed what in which revision?

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