Exportable version of WizziLab's modem driver.
include/d7a_1x_fs.h@26:2c934a269914, 2018-03-05 (annotated)
- Committer:
- Jeej
- Date:
- Mon Mar 05 09:55:27 2018 +0000
- Revision:
- 26:2c934a269914
- Parent:
- 19:701d5669f2e9
- Child:
- 30:74aa36420c61
Updated for 5.0.x
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 | 19:701d5669f2e9 | 372 | /// Reserved |
Jeej | 19:701d5669f2e9 | 373 | D7A_CLASS_EXT_RFU_3, |
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 | 19:701d5669f2e9 | 396 | /// Quantity |
Jeej | 19:701d5669f2e9 | 397 | D7A_BAND_QTY |
Jeej | 19:701d5669f2e9 | 398 | |
Jeej | 19:701d5669f2e9 | 399 | } d7a_band_t; |
Jeej | 19:701d5669f2e9 | 400 | |
Jeej | 19:701d5669f2e9 | 401 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 402 | // d7a_cs_t |
Jeej | 19:701d5669f2e9 | 403 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 404 | /// Enumerator of the PHY channel coding schemes |
Jeej | 19:701d5669f2e9 | 405 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 406 | typedef enum |
Jeej | 19:701d5669f2e9 | 407 | { |
Jeej | 19:701d5669f2e9 | 408 | /// Nominal - PN9 encoding |
Jeej | 19:701d5669f2e9 | 409 | /// Extension LoRa - LoRaWAN mode 0 (BW = 125 KHz, SF = 12, FEC 4/5) |
Jeej | 19:701d5669f2e9 | 410 | D7A_CS_0 = 0, |
Jeej | 19:701d5669f2e9 | 411 | /// Nominal - RFU |
Jeej | 19:701d5669f2e9 | 412 | /// Extension LoRa - LoRaWAN mode 1 (BW = 125 KHz, SF = 11, FEC 4/5) |
Jeej | 19:701d5669f2e9 | 413 | D7A_CS_1, |
Jeej | 19:701d5669f2e9 | 414 | /// Nominal - FEC + PN9 encoding |
Jeej | 19:701d5669f2e9 | 415 | /// Extension LoRa - LoRaWAN mode 2 (BW = 125 KHz, SF = 10, FEC 4/5) |
Jeej | 19:701d5669f2e9 | 416 | D7A_CS_2, |
Jeej | 19:701d5669f2e9 | 417 | /// Nominal - RFU |
Jeej | 19:701d5669f2e9 | 418 | /// Extension LoRa - LoRaWAN mode 3 (BW = 125 KHz, SF = 9, FEC 4/5) |
Jeej | 19:701d5669f2e9 | 419 | D7A_CS_3, |
Jeej | 19:701d5669f2e9 | 420 | /// Quantity |
Jeej | 19:701d5669f2e9 | 421 | D7A_CS_QTY, |
Jeej | 19:701d5669f2e9 | 422 | |
Jeej | 19:701d5669f2e9 | 423 | } d7a_cs_t; |
Jeej | 19:701d5669f2e9 | 424 | |
Jeej | 19:701d5669f2e9 | 425 | #define D7A_CLASS(a) (a+4) |
Jeej | 19:701d5669f2e9 | 426 | |
Jeej | 19:701d5669f2e9 | 427 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 428 | // d7a_phy_cfg_t |
Jeej | 19:701d5669f2e9 | 429 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 430 | /// PHY Configuration File structure |
Jeej | 19:701d5669f2e9 | 431 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 432 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 433 | { |
Jeej | 19:701d5669f2e9 | 434 | /// Preamble length depending on channel class |
Jeej | 19:701d5669f2e9 | 435 | u8 preamble[D7A_CLASS_QTY]; |
Jeej | 19:701d5669f2e9 | 436 | /// Maximum authorized EIRP (dBm) |
Jeej | 19:701d5669f2e9 | 437 | s8 eirp_limit; |
Jeej | 19:701d5669f2e9 | 438 | /// TX duty cycle window in seconds |
Jeej | 19:701d5669f2e9 | 439 | u16 duty_win; |
Jeej | 19:701d5669f2e9 | 440 | /// TX Duty cycle limit in 1/1024 (full scale is 1024) |
Jeej | 19:701d5669f2e9 | 441 | u16 duty_limit; |
Jeej | 19:701d5669f2e9 | 442 | |
Jeej | 19:701d5669f2e9 | 443 | } d7a_phy_cfg_t; |
Jeej | 19:701d5669f2e9 | 444 | #define D7A_FS_PHY_CFG_SIZE sizeof(d7a_phy_cfg_t) |
Jeej | 19:701d5669f2e9 | 445 | |
Jeej | 19:701d5669f2e9 | 446 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 447 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 448 | /// |
Jeej | 19:701d5669f2e9 | 449 | /// 9. PHY STATUS |
Jeej | 19:701d5669f2e9 | 450 | /// |
Jeej | 19:701d5669f2e9 | 451 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 452 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 453 | |
Jeej | 19:701d5669f2e9 | 454 | /// Maximum number of monitored channels |
Jeej | 19:701d5669f2e9 | 455 | #define D7A_PHY_MONITORED_CHANNELS (32) |
Jeej | 19:701d5669f2e9 | 456 | |
Jeej | 19:701d5669f2e9 | 457 | //====================================================================== |
Jeej | 19:701d5669f2e9 | 458 | /// PHY Channel Status Identifier |
Jeej | 19:701d5669f2e9 | 459 | //====================================================================== |
Jeej | 19:701d5669f2e9 | 460 | typedef union |
Jeej | 19:701d5669f2e9 | 461 | { |
Jeej | 19:701d5669f2e9 | 462 | struct { |
Jeej | 19:701d5669f2e9 | 463 | /// Channel index (maximum 1039 indexes for ISM 915, use 11 bits) |
Jeej | 19:701d5669f2e9 | 464 | u16 idx : 11; |
Jeej | 19:701d5669f2e9 | 465 | /// RFU |
Jeej | 19:701d5669f2e9 | 466 | u16 rfu : 1; |
Jeej | 19:701d5669f2e9 | 467 | /// Channel bandwidth (1 : 25 kHz, 0 : 200 kHz) |
Jeej | 19:701d5669f2e9 | 468 | u16 lo : 1; |
Jeej | 19:701d5669f2e9 | 469 | /// Band |
Jeej | 19:701d5669f2e9 | 470 | u16 band : 3; |
Jeej | 19:701d5669f2e9 | 471 | } bf; |
Jeej | 19:701d5669f2e9 | 472 | |
Jeej | 19:701d5669f2e9 | 473 | /// word access |
Jeej | 19:701d5669f2e9 | 474 | u16 word; |
Jeej | 19:701d5669f2e9 | 475 | |
Jeej | 19:701d5669f2e9 | 476 | } d7a_phy_status_ch_id_t; |
Jeej | 19:701d5669f2e9 | 477 | |
Jeej | 19:701d5669f2e9 | 478 | //====================================================================== |
Jeej | 19:701d5669f2e9 | 479 | /// PHY Channel Monitoring Status |
Jeej | 19:701d5669f2e9 | 480 | //====================================================================== |
Jeej | 19:701d5669f2e9 | 481 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 482 | { |
Jeej | 19:701d5669f2e9 | 483 | // Identifier |
Jeej | 19:701d5669f2e9 | 484 | d7a_phy_status_ch_id_t id; |
Jeej | 19:701d5669f2e9 | 485 | /// Noise floor in -dBm |
Jeej | 19:701d5669f2e9 | 486 | u8 nf; |
Jeej | 19:701d5669f2e9 | 487 | |
Jeej | 19:701d5669f2e9 | 488 | } d7a_phy_status_ch_t; |
Jeej | 19:701d5669f2e9 | 489 | |
Jeej | 19:701d5669f2e9 | 490 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 491 | // d7a_phy_status_t |
Jeej | 19:701d5669f2e9 | 492 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 493 | /// PHY Status File structure |
Jeej | 19:701d5669f2e9 | 494 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 495 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 496 | { |
Jeej | 19:701d5669f2e9 | 497 | /// Time since power on in seconds |
Jeej | 19:701d5669f2e9 | 498 | u32 up_time; |
Jeej | 19:701d5669f2e9 | 499 | /// RX time since power on in seconds |
Jeej | 19:701d5669f2e9 | 500 | u32 rx_time; |
Jeej | 19:701d5669f2e9 | 501 | /// TX time since power on in seconds |
Jeej | 19:701d5669f2e9 | 502 | u32 tx_time; |
Jeej | 19:701d5669f2e9 | 503 | /// TX Duty cycle in 1/1024 (full scale is 1024) |
Jeej | 19:701d5669f2e9 | 504 | u16 tx_duty; |
Jeej | 19:701d5669f2e9 | 505 | /// Number of monitored channels |
Jeej | 19:701d5669f2e9 | 506 | u8 ch_nb; |
Jeej | 19:701d5669f2e9 | 507 | /// Channel Status List |
Jeej | 19:701d5669f2e9 | 508 | d7a_phy_status_ch_t ch[D7A_PHY_MONITORED_CHANNELS]; |
Jeej | 19:701d5669f2e9 | 509 | |
Jeej | 19:701d5669f2e9 | 510 | } d7a_phy_status_t; |
Jeej | 19:701d5669f2e9 | 511 | |
Jeej | 19:701d5669f2e9 | 512 | #define D7A_FS_PHY_STATUS_SIZE sizeof(d7a_phy_status_t) |
Jeej | 19:701d5669f2e9 | 513 | |
Jeej | 19:701d5669f2e9 | 514 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 515 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 516 | /// |
Jeej | 19:701d5669f2e9 | 517 | /// 10. DLL CONFIGURATION |
Jeej | 19:701d5669f2e9 | 518 | /// |
Jeej | 19:701d5669f2e9 | 519 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 520 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 521 | |
Jeej | 19:701d5669f2e9 | 522 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 523 | // d7a_nf_auto_t |
Jeej | 19:701d5669f2e9 | 524 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 525 | /// DLL Noise Floor Autoscaling |
Jeej | 19:701d5669f2e9 | 526 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 527 | typedef enum |
Jeej | 19:701d5669f2e9 | 528 | { |
Jeej | 19:701d5669f2e9 | 529 | /// No Autoscaling (default). |
Jeej | 19:701d5669f2e9 | 530 | /// Always use the Noise Floor and Noise Floor Variance defined in the Access Profile |
Jeej | 19:701d5669f2e9 | 531 | D7A_NF_AUTO_NO = 0, |
Jeej | 19:701d5669f2e9 | 532 | /// Slow RSSI Variation. |
Jeej | 19:701d5669f2e9 | 533 | /// Noise Floor and Noise Floor variance are computed based on regular RSSI measurements |
Jeej | 19:701d5669f2e9 | 534 | /// with a forget factor defined by the associated parameter |
Jeej | 19:701d5669f2e9 | 535 | D7A_NF_AUTO_SLOW = 1, |
Jeej | 19:701d5669f2e9 | 536 | |
Jeej | 19:701d5669f2e9 | 537 | } d7a_nf_auto_t; |
Jeej | 19:701d5669f2e9 | 538 | |
Jeej | 19:701d5669f2e9 | 539 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 540 | // d7a_area_t |
Jeej | 19:701d5669f2e9 | 541 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 542 | /// DLL Area Enumerator |
Jeej | 19:701d5669f2e9 | 543 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 544 | typedef enum |
Jeej | 19:701d5669f2e9 | 545 | { |
Jeej | 19:701d5669f2e9 | 546 | // Unclassified (the Moon, Mars...) |
Jeej | 19:701d5669f2e9 | 547 | // Reserved for application specific configurations |
Jeej | 19:701d5669f2e9 | 548 | D7A_AREA_REGION_0 = 0x00, |
Jeej | 19:701d5669f2e9 | 549 | |
Jeej | 19:701d5669f2e9 | 550 | // Region 1 (Europe, Russia, Middle East) |
Jeej | 19:701d5669f2e9 | 551 | D7A_AREA_REGION_1 = 0x10, |
Jeej | 19:701d5669f2e9 | 552 | // Default area governed by ECC / CEPT / ITU regulations |
Jeej | 19:701d5669f2e9 | 553 | // European Union, Norway (?), UK (?), Switzerland (?) |
Jeej | 19:701d5669f2e9 | 554 | D7A_AREA_ECC = D7A_AREA_REGION_1, |
Jeej | 19:701d5669f2e9 | 555 | // Russia |
Jeej | 19:701d5669f2e9 | 556 | D7A_AREA_RUSSIA, |
Jeej | 19:701d5669f2e9 | 557 | // United Arab Emirates |
Jeej | 19:701d5669f2e9 | 558 | D7A_AREA_UAE, |
Jeej | 19:701d5669f2e9 | 559 | |
Jeej | 19:701d5669f2e9 | 560 | // Region 2 (Americas) |
Jeej | 19:701d5669f2e9 | 561 | D7A_AREA_REGION_2 = 0x20, |
Jeej | 19:701d5669f2e9 | 562 | // Default area governed by FCC regulations |
Jeej | 19:701d5669f2e9 | 563 | // US, Canada, Chile, Argentina, Columbia,... |
Jeej | 19:701d5669f2e9 | 564 | D7A_AREA_FCC = D7A_AREA_REGION_2, |
Jeej | 19:701d5669f2e9 | 565 | // Brazil |
Jeej | 19:701d5669f2e9 | 566 | D7A_AREA_BRAZIL, |
Jeej | 19:701d5669f2e9 | 567 | |
Jeej | 19:701d5669f2e9 | 568 | // Region 3 (Asia Pacific) |
Jeej | 19:701d5669f2e9 | 569 | D7A_AREA_REGION_3 = 0x30, |
Jeej | 19:701d5669f2e9 | 570 | // Default area governed by Asia-Pacific regulations (seems does not exist yet) |
Jeej | 19:701d5669f2e9 | 571 | D7A_AREA_ASIA = D7A_AREA_REGION_3, |
Jeej | 19:701d5669f2e9 | 572 | // Australia and New Zealand |
Jeej | 19:701d5669f2e9 | 573 | D7A_AREA_AU_NZ, |
Jeej | 19:701d5669f2e9 | 574 | // India |
Jeej | 19:701d5669f2e9 | 575 | D7A_AREA_INDIA, |
Jeej | 19:701d5669f2e9 | 576 | // Pakistan |
Jeej | 19:701d5669f2e9 | 577 | D7A_AREA_PAKISTAN, |
Jeej | 19:701d5669f2e9 | 578 | // Korea |
Jeej | 19:701d5669f2e9 | 579 | D7A_AREA_KOREA, |
Jeej | 19:701d5669f2e9 | 580 | // Japan |
Jeej | 19:701d5669f2e9 | 581 | D7A_AREA_JAPAN, |
Jeej | 19:701d5669f2e9 | 582 | // China |
Jeej | 19:701d5669f2e9 | 583 | D7A_AREA_CHINA, |
Jeej | 19:701d5669f2e9 | 584 | // Hong Kong |
Jeej | 19:701d5669f2e9 | 585 | D7A_AREA_HK, |
Jeej | 19:701d5669f2e9 | 586 | // Singapore |
Jeej | 19:701d5669f2e9 | 587 | D7A_AREA_SINGAPORE, |
Jeej | 19:701d5669f2e9 | 588 | // Malaysia |
Jeej | 19:701d5669f2e9 | 589 | D7A_AREA_MALAYSIA, |
Jeej | 19:701d5669f2e9 | 590 | // Indonesia |
Jeej | 19:701d5669f2e9 | 591 | D7A_AREA_INDONESIA, |
Jeej | 19:701d5669f2e9 | 592 | |
Jeej | 19:701d5669f2e9 | 593 | // Area enumerator mask |
Jeej | 19:701d5669f2e9 | 594 | D7A_AREA_MASK = 0x3f, |
Jeej | 19:701d5669f2e9 | 595 | |
Jeej | 19:701d5669f2e9 | 596 | } d7a_area_t; |
Jeej | 19:701d5669f2e9 | 597 | |
Jeej | 19:701d5669f2e9 | 598 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 599 | // d7a_nf_ctrl_t |
Jeej | 19:701d5669f2e9 | 600 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 601 | /// Noise Floor computation control structure |
Jeej | 19:701d5669f2e9 | 602 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 603 | typedef union |
Jeej | 19:701d5669f2e9 | 604 | { |
Jeej | 19:701d5669f2e9 | 605 | // bit access fields |
Jeej | 19:701d5669f2e9 | 606 | struct { |
Jeej | 19:701d5669f2e9 | 607 | // Rx NF method |
Jeej | 19:701d5669f2e9 | 608 | u8 rx : 4; |
Jeej | 19:701d5669f2e9 | 609 | // Tx NF method |
Jeej | 19:701d5669f2e9 | 610 | u8 tx : 4; |
Jeej | 19:701d5669f2e9 | 611 | } bf; |
Jeej | 19:701d5669f2e9 | 612 | |
Jeej | 19:701d5669f2e9 | 613 | // byte access |
Jeej | 19:701d5669f2e9 | 614 | u8 byte; |
Jeej | 19:701d5669f2e9 | 615 | |
Jeej | 19:701d5669f2e9 | 616 | } d7a_nf_ctrl_t; |
Jeej | 19:701d5669f2e9 | 617 | |
Jeej | 19:701d5669f2e9 | 618 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 619 | // d7a_dll_cfg_t |
Jeej | 19:701d5669f2e9 | 620 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 621 | /// DLL Configuration File structure |
Jeej | 19:701d5669f2e9 | 622 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 623 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 624 | { |
Jeej | 19:701d5669f2e9 | 625 | /// Active Access configuration |
Jeej | 19:701d5669f2e9 | 626 | d7a_xcl_t xcl; |
Jeej | 19:701d5669f2e9 | 627 | /// Area identifier. |
Jeej | 19:701d5669f2e9 | 628 | u8 area; |
Jeej | 19:701d5669f2e9 | 629 | /// RFU |
Jeej | 19:701d5669f2e9 | 630 | u8 rfu; |
Jeej | 19:701d5669f2e9 | 631 | /// Link Quality Filter. Disabled when set to 0xFF |
Jeej | 19:701d5669f2e9 | 632 | u8 lq_filter; |
Jeej | 19:701d5669f2e9 | 633 | /// Noise Floor Computation Method Control Bitfield |
Jeej | 19:701d5669f2e9 | 634 | d7a_nf_ctrl_t nf_ctrl; |
Jeej | 19:701d5669f2e9 | 635 | /// RX Noise Floor Method Parameter (depends on Method ID) |
Jeej | 19:701d5669f2e9 | 636 | u8 rx_nf_param; |
Jeej | 19:701d5669f2e9 | 637 | /// RX Noise Floor Method Parameter (depends on Method ID) |
Jeej | 19:701d5669f2e9 | 638 | u8 tx_nf_param; |
Jeej | 19:701d5669f2e9 | 639 | |
Jeej | 19:701d5669f2e9 | 640 | } d7a_dll_cfg_t; |
Jeej | 19:701d5669f2e9 | 641 | #define D7A_FS_DLL_CFG_SIZE sizeof(d7a_dll_cfg_t) |
Jeej | 19:701d5669f2e9 | 642 | |
Jeej | 19:701d5669f2e9 | 643 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 644 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 645 | /// |
Jeej | 19:701d5669f2e9 | 646 | /// 11. DLL STATUS |
Jeej | 19:701d5669f2e9 | 647 | /// |
Jeej | 19:701d5669f2e9 | 648 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 649 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 650 | |
Jeej | 19:701d5669f2e9 | 651 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 652 | // d7a_dll_status_t |
Jeej | 19:701d5669f2e9 | 653 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 654 | /// DLL status File structure |
Jeej | 19:701d5669f2e9 | 655 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 656 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 657 | { |
Jeej | 19:701d5669f2e9 | 658 | /// Last RX level [-dBm] |
Jeej | 19:701d5669f2e9 | 659 | u8 rxlev_last; |
Jeej | 19:701d5669f2e9 | 660 | /// Last link budget [dB] |
Jeej | 19:701d5669f2e9 | 661 | u8 lb_last; |
Jeej | 19:701d5669f2e9 | 662 | /// Measured noise floor [-dBm] |
Jeej | 19:701d5669f2e9 | 663 | u8 nf; |
Jeej | 19:701d5669f2e9 | 664 | /// Last RX channel header |
Jeej | 19:701d5669f2e9 | 665 | d7a_ch_header_t ch_header; |
Jeej | 19:701d5669f2e9 | 666 | /// Last RX channel index |
Jeej | 19:701d5669f2e9 | 667 | u16 ch_idx; |
Jeej | 19:701d5669f2e9 | 668 | /// scan timout ratio in 1/1024th |
Jeej | 19:701d5669f2e9 | 669 | u16 scan_ratio; |
Jeej | 19:701d5669f2e9 | 670 | |
Jeej | 19:701d5669f2e9 | 671 | } d7a_dll_status_t; |
Jeej | 19:701d5669f2e9 | 672 | #define D7A_FS_DLL_STATUS_SIZE sizeof(d7a_dll_status_t) |
Jeej | 19:701d5669f2e9 | 673 | |
Jeej | 19:701d5669f2e9 | 674 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 675 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 676 | /// |
Jeej | 19:701d5669f2e9 | 677 | /// 12. NWL ROUTING |
Jeej | 19:701d5669f2e9 | 678 | /// |
Jeej | 19:701d5669f2e9 | 679 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 680 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 681 | |
Jeej | 19:701d5669f2e9 | 682 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 683 | // d7a_nwl_routing_mode_t |
Jeej | 19:701d5669f2e9 | 684 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 685 | /// NWL routing modes |
Jeej | 19:701d5669f2e9 | 686 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 687 | typedef enum |
Jeej | 19:701d5669f2e9 | 688 | { |
Jeej | 19:701d5669f2e9 | 689 | /// Default routing type |
Jeej | 19:701d5669f2e9 | 690 | D7A_NWL_ROUTING_MODE_DEFAULT = 0, |
Jeej | 19:701d5669f2e9 | 691 | /// Qty |
Jeej | 19:701d5669f2e9 | 692 | D7A_NWL_ROUTING_MODE_QTY |
Jeej | 19:701d5669f2e9 | 693 | |
Jeej | 19:701d5669f2e9 | 694 | } d7a_nwl_routing_mode_t; |
Jeej | 19:701d5669f2e9 | 695 | |
Jeej | 19:701d5669f2e9 | 696 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 697 | // d7a_nwl_routing_entry_t |
Jeej | 19:701d5669f2e9 | 698 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 699 | /// NWL Single Routing entry |
Jeej | 19:701d5669f2e9 | 700 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 701 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 702 | { |
Jeej | 19:701d5669f2e9 | 703 | /// Destination node to be reached |
Jeej | 19:701d5669f2e9 | 704 | d7a_addressee_t dst; |
Jeej | 19:701d5669f2e9 | 705 | /// Intermediary node to use |
Jeej | 19:701d5669f2e9 | 706 | d7a_addressee_t itm; |
Jeej | 19:701d5669f2e9 | 707 | |
Jeej | 19:701d5669f2e9 | 708 | } d7a_nwl_routing_entry_t; |
Jeej | 19:701d5669f2e9 | 709 | |
Jeej | 19:701d5669f2e9 | 710 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 711 | // d7a_fs_nwl_routing_t |
Jeej | 19:701d5669f2e9 | 712 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 713 | /// NWL Routing File structure |
Jeej | 19:701d5669f2e9 | 714 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 715 | #define D7A_FS_NWL_ROUTING_SIZE(n) (sizeof(u8) + (n) * sizeof(d7a_nwl_routing_entry_t)) |
Jeej | 19:701d5669f2e9 | 716 | #define d7a_nwl_routing_t(n) \ |
Jeej | 19:701d5669f2e9 | 717 | struct __attribute__((packed)) \ |
Jeej | 19:701d5669f2e9 | 718 | { \ |
Jeej | 19:701d5669f2e9 | 719 | u8 routing;\ |
Jeej | 19:701d5669f2e9 | 720 | d7a_nwl_routing_entry_t entry[(n)];\ |
Jeej | 19:701d5669f2e9 | 721 | } |
Jeej | 19:701d5669f2e9 | 722 | |
Jeej | 19:701d5669f2e9 | 723 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 724 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 725 | /// |
Jeej | 19:701d5669f2e9 | 726 | /// 13. NWL SECURITY |
Jeej | 19:701d5669f2e9 | 727 | /// |
Jeej | 19:701d5669f2e9 | 728 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 729 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 730 | #define D7A_FS_NWL_SECURITY_SIZE sizeof(d7a_nwl_security_t) |
Jeej | 19:701d5669f2e9 | 731 | |
Jeej | 19:701d5669f2e9 | 732 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 733 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 734 | /// |
Jeej | 19:701d5669f2e9 | 735 | /// 14. NWL SECURITY KEY |
Jeej | 19:701d5669f2e9 | 736 | /// |
Jeej | 19:701d5669f2e9 | 737 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 738 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 739 | |
Jeej | 19:701d5669f2e9 | 740 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 741 | // d7a_nwl_key_entry_t |
Jeej | 19:701d5669f2e9 | 742 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 743 | /// NWL AES-128 key File structure |
Jeej | 19:701d5669f2e9 | 744 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 745 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 746 | { |
Jeej | 19:701d5669f2e9 | 747 | /// NWL Security key |
Jeej | 19:701d5669f2e9 | 748 | u8 val[16]; |
Jeej | 19:701d5669f2e9 | 749 | /// Counter associated to the key |
Jeej | 19:701d5669f2e9 | 750 | u8 cnt; |
Jeej | 19:701d5669f2e9 | 751 | |
Jeej | 19:701d5669f2e9 | 752 | } d7a_nwl_key_entry_t; |
Jeej | 19:701d5669f2e9 | 753 | |
Jeej | 19:701d5669f2e9 | 754 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 755 | // d7a_nwl_key_t |
Jeej | 19:701d5669f2e9 | 756 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 757 | /// NWL AES-128 key File structure |
Jeej | 19:701d5669f2e9 | 758 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 759 | #define D7A_FS_NWL_KEY_SIZE(n) (n) * sizeof(d7a_nwl_key_entry_t) |
Jeej | 19:701d5669f2e9 | 760 | #define d7a_nwl_key_t(n) \ |
Jeej | 19:701d5669f2e9 | 761 | struct __attribute__((packed)) \ |
Jeej | 19:701d5669f2e9 | 762 | { \ |
Jeej | 19:701d5669f2e9 | 763 | d7a_nwl_key_entry_t key[(n)];\ |
Jeej | 19:701d5669f2e9 | 764 | } |
Jeej | 19:701d5669f2e9 | 765 | |
Jeej | 19:701d5669f2e9 | 766 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 767 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 768 | /// |
Jeej | 19:701d5669f2e9 | 769 | /// 14. NWL SECURITY STATE REGISTER |
Jeej | 19:701d5669f2e9 | 770 | /// |
Jeej | 19:701d5669f2e9 | 771 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 772 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 773 | |
Jeej | 19:701d5669f2e9 | 774 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 775 | // d7a_nwl_ssr_filter_t |
Jeej | 19:701d5669f2e9 | 776 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 777 | /// NWL SSR filter |
Jeej | 19:701d5669f2e9 | 778 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 779 | typedef union |
Jeej | 19:701d5669f2e9 | 780 | { |
Jeej | 19:701d5669f2e9 | 781 | // bit access fields |
Jeej | 19:701d5669f2e9 | 782 | struct { |
Jeej | 19:701d5669f2e9 | 783 | /// SSR filter enable |
Jeej | 19:701d5669f2e9 | 784 | u8 en : 1; |
Jeej | 19:701d5669f2e9 | 785 | /// Allow new entry to be added on unicast access with Virtual ID |
Jeej | 19:701d5669f2e9 | 786 | u8 vcast : 1; |
Jeej | 19:701d5669f2e9 | 787 | /// Allow new entry to be added on broadcast access |
Jeej | 19:701d5669f2e9 | 788 | u8 bcast : 1; |
Jeej | 19:701d5669f2e9 | 789 | /// RFU |
Jeej | 19:701d5669f2e9 | 790 | u8 rfu : 3; |
Jeej | 19:701d5669f2e9 | 791 | /// Enable flush on regular basis |
Jeej | 19:701d5669f2e9 | 792 | u8 flushen : 1; |
Jeej | 19:701d5669f2e9 | 793 | /// Flush on every received initial request |
Jeej | 19:701d5669f2e9 | 794 | u8 flushreq : 1; |
Jeej | 19:701d5669f2e9 | 795 | } bf; |
Jeej | 19:701d5669f2e9 | 796 | |
Jeej | 19:701d5669f2e9 | 797 | // byte access |
Jeej | 19:701d5669f2e9 | 798 | u8 byte; |
Jeej | 19:701d5669f2e9 | 799 | |
Jeej | 19:701d5669f2e9 | 800 | } d7a_nwl_ssr_filter_t; |
Jeej | 19:701d5669f2e9 | 801 | |
Jeej | 19:701d5669f2e9 | 802 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 803 | // d7a_nwl_cfg_t |
Jeej | 19:701d5669f2e9 | 804 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 805 | /// NWL Security Configuration structure |
Jeej | 19:701d5669f2e9 | 806 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 807 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 808 | { |
Jeej | 19:701d5669f2e9 | 809 | // NLS filter |
Jeej | 19:701d5669f2e9 | 810 | u16 nls_filter; |
Jeej | 19:701d5669f2e9 | 811 | // SSR filter |
Jeej | 19:701d5669f2e9 | 812 | d7a_nwl_ssr_filter_t ssr_filter; |
Jeej | 19:701d5669f2e9 | 813 | // Number of SSR entries |
Jeej | 19:701d5669f2e9 | 814 | u8 ssr_len; |
Jeej | 19:701d5669f2e9 | 815 | |
Jeej | 19:701d5669f2e9 | 816 | } d7a_nwl_cfg_t; |
Jeej | 19:701d5669f2e9 | 817 | |
Jeej | 19:701d5669f2e9 | 818 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 819 | // d7a_nwl_ssr_entry_t |
Jeej | 19:701d5669f2e9 | 820 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 821 | /// NWL Single SSR entry |
Jeej | 19:701d5669f2e9 | 822 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 823 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 824 | { |
Jeej | 19:701d5669f2e9 | 825 | /// Security state |
Jeej | 19:701d5669f2e9 | 826 | d7a_nwl_security_t sec; |
Jeej | 19:701d5669f2e9 | 827 | /// distant UID |
Jeej | 19:701d5669f2e9 | 828 | u8 uid[D7A_UID_LEN]; |
Jeej | 19:701d5669f2e9 | 829 | |
Jeej | 19:701d5669f2e9 | 830 | } d7a_nwl_ssr_entry_t; |
Jeej | 19:701d5669f2e9 | 831 | |
Jeej | 19:701d5669f2e9 | 832 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 833 | // d7a_nwl_ssr_t |
Jeej | 19:701d5669f2e9 | 834 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 835 | /// NWL Security State Register File structure |
Jeej | 19:701d5669f2e9 | 836 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 837 | #define D7A_FS_NWL_SSR_SIZE(n) (sizeof(d7a_nwl_cfg_t) + (n) * sizeof(d7a_nwl_ssr_entry_t)) |
Jeej | 19:701d5669f2e9 | 838 | #define d7a_nwl_ssr_t(n) \ |
Jeej | 19:701d5669f2e9 | 839 | struct __attribute__((packed)) \ |
Jeej | 19:701d5669f2e9 | 840 | { \ |
Jeej | 19:701d5669f2e9 | 841 | d7a_nwl_cfg_t cfg;\ |
Jeej | 19:701d5669f2e9 | 842 | d7a_nwl_ssr_entry_t entry[(n)];\ |
Jeej | 19:701d5669f2e9 | 843 | } |
Jeej | 19:701d5669f2e9 | 844 | |
Jeej | 19:701d5669f2e9 | 845 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 846 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 847 | /// |
Jeej | 19:701d5669f2e9 | 848 | /// 16. NWL STATUS |
Jeej | 19:701d5669f2e9 | 849 | /// |
Jeej | 19:701d5669f2e9 | 850 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 851 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 852 | |
Jeej | 19:701d5669f2e9 | 853 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 854 | // d7a_nwl_status_t |
Jeej | 19:701d5669f2e9 | 855 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 856 | /// NWL status File structure |
Jeej | 19:701d5669f2e9 | 857 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 858 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 859 | { |
Jeej | 19:701d5669f2e9 | 860 | /// Number of received valid BG frames |
Jeej | 19:701d5669f2e9 | 861 | u32 rx_bg_cnt; |
Jeej | 19:701d5669f2e9 | 862 | /// Number of received valid FG frames (D7AAdvP) |
Jeej | 19:701d5669f2e9 | 863 | u32 rx_fg_adv_cnt; |
Jeej | 19:701d5669f2e9 | 864 | /// Number of received valid FG frames (D7ANP) |
Jeej | 19:701d5669f2e9 | 865 | u32 rx_fg_cnt; |
Jeej | 19:701d5669f2e9 | 866 | /// Number of transmitted frames |
Jeej | 19:701d5669f2e9 | 867 | u32 tx_cnt; |
Jeej | 19:701d5669f2e9 | 868 | /// Number of tx failures |
Jeej | 19:701d5669f2e9 | 869 | u32 tx_fails; |
Jeej | 19:701d5669f2e9 | 870 | |
Jeej | 19:701d5669f2e9 | 871 | } d7a_nwl_status_t; |
Jeej | 19:701d5669f2e9 | 872 | #define D7A_FS_NWL_STATUS_SIZE sizeof(d7a_nwl_status_t) |
Jeej | 19:701d5669f2e9 | 873 | |
Jeej | 19:701d5669f2e9 | 874 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 875 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 876 | /// |
Jeej | 19:701d5669f2e9 | 877 | /// 17. TRL STATUS |
Jeej | 19:701d5669f2e9 | 878 | /// |
Jeej | 19:701d5669f2e9 | 879 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 880 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 881 | |
Jeej | 19:701d5669f2e9 | 882 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 883 | // d7a_tp_ack_status_zip_t |
Jeej | 19:701d5669f2e9 | 884 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 885 | /// Structure of the D7ATP ACK Template (compressed ACK record) |
Jeej | 19:701d5669f2e9 | 886 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 887 | typedef struct |
Jeej | 19:701d5669f2e9 | 888 | { |
Jeej | 19:701d5669f2e9 | 889 | /// Length of the bitmap |
Jeej | 19:701d5669f2e9 | 890 | u8 len; |
Jeej | 19:701d5669f2e9 | 891 | /// First non-received ID, before which all IDs are receive. |
Jeej | 19:701d5669f2e9 | 892 | u8 start_id; |
Jeej | 19:701d5669f2e9 | 893 | /// Last received ID |
Jeej | 19:701d5669f2e9 | 894 | u8 end_id; |
Jeej | 19:701d5669f2e9 | 895 | /// Reception status bitmap |
Jeej | 19:701d5669f2e9 | 896 | u8 bitmap[32]; |
Jeej | 19:701d5669f2e9 | 897 | |
Jeej | 19:701d5669f2e9 | 898 | } d7a_tp_ack_status_zip_t; |
Jeej | 19:701d5669f2e9 | 899 | |
Jeej | 19:701d5669f2e9 | 900 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 901 | // d7a_trl_status_t |
Jeej | 19:701d5669f2e9 | 902 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 903 | /// Transport Layer Status File structure |
Jeej | 19:701d5669f2e9 | 904 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 905 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 906 | { |
Jeej | 19:701d5669f2e9 | 907 | /// Real length of the whole record. |
Jeej | 19:701d5669f2e9 | 908 | u8 len; |
Jeej | 19:701d5669f2e9 | 909 | // Token of the recorded zip |
Jeej | 19:701d5669f2e9 | 910 | u8 token; |
Jeej | 19:701d5669f2e9 | 911 | /// At least room for one full zip |
Jeej | 19:701d5669f2e9 | 912 | d7a_tp_ack_status_zip_t zip; |
Jeej | 19:701d5669f2e9 | 913 | |
Jeej | 19:701d5669f2e9 | 914 | } d7a_trl_status_t; |
Jeej | 19:701d5669f2e9 | 915 | #define D7A_FS_TRL_STATUS_SIZE sizeof(d7a_trl_status_t) |
Jeej | 19:701d5669f2e9 | 916 | |
Jeej | 19:701d5669f2e9 | 917 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 918 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 919 | /// |
Jeej | 19:701d5669f2e9 | 920 | /// 18. SEL CONFIGURATION |
Jeej | 19:701d5669f2e9 | 921 | /// |
Jeej | 19:701d5669f2e9 | 922 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 923 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 924 | |
Jeej | 19:701d5669f2e9 | 925 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 926 | // d7a_agc_ctrl_t |
Jeej | 19:701d5669f2e9 | 927 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 928 | /// AGC control structure |
Jeej | 19:701d5669f2e9 | 929 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 930 | typedef union |
Jeej | 19:701d5669f2e9 | 931 | { |
Jeej | 19:701d5669f2e9 | 932 | // bit access fields |
Jeej | 19:701d5669f2e9 | 933 | struct { |
Jeej | 19:701d5669f2e9 | 934 | /// AGC on |
Jeej | 19:701d5669f2e9 | 935 | /// When the field is not set, all Requesters and all Responders |
Jeej | 19:701d5669f2e9 | 936 | /// set their transmission power to the maximum authorized level. |
Jeej | 19:701d5669f2e9 | 937 | /// When the field is set, all Requesters, upon failure to receive |
Jeej | 19:701d5669f2e9 | 938 | /// an acknowledgement, reset their transmission power as defined |
Jeej | 19:701d5669f2e9 | 939 | /// by the TOGGLE field. Unicast transmissions (unicast requests |
Jeej | 19:701d5669f2e9 | 940 | /// and all responses) adjust the transmission power so that the |
Jeej | 19:701d5669f2e9 | 941 | /// expected reception RXLEV at the receiving party equals the |
Jeej | 19:701d5669f2e9 | 942 | /// last valid target RXLEV provided by that party, or when not |
Jeej | 19:701d5669f2e9 | 943 | /// provided, -80 dBm. |
Jeej | 19:701d5669f2e9 | 944 | u8 on : 1; |
Jeej | 19:701d5669f2e9 | 945 | /// Enable target RXLEV reporting |
Jeej | 19:701d5669f2e9 | 946 | /// When set, the target RXLEV is provided by the transmitting |
Jeej | 19:701d5669f2e9 | 947 | /// party in the DLL header. The target RXLEV is computed based |
Jeej | 19:701d5669f2e9 | 948 | /// on local noise floor, channel class and device sensitivity |
Jeej | 19:701d5669f2e9 | 949 | u8 rxlev : 1; |
Jeej | 19:701d5669f2e9 | 950 | /// Toggle between min and max |
Jeej | 19:701d5669f2e9 | 951 | /// On a first failure or when the field is not set, the transmission |
Jeej | 19:701d5669f2e9 | 952 | /// power is set to the maximum authorized level. When the field is |
Jeej | 19:701d5669f2e9 | 953 | /// set, on a subsequent failure, the transmission power is toggled |
Jeej | 19:701d5669f2e9 | 954 | /// between the minimum possible level and the maximum authorized |
Jeej | 19:701d5669f2e9 | 955 | /// levels. |
Jeej | 19:701d5669f2e9 | 956 | u8 toggle : 1; |
Jeej | 19:701d5669f2e9 | 957 | // RFU |
Jeej | 19:701d5669f2e9 | 958 | u8 rfu : 5; |
Jeej | 19:701d5669f2e9 | 959 | } bf; |
Jeej | 19:701d5669f2e9 | 960 | |
Jeej | 19:701d5669f2e9 | 961 | // byte access |
Jeej | 19:701d5669f2e9 | 962 | u8 byte; |
Jeej | 19:701d5669f2e9 | 963 | |
Jeej | 19:701d5669f2e9 | 964 | } d7a_agc_ctrl_t; |
Jeej | 19:701d5669f2e9 | 965 | |
Jeej | 19:701d5669f2e9 | 966 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 967 | // d7a_sel_filter_t |
Jeej | 19:701d5669f2e9 | 968 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 969 | /// SEL segment filter options structure |
Jeej | 19:701d5669f2e9 | 970 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 971 | typedef union |
Jeej | 19:701d5669f2e9 | 972 | { |
Jeej | 19:701d5669f2e9 | 973 | // bit access fields |
Jeej | 19:701d5669f2e9 | 974 | struct { |
Jeej | 26:2c934a269914 | 975 | /// Filter segments marked with retry if no response is expected |
Jeej | 19:701d5669f2e9 | 976 | u8 retry : 1; |
Jeej | 26:2c934a269914 | 977 | /// Do not count TX CSMA-CA errors as ACK failures |
Jeej | 26:2c934a269914 | 978 | u8 csma_err : 1; |
Jeej | 26:2c934a269914 | 979 | /// Do not count TX duty errors as ACK failures |
Jeej | 26:2c934a269914 | 980 | u8 duty_err : 1; |
Jeej | 19:701d5669f2e9 | 981 | // RFU |
Jeej | 26:2c934a269914 | 982 | u8 rfu : 5; |
Jeej | 19:701d5669f2e9 | 983 | } bf; |
Jeej | 19:701d5669f2e9 | 984 | |
Jeej | 19:701d5669f2e9 | 985 | // byte access |
Jeej | 19:701d5669f2e9 | 986 | u8 byte; |
Jeej | 19:701d5669f2e9 | 987 | |
Jeej | 19:701d5669f2e9 | 988 | } d7a_sel_filter_t; |
Jeej | 19:701d5669f2e9 | 989 | |
Jeej | 19:701d5669f2e9 | 990 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 991 | // d7a_sel_cfg_t |
Jeej | 19:701d5669f2e9 | 992 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 993 | /// SEL configuration file structure |
Jeej | 19:701d5669f2e9 | 994 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 995 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 996 | { |
Jeej | 19:701d5669f2e9 | 997 | /// AGC mode |
Jeej | 19:701d5669f2e9 | 998 | d7a_agc_ctrl_t agc_ctrl; |
Jeej | 19:701d5669f2e9 | 999 | /// AGC parameter |
Jeej | 19:701d5669f2e9 | 1000 | u8 agc_param; |
Jeej | 19:701d5669f2e9 | 1001 | /// retry (valid in all RESP modes) |
Jeej | 19:701d5669f2e9 | 1002 | u8 retry; |
Jeej | 19:701d5669f2e9 | 1003 | /// repeat (valid in RESP_NO_RPT) |
Jeej | 19:701d5669f2e9 | 1004 | u8 repeat; |
Jeej | 19:701d5669f2e9 | 1005 | /// maximum acknowledgement window |
Jeej | 19:701d5669f2e9 | 1006 | u8 ack_win; |
Jeej | 19:701d5669f2e9 | 1007 | /// segment filter options |
Jeej | 19:701d5669f2e9 | 1008 | d7a_sel_filter_t filter; |
Jeej | 19:701d5669f2e9 | 1009 | |
Jeej | 19:701d5669f2e9 | 1010 | } d7a_sel_cfg_t; |
Jeej | 19:701d5669f2e9 | 1011 | #define D7A_FS_SEL_CFG_SIZE sizeof(d7a_sel_cfg_t) |
Jeej | 19:701d5669f2e9 | 1012 | |
Jeej | 19:701d5669f2e9 | 1013 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 1014 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 1015 | /// |
Jeej | 19:701d5669f2e9 | 1016 | /// 19. SEL STATUS |
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_sel_status_t |
Jeej | 19:701d5669f2e9 | 1023 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 1024 | /// Structure of the SEL Protocol status |
Jeej | 19:701d5669f2e9 | 1025 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1026 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 1027 | { |
Jeej | 19:701d5669f2e9 | 1028 | /// UID of the device issuing the FCP |
Jeej | 19:701d5669f2e9 | 1029 | u8 uid[D7A_UID_LEN]; |
Jeej | 19:701d5669f2e9 | 1030 | /// Frequency offset. |
Jeej | 19:701d5669f2e9 | 1031 | s16 fof; |
Jeej | 19:701d5669f2e9 | 1032 | |
Jeej | 19:701d5669f2e9 | 1033 | } d7a_sel_status_t; |
Jeej | 19:701d5669f2e9 | 1034 | #define D7A_FS_SEL_STATUS_SIZE sizeof(d7a_sel_status_t) |
Jeej | 19:701d5669f2e9 | 1035 | |
Jeej | 19:701d5669f2e9 | 1036 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 1037 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 1038 | /// |
Jeej | 19:701d5669f2e9 | 1039 | /// 32-47. ACCESS PROFILES |
Jeej | 19:701d5669f2e9 | 1040 | /// |
Jeej | 19:701d5669f2e9 | 1041 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 1042 | /// ======================================================================= |
Jeej | 19:701d5669f2e9 | 1043 | |
Jeej | 19:701d5669f2e9 | 1044 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1045 | // d7a_subprofile_t |
Jeej | 19:701d5669f2e9 | 1046 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 1047 | /// Sub-profile structure |
Jeej | 19:701d5669f2e9 | 1048 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1049 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 1050 | { |
Jeej | 19:701d5669f2e9 | 1051 | /// Subband select bitmap |
Jeej | 19:701d5669f2e9 | 1052 | u8 bmp; |
Jeej | 19:701d5669f2e9 | 1053 | /// Scheduler period |
Jeej | 19:701d5669f2e9 | 1054 | d7a_ctf_t tsched; |
Jeej | 19:701d5669f2e9 | 1055 | |
Jeej | 19:701d5669f2e9 | 1056 | } d7a_subprofile_t; |
Jeej | 19:701d5669f2e9 | 1057 | |
Jeej | 19:701d5669f2e9 | 1058 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1059 | // d7a_cca_cfg_t |
Jeej | 19:701d5669f2e9 | 1060 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 1061 | /// Clear Channel Assessment Configuration structure |
Jeej | 19:701d5669f2e9 | 1062 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1063 | typedef union |
Jeej | 19:701d5669f2e9 | 1064 | { |
Jeej | 19:701d5669f2e9 | 1065 | // bit access fields |
Jeej | 19:701d5669f2e9 | 1066 | struct { |
Jeej | 19:701d5669f2e9 | 1067 | /// Default CCA Threshold (-dBm) |
Jeej | 19:701d5669f2e9 | 1068 | u8 val : 7; |
Jeej | 19:701d5669f2e9 | 1069 | /// CCA not required flag |
Jeej | 19:701d5669f2e9 | 1070 | u8 opt : 1; |
Jeej | 19:701d5669f2e9 | 1071 | } bf; |
Jeej | 19:701d5669f2e9 | 1072 | |
Jeej | 19:701d5669f2e9 | 1073 | // byte access |
Jeej | 19:701d5669f2e9 | 1074 | u8 byte; |
Jeej | 19:701d5669f2e9 | 1075 | |
Jeej | 19:701d5669f2e9 | 1076 | } d7a_cca_cfg_t; |
Jeej | 19:701d5669f2e9 | 1077 | |
Jeej | 19:701d5669f2e9 | 1078 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1079 | // d7a_subband_t |
Jeej | 19:701d5669f2e9 | 1080 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 1081 | /// Subband structure |
Jeej | 19:701d5669f2e9 | 1082 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1083 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 1084 | { |
Jeej | 19:701d5669f2e9 | 1085 | /// Start channel index |
Jeej | 19:701d5669f2e9 | 1086 | u16 start_idx; |
Jeej | 19:701d5669f2e9 | 1087 | /// End channel index |
Jeej | 19:701d5669f2e9 | 1088 | u16 end_idx; |
Jeej | 19:701d5669f2e9 | 1089 | /// Transmission EIRP (dBm) |
Jeej | 19:701d5669f2e9 | 1090 | s8 eirp; |
Jeej | 19:701d5669f2e9 | 1091 | /// Clear channel assessment configuration (-dBm) |
Jeej | 19:701d5669f2e9 | 1092 | d7a_cca_cfg_t cca; |
Jeej | 19:701d5669f2e9 | 1093 | /// Maximum per-channel transmission duty cycle in per-mil |
Jeej | 19:701d5669f2e9 | 1094 | u8 duty; |
Jeej | 19:701d5669f2e9 | 1095 | |
Jeej | 19:701d5669f2e9 | 1096 | } d7a_subband_t; |
Jeej | 19:701d5669f2e9 | 1097 | |
Jeej | 19:701d5669f2e9 | 1098 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1099 | // d7a_access_profile_t |
Jeej | 19:701d5669f2e9 | 1100 | // ----------------------------------------------------------------------- |
Jeej | 19:701d5669f2e9 | 1101 | /// DLL Access Profile structure |
Jeej | 19:701d5669f2e9 | 1102 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 1103 | TYPEDEF_STRUCT_PACKED |
Jeej | 19:701d5669f2e9 | 1104 | { |
Jeej | 19:701d5669f2e9 | 1105 | /// Channel header |
Jeej | 19:701d5669f2e9 | 1106 | d7a_ch_header_t header; |
Jeej | 19:701d5669f2e9 | 1107 | /// Access control |
Jeej | 19:701d5669f2e9 | 1108 | d7a_subprofile_t sp[4]; |
Jeej | 19:701d5669f2e9 | 1109 | /// Subbands |
Jeej | 19:701d5669f2e9 | 1110 | d7a_subband_t sb[8]; |
Jeej | 19:701d5669f2e9 | 1111 | |
Jeej | 19:701d5669f2e9 | 1112 | } d7a_access_profile_t; |
Jeej | 19:701d5669f2e9 | 1113 | #define D7A_FS_AP_SIZE sizeof(d7a_access_profile_t) |
Jeej | 19:701d5669f2e9 | 1114 | |
Jeej | 19:701d5669f2e9 | 1115 | #endif // __D7A_1X_FS_H__ |