Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

Committer:
Jeej
Date:
Fri Feb 19 10:59:42 2021 +0000
Revision:
60:08efaaca0e83
Parent:
56:67e3d9608403
Child:
66:369ed528d367
Fixed responses

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