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