Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

Committer:
Jeej
Date:
Tue Dec 12 16:03:12 2017 +0000
Revision:
19:701d5669f2e9
Child:
26:2c934a269914
Updated for modem v4.13.x

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 19:701d5669f2e9 1 /// ======================================================================
Jeej 19:701d5669f2e9 2 ///
Jeej 19:701d5669f2e9 3 /// Copyright (C) 20XX WizziLab
Jeej 19:701d5669f2e9 4 /// All Rights Reserved
Jeej 19:701d5669f2e9 5 ///
Jeej 19:701d5669f2e9 6 /// =======================================================================
Jeej 19:701d5669f2e9 7 ///
Jeej 19:701d5669f2e9 8 /// @file d7a_fs_1x.h
Jeej 19:701d5669f2e9 9 /// @brief D7A 1.x File System definitions
Jeej 19:701d5669f2e9 10 /// @defgroup D7A D7A 1.x File System definitions
Jeej 19:701d5669f2e9 11 /// @{
Jeej 19:701d5669f2e9 12 /// =======================================================================
Jeej 19:701d5669f2e9 13
Jeej 19:701d5669f2e9 14 #ifndef __D7A_1X_FS_H__
Jeej 19:701d5669f2e9 15 #define __D7A_1X_FS_H__
Jeej 19:701d5669f2e9 16
Jeej 19:701d5669f2e9 17 // =======================================================================
Jeej 19:701d5669f2e9 18 // d7a_fs_id_t
Jeej 19:701d5669f2e9 19 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 20 /// D7A 1.x File System Identifiers (need to be defs for auto linker generation)
Jeej 19:701d5669f2e9 21 // =======================================================================
Jeej 19:701d5669f2e9 22 #define D7A_FID_UID 0
Jeej 19:701d5669f2e9 23 #define D7A_FID_FACTORY_SETTINGS 1
Jeej 19:701d5669f2e9 24 #define D7A_FID_FIRMWARE_VERSION 2
Jeej 19:701d5669f2e9 25 #define D7A_FID_DEVICE_CAPACITY 3
Jeej 19:701d5669f2e9 26 #define D7A_FID_DEVICE_STATUS 4
Jeej 19:701d5669f2e9 27 #define D7A_FID_ENG 5
Jeej 19:701d5669f2e9 28 #define D7A_FID_VID 6
Jeej 19:701d5669f2e9 29 #define D7A_FID_RFU_07 7
Jeej 19:701d5669f2e9 30 #define D7A_FID_PHY_CFG 8
Jeej 19:701d5669f2e9 31 #define D7A_FID_PHY_STATUS 9
Jeej 19:701d5669f2e9 32 #define D7A_FID_DLL_CFG 10
Jeej 19:701d5669f2e9 33 #define D7A_FID_DLL_STATUS 11
Jeej 19:701d5669f2e9 34 #define D7A_FID_NWL_ROUTING 12
Jeej 19:701d5669f2e9 35 #define D7A_FID_NWL_SECURITY 13
Jeej 19:701d5669f2e9 36 #define D7A_FID_NWL_KEY 14
Jeej 19:701d5669f2e9 37 #define D7A_FID_NWL_SSR 15
Jeej 19:701d5669f2e9 38 #define D7A_FID_NWL_STATUS 16
Jeej 19:701d5669f2e9 39 #define D7A_FID_TRL_STATUS 17
Jeej 19:701d5669f2e9 40 #define D7A_FID_SEL_CFG 18
Jeej 19:701d5669f2e9 41 #define D7A_FID_SEL_STATUS 19
Jeej 19:701d5669f2e9 42 #define D7A_FID_RFU_20 20
Jeej 19:701d5669f2e9 43 #define D7A_FID_RFU_21 21
Jeej 19:701d5669f2e9 44 #define D7A_FID_RFU_22 22
Jeej 19:701d5669f2e9 45 #define D7A_FID_LOCATION_DATA 23
Jeej 19:701d5669f2e9 46 #define D7A_FID_ROOT_KEY 24
Jeej 19:701d5669f2e9 47 #define D7A_FID_USER_KEY 25
Jeej 19:701d5669f2e9 48 #define D7A_FID_RFU_26 26
Jeej 19:701d5669f2e9 49 #define D7A_FID_SENSOR_DESCRIPTION 27
Jeej 19:701d5669f2e9 50 #define D7A_FID_RTC 28
Jeej 19:701d5669f2e9 51 #define D7A_FID_RFU_29 29
Jeej 19:701d5669f2e9 52 #define D7A_FID_RFU_30 30
Jeej 19:701d5669f2e9 53 #define D7A_FID_RFU_31 31
Jeej 19:701d5669f2e9 54 #define D7A_FID_ACCESS_PROFILE_0 32
Jeej 19:701d5669f2e9 55 #define D7A_FID_ACCESS_PROFILE_1 33
Jeej 19:701d5669f2e9 56 #define D7A_FID_ACCESS_PROFILE_2 34
Jeej 19:701d5669f2e9 57 #define D7A_FID_ACCESS_PROFILE_3 35
Jeej 19:701d5669f2e9 58 #define D7A_FID_ACCESS_PROFILE_4 36
Jeej 19:701d5669f2e9 59 #define D7A_FID_ACCESS_PROFILE_5 37
Jeej 19:701d5669f2e9 60 #define D7A_FID_ACCESS_PROFILE_6 38
Jeej 19:701d5669f2e9 61 #define D7A_FID_ACCESS_PROFILE_7 39
Jeej 19:701d5669f2e9 62 #define D7A_FID_ACCESS_PROFILE_8 40
Jeej 19:701d5669f2e9 63 #define D7A_FID_ACCESS_PROFILE_9 41
Jeej 19:701d5669f2e9 64 #define D7A_FID_ACCESS_PROFILE_A 42
Jeej 19:701d5669f2e9 65 #define D7A_FID_ACCESS_PROFILE_B 43
Jeej 19:701d5669f2e9 66 #define D7A_FID_ACCESS_PROFILE_C 44
Jeej 19:701d5669f2e9 67 #define D7A_FID_ACCESS_PROFILE_D 45
Jeej 19:701d5669f2e9 68 #define D7A_FID_ACCESS_PROFILE_E 46
Jeej 19:701d5669f2e9 69 #define D7A_FID_ACCESS_PROFILE_F 47
Jeej 19:701d5669f2e9 70 #define D7A_FID_RFU_48 48
Jeej 19:701d5669f2e9 71 #define D7A_FID_RFU_49 49
Jeej 19:701d5669f2e9 72 #define D7A_FID_RFU_50 50
Jeej 19:701d5669f2e9 73 #define D7A_FID_RFU_51 51
Jeej 19:701d5669f2e9 74 #define D7A_FID_RFU_52 52
Jeej 19:701d5669f2e9 75 #define D7A_FID_RFU_53 53
Jeej 19:701d5669f2e9 76 #define D7A_FID_RFU_54 54
Jeej 19:701d5669f2e9 77 #define D7A_FID_RFU_55 55
Jeej 19:701d5669f2e9 78 #define D7A_FID_RFU_56 56
Jeej 19:701d5669f2e9 79 #define D7A_FID_RFU_57 57
Jeej 19:701d5669f2e9 80 #define D7A_FID_RFU_58 58
Jeej 19:701d5669f2e9 81 #define D7A_FID_RFU_59 59
Jeej 19:701d5669f2e9 82 #define D7A_FID_RFU_60 60
Jeej 19:701d5669f2e9 83 #define D7A_FID_RFU_61 61
Jeej 19:701d5669f2e9 84 #define D7A_FID_RFU_62 62
Jeej 19:701d5669f2e9 85 #define D7A_FID_RFU_63 63
Jeej 19:701d5669f2e9 86
Jeej 19:701d5669f2e9 87 // =======================================================================
Jeej 19:701d5669f2e9 88 /// FILE ACCESS TYPES
Jeej 19:701d5669f2e9 89 // =======================================================================
Jeej 19:701d5669f2e9 90 #define D7A_FS_OPENBAR 0b11110110
Jeej 19:701d5669f2e9 91 #define D7A_FS_STANDARD 0b11110100
Jeej 19:701d5669f2e9 92 #define D7A_FS_READ_ONLY 0b11100100
Jeej 19:701d5669f2e9 93 #define D7A_FS_ROOT 0b11000000
Jeej 19:701d5669f2e9 94 #define D7A_FS_ROOT_RO 0b10000000
Jeej 19:701d5669f2e9 95 #define D7A_FS_ROOT_WO 0b01000000
Jeej 19:701d5669f2e9 96
Jeej 19:701d5669f2e9 97 /// =======================================================================
Jeej 19:701d5669f2e9 98 /// =======================================================================
Jeej 19:701d5669f2e9 99 ///
Jeej 19:701d5669f2e9 100 /// 0. UID
Jeej 19:701d5669f2e9 101 ///
Jeej 19:701d5669f2e9 102 /// =======================================================================
Jeej 19:701d5669f2e9 103 /// =======================================================================
Jeej 19:701d5669f2e9 104
Jeej 19:701d5669f2e9 105 // =======================================================================
Jeej 19:701d5669f2e9 106 // d7a_uid_t
Jeej 19:701d5669f2e9 107 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 108 /// UID File structure
Jeej 19:701d5669f2e9 109 // =======================================================================
Jeej 19:701d5669f2e9 110 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 111 {
Jeej 19:701d5669f2e9 112 /// UID is a u64 in big endian
Jeej 19:701d5669f2e9 113 u8 uid[D7A_UID_LEN];
Jeej 19:701d5669f2e9 114
Jeej 19:701d5669f2e9 115 } d7a_uid_t;
Jeej 19:701d5669f2e9 116 #define D7A_FS_UID_SIZE sizeof(d7a_uid_t)
Jeej 19:701d5669f2e9 117
Jeej 19:701d5669f2e9 118 /// =======================================================================
Jeej 19:701d5669f2e9 119 /// =======================================================================
Jeej 19:701d5669f2e9 120 ///
Jeej 19:701d5669f2e9 121 /// 1. FACTORY SETTINGS
Jeej 19:701d5669f2e9 122 ///
Jeej 19:701d5669f2e9 123 /// =======================================================================
Jeej 19:701d5669f2e9 124 /// =======================================================================
Jeej 19:701d5669f2e9 125
Jeej 19:701d5669f2e9 126 // =======================================================================
Jeej 19:701d5669f2e9 127 // d7a_factory_settings_t
Jeej 19:701d5669f2e9 128 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 129 /// Factory Settingd File structure
Jeej 19:701d5669f2e9 130 // =======================================================================
Jeej 19:701d5669f2e9 131 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 132 {
Jeej 19:701d5669f2e9 133 /// Calibrated frequency offset to be applied on the central frequency
Jeej 19:701d5669f2e9 134 s16 fof;
Jeej 19:701d5669f2e9 135 /// Variance of the FOF measurement
Jeej 19:701d5669f2e9 136 u16 var;
Jeej 19:701d5669f2e9 137 /// Calibration status
Jeej 19:701d5669f2e9 138 u8 calib_rx;
Jeej 19:701d5669f2e9 139 /// Reception Insertion Loss (dB)
Jeej 19:701d5669f2e9 140 s8 iloss_rx;
Jeej 19:701d5669f2e9 141 /// Transmission Insertion Loss (dB)
Jeej 19:701d5669f2e9 142 s8 iloss_tx;
Jeej 19:701d5669f2e9 143
Jeej 19:701d5669f2e9 144 } d7a_factory_settings_t;
Jeej 19:701d5669f2e9 145 #define D7A_FS_FACTORY_SETTINGS_SIZE sizeof(d7a_factory_settings_t)
Jeej 19:701d5669f2e9 146
Jeej 19:701d5669f2e9 147 /// =======================================================================
Jeej 19:701d5669f2e9 148 /// =======================================================================
Jeej 19:701d5669f2e9 149 ///
Jeej 19:701d5669f2e9 150 /// 3. DEVICE CAPACITY
Jeej 19:701d5669f2e9 151 ///
Jeej 19:701d5669f2e9 152 /// =======================================================================
Jeej 19:701d5669f2e9 153 /// =======================================================================
Jeej 19:701d5669f2e9 154
Jeej 19:701d5669f2e9 155 // =======================================================================
Jeej 19:701d5669f2e9 156 // d7a_device_t
Jeej 19:701d5669f2e9 157 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 158 /// Enumerator of the device types
Jeej 19:701d5669f2e9 159 // =======================================================================
Jeej 19:701d5669f2e9 160 typedef enum
Jeej 19:701d5669f2e9 161 {
Jeej 19:701d5669f2e9 162 /// Endpoint
Jeej 19:701d5669f2e9 163 D7A_DEVICE_EP = 0,
Jeej 19:701d5669f2e9 164 /// Subcontroller
Jeej 19:701d5669f2e9 165 D7A_DEVICE_SC,
Jeej 19:701d5669f2e9 166 /// Gateway
Jeej 19:701d5669f2e9 167 D7A_DEVICE_GW,
Jeej 19:701d5669f2e9 168 /// Quantity
Jeej 19:701d5669f2e9 169 D7A_DEVICE_QTY,
Jeej 19:701d5669f2e9 170
Jeej 19:701d5669f2e9 171 } d7a_device_t;
Jeej 19:701d5669f2e9 172
Jeej 19:701d5669f2e9 173 #define D7A_FS_BMP(b) (1 << (b))
Jeej 19:701d5669f2e9 174 // =======================================================================
Jeej 19:701d5669f2e9 175 // d7a_device_capacity_t
Jeej 19:701d5669f2e9 176 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 177 /// Device Capacity File structure
Jeej 19:701d5669f2e9 178 // =======================================================================
Jeej 19:701d5669f2e9 179 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 180 {
Jeej 19:701d5669f2e9 181 /// Supported ISM bands bitmap
Jeej 19:701d5669f2e9 182 u8 ism_bands_bmp;
Jeej 19:701d5669f2e9 183 /// Supported Channel Classes and Coding Schemes bitmap
Jeej 19:701d5669f2e9 184 u8 ch_class_cs_bmp;
Jeej 19:701d5669f2e9 185 /// Device type
Jeej 19:701d5669f2e9 186 u8 device_type;
Jeej 19:701d5669f2e9 187 /// Supported Network Layer Security Methods
Jeej 19:701d5669f2e9 188 u16 nls_supported;
Jeej 19:701d5669f2e9 189 /// Deprecated : Active Network Layer Security Methods
Jeej 19:701d5669f2e9 190 u16 rfu;
Jeej 19:701d5669f2e9 191 /// Min supported EIRP of the device in dBm
Jeej 19:701d5669f2e9 192 s8 eirp_min;
Jeej 19:701d5669f2e9 193 /// Max supported EIRP of the device in dBm
Jeej 19:701d5669f2e9 194 s8 eirp_max;
Jeej 19:701d5669f2e9 195 /// Total D7A File System Volatile memory
Jeej 19:701d5669f2e9 196 u32 ram_total;
Jeej 19:701d5669f2e9 197 /// Total D7A File System Permanent memory
Jeej 19:701d5669f2e9 198 u32 flash_total;
Jeej 19:701d5669f2e9 199 /// Maximum number of PHY inputs (>= 1)
Jeej 19:701d5669f2e9 200 u16 miso_nb_max;
Jeej 19:701d5669f2e9 201
Jeej 19:701d5669f2e9 202 } d7a_device_capacity_t;
Jeej 19:701d5669f2e9 203 #define D7A_FS_DEVICE_CAPACITY_SIZE sizeof(d7a_device_capacity_t)
Jeej 19:701d5669f2e9 204
Jeej 19:701d5669f2e9 205 /// =======================================================================
Jeej 19:701d5669f2e9 206 /// =======================================================================
Jeej 19:701d5669f2e9 207 ///
Jeej 19:701d5669f2e9 208 /// 4. DEVICE STATUS
Jeej 19:701d5669f2e9 209 ///
Jeej 19:701d5669f2e9 210 /// =======================================================================
Jeej 19:701d5669f2e9 211 /// =======================================================================
Jeej 19:701d5669f2e9 212
Jeej 19:701d5669f2e9 213 // =======================================================================
Jeej 19:701d5669f2e9 214 // d7a_device_status_t
Jeej 19:701d5669f2e9 215 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 216 /// Device Status File structure
Jeej 19:701d5669f2e9 217 // =======================================================================
Jeej 19:701d5669f2e9 218 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 219 {
Jeej 19:701d5669f2e9 220 /// Error Code Bitmap
Jeej 19:701d5669f2e9 221 u8 error_code_bmp;
Jeej 19:701d5669f2e9 222 /// Available D7A File System Volatile memory
Jeej 19:701d5669f2e9 223 u32 ram_available;
Jeej 19:701d5669f2e9 224 /// Available D7A File System Permanent memory
Jeej 19:701d5669f2e9 225 u32 flash_available;
Jeej 19:701d5669f2e9 226
Jeej 19:701d5669f2e9 227 } d7a_device_status_t;
Jeej 19:701d5669f2e9 228 #define D7A_FS_DEVICE_STATUS_SIZE sizeof(d7a_device_status_t)
Jeej 19:701d5669f2e9 229
Jeej 19:701d5669f2e9 230 /// =======================================================================
Jeej 19:701d5669f2e9 231 /// =======================================================================
Jeej 19:701d5669f2e9 232 ///
Jeej 19:701d5669f2e9 233 /// 5. ENG
Jeej 19:701d5669f2e9 234 ///
Jeej 19:701d5669f2e9 235 /// =======================================================================
Jeej 19:701d5669f2e9 236 /// =======================================================================
Jeej 19:701d5669f2e9 237
Jeej 19:701d5669f2e9 238 // =======================================================================
Jeej 19:701d5669f2e9 239 // d7a_eng_mode_t
Jeej 19:701d5669f2e9 240 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 241 /// Enumerator of the Engineering modes
Jeej 19:701d5669f2e9 242 // =======================================================================
Jeej 19:701d5669f2e9 243 typedef enum
Jeej 19:701d5669f2e9 244 {
Jeej 19:701d5669f2e9 245 /// Normal Mode
Jeej 19:701d5669f2e9 246 /// param : not used
Jeej 19:701d5669f2e9 247 D7A_ENG_MODE_NORMAL = 0,
Jeej 19:701d5669f2e9 248 /// Spectrum Control Protocol flooding
Jeej 19:701d5669f2e9 249 /// param[0] : access class
Jeej 19:701d5669f2e9 250 /// param[1] : flooding duration in seconds (CTF)
Jeej 19:701d5669f2e9 251 D7A_ENG_MODE_SCP = 2,
Jeej 19:701d5669f2e9 252 /// Sniffer
Jeej 19:701d5669f2e9 253 /// param : not used
Jeej 19:701d5669f2e9 254 D7A_ENG_MODE_SNIFFER = 3,
Jeej 19:701d5669f2e9 255
Jeej 19:701d5669f2e9 256 } d7a_eng_mode_t;
Jeej 19:701d5669f2e9 257
Jeej 19:701d5669f2e9 258 // =======================================================================
Jeej 19:701d5669f2e9 259 // d7a_eng_t
Jeej 19:701d5669f2e9 260 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 261 /// Engineering File structure
Jeej 19:701d5669f2e9 262 // =======================================================================
Jeej 19:701d5669f2e9 263 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 264 {
Jeej 19:701d5669f2e9 265 /// Run/Running
Jeej 19:701d5669f2e9 266 u8 run;
Jeej 19:701d5669f2e9 267 /// Engineering Mode
Jeej 19:701d5669f2e9 268 u8 mode;
Jeej 19:701d5669f2e9 269 /// Parameter, depends on the mode (see enumerator)
Jeej 19:701d5669f2e9 270 u8 param[2];
Jeej 19:701d5669f2e9 271
Jeej 19:701d5669f2e9 272 } d7a_eng_t;
Jeej 19:701d5669f2e9 273 #define D7A_FS_ENG_SIZE sizeof(d7a_eng_t)
Jeej 19:701d5669f2e9 274
Jeej 19:701d5669f2e9 275 /// =======================================================================
Jeej 19:701d5669f2e9 276 /// =======================================================================
Jeej 19:701d5669f2e9 277 ///
Jeej 19:701d5669f2e9 278 /// 6. VID
Jeej 19:701d5669f2e9 279 ///
Jeej 19:701d5669f2e9 280 /// =======================================================================
Jeej 19:701d5669f2e9 281 /// =======================================================================
Jeej 19:701d5669f2e9 282
Jeej 19:701d5669f2e9 283 // =======================================================================
Jeej 19:701d5669f2e9 284 // d7a_vid_t
Jeej 19:701d5669f2e9 285 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 286 /// VID File structure
Jeej 19:701d5669f2e9 287 // =======================================================================
Jeej 19:701d5669f2e9 288 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 289 {
Jeej 19:701d5669f2e9 290 /// UID is a u64 in big endian
Jeej 19:701d5669f2e9 291 u8 vid[D7A_VID_LEN];
Jeej 19:701d5669f2e9 292
Jeej 19:701d5669f2e9 293 } d7a_vid_t;
Jeej 19:701d5669f2e9 294 #define D7A_FS_VID_SIZE sizeof(d7a_vid_t)
Jeej 19:701d5669f2e9 295
Jeej 19:701d5669f2e9 296 /// =======================================================================
Jeej 19:701d5669f2e9 297 /// =======================================================================
Jeej 19:701d5669f2e9 298 ///
Jeej 19:701d5669f2e9 299 /// 8. PHY CONFIGURATION
Jeej 19:701d5669f2e9 300 ///
Jeej 19:701d5669f2e9 301 /// =======================================================================
Jeej 19:701d5669f2e9 302 /// =======================================================================
Jeej 19:701d5669f2e9 303
Jeej 19:701d5669f2e9 304 // =======================================================================
Jeej 19:701d5669f2e9 305 // d7a_ext_t
Jeej 19:701d5669f2e9 306 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 307 /// Enumerator of the PHY channel extensions
Jeej 19:701d5669f2e9 308 // =======================================================================
Jeej 19:701d5669f2e9 309 typedef enum
Jeej 19:701d5669f2e9 310 {
Jeej 19:701d5669f2e9 311 /// Nominal D7A channels (FSK modulation)
Jeej 19:701d5669f2e9 312 D7A_EXT_FSK = 0,
Jeej 19:701d5669f2e9 313 /// Other D7A channels
Jeej 19:701d5669f2e9 314 D7A_EXT_OTHER = 1,
Jeej 19:701d5669f2e9 315
Jeej 19:701d5669f2e9 316 } d7a_ext_t;
Jeej 19:701d5669f2e9 317
Jeej 19:701d5669f2e9 318 // =======================================================================
Jeej 19:701d5669f2e9 319 // d7a_class_t
Jeej 19:701d5669f2e9 320 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 321 /// Enumerator of the nominal PHY channel classes
Jeej 19:701d5669f2e9 322 // =======================================================================
Jeej 19:701d5669f2e9 323 typedef enum
Jeej 19:701d5669f2e9 324 {
Jeej 19:701d5669f2e9 325 /// Lo-Rate, 9.6 kbps, 4.8 kHz deviation
Jeej 19:701d5669f2e9 326 D7A_CLASS_LO = 0,
Jeej 19:701d5669f2e9 327 /// Reserved
Jeej 19:701d5669f2e9 328 D7A_CLASS_RFU,
Jeej 19:701d5669f2e9 329 /// Normal-Rate, 55.555 kbps, 50 kHz deviation
Jeej 19:701d5669f2e9 330 D7A_CLASS_NORMAL,
Jeej 19:701d5669f2e9 331 /// Hi-Rate, 166.667 kbps, 41.667 kHz deviation
Jeej 19:701d5669f2e9 332 D7A_CLASS_HI,
Jeej 19:701d5669f2e9 333 /// Quantity
Jeej 19:701d5669f2e9 334 D7A_CLASS_QTY,
Jeej 19:701d5669f2e9 335
Jeej 19:701d5669f2e9 336 } d7a_class_t;
Jeej 19:701d5669f2e9 337
Jeej 19:701d5669f2e9 338 // =======================================================================
Jeej 19:701d5669f2e9 339 // d7a_class_ext_t
Jeej 19:701d5669f2e9 340 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 341 /// Enumerator of the Extended channel classes
Jeej 19:701d5669f2e9 342 // =======================================================================
Jeej 19:701d5669f2e9 343 typedef enum
Jeej 19:701d5669f2e9 344 {
Jeej 19:701d5669f2e9 345 /// LoRa modulation
Jeej 19:701d5669f2e9 346 D7A_CLASS_EXT_LORA = 0,
Jeej 19:701d5669f2e9 347 /// Reserved
Jeej 19:701d5669f2e9 348 D7A_CLASS_EXT_RFU_1,
Jeej 19:701d5669f2e9 349 /// Sigfox / UNB modulation
Jeej 19:701d5669f2e9 350 D7A_CLASS_EXT_UNB,
Jeej 19:701d5669f2e9 351 /// Reserved
Jeej 19:701d5669f2e9 352 D7A_CLASS_EXT_RFU_3,
Jeej 19:701d5669f2e9 353 /// Quantity
Jeej 19:701d5669f2e9 354 D7A_CLASS_EXT_QTY,
Jeej 19:701d5669f2e9 355
Jeej 19:701d5669f2e9 356 } d7a_class_ext_t;
Jeej 19:701d5669f2e9 357
Jeej 19:701d5669f2e9 358 // =======================================================================
Jeej 19:701d5669f2e9 359 // d7a_band_t
Jeej 19:701d5669f2e9 360 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 361 /// Enumerator of the PHY channel bands
Jeej 19:701d5669f2e9 362 // =======================================================================
Jeej 19:701d5669f2e9 363 typedef enum
Jeej 19:701d5669f2e9 364 {
Jeej 19:701d5669f2e9 365 /// RFU (band 169 MHz ?)
Jeej 19:701d5669f2e9 366 D7A_BAND_RFU_0 = 0,
Jeej 19:701d5669f2e9 367 /// RFU (band 315 MHz ?)
Jeej 19:701d5669f2e9 368 D7A_BAND_RFU_1 = 1,
Jeej 19:701d5669f2e9 369 /// Band 433.060 to 434.785 MHz
Jeej 19:701d5669f2e9 370 D7A_BAND_433 = 2,
Jeej 19:701d5669f2e9 371 /// Band 863.000 to 870.000 MHz
Jeej 19:701d5669f2e9 372 D7A_BAND_868 = 3,
Jeej 19:701d5669f2e9 373 /// Band 902.000 to 928.000 MHz
Jeej 19:701d5669f2e9 374 D7A_BAND_915 = 4,
Jeej 19:701d5669f2e9 375 /// Quantity
Jeej 19:701d5669f2e9 376 D7A_BAND_QTY
Jeej 19:701d5669f2e9 377
Jeej 19:701d5669f2e9 378 } d7a_band_t;
Jeej 19:701d5669f2e9 379
Jeej 19:701d5669f2e9 380 // =======================================================================
Jeej 19:701d5669f2e9 381 // d7a_cs_t
Jeej 19:701d5669f2e9 382 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 383 /// Enumerator of the PHY channel coding schemes
Jeej 19:701d5669f2e9 384 // =======================================================================
Jeej 19:701d5669f2e9 385 typedef enum
Jeej 19:701d5669f2e9 386 {
Jeej 19:701d5669f2e9 387 /// Nominal - PN9 encoding
Jeej 19:701d5669f2e9 388 /// Extension LoRa - LoRaWAN mode 0 (BW = 125 KHz, SF = 12, FEC 4/5)
Jeej 19:701d5669f2e9 389 D7A_CS_0 = 0,
Jeej 19:701d5669f2e9 390 /// Nominal - RFU
Jeej 19:701d5669f2e9 391 /// Extension LoRa - LoRaWAN mode 1 (BW = 125 KHz, SF = 11, FEC 4/5)
Jeej 19:701d5669f2e9 392 D7A_CS_1,
Jeej 19:701d5669f2e9 393 /// Nominal - FEC + PN9 encoding
Jeej 19:701d5669f2e9 394 /// Extension LoRa - LoRaWAN mode 2 (BW = 125 KHz, SF = 10, FEC 4/5)
Jeej 19:701d5669f2e9 395 D7A_CS_2,
Jeej 19:701d5669f2e9 396 /// Nominal - RFU
Jeej 19:701d5669f2e9 397 /// Extension LoRa - LoRaWAN mode 3 (BW = 125 KHz, SF = 9, FEC 4/5)
Jeej 19:701d5669f2e9 398 D7A_CS_3,
Jeej 19:701d5669f2e9 399 /// Quantity
Jeej 19:701d5669f2e9 400 D7A_CS_QTY,
Jeej 19:701d5669f2e9 401
Jeej 19:701d5669f2e9 402 } d7a_cs_t;
Jeej 19:701d5669f2e9 403
Jeej 19:701d5669f2e9 404 #define D7A_CLASS(a) (a+4)
Jeej 19:701d5669f2e9 405
Jeej 19:701d5669f2e9 406 // =======================================================================
Jeej 19:701d5669f2e9 407 // d7a_phy_cfg_t
Jeej 19:701d5669f2e9 408 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 409 /// PHY Configuration File structure
Jeej 19:701d5669f2e9 410 // =======================================================================
Jeej 19:701d5669f2e9 411 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 412 {
Jeej 19:701d5669f2e9 413 /// Preamble length depending on channel class
Jeej 19:701d5669f2e9 414 u8 preamble[D7A_CLASS_QTY];
Jeej 19:701d5669f2e9 415 /// Maximum authorized EIRP (dBm)
Jeej 19:701d5669f2e9 416 s8 eirp_limit;
Jeej 19:701d5669f2e9 417 /// TX duty cycle window in seconds
Jeej 19:701d5669f2e9 418 u16 duty_win;
Jeej 19:701d5669f2e9 419 /// TX Duty cycle limit in 1/1024 (full scale is 1024)
Jeej 19:701d5669f2e9 420 u16 duty_limit;
Jeej 19:701d5669f2e9 421
Jeej 19:701d5669f2e9 422 } d7a_phy_cfg_t;
Jeej 19:701d5669f2e9 423 #define D7A_FS_PHY_CFG_SIZE sizeof(d7a_phy_cfg_t)
Jeej 19:701d5669f2e9 424
Jeej 19:701d5669f2e9 425 /// =======================================================================
Jeej 19:701d5669f2e9 426 /// =======================================================================
Jeej 19:701d5669f2e9 427 ///
Jeej 19:701d5669f2e9 428 /// 9. PHY STATUS
Jeej 19:701d5669f2e9 429 ///
Jeej 19:701d5669f2e9 430 /// =======================================================================
Jeej 19:701d5669f2e9 431 /// =======================================================================
Jeej 19:701d5669f2e9 432
Jeej 19:701d5669f2e9 433 /// Maximum number of monitored channels
Jeej 19:701d5669f2e9 434 #define D7A_PHY_MONITORED_CHANNELS (32)
Jeej 19:701d5669f2e9 435
Jeej 19:701d5669f2e9 436 //======================================================================
Jeej 19:701d5669f2e9 437 /// PHY Channel Status Identifier
Jeej 19:701d5669f2e9 438 //======================================================================
Jeej 19:701d5669f2e9 439 typedef union
Jeej 19:701d5669f2e9 440 {
Jeej 19:701d5669f2e9 441 struct {
Jeej 19:701d5669f2e9 442 /// Channel index (maximum 1039 indexes for ISM 915, use 11 bits)
Jeej 19:701d5669f2e9 443 u16 idx : 11;
Jeej 19:701d5669f2e9 444 /// RFU
Jeej 19:701d5669f2e9 445 u16 rfu : 1;
Jeej 19:701d5669f2e9 446 /// Channel bandwidth (1 : 25 kHz, 0 : 200 kHz)
Jeej 19:701d5669f2e9 447 u16 lo : 1;
Jeej 19:701d5669f2e9 448 /// Band
Jeej 19:701d5669f2e9 449 u16 band : 3;
Jeej 19:701d5669f2e9 450 } bf;
Jeej 19:701d5669f2e9 451
Jeej 19:701d5669f2e9 452 /// word access
Jeej 19:701d5669f2e9 453 u16 word;
Jeej 19:701d5669f2e9 454
Jeej 19:701d5669f2e9 455 } d7a_phy_status_ch_id_t;
Jeej 19:701d5669f2e9 456
Jeej 19:701d5669f2e9 457 //======================================================================
Jeej 19:701d5669f2e9 458 /// PHY Channel Monitoring Status
Jeej 19:701d5669f2e9 459 //======================================================================
Jeej 19:701d5669f2e9 460 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 461 {
Jeej 19:701d5669f2e9 462 // Identifier
Jeej 19:701d5669f2e9 463 d7a_phy_status_ch_id_t id;
Jeej 19:701d5669f2e9 464 /// Noise floor in -dBm
Jeej 19:701d5669f2e9 465 u8 nf;
Jeej 19:701d5669f2e9 466
Jeej 19:701d5669f2e9 467 } d7a_phy_status_ch_t;
Jeej 19:701d5669f2e9 468
Jeej 19:701d5669f2e9 469 // =======================================================================
Jeej 19:701d5669f2e9 470 // d7a_phy_status_t
Jeej 19:701d5669f2e9 471 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 472 /// PHY Status File structure
Jeej 19:701d5669f2e9 473 // =======================================================================
Jeej 19:701d5669f2e9 474 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 475 {
Jeej 19:701d5669f2e9 476 /// Time since power on in seconds
Jeej 19:701d5669f2e9 477 u32 up_time;
Jeej 19:701d5669f2e9 478 /// RX time since power on in seconds
Jeej 19:701d5669f2e9 479 u32 rx_time;
Jeej 19:701d5669f2e9 480 /// TX time since power on in seconds
Jeej 19:701d5669f2e9 481 u32 tx_time;
Jeej 19:701d5669f2e9 482 /// TX Duty cycle in 1/1024 (full scale is 1024)
Jeej 19:701d5669f2e9 483 u16 tx_duty;
Jeej 19:701d5669f2e9 484 /// Number of monitored channels
Jeej 19:701d5669f2e9 485 u8 ch_nb;
Jeej 19:701d5669f2e9 486 /// Channel Status List
Jeej 19:701d5669f2e9 487 d7a_phy_status_ch_t ch[D7A_PHY_MONITORED_CHANNELS];
Jeej 19:701d5669f2e9 488
Jeej 19:701d5669f2e9 489 } d7a_phy_status_t;
Jeej 19:701d5669f2e9 490
Jeej 19:701d5669f2e9 491 #define D7A_FS_PHY_STATUS_SIZE sizeof(d7a_phy_status_t)
Jeej 19:701d5669f2e9 492
Jeej 19:701d5669f2e9 493 /// =======================================================================
Jeej 19:701d5669f2e9 494 /// =======================================================================
Jeej 19:701d5669f2e9 495 ///
Jeej 19:701d5669f2e9 496 /// 10. DLL CONFIGURATION
Jeej 19:701d5669f2e9 497 ///
Jeej 19:701d5669f2e9 498 /// =======================================================================
Jeej 19:701d5669f2e9 499 /// =======================================================================
Jeej 19:701d5669f2e9 500
Jeej 19:701d5669f2e9 501 // =======================================================================
Jeej 19:701d5669f2e9 502 // d7a_nf_auto_t
Jeej 19:701d5669f2e9 503 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 504 /// DLL Noise Floor Autoscaling
Jeej 19:701d5669f2e9 505 // =======================================================================
Jeej 19:701d5669f2e9 506 typedef enum
Jeej 19:701d5669f2e9 507 {
Jeej 19:701d5669f2e9 508 /// No Autoscaling (default).
Jeej 19:701d5669f2e9 509 /// Always use the Noise Floor and Noise Floor Variance defined in the Access Profile
Jeej 19:701d5669f2e9 510 D7A_NF_AUTO_NO = 0,
Jeej 19:701d5669f2e9 511 /// Slow RSSI Variation.
Jeej 19:701d5669f2e9 512 /// Noise Floor and Noise Floor variance are computed based on regular RSSI measurements
Jeej 19:701d5669f2e9 513 /// with a forget factor defined by the associated parameter
Jeej 19:701d5669f2e9 514 D7A_NF_AUTO_SLOW = 1,
Jeej 19:701d5669f2e9 515
Jeej 19:701d5669f2e9 516 } d7a_nf_auto_t;
Jeej 19:701d5669f2e9 517
Jeej 19:701d5669f2e9 518 // =======================================================================
Jeej 19:701d5669f2e9 519 // d7a_area_t
Jeej 19:701d5669f2e9 520 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 521 /// DLL Area Enumerator
Jeej 19:701d5669f2e9 522 // =======================================================================
Jeej 19:701d5669f2e9 523 typedef enum
Jeej 19:701d5669f2e9 524 {
Jeej 19:701d5669f2e9 525 // Unclassified (the Moon, Mars...)
Jeej 19:701d5669f2e9 526 // Reserved for application specific configurations
Jeej 19:701d5669f2e9 527 D7A_AREA_REGION_0 = 0x00,
Jeej 19:701d5669f2e9 528
Jeej 19:701d5669f2e9 529 // Region 1 (Europe, Russia, Middle East)
Jeej 19:701d5669f2e9 530 D7A_AREA_REGION_1 = 0x10,
Jeej 19:701d5669f2e9 531 // Default area governed by ECC / CEPT / ITU regulations
Jeej 19:701d5669f2e9 532 // European Union, Norway (?), UK (?), Switzerland (?)
Jeej 19:701d5669f2e9 533 D7A_AREA_ECC = D7A_AREA_REGION_1,
Jeej 19:701d5669f2e9 534 // Russia
Jeej 19:701d5669f2e9 535 D7A_AREA_RUSSIA,
Jeej 19:701d5669f2e9 536 // United Arab Emirates
Jeej 19:701d5669f2e9 537 D7A_AREA_UAE,
Jeej 19:701d5669f2e9 538
Jeej 19:701d5669f2e9 539 // Region 2 (Americas)
Jeej 19:701d5669f2e9 540 D7A_AREA_REGION_2 = 0x20,
Jeej 19:701d5669f2e9 541 // Default area governed by FCC regulations
Jeej 19:701d5669f2e9 542 // US, Canada, Chile, Argentina, Columbia,...
Jeej 19:701d5669f2e9 543 D7A_AREA_FCC = D7A_AREA_REGION_2,
Jeej 19:701d5669f2e9 544 // Brazil
Jeej 19:701d5669f2e9 545 D7A_AREA_BRAZIL,
Jeej 19:701d5669f2e9 546
Jeej 19:701d5669f2e9 547 // Region 3 (Asia Pacific)
Jeej 19:701d5669f2e9 548 D7A_AREA_REGION_3 = 0x30,
Jeej 19:701d5669f2e9 549 // Default area governed by Asia-Pacific regulations (seems does not exist yet)
Jeej 19:701d5669f2e9 550 D7A_AREA_ASIA = D7A_AREA_REGION_3,
Jeej 19:701d5669f2e9 551 // Australia and New Zealand
Jeej 19:701d5669f2e9 552 D7A_AREA_AU_NZ,
Jeej 19:701d5669f2e9 553 // India
Jeej 19:701d5669f2e9 554 D7A_AREA_INDIA,
Jeej 19:701d5669f2e9 555 // Pakistan
Jeej 19:701d5669f2e9 556 D7A_AREA_PAKISTAN,
Jeej 19:701d5669f2e9 557 // Korea
Jeej 19:701d5669f2e9 558 D7A_AREA_KOREA,
Jeej 19:701d5669f2e9 559 // Japan
Jeej 19:701d5669f2e9 560 D7A_AREA_JAPAN,
Jeej 19:701d5669f2e9 561 // China
Jeej 19:701d5669f2e9 562 D7A_AREA_CHINA,
Jeej 19:701d5669f2e9 563 // Hong Kong
Jeej 19:701d5669f2e9 564 D7A_AREA_HK,
Jeej 19:701d5669f2e9 565 // Singapore
Jeej 19:701d5669f2e9 566 D7A_AREA_SINGAPORE,
Jeej 19:701d5669f2e9 567 // Malaysia
Jeej 19:701d5669f2e9 568 D7A_AREA_MALAYSIA,
Jeej 19:701d5669f2e9 569 // Indonesia
Jeej 19:701d5669f2e9 570 D7A_AREA_INDONESIA,
Jeej 19:701d5669f2e9 571
Jeej 19:701d5669f2e9 572 // Area enumerator mask
Jeej 19:701d5669f2e9 573 D7A_AREA_MASK = 0x3f,
Jeej 19:701d5669f2e9 574
Jeej 19:701d5669f2e9 575 } d7a_area_t;
Jeej 19:701d5669f2e9 576
Jeej 19:701d5669f2e9 577 // =======================================================================
Jeej 19:701d5669f2e9 578 // d7a_nf_ctrl_t
Jeej 19:701d5669f2e9 579 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 580 /// Noise Floor computation control structure
Jeej 19:701d5669f2e9 581 // =======================================================================
Jeej 19:701d5669f2e9 582 typedef union
Jeej 19:701d5669f2e9 583 {
Jeej 19:701d5669f2e9 584 // bit access fields
Jeej 19:701d5669f2e9 585 struct {
Jeej 19:701d5669f2e9 586 // Rx NF method
Jeej 19:701d5669f2e9 587 u8 rx : 4;
Jeej 19:701d5669f2e9 588 // Tx NF method
Jeej 19:701d5669f2e9 589 u8 tx : 4;
Jeej 19:701d5669f2e9 590 } bf;
Jeej 19:701d5669f2e9 591
Jeej 19:701d5669f2e9 592 // byte access
Jeej 19:701d5669f2e9 593 u8 byte;
Jeej 19:701d5669f2e9 594
Jeej 19:701d5669f2e9 595 } d7a_nf_ctrl_t;
Jeej 19:701d5669f2e9 596
Jeej 19:701d5669f2e9 597 // =======================================================================
Jeej 19:701d5669f2e9 598 // d7a_dll_cfg_t
Jeej 19:701d5669f2e9 599 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 600 /// DLL Configuration File structure
Jeej 19:701d5669f2e9 601 // =======================================================================
Jeej 19:701d5669f2e9 602 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 603 {
Jeej 19:701d5669f2e9 604 /// Active Access configuration
Jeej 19:701d5669f2e9 605 d7a_xcl_t xcl;
Jeej 19:701d5669f2e9 606 /// Area identifier.
Jeej 19:701d5669f2e9 607 u8 area;
Jeej 19:701d5669f2e9 608 /// RFU
Jeej 19:701d5669f2e9 609 u8 rfu;
Jeej 19:701d5669f2e9 610 /// Link Quality Filter. Disabled when set to 0xFF
Jeej 19:701d5669f2e9 611 u8 lq_filter;
Jeej 19:701d5669f2e9 612 /// Noise Floor Computation Method Control Bitfield
Jeej 19:701d5669f2e9 613 d7a_nf_ctrl_t nf_ctrl;
Jeej 19:701d5669f2e9 614 /// RX Noise Floor Method Parameter (depends on Method ID)
Jeej 19:701d5669f2e9 615 u8 rx_nf_param;
Jeej 19:701d5669f2e9 616 /// RX Noise Floor Method Parameter (depends on Method ID)
Jeej 19:701d5669f2e9 617 u8 tx_nf_param;
Jeej 19:701d5669f2e9 618
Jeej 19:701d5669f2e9 619 } d7a_dll_cfg_t;
Jeej 19:701d5669f2e9 620 #define D7A_FS_DLL_CFG_SIZE sizeof(d7a_dll_cfg_t)
Jeej 19:701d5669f2e9 621
Jeej 19:701d5669f2e9 622 /// =======================================================================
Jeej 19:701d5669f2e9 623 /// =======================================================================
Jeej 19:701d5669f2e9 624 ///
Jeej 19:701d5669f2e9 625 /// 11. DLL STATUS
Jeej 19:701d5669f2e9 626 ///
Jeej 19:701d5669f2e9 627 /// =======================================================================
Jeej 19:701d5669f2e9 628 /// =======================================================================
Jeej 19:701d5669f2e9 629
Jeej 19:701d5669f2e9 630 // =======================================================================
Jeej 19:701d5669f2e9 631 // d7a_dll_status_t
Jeej 19:701d5669f2e9 632 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 633 /// DLL status File structure
Jeej 19:701d5669f2e9 634 // =======================================================================
Jeej 19:701d5669f2e9 635 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 636 {
Jeej 19:701d5669f2e9 637 /// Last RX level [-dBm]
Jeej 19:701d5669f2e9 638 u8 rxlev_last;
Jeej 19:701d5669f2e9 639 /// Last link budget [dB]
Jeej 19:701d5669f2e9 640 u8 lb_last;
Jeej 19:701d5669f2e9 641 /// Measured noise floor [-dBm]
Jeej 19:701d5669f2e9 642 u8 nf;
Jeej 19:701d5669f2e9 643 /// Last RX channel header
Jeej 19:701d5669f2e9 644 d7a_ch_header_t ch_header;
Jeej 19:701d5669f2e9 645 /// Last RX channel index
Jeej 19:701d5669f2e9 646 u16 ch_idx;
Jeej 19:701d5669f2e9 647 /// scan timout ratio in 1/1024th
Jeej 19:701d5669f2e9 648 u16 scan_ratio;
Jeej 19:701d5669f2e9 649
Jeej 19:701d5669f2e9 650 } d7a_dll_status_t;
Jeej 19:701d5669f2e9 651 #define D7A_FS_DLL_STATUS_SIZE sizeof(d7a_dll_status_t)
Jeej 19:701d5669f2e9 652
Jeej 19:701d5669f2e9 653 /// =======================================================================
Jeej 19:701d5669f2e9 654 /// =======================================================================
Jeej 19:701d5669f2e9 655 ///
Jeej 19:701d5669f2e9 656 /// 12. NWL ROUTING
Jeej 19:701d5669f2e9 657 ///
Jeej 19:701d5669f2e9 658 /// =======================================================================
Jeej 19:701d5669f2e9 659 /// =======================================================================
Jeej 19:701d5669f2e9 660
Jeej 19:701d5669f2e9 661 // =======================================================================
Jeej 19:701d5669f2e9 662 // d7a_nwl_routing_mode_t
Jeej 19:701d5669f2e9 663 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 664 /// NWL routing modes
Jeej 19:701d5669f2e9 665 // =======================================================================
Jeej 19:701d5669f2e9 666 typedef enum
Jeej 19:701d5669f2e9 667 {
Jeej 19:701d5669f2e9 668 /// Default routing type
Jeej 19:701d5669f2e9 669 D7A_NWL_ROUTING_MODE_DEFAULT = 0,
Jeej 19:701d5669f2e9 670 /// Qty
Jeej 19:701d5669f2e9 671 D7A_NWL_ROUTING_MODE_QTY
Jeej 19:701d5669f2e9 672
Jeej 19:701d5669f2e9 673 } d7a_nwl_routing_mode_t;
Jeej 19:701d5669f2e9 674
Jeej 19:701d5669f2e9 675 // =======================================================================
Jeej 19:701d5669f2e9 676 // d7a_nwl_routing_entry_t
Jeej 19:701d5669f2e9 677 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 678 /// NWL Single Routing entry
Jeej 19:701d5669f2e9 679 // =======================================================================
Jeej 19:701d5669f2e9 680 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 681 {
Jeej 19:701d5669f2e9 682 /// Destination node to be reached
Jeej 19:701d5669f2e9 683 d7a_addressee_t dst;
Jeej 19:701d5669f2e9 684 /// Intermediary node to use
Jeej 19:701d5669f2e9 685 d7a_addressee_t itm;
Jeej 19:701d5669f2e9 686
Jeej 19:701d5669f2e9 687 } d7a_nwl_routing_entry_t;
Jeej 19:701d5669f2e9 688
Jeej 19:701d5669f2e9 689 // =======================================================================
Jeej 19:701d5669f2e9 690 // d7a_fs_nwl_routing_t
Jeej 19:701d5669f2e9 691 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 692 /// NWL Routing File structure
Jeej 19:701d5669f2e9 693 // =======================================================================
Jeej 19:701d5669f2e9 694 #define D7A_FS_NWL_ROUTING_SIZE(n) (sizeof(u8) + (n) * sizeof(d7a_nwl_routing_entry_t))
Jeej 19:701d5669f2e9 695 #define d7a_nwl_routing_t(n) \
Jeej 19:701d5669f2e9 696 struct __attribute__((packed)) \
Jeej 19:701d5669f2e9 697 { \
Jeej 19:701d5669f2e9 698 u8 routing;\
Jeej 19:701d5669f2e9 699 d7a_nwl_routing_entry_t entry[(n)];\
Jeej 19:701d5669f2e9 700 }
Jeej 19:701d5669f2e9 701
Jeej 19:701d5669f2e9 702 /// =======================================================================
Jeej 19:701d5669f2e9 703 /// =======================================================================
Jeej 19:701d5669f2e9 704 ///
Jeej 19:701d5669f2e9 705 /// 13. NWL SECURITY
Jeej 19:701d5669f2e9 706 ///
Jeej 19:701d5669f2e9 707 /// =======================================================================
Jeej 19:701d5669f2e9 708 /// =======================================================================
Jeej 19:701d5669f2e9 709 #define D7A_FS_NWL_SECURITY_SIZE sizeof(d7a_nwl_security_t)
Jeej 19:701d5669f2e9 710
Jeej 19:701d5669f2e9 711 /// =======================================================================
Jeej 19:701d5669f2e9 712 /// =======================================================================
Jeej 19:701d5669f2e9 713 ///
Jeej 19:701d5669f2e9 714 /// 14. NWL SECURITY KEY
Jeej 19:701d5669f2e9 715 ///
Jeej 19:701d5669f2e9 716 /// =======================================================================
Jeej 19:701d5669f2e9 717 /// =======================================================================
Jeej 19:701d5669f2e9 718
Jeej 19:701d5669f2e9 719 // =======================================================================
Jeej 19:701d5669f2e9 720 // d7a_nwl_key_entry_t
Jeej 19:701d5669f2e9 721 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 722 /// NWL AES-128 key File structure
Jeej 19:701d5669f2e9 723 // =======================================================================
Jeej 19:701d5669f2e9 724 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 725 {
Jeej 19:701d5669f2e9 726 /// NWL Security key
Jeej 19:701d5669f2e9 727 u8 val[16];
Jeej 19:701d5669f2e9 728 /// Counter associated to the key
Jeej 19:701d5669f2e9 729 u8 cnt;
Jeej 19:701d5669f2e9 730
Jeej 19:701d5669f2e9 731 } d7a_nwl_key_entry_t;
Jeej 19:701d5669f2e9 732
Jeej 19:701d5669f2e9 733 // =======================================================================
Jeej 19:701d5669f2e9 734 // d7a_nwl_key_t
Jeej 19:701d5669f2e9 735 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 736 /// NWL AES-128 key File structure
Jeej 19:701d5669f2e9 737 // =======================================================================
Jeej 19:701d5669f2e9 738 #define D7A_FS_NWL_KEY_SIZE(n) (n) * sizeof(d7a_nwl_key_entry_t)
Jeej 19:701d5669f2e9 739 #define d7a_nwl_key_t(n) \
Jeej 19:701d5669f2e9 740 struct __attribute__((packed)) \
Jeej 19:701d5669f2e9 741 { \
Jeej 19:701d5669f2e9 742 d7a_nwl_key_entry_t key[(n)];\
Jeej 19:701d5669f2e9 743 }
Jeej 19:701d5669f2e9 744
Jeej 19:701d5669f2e9 745 /// =======================================================================
Jeej 19:701d5669f2e9 746 /// =======================================================================
Jeej 19:701d5669f2e9 747 ///
Jeej 19:701d5669f2e9 748 /// 14. NWL SECURITY STATE REGISTER
Jeej 19:701d5669f2e9 749 ///
Jeej 19:701d5669f2e9 750 /// =======================================================================
Jeej 19:701d5669f2e9 751 /// =======================================================================
Jeej 19:701d5669f2e9 752
Jeej 19:701d5669f2e9 753 // =======================================================================
Jeej 19:701d5669f2e9 754 // d7a_nwl_ssr_filter_t
Jeej 19:701d5669f2e9 755 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 756 /// NWL SSR filter
Jeej 19:701d5669f2e9 757 // =======================================================================
Jeej 19:701d5669f2e9 758 typedef union
Jeej 19:701d5669f2e9 759 {
Jeej 19:701d5669f2e9 760 // bit access fields
Jeej 19:701d5669f2e9 761 struct {
Jeej 19:701d5669f2e9 762 /// SSR filter enable
Jeej 19:701d5669f2e9 763 u8 en : 1;
Jeej 19:701d5669f2e9 764 /// Allow new entry to be added on unicast access with Virtual ID
Jeej 19:701d5669f2e9 765 u8 vcast : 1;
Jeej 19:701d5669f2e9 766 /// Allow new entry to be added on broadcast access
Jeej 19:701d5669f2e9 767 u8 bcast : 1;
Jeej 19:701d5669f2e9 768 /// RFU
Jeej 19:701d5669f2e9 769 u8 rfu : 3;
Jeej 19:701d5669f2e9 770 /// Enable flush on regular basis
Jeej 19:701d5669f2e9 771 u8 flushen : 1;
Jeej 19:701d5669f2e9 772 /// Flush on every received initial request
Jeej 19:701d5669f2e9 773 u8 flushreq : 1;
Jeej 19:701d5669f2e9 774 } bf;
Jeej 19:701d5669f2e9 775
Jeej 19:701d5669f2e9 776 // byte access
Jeej 19:701d5669f2e9 777 u8 byte;
Jeej 19:701d5669f2e9 778
Jeej 19:701d5669f2e9 779 } d7a_nwl_ssr_filter_t;
Jeej 19:701d5669f2e9 780
Jeej 19:701d5669f2e9 781 // =======================================================================
Jeej 19:701d5669f2e9 782 // d7a_nwl_cfg_t
Jeej 19:701d5669f2e9 783 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 784 /// NWL Security Configuration structure
Jeej 19:701d5669f2e9 785 // =======================================================================
Jeej 19:701d5669f2e9 786 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 787 {
Jeej 19:701d5669f2e9 788 // NLS filter
Jeej 19:701d5669f2e9 789 u16 nls_filter;
Jeej 19:701d5669f2e9 790 // SSR filter
Jeej 19:701d5669f2e9 791 d7a_nwl_ssr_filter_t ssr_filter;
Jeej 19:701d5669f2e9 792 // Number of SSR entries
Jeej 19:701d5669f2e9 793 u8 ssr_len;
Jeej 19:701d5669f2e9 794
Jeej 19:701d5669f2e9 795 } d7a_nwl_cfg_t;
Jeej 19:701d5669f2e9 796
Jeej 19:701d5669f2e9 797 // =======================================================================
Jeej 19:701d5669f2e9 798 // d7a_nwl_ssr_entry_t
Jeej 19:701d5669f2e9 799 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 800 /// NWL Single SSR entry
Jeej 19:701d5669f2e9 801 // =======================================================================
Jeej 19:701d5669f2e9 802 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 803 {
Jeej 19:701d5669f2e9 804 /// Security state
Jeej 19:701d5669f2e9 805 d7a_nwl_security_t sec;
Jeej 19:701d5669f2e9 806 /// distant UID
Jeej 19:701d5669f2e9 807 u8 uid[D7A_UID_LEN];
Jeej 19:701d5669f2e9 808
Jeej 19:701d5669f2e9 809 } d7a_nwl_ssr_entry_t;
Jeej 19:701d5669f2e9 810
Jeej 19:701d5669f2e9 811 // =======================================================================
Jeej 19:701d5669f2e9 812 // d7a_nwl_ssr_t
Jeej 19:701d5669f2e9 813 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 814 /// NWL Security State Register File structure
Jeej 19:701d5669f2e9 815 // =======================================================================
Jeej 19:701d5669f2e9 816 #define D7A_FS_NWL_SSR_SIZE(n) (sizeof(d7a_nwl_cfg_t) + (n) * sizeof(d7a_nwl_ssr_entry_t))
Jeej 19:701d5669f2e9 817 #define d7a_nwl_ssr_t(n) \
Jeej 19:701d5669f2e9 818 struct __attribute__((packed)) \
Jeej 19:701d5669f2e9 819 { \
Jeej 19:701d5669f2e9 820 d7a_nwl_cfg_t cfg;\
Jeej 19:701d5669f2e9 821 d7a_nwl_ssr_entry_t entry[(n)];\
Jeej 19:701d5669f2e9 822 }
Jeej 19:701d5669f2e9 823
Jeej 19:701d5669f2e9 824 /// =======================================================================
Jeej 19:701d5669f2e9 825 /// =======================================================================
Jeej 19:701d5669f2e9 826 ///
Jeej 19:701d5669f2e9 827 /// 16. NWL STATUS
Jeej 19:701d5669f2e9 828 ///
Jeej 19:701d5669f2e9 829 /// =======================================================================
Jeej 19:701d5669f2e9 830 /// =======================================================================
Jeej 19:701d5669f2e9 831
Jeej 19:701d5669f2e9 832 // =======================================================================
Jeej 19:701d5669f2e9 833 // d7a_nwl_status_t
Jeej 19:701d5669f2e9 834 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 835 /// NWL status File structure
Jeej 19:701d5669f2e9 836 // =======================================================================
Jeej 19:701d5669f2e9 837 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 838 {
Jeej 19:701d5669f2e9 839 /// Number of received valid BG frames
Jeej 19:701d5669f2e9 840 u32 rx_bg_cnt;
Jeej 19:701d5669f2e9 841 /// Number of received valid FG frames (D7AAdvP)
Jeej 19:701d5669f2e9 842 u32 rx_fg_adv_cnt;
Jeej 19:701d5669f2e9 843 /// Number of received valid FG frames (D7ANP)
Jeej 19:701d5669f2e9 844 u32 rx_fg_cnt;
Jeej 19:701d5669f2e9 845 /// Number of transmitted frames
Jeej 19:701d5669f2e9 846 u32 tx_cnt;
Jeej 19:701d5669f2e9 847 /// Number of tx failures
Jeej 19:701d5669f2e9 848 u32 tx_fails;
Jeej 19:701d5669f2e9 849
Jeej 19:701d5669f2e9 850 } d7a_nwl_status_t;
Jeej 19:701d5669f2e9 851 #define D7A_FS_NWL_STATUS_SIZE sizeof(d7a_nwl_status_t)
Jeej 19:701d5669f2e9 852
Jeej 19:701d5669f2e9 853 /// =======================================================================
Jeej 19:701d5669f2e9 854 /// =======================================================================
Jeej 19:701d5669f2e9 855 ///
Jeej 19:701d5669f2e9 856 /// 17. TRL STATUS
Jeej 19:701d5669f2e9 857 ///
Jeej 19:701d5669f2e9 858 /// =======================================================================
Jeej 19:701d5669f2e9 859 /// =======================================================================
Jeej 19:701d5669f2e9 860
Jeej 19:701d5669f2e9 861 // =======================================================================
Jeej 19:701d5669f2e9 862 // d7a_tp_ack_status_zip_t
Jeej 19:701d5669f2e9 863 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 864 /// Structure of the D7ATP ACK Template (compressed ACK record)
Jeej 19:701d5669f2e9 865 // =======================================================================
Jeej 19:701d5669f2e9 866 typedef struct
Jeej 19:701d5669f2e9 867 {
Jeej 19:701d5669f2e9 868 /// Length of the bitmap
Jeej 19:701d5669f2e9 869 u8 len;
Jeej 19:701d5669f2e9 870 /// First non-received ID, before which all IDs are receive.
Jeej 19:701d5669f2e9 871 u8 start_id;
Jeej 19:701d5669f2e9 872 /// Last received ID
Jeej 19:701d5669f2e9 873 u8 end_id;
Jeej 19:701d5669f2e9 874 /// Reception status bitmap
Jeej 19:701d5669f2e9 875 u8 bitmap[32];
Jeej 19:701d5669f2e9 876
Jeej 19:701d5669f2e9 877 } d7a_tp_ack_status_zip_t;
Jeej 19:701d5669f2e9 878
Jeej 19:701d5669f2e9 879 // =======================================================================
Jeej 19:701d5669f2e9 880 // d7a_trl_status_t
Jeej 19:701d5669f2e9 881 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 882 /// Transport Layer Status File structure
Jeej 19:701d5669f2e9 883 // =======================================================================
Jeej 19:701d5669f2e9 884 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 885 {
Jeej 19:701d5669f2e9 886 /// Real length of the whole record.
Jeej 19:701d5669f2e9 887 u8 len;
Jeej 19:701d5669f2e9 888 // Token of the recorded zip
Jeej 19:701d5669f2e9 889 u8 token;
Jeej 19:701d5669f2e9 890 /// At least room for one full zip
Jeej 19:701d5669f2e9 891 d7a_tp_ack_status_zip_t zip;
Jeej 19:701d5669f2e9 892
Jeej 19:701d5669f2e9 893 } d7a_trl_status_t;
Jeej 19:701d5669f2e9 894 #define D7A_FS_TRL_STATUS_SIZE sizeof(d7a_trl_status_t)
Jeej 19:701d5669f2e9 895
Jeej 19:701d5669f2e9 896 /// =======================================================================
Jeej 19:701d5669f2e9 897 /// =======================================================================
Jeej 19:701d5669f2e9 898 ///
Jeej 19:701d5669f2e9 899 /// 18. SEL CONFIGURATION
Jeej 19:701d5669f2e9 900 ///
Jeej 19:701d5669f2e9 901 /// =======================================================================
Jeej 19:701d5669f2e9 902 /// =======================================================================
Jeej 19:701d5669f2e9 903
Jeej 19:701d5669f2e9 904 // =======================================================================
Jeej 19:701d5669f2e9 905 // d7a_agc_ctrl_t
Jeej 19:701d5669f2e9 906 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 907 /// AGC control structure
Jeej 19:701d5669f2e9 908 // =======================================================================
Jeej 19:701d5669f2e9 909 typedef union
Jeej 19:701d5669f2e9 910 {
Jeej 19:701d5669f2e9 911 // bit access fields
Jeej 19:701d5669f2e9 912 struct {
Jeej 19:701d5669f2e9 913 /// AGC on
Jeej 19:701d5669f2e9 914 /// When the field is not set, all Requesters and all Responders
Jeej 19:701d5669f2e9 915 /// set their transmission power to the maximum authorized level.
Jeej 19:701d5669f2e9 916 /// When the field is set, all Requesters, upon failure to receive
Jeej 19:701d5669f2e9 917 /// an acknowledgement, reset their transmission power as defined
Jeej 19:701d5669f2e9 918 /// by the TOGGLE field. Unicast transmissions (unicast requests
Jeej 19:701d5669f2e9 919 /// and all responses) adjust the transmission power so that the
Jeej 19:701d5669f2e9 920 /// expected reception RXLEV at the receiving party equals the
Jeej 19:701d5669f2e9 921 /// last valid target RXLEV provided by that party, or when not
Jeej 19:701d5669f2e9 922 /// provided, -80 dBm.
Jeej 19:701d5669f2e9 923 u8 on : 1;
Jeej 19:701d5669f2e9 924 /// Enable target RXLEV reporting
Jeej 19:701d5669f2e9 925 /// When set, the target RXLEV is provided by the transmitting
Jeej 19:701d5669f2e9 926 /// party in the DLL header. The target RXLEV is computed based
Jeej 19:701d5669f2e9 927 /// on local noise floor, channel class and device sensitivity
Jeej 19:701d5669f2e9 928 u8 rxlev : 1;
Jeej 19:701d5669f2e9 929 /// Toggle between min and max
Jeej 19:701d5669f2e9 930 /// On a first failure or when the field is not set, the transmission
Jeej 19:701d5669f2e9 931 /// power is set to the maximum authorized level. When the field is
Jeej 19:701d5669f2e9 932 /// set, on a subsequent failure, the transmission power is toggled
Jeej 19:701d5669f2e9 933 /// between the minimum possible level and the maximum authorized
Jeej 19:701d5669f2e9 934 /// levels.
Jeej 19:701d5669f2e9 935 u8 toggle : 1;
Jeej 19:701d5669f2e9 936 // RFU
Jeej 19:701d5669f2e9 937 u8 rfu : 5;
Jeej 19:701d5669f2e9 938 } bf;
Jeej 19:701d5669f2e9 939
Jeej 19:701d5669f2e9 940 // byte access
Jeej 19:701d5669f2e9 941 u8 byte;
Jeej 19:701d5669f2e9 942
Jeej 19:701d5669f2e9 943 } d7a_agc_ctrl_t;
Jeej 19:701d5669f2e9 944
Jeej 19:701d5669f2e9 945 // =======================================================================
Jeej 19:701d5669f2e9 946 // d7a_sel_filter_t
Jeej 19:701d5669f2e9 947 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 948 /// SEL segment filter options structure
Jeej 19:701d5669f2e9 949 // =======================================================================
Jeej 19:701d5669f2e9 950 typedef union
Jeej 19:701d5669f2e9 951 {
Jeej 19:701d5669f2e9 952 // bit access fields
Jeej 19:701d5669f2e9 953 struct {
Jeej 19:701d5669f2e9 954 /// Filter segments marked with if no response is expected
Jeej 19:701d5669f2e9 955 u8 retry : 1;
Jeej 19:701d5669f2e9 956 // RFU
Jeej 19:701d5669f2e9 957 u8 rfu : 7;
Jeej 19:701d5669f2e9 958 } bf;
Jeej 19:701d5669f2e9 959
Jeej 19:701d5669f2e9 960 // byte access
Jeej 19:701d5669f2e9 961 u8 byte;
Jeej 19:701d5669f2e9 962
Jeej 19:701d5669f2e9 963 } d7a_sel_filter_t;
Jeej 19:701d5669f2e9 964
Jeej 19:701d5669f2e9 965 // =======================================================================
Jeej 19:701d5669f2e9 966 // d7a_sel_cfg_t
Jeej 19:701d5669f2e9 967 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 968 /// SEL configuration file structure
Jeej 19:701d5669f2e9 969 // =======================================================================
Jeej 19:701d5669f2e9 970 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 971 {
Jeej 19:701d5669f2e9 972 /// AGC mode
Jeej 19:701d5669f2e9 973 d7a_agc_ctrl_t agc_ctrl;
Jeej 19:701d5669f2e9 974 /// AGC parameter
Jeej 19:701d5669f2e9 975 u8 agc_param;
Jeej 19:701d5669f2e9 976 /// retry (valid in all RESP modes)
Jeej 19:701d5669f2e9 977 u8 retry;
Jeej 19:701d5669f2e9 978 /// repeat (valid in RESP_NO_RPT)
Jeej 19:701d5669f2e9 979 u8 repeat;
Jeej 19:701d5669f2e9 980 /// maximum acknowledgement window
Jeej 19:701d5669f2e9 981 u8 ack_win;
Jeej 19:701d5669f2e9 982 /// segment filter options
Jeej 19:701d5669f2e9 983 d7a_sel_filter_t filter;
Jeej 19:701d5669f2e9 984
Jeej 19:701d5669f2e9 985 } d7a_sel_cfg_t;
Jeej 19:701d5669f2e9 986 #define D7A_FS_SEL_CFG_SIZE sizeof(d7a_sel_cfg_t)
Jeej 19:701d5669f2e9 987
Jeej 19:701d5669f2e9 988 /// =======================================================================
Jeej 19:701d5669f2e9 989 /// =======================================================================
Jeej 19:701d5669f2e9 990 ///
Jeej 19:701d5669f2e9 991 /// 19. SEL STATUS
Jeej 19:701d5669f2e9 992 ///
Jeej 19:701d5669f2e9 993 /// =======================================================================
Jeej 19:701d5669f2e9 994 /// =======================================================================
Jeej 19:701d5669f2e9 995
Jeej 19:701d5669f2e9 996 // =======================================================================
Jeej 19:701d5669f2e9 997 // d7a_sel_status_t
Jeej 19:701d5669f2e9 998 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 999 /// Structure of the SEL Protocol status
Jeej 19:701d5669f2e9 1000 // =======================================================================
Jeej 19:701d5669f2e9 1001 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 1002 {
Jeej 19:701d5669f2e9 1003 /// UID of the device issuing the FCP
Jeej 19:701d5669f2e9 1004 u8 uid[D7A_UID_LEN];
Jeej 19:701d5669f2e9 1005 /// Frequency offset.
Jeej 19:701d5669f2e9 1006 s16 fof;
Jeej 19:701d5669f2e9 1007
Jeej 19:701d5669f2e9 1008 } d7a_sel_status_t;
Jeej 19:701d5669f2e9 1009 #define D7A_FS_SEL_STATUS_SIZE sizeof(d7a_sel_status_t)
Jeej 19:701d5669f2e9 1010
Jeej 19:701d5669f2e9 1011 /// =======================================================================
Jeej 19:701d5669f2e9 1012 /// =======================================================================
Jeej 19:701d5669f2e9 1013 ///
Jeej 19:701d5669f2e9 1014 /// 32-47. ACCESS PROFILES
Jeej 19:701d5669f2e9 1015 ///
Jeej 19:701d5669f2e9 1016 /// =======================================================================
Jeej 19:701d5669f2e9 1017 /// =======================================================================
Jeej 19:701d5669f2e9 1018
Jeej 19:701d5669f2e9 1019 // =======================================================================
Jeej 19:701d5669f2e9 1020 // d7a_subprofile_t
Jeej 19:701d5669f2e9 1021 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 1022 /// Sub-profile structure
Jeej 19:701d5669f2e9 1023 // =======================================================================
Jeej 19:701d5669f2e9 1024 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 1025 {
Jeej 19:701d5669f2e9 1026 /// Subband select bitmap
Jeej 19:701d5669f2e9 1027 u8 bmp;
Jeej 19:701d5669f2e9 1028 /// Scheduler period
Jeej 19:701d5669f2e9 1029 d7a_ctf_t tsched;
Jeej 19:701d5669f2e9 1030
Jeej 19:701d5669f2e9 1031 } d7a_subprofile_t;
Jeej 19:701d5669f2e9 1032
Jeej 19:701d5669f2e9 1033 // =======================================================================
Jeej 19:701d5669f2e9 1034 // d7a_cca_cfg_t
Jeej 19:701d5669f2e9 1035 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 1036 /// Clear Channel Assessment Configuration structure
Jeej 19:701d5669f2e9 1037 // =======================================================================
Jeej 19:701d5669f2e9 1038 typedef union
Jeej 19:701d5669f2e9 1039 {
Jeej 19:701d5669f2e9 1040 // bit access fields
Jeej 19:701d5669f2e9 1041 struct {
Jeej 19:701d5669f2e9 1042 /// Default CCA Threshold (-dBm)
Jeej 19:701d5669f2e9 1043 u8 val : 7;
Jeej 19:701d5669f2e9 1044 /// CCA not required flag
Jeej 19:701d5669f2e9 1045 u8 opt : 1;
Jeej 19:701d5669f2e9 1046 } bf;
Jeej 19:701d5669f2e9 1047
Jeej 19:701d5669f2e9 1048 // byte access
Jeej 19:701d5669f2e9 1049 u8 byte;
Jeej 19:701d5669f2e9 1050
Jeej 19:701d5669f2e9 1051 } d7a_cca_cfg_t;
Jeej 19:701d5669f2e9 1052
Jeej 19:701d5669f2e9 1053 // =======================================================================
Jeej 19:701d5669f2e9 1054 // d7a_subband_t
Jeej 19:701d5669f2e9 1055 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 1056 /// Subband structure
Jeej 19:701d5669f2e9 1057 // =======================================================================
Jeej 19:701d5669f2e9 1058 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 1059 {
Jeej 19:701d5669f2e9 1060 /// Start channel index
Jeej 19:701d5669f2e9 1061 u16 start_idx;
Jeej 19:701d5669f2e9 1062 /// End channel index
Jeej 19:701d5669f2e9 1063 u16 end_idx;
Jeej 19:701d5669f2e9 1064 /// Transmission EIRP (dBm)
Jeej 19:701d5669f2e9 1065 s8 eirp;
Jeej 19:701d5669f2e9 1066 /// Clear channel assessment configuration (-dBm)
Jeej 19:701d5669f2e9 1067 d7a_cca_cfg_t cca;
Jeej 19:701d5669f2e9 1068 /// Maximum per-channel transmission duty cycle in per-mil
Jeej 19:701d5669f2e9 1069 u8 duty;
Jeej 19:701d5669f2e9 1070
Jeej 19:701d5669f2e9 1071 } d7a_subband_t;
Jeej 19:701d5669f2e9 1072
Jeej 19:701d5669f2e9 1073 // =======================================================================
Jeej 19:701d5669f2e9 1074 // d7a_access_profile_t
Jeej 19:701d5669f2e9 1075 // -----------------------------------------------------------------------
Jeej 19:701d5669f2e9 1076 /// DLL Access Profile structure
Jeej 19:701d5669f2e9 1077 // =======================================================================
Jeej 19:701d5669f2e9 1078 TYPEDEF_STRUCT_PACKED
Jeej 19:701d5669f2e9 1079 {
Jeej 19:701d5669f2e9 1080 /// Channel header
Jeej 19:701d5669f2e9 1081 d7a_ch_header_t header;
Jeej 19:701d5669f2e9 1082 /// Access control
Jeej 19:701d5669f2e9 1083 d7a_subprofile_t sp[4];
Jeej 19:701d5669f2e9 1084 /// Subbands
Jeej 19:701d5669f2e9 1085 d7a_subband_t sb[8];
Jeej 19:701d5669f2e9 1086
Jeej 19:701d5669f2e9 1087 } d7a_access_profile_t;
Jeej 19:701d5669f2e9 1088 #define D7A_FS_AP_SIZE sizeof(d7a_access_profile_t)
Jeej 19:701d5669f2e9 1089
Jeej 19:701d5669f2e9 1090 #endif // __D7A_1X_FS_H__