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