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