From e588fccf2b13065c25c95c70be191614cd23b005 Mon Sep 17 00:00:00 2001 From: Sylvain Miermont Date: Mon, 22 Jul 2013 16:33:36 +0200 Subject: Beta 2 - updated firmwares and registers to new IP revision (VERSION = 101) - added CHIP_ID - added function to get TX status --- loragw_hal/inc/loragw_hal.h | 26 ++ loragw_hal/inc/loragw_reg.h | 444 ++++++++++++++-------------- loragw_hal/src/agc_fw.var | 374 ++++++++++++------------ loragw_hal/src/arb_fw.var | 132 ++++----- loragw_hal/src/loragw_hal.c | 72 +++-- loragw_hal/src/loragw_reg.c | 595 +++++++++++++++++++------------------- loragw_hal/test/test_loragw_hal.c | 40 ++- 7 files changed, 885 insertions(+), 798 deletions(-) diff --git a/loragw_hal/inc/loragw_hal.h b/loragw_hal/inc/loragw_hal.h index 936d0af..feecf5c 100644 --- a/loragw_hal/inc/loragw_hal.h +++ b/loragw_hal/inc/loragw_hal.h @@ -125,6 +125,23 @@ F_register(24bit) = F_rf (Hz) / F_step(Hz) //#define GPS_DELAYED 4 //#define EVENT_DELAYED 5 +/* values available for 'select' in the status function */ +#define TX_STATUS 1 +#define RX_STATUS 2 + +/* status code for TX_STATUS */ +#define TX_STATUS_UNKNOWN 0 +#define TX_OFF 1 /* TX modem disabled, it will ignore commands */ +#define TX_EMPTY 2 /* TX modem is free, ready to receive a command */ +#define TX_DELAYED 3 /* TX modem is loaded, ready to send the packet after an event and/or delay */ +#define TX_EMITTING 4 /* TX modem is emitting */ + +/* status code for RX_STATUS */ +#define RX_STATUS_UNKNOWN 0 +#define RX_OFF 1 /* RX modem is disabled, it will ignore commands */ +#define RX_ON 2 /* RX modem is receiving */ +#define RX_SUSPENDED 3 /* RX is suspended while a TX is ongoing */ + /* -------------------------------------------------------------------------- */ /* --- PUBLIC TYPES --------------------------------------------------------- */ @@ -182,6 +199,7 @@ struct lgw_pkt_tx_s { int8_t rf_power; /*!> TX power, in dBm */ uint8_t modulation; /*!> modulation to use for the packet */ uint8_t bandwidth; /*!> modulation bandwidth (Lora only) */ + bool invert_pol; /*!> invert signal polarity, for orthogonal downlinks (Lora only) */ uint16_t f_dev; /*!> frequency deviation (FSK only) */ uint16_t datarate; /*!> TX datarate */ uint8_t coderate; /*!> error-correcting code of the packet */ @@ -238,6 +256,14 @@ int lgw_receive(uint8_t max_pkt, struct lgw_pkt_rx_s *pkt_data); */ int lgw_send(struct lgw_pkt_tx_s pkt_data); +/** +@brief Give the the status of different part of the Lora gateway +@param select is used to select what status we want to know +@param code is used to return the status code +@return LGW_HAL_ERROR id the operation failed, LGW_HAL_SUCCESS else +*/ +int lgw_status(uint8_t select, uint8_t *code); + #endif /* --- EOF ------------------------------------------------------------------ */ diff --git a/loragw_hal/inc/loragw_reg.h b/loragw_hal/inc/loragw_reg.h index 922d3df..1fc8d9b 100644 --- a/loragw_hal/inc/loragw_reg.h +++ b/loragw_hal/inc/loragw_reg.h @@ -30,10 +30,10 @@ Description: #define LGW_REG_ERROR -1 /* -auto generated register mapping for C code : 24-Jun-2013 20:29:09 +auto generated register mapping for C code : 11-Jul-2013 13:20:40 this file contains autogenerated C struct used to access the LORA register from the Primer firmware this file is autogenerated from registers description -290 registers are defined +293 registers are defined */ #define LGW_PAGE_REG 0 @@ -110,224 +110,230 @@ this file is autogenerated from registers description #define LGW_TX_TOP_RAM_BIST1_STATUS 71 #define LGW_DATA_MNGT_RAM_BIST0_STATUS 72 #define LGW_DATA_MNGT_RAM_BIST1_STATUS 73 -#define LGW_GPIO_SELECT 74 -#define LGW_GPIO_MUX 75 -#define LGW_EMERGENCY_FORCE_HOST_CTRL 76 -#define LGW_RX_INVERT_IQ 77 -#define LGW_MODEM_INVERT_IQ 78 -#define LGW_MBWSSF_MODEM_INVERT_IQ 79 -#define LGW_RX_EDGE_SELECT 80 -#define LGW_MISC_RADIO_EN 81 -#define LGW_FILTER_GAIN 82 -#define LGW_RADIO_SELECT 83 -#define LGW_IF_FREQ_0 84 -#define LGW_IF_FREQ_1 85 -#define LGW_IF_FREQ_2 86 -#define LGW_IF_FREQ_3 87 -#define LGW_IF_FREQ_4 88 -#define LGW_IF_FREQ_5 89 -#define LGW_IF_FREQ_6 90 -#define LGW_IF_FREQ_7 91 -#define LGW_IF_FREQ_8 92 -#define LGW_IF_FREQ_9 93 -#define LGW_CHANN_OVERRIDE_AGC_GAIN 94 -#define LGW_CHANN_AGC_GAIN 95 -#define LGW_CORR0_DETECT_EN 96 -#define LGW_CORR1_DETECT_EN 97 -#define LGW_CORR2_DETECT_EN 98 -#define LGW_CORR3_DETECT_EN 99 -#define LGW_CORR4_DETECT_EN 100 -#define LGW_CORR5_DETECT_EN 101 -#define LGW_CORR6_DETECT_EN 102 -#define LGW_CORR7_DETECT_EN 103 -#define LGW_CORR_SAME_PEAKS_OPTION_SF6 104 -#define LGW_CORR_SAME_PEAKS_OPTION_SF7 105 -#define LGW_CORR_SAME_PEAKS_OPTION_SF8 106 -#define LGW_CORR_SAME_PEAKS_OPTION_SF9 107 -#define LGW_CORR_SAME_PEAKS_OPTION_SF10 108 -#define LGW_CORR_SAME_PEAKS_OPTION_SF11 109 -#define LGW_CORR_SAME_PEAKS_OPTION_SF12 110 -#define LGW_CORR_SIG_NOISE_RATIO_SF6 111 -#define LGW_CORR_SIG_NOISE_RATIO_SF7 112 -#define LGW_CORR_SIG_NOISE_RATIO_SF8 113 -#define LGW_CORR_SIG_NOISE_RATIO_SF9 114 -#define LGW_CORR_SIG_NOISE_RATIO_SF10 115 -#define LGW_CORR_SIG_NOISE_RATIO_SF11 116 -#define LGW_CORR_SIG_NOISE_RATIO_SF12 117 -#define LGW_CORR_NUM_SAME_PEAK 118 -#define LGW_CORR_MAC_GAIN 119 -#define LGW_ADJUST_MODEM_START_OFFSET_RDX8 120 -#define LGW_ADJUST_MODEM_START_OFFSET_RDX4 121 -#define LGW_ADJUST_MODEM_START_OFFSET_SF12_RDX4 122 -#define LGW_DBG_CORR_SELECT_SF 123 -#define LGW_DBG_CORR_SELECT_CHANNEL 124 -#define LGW_DBG_DETECT_CPT 125 -#define LGW_DBG_SYMB_CPT 126 -#define LGW_CHIRP_INVERT_RX 127 -#define LGW_DC_NOTCH_EN 128 -#define LGW_IMPLICIT_CRC_EN 129 -#define LGW_IMPLICIT_CODING_RATE 130 -#define LGW_IMPLICIT_PAYLOAD_LENGHT 131 -#define LGW_FREQ_TO_TIME_INVERT 132 -#define LGW_FREQ_TO_TIME_DRIFT 133 -#define LGW_PAYLOAD_FINE_TIMING_GAIN 134 -#define LGW_PREAMBLE_FINE_TIMING_GAIN 135 -#define LGW_TRACKING_INTEGRAL 136 -#define LGW_FRAME_SYNCH_PEAK1_POS 137 -#define LGW_FRAME_SYNCH_PEAK2_POS 138 -#define LGW_PREAMBLE_SYMB1_NB 139 -#define LGW_FRAME_SYNCH_GAIN 140 -#define LGW_SYNCH_DETECT_TH 141 -#define LGW_LLR_SCALE 142 -#define LGW_SNR_AVG_CST 143 -#define LGW_PPM_OFFSET 144 -#define LGW_MAX_PAYLOAD_LEN 145 -#define LGW_ONLY_CRC_EN 146 -#define LGW_ZERO_PAD 147 -#define LGW_DEC_GAIN_OFFSET 148 -#define LGW_FORCE_HOST_REG_CTRL 149 -#define LGW_FORCE_HOST_RADIO_CTRL 150 -#define LGW_FORCE_HOST_FE_CTRL 151 -#define LGW_FORCE_DEC_FILTER_GAIN 152 -#define LGW_MCU_RST_0 153 -#define LGW_MCU_RST_1 154 -#define LGW_MCU_SELECT_MUX_0 155 -#define LGW_MCU_SELECT_MUX_1 156 -#define LGW_MCU_CORRUPTION_DETECTED_0 157 -#define LGW_MCU_CORRUPTION_DETECTED_1 158 -#define LGW_CHANN_SELECT_RSSI 159 -#define LGW_RSSI_BB_DEFAULT_VALUE 160 -#define LGW_RSSI_DEC_DEFAULT_VALUE 161 -#define LGW_RSSI_CHANN_DEFAULT_VALUE 162 -#define LGW_RSSI_BB_FILTER_ALPHA 163 -#define LGW_RSSI_DEC_FILTER_ALPHA 164 -#define LGW_RSSI_CHANN_FILTER_ALPHA 165 -#define LGW_IQ_MISMATCH_A_AMP_COEFF 166 -#define LGW_IQ_MISMATCH_A_PHI_COEFF 167 -#define LGW_IQ_MISMATCH_B_AMP_COEFF 168 -#define LGW_IQ_MISMATCH_B_SEL_I 169 -#define LGW_IQ_MISMATCH_B_PHI_COEFF 170 -#define LGW_TX_TRIG_IMMEDIATE 171 -#define LGW_TX_TRIG_DELAYED 172 -#define LGW_TX_TRIG_GPS 173 -#define LGW_TX_START_DELAY 174 -#define LGW_TX_FRAME_SYNCH_PEAK1_POS 175 -#define LGW_TX_FRAME_SYNCH_PEAK2_POS 176 -#define LGW_TX_PREAMBLE_SYMB1_NB 177 -#define LGW_TX_OFFSET_I 178 -#define LGW_TX_OFFSET_Q 179 -#define LGW_TX_MODE 180 -#define LGW_TX_ZERO_PAD 181 -#define LGW_TX_PPM_OFFSET 182 -#define LGW_TX_CHIRP_INVERT 183 -#define LGW_TX_CONT_CHIRP 184 -#define LGW_TX_GAIN 185 -#define LGW_TX_CHIRP_LOW_PASS 186 -#define LGW_TX_FCC_WIDEBAND 187 -#define LGW_TX_SWAP_IQ 188 -#define LGW_MBWSSF_IMPLICIT_HEADER 189 -#define LGW_MBWSSF_IMPLICIT_CRC_EN 190 -#define LGW_MBWSSF_IMPLICIT_CODING_RATE 191 -#define LGW_MBWSSF_IMPLICIT_PAYLOAD_LENGHT 192 -#define LGW_MBWSSF_AGC_FREEZE_ON_DETECT 193 -#define LGW_MBWSSF_FRAME_SYNCH_PEAK1_POS 194 -#define LGW_MBWSSF_FRAME_SYNCH_PEAK2_POS 195 -#define LGW_MBWSSF_PREAMBLE_SYMB1_NB 196 -#define LGW_MBWSSF_FRAME_SYNCH_GAIN 197 -#define LGW_MBWSSF_SYNCH_DETECT_TH 198 -#define LGW_MBWSSF_DETECT_MIN_SINGLE_PEAK 199 -#define LGW_MBWSSF_DETECT_TRIG_SAME_PEAK_NB 200 -#define LGW_MBWSSF_FREQ_TO_TIME_INVERT 201 -#define LGW_MBWSSF_FREQ_TO_TIME_DRIFT 202 -#define LGW_MBWSSF_PPM_CORRECTION 203 -#define LGW_MBWSSF_PAYLOAD_FINE_TIMING_GAIN 204 -#define LGW_MBWSSF_PREAMBLE_FINE_TIMING_GAIN 205 -#define LGW_MBWSSF_TRACKING_INTEGRAL 206 -#define LGW_MBWSSF_ZERO_PAD 207 -#define LGW_MBWSSF_MODEM_BW 208 -#define LGW_MBWSSF_RADIO_SELECT 209 -#define LGW_MBWSSF_RX_CHIRP_INVERT 210 -#define LGW_MBWSSF_LLR_SCALE 211 -#define LGW_MBWSSF_SNR_AVG_CST 212 -#define LGW_MBWSSF_PPM_OFFSET 213 -#define LGW_MBWSSF_RATE_SF 214 -#define LGW_MBWSSF_ONLY_CRC_EN 215 -#define LGW_MBWSSF_MAX_PAYLOAD_LEN 216 -#define LGW_SPI_RADIO_A__DATA 217 -#define LGW_SPI_RADIO_A__DATA_READBACK 218 -#define LGW_SPI_RADIO_A__ADDR 219 -#define LGW_SPI_RADIO_A__CS 220 -#define LGW_SPI_RADIO_B__DATA 221 -#define LGW_SPI_RADIO_B__DATA_READBACK 222 -#define LGW_SPI_RADIO_B__ADDR 223 -#define LGW_SPI_RADIO_B__CS 224 -#define LGW_RADIO_A_EN 225 -#define LGW_RADIO_B_EN 226 -#define LGW_RADIO_RST 227 -#define LGW_LNA_A_EN 228 -#define LGW_PA_A_EN 229 -#define LGW_LNA_B_EN 230 -#define LGW_PA_B_EN 231 -#define LGW_PA_A_GAIN 232 -#define LGW_PA_B_GAIN 233 -#define LGW_LNA_A_CTRL_LUT 234 -#define LGW_PA_A_CTRL_LUT 235 -#define LGW_LNA_B_CTRL_LUT 236 -#define LGW_PA_B_CTRL_LUT 237 -#define LGW_CAPTURE_SOURCE 238 -#define LGW_CAPTURE_START 239 -#define LGW_CAPTURE_FORCE_TRIGGER 240 -#define LGW_CAPTURE_WRAP 241 -#define LGW_CAPTURE_PERIOD 242 -#define LGW_LED_REG 243 -#define LGW_MODEM_STATUS 244 -#define LGW_VALID_HEADER_COUNTER_0 245 -#define LGW_VALID_HEADER_COUNTER_1 246 -#define LGW_VALID_PACKET_COUNTER_0 247 -#define LGW_VALID_PACKET_COUNTER_1 248 -#define LGW_VALID_HEADER_COUNTER_MBWSSF 249 -#define LGW_VALID_HEADER_COUNTER_FSK 250 -#define LGW_VALID_PACKET_COUNTER_MBWSSF 251 -#define LGW_VALID_PACKET_COUNTER_FSK 252 -#define LGW_CHANN_RSSI 253 -#define LGW_BB_RSSI 254 -#define LGW_DEC_RSSI 255 -#define LGW_DBG_MCU_DATA 256 -#define LGW_DBG_ARB_MCU_RAM_DATA 257 -#define LGW_DBG_AGC_MCU_RAM_DATA 258 -#define LGW_NEXT_PACKET_CNT 259 -#define LGW_ADDR_CAPTURE_COUNT 260 -#define LGW_TIMESTAMP 261 -#define LGW_DBG_CHANN0_GAIN 262 -#define LGW_DBG_CHANN1_GAIN 263 -#define LGW_DBG_CHANN2_GAIN 264 -#define LGW_DBG_CHANN3_GAIN 265 -#define LGW_DBG_CHANN4_GAIN 266 -#define LGW_DBG_CHANN5_GAIN 267 -#define LGW_DBG_CHANN6_GAIN 268 -#define LGW_DBG_CHANN7_GAIN 269 -#define LGW_DBG_DEC_FILT_GAIN 270 -#define LGW_SPI_DATA_FIFO_PTR 271 -#define LGW_PACKET_DATA_FIFO_PTR 272 -#define LGW_DBG_ARB_MCU_RAM_ADDR 273 -#define LGW_DBG_AGC_MCU_RAM_ADDR 274 -#define LGW_SPI_MASTER_CHIP_SELECT_POLARITY 275 -#define LGW_SPI_MASTER_CPOL 276 -#define LGW_SPI_MASTER_CPHA 277 -#define LGW_SIG_GEN_ANALYSER_MUX_SEL 278 -#define LGW_SIG_GEN_EN 279 -#define LGW_SIG_ANALYSER_EN 280 -#define LGW_SIG_ANALYSER_AVG_LEN 281 -#define LGW_SIG_ANALYSER_PRECISION 282 -#define LGW_SIG_ANALYSER_VALID_OUT 283 -#define LGW_SIG_GEN_FREQ 284 -#define LGW_SIG_ANALYSER_FREQ 285 -#define LGW_SIG_ANALYSER_I_OUT 286 -#define LGW_SIG_ANALYSER_Q_OUT 287 -#define LGW_GPS_EN 288 -#define LGW_GPS_POL 289 +#define LGW_GPIO_SELECT_INPUT 74 +#define LGW_GPIO_SELECT_OUTPUT 75 +#define LGW_GPIO_MODE 76 +#define LGW_GPIO_PIN_REG_IN 77 +#define LGW_GPIO_PIN_REG_OUT 78 +#define LGW_MCU_AGC_STATUS 79 +#define LGW_CHIP_ID 80 +#define LGW_EMERGENCY_FORCE_HOST_CTRL 81 +#define LGW_RX_INVERT_IQ 82 +#define LGW_MODEM_INVERT_IQ 83 +#define LGW_MBWSSF_MODEM_INVERT_IQ 84 +#define LGW_RX_EDGE_SELECT 85 +#define LGW_MISC_RADIO_EN 86 +#define LGW_FILTER_GAIN 87 +#define LGW_RADIO_SELECT 88 +#define LGW_IF_FREQ_0 89 +#define LGW_IF_FREQ_1 90 +#define LGW_IF_FREQ_2 91 +#define LGW_IF_FREQ_3 92 +#define LGW_IF_FREQ_4 93 +#define LGW_IF_FREQ_5 94 +#define LGW_IF_FREQ_6 95 +#define LGW_IF_FREQ_7 96 +#define LGW_IF_FREQ_8 97 +#define LGW_IF_FREQ_9 98 +#define LGW_CHANN_OVERRIDE_AGC_GAIN 99 +#define LGW_CHANN_AGC_GAIN 100 +#define LGW_CORR0_DETECT_EN 101 +#define LGW_CORR1_DETECT_EN 102 +#define LGW_CORR2_DETECT_EN 103 +#define LGW_CORR3_DETECT_EN 104 +#define LGW_CORR4_DETECT_EN 105 +#define LGW_CORR5_DETECT_EN 106 +#define LGW_CORR6_DETECT_EN 107 +#define LGW_CORR7_DETECT_EN 108 +#define LGW_CORR_SAME_PEAKS_OPTION_SF6 109 +#define LGW_CORR_SAME_PEAKS_OPTION_SF7 110 +#define LGW_CORR_SAME_PEAKS_OPTION_SF8 111 +#define LGW_CORR_SAME_PEAKS_OPTION_SF9 112 +#define LGW_CORR_SAME_PEAKS_OPTION_SF10 113 +#define LGW_CORR_SAME_PEAKS_OPTION_SF11 114 +#define LGW_CORR_SAME_PEAKS_OPTION_SF12 115 +#define LGW_CORR_SIG_NOISE_RATIO_SF6 116 +#define LGW_CORR_SIG_NOISE_RATIO_SF7 117 +#define LGW_CORR_SIG_NOISE_RATIO_SF8 118 +#define LGW_CORR_SIG_NOISE_RATIO_SF9 119 +#define LGW_CORR_SIG_NOISE_RATIO_SF10 120 +#define LGW_CORR_SIG_NOISE_RATIO_SF11 121 +#define LGW_CORR_SIG_NOISE_RATIO_SF12 122 +#define LGW_CORR_NUM_SAME_PEAK 123 +#define LGW_CORR_MAC_GAIN 124 +#define LGW_ADJUST_MODEM_START_OFFSET_RDX8 125 +#define LGW_ADJUST_MODEM_START_OFFSET_RDX4 126 +#define LGW_ADJUST_MODEM_START_OFFSET_SF12_RDX4 127 +#define LGW_DBG_CORR_SELECT_SF 128 +#define LGW_DBG_CORR_SELECT_CHANNEL 129 +#define LGW_DBG_DETECT_CPT 130 +#define LGW_DBG_SYMB_CPT 131 +#define LGW_CHIRP_INVERT_RX 132 +#define LGW_DC_NOTCH_EN 133 +#define LGW_IMPLICIT_CRC_EN 134 +#define LGW_IMPLICIT_CODING_RATE 135 +#define LGW_IMPLICIT_PAYLOAD_LENGHT 136 +#define LGW_FREQ_TO_TIME_INVERT 137 +#define LGW_FREQ_TO_TIME_DRIFT 138 +#define LGW_PAYLOAD_FINE_TIMING_GAIN 139 +#define LGW_PREAMBLE_FINE_TIMING_GAIN 140 +#define LGW_TRACKING_INTEGRAL 141 +#define LGW_FRAME_SYNCH_PEAK1_POS 142 +#define LGW_FRAME_SYNCH_PEAK2_POS 143 +#define LGW_PREAMBLE_SYMB1_NB 144 +#define LGW_FRAME_SYNCH_GAIN 145 +#define LGW_SYNCH_DETECT_TH 146 +#define LGW_LLR_SCALE 147 +#define LGW_SNR_AVG_CST 148 +#define LGW_PPM_OFFSET 149 +#define LGW_MAX_PAYLOAD_LEN 150 +#define LGW_ONLY_CRC_EN 151 +#define LGW_ZERO_PAD 152 +#define LGW_DEC_GAIN_OFFSET 153 +#define LGW_CHAN_GAIN_OFFSET 154 +#define LGW_FORCE_HOST_REG_CTRL 155 +#define LGW_FORCE_HOST_RADIO_CTRL 156 +#define LGW_FORCE_HOST_FE_CTRL 157 +#define LGW_FORCE_DEC_FILTER_GAIN 158 +#define LGW_MCU_RST_0 159 +#define LGW_MCU_RST_1 160 +#define LGW_MCU_SELECT_MUX_0 161 +#define LGW_MCU_SELECT_MUX_1 162 +#define LGW_MCU_CORRUPTION_DETECTED_0 163 +#define LGW_MCU_CORRUPTION_DETECTED_1 164 +#define LGW_MCU_SELECT_EDGE_0 165 +#define LGW_MCU_SELECT_EDGE_1 166 +#define LGW_CHANN_SELECT_RSSI 167 +#define LGW_RSSI_BB_DEFAULT_VALUE 168 +#define LGW_RSSI_DEC_DEFAULT_VALUE 169 +#define LGW_RSSI_CHANN_DEFAULT_VALUE 170 +#define LGW_RSSI_BB_FILTER_ALPHA 171 +#define LGW_RSSI_DEC_FILTER_ALPHA 172 +#define LGW_RSSI_CHANN_FILTER_ALPHA 173 +#define LGW_IQ_MISMATCH_A_AMP_COEFF 174 +#define LGW_IQ_MISMATCH_A_PHI_COEFF 175 +#define LGW_IQ_MISMATCH_B_AMP_COEFF 176 +#define LGW_IQ_MISMATCH_B_SEL_I 177 +#define LGW_IQ_MISMATCH_B_PHI_COEFF 178 +#define LGW_TX_TRIG_IMMEDIATE 179 +#define LGW_TX_TRIG_DELAYED 180 +#define LGW_TX_TRIG_GPS 181 +#define LGW_TX_START_DELAY 182 +#define LGW_TX_FRAME_SYNCH_PEAK1_POS 183 +#define LGW_TX_FRAME_SYNCH_PEAK2_POS 184 +#define LGW_TX_OFFSET_I 185 +#define LGW_TX_OFFSET_Q 186 +#define LGW_TX_MODE 187 +#define LGW_TX_ZERO_PAD 188 +#define LGW_TX_EDGE_SELECT 189 +#define LGW_TX_GAIN 190 +#define LGW_TX_CHIRP_LOW_PASS 191 +#define LGW_TX_FCC_WIDEBAND 192 +#define LGW_TX_SWAP_IQ 193 +#define LGW_MBWSSF_IMPLICIT_HEADER 194 +#define LGW_MBWSSF_IMPLICIT_CRC_EN 195 +#define LGW_MBWSSF_IMPLICIT_CODING_RATE 196 +#define LGW_MBWSSF_IMPLICIT_PAYLOAD_LENGHT 197 +#define LGW_MBWSSF_AGC_FREEZE_ON_DETECT 198 +#define LGW_MBWSSF_FRAME_SYNCH_PEAK1_POS 199 +#define LGW_MBWSSF_FRAME_SYNCH_PEAK2_POS 200 +#define LGW_MBWSSF_PREAMBLE_SYMB1_NB 201 +#define LGW_MBWSSF_FRAME_SYNCH_GAIN 202 +#define LGW_MBWSSF_SYNCH_DETECT_TH 203 +#define LGW_MBWSSF_DETECT_MIN_SINGLE_PEAK 204 +#define LGW_MBWSSF_DETECT_TRIG_SAME_PEAK_NB 205 +#define LGW_MBWSSF_FREQ_TO_TIME_INVERT 206 +#define LGW_MBWSSF_FREQ_TO_TIME_DRIFT 207 +#define LGW_MBWSSF_PPM_CORRECTION 208 +#define LGW_MBWSSF_PAYLOAD_FINE_TIMING_GAIN 209 +#define LGW_MBWSSF_PREAMBLE_FINE_TIMING_GAIN 210 +#define LGW_MBWSSF_TRACKING_INTEGRAL 211 +#define LGW_MBWSSF_ZERO_PAD 212 +#define LGW_MBWSSF_MODEM_BW 213 +#define LGW_MBWSSF_RADIO_SELECT 214 +#define LGW_MBWSSF_RX_CHIRP_INVERT 215 +#define LGW_MBWSSF_LLR_SCALE 216 +#define LGW_MBWSSF_SNR_AVG_CST 217 +#define LGW_MBWSSF_PPM_OFFSET 218 +#define LGW_MBWSSF_RATE_SF 219 +#define LGW_MBWSSF_ONLY_CRC_EN 220 +#define LGW_MBWSSF_MAX_PAYLOAD_LEN 221 +#define LGW_TX_STATUS 222 +#define LGW_SPI_RADIO_A__DATA 223 +#define LGW_SPI_RADIO_A__DATA_READBACK 224 +#define LGW_SPI_RADIO_A__ADDR 225 +#define LGW_SPI_RADIO_A__CS 226 +#define LGW_SPI_RADIO_B__DATA 227 +#define LGW_SPI_RADIO_B__DATA_READBACK 228 +#define LGW_SPI_RADIO_B__ADDR 229 +#define LGW_SPI_RADIO_B__CS 230 +#define LGW_RADIO_A_EN 231 +#define LGW_RADIO_B_EN 232 +#define LGW_RADIO_RST 233 +#define LGW_LNA_A_EN 234 +#define LGW_PA_A_EN 235 +#define LGW_LNA_B_EN 236 +#define LGW_PA_B_EN 237 +#define LGW_PA_GAIN 238 +#define LGW_LNA_A_CTRL_LUT 239 +#define LGW_PA_A_CTRL_LUT 240 +#define LGW_LNA_B_CTRL_LUT 241 +#define LGW_PA_B_CTRL_LUT 242 +#define LGW_CAPTURE_SOURCE 243 +#define LGW_CAPTURE_START 244 +#define LGW_CAPTURE_FORCE_TRIGGER 245 +#define LGW_CAPTURE_WRAP 246 +#define LGW_CAPTURE_PERIOD 247 +#define LGW_LED_REG 248 +#define LGW_MODEM_STATUS 249 +#define LGW_VALID_HEADER_COUNTER_0 250 +#define LGW_VALID_PACKET_COUNTER_0 251 +#define LGW_VALID_HEADER_COUNTER_MBWSSF 252 +#define LGW_VALID_HEADER_COUNTER_FSK 253 +#define LGW_VALID_PACKET_COUNTER_MBWSSF 254 +#define LGW_VALID_PACKET_COUNTER_FSK 255 +#define LGW_CHANN_RSSI 256 +#define LGW_BB_RSSI 257 +#define LGW_DEC_RSSI 258 +#define LGW_DBG_MCU_DATA 259 +#define LGW_DBG_ARB_MCU_RAM_DATA 260 +#define LGW_DBG_AGC_MCU_RAM_DATA 261 +#define LGW_NEXT_PACKET_CNT 262 +#define LGW_ADDR_CAPTURE_COUNT 263 +#define LGW_TIMESTAMP 264 +#define LGW_DBG_CHANN0_GAIN 265 +#define LGW_DBG_CHANN1_GAIN 266 +#define LGW_DBG_CHANN2_GAIN 267 +#define LGW_DBG_CHANN3_GAIN 268 +#define LGW_DBG_CHANN4_GAIN 269 +#define LGW_DBG_CHANN5_GAIN 270 +#define LGW_DBG_CHANN6_GAIN 271 +#define LGW_DBG_CHANN7_GAIN 272 +#define LGW_DBG_DEC_FILT_GAIN 273 +#define LGW_SPI_DATA_FIFO_PTR 274 +#define LGW_PACKET_DATA_FIFO_PTR 275 +#define LGW_DBG_ARB_MCU_RAM_ADDR 276 +#define LGW_DBG_AGC_MCU_RAM_ADDR 277 +#define LGW_SPI_MASTER_CHIP_SELECT_POLARITY 278 +#define LGW_SPI_MASTER_CPOL 279 +#define LGW_SPI_MASTER_CPHA 280 +#define LGW_SIG_GEN_ANALYSER_MUX_SEL 281 +#define LGW_SIG_GEN_EN 282 +#define LGW_SIG_ANALYSER_EN 283 +#define LGW_SIG_ANALYSER_AVG_LEN 284 +#define LGW_SIG_ANALYSER_PRECISION 285 +#define LGW_SIG_ANALYSER_VALID_OUT 286 +#define LGW_SIG_GEN_FREQ 287 +#define LGW_SIG_ANALYSER_FREQ 288 +#define LGW_SIG_ANALYSER_I_OUT 289 +#define LGW_SIG_ANALYSER_Q_OUT 290 +#define LGW_GPS_EN 291 +#define LGW_GPS_POL 292 +#define LGW_SW_TEST_REG1 293 +#define LGW_SW_TEST_REG2 294 +#define LGW_SW_TEST_REG3 295 -#define LGW_TOTALREGS 290 +#define LGW_TOTALREGS 296 /* -------------------------------------------------------------------------- */ /* --- PUBLIC FUNCTIONS PROTOTYPES ------------------------------------------ */ diff --git a/loragw_hal/src/agc_fw.var b/loragw_hal/src/agc_fw.var index a0dde65..c913e0c 100644 --- a/loragw_hal/src/agc_fw.var +++ b/loragw_hal/src/agc_fw.var @@ -12,193 +12,193 @@ Description: static uint8_t agc_firmware[MCU_AGC_FW_BYTE] = { 0x8A, 0x51, 0x11, 0x28, 0xFF, 0xBF, 0xFF, 0xBF, 0x80, 0x40, 0x03, 0x4E, 0x83, 0x52, 0x03, 0x53, -0xA1, 0xC0, 0x04, 0x88, 0xA2, 0xC0, 0x0A, 0xC8, 0xA3, 0x00, 0x01, 0x88, 0xA4, 0xC0, 0x8A, 0x51, -0x99, 0xEC, 0x8A, 0x51, 0xC4, 0xED, 0x83, 0x96, 0x03, 0x53, 0x2E, 0x48, 0xB4, 0x00, 0x2D, 0x48, -0xB3, 0x40, 0x2C, 0x08, 0xB2, 0x00, 0x2B, 0x48, 0xB1, 0x00, 0x83, 0x52, 0x03, 0x53, 0x19, 0x54, -0x99, 0x50, 0x19, 0x95, 0x99, 0x91, 0x19, 0x52, 0x99, 0x92, 0x19, 0x93, 0x99, 0xD3, 0x18, 0x12, -0x90, 0x30, 0xA8, 0xC0, 0x28, 0xC8, 0x8B, 0x00, 0x98, 0x10, 0x18, 0x11, 0x98, 0x51, 0x97, 0x81, -0x9A, 0x41, 0x9B, 0x81, 0x83, 0x96, 0x03, 0x53, 0xD1, 0x41, 0xD1, 0x8A, 0x0F, 0xB0, 0x83, 0x52, -0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xD9, 0x40, 0xC9, 0x41, 0xD2, 0x41, -0xD2, 0x8A, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xDA, 0x40, 0x06, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xCA, 0x00, 0x02, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD3, 0x40, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xDB, 0x80, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xCB, 0x40, 0x03, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD4, 0x00, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xDC, 0x40, 0x12, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xCC, 0x00, 0x04, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD5, 0x40, 0x0F, 0xB0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xDD, 0x80, 0x18, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xCD, 0x40, 0x04, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD6, 0x40, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xDE, 0x80, 0x1E, 0xB0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xCE, 0x40, 0x05, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD7, 0x80, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xDF, 0xC0, 0x24, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xCF, 0x80, 0x05, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD8, 0x00, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xE0, 0xC0, 0x2A, 0x70, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, -0xD0, 0xC0, 0xB9, 0x81, 0xBA, 0x81, 0xBB, 0xC1, 0xBC, 0x81, 0xBD, 0xC1, 0xBE, 0xC1, 0xBF, 0x01, -0xC0, 0xC1, 0xC1, 0x01, 0x06, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC2, 0xC0, 0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC3, 0x00, 0x12, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC4, 0xC0, 0x18, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC5, 0x00, 0x1E, 0xB0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC6, 0x00, 0x24, 0x30, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC7, 0x40, 0x2A, 0x70, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, -0x03, 0x53, 0xC8, 0xC0, 0xEF, 0x01, 0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, 0x28, 0x69, 0x29, 0xA9, -0x2B, 0xE9, 0xA1, 0xA9, 0xA1, 0xA9, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x93, 0x80, 0x81, -0x08, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xE9, 0xBE, -0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, -0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xD1, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, -0xA8, 0xC0, 0x05, 0x30, 0x03, 0xD0, 0xA8, 0x8D, 0xFF, 0x7E, 0x03, 0x9D, 0x4A, 0xA9, 0x83, 0x96, -0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xD9, 0xBE, 0x84, 0x80, 0x00, 0x48, -0x83, 0x52, 0x03, 0x53, 0xA9, 0x00, 0x29, 0x87, 0x28, 0xC4, 0xAA, 0x00, 0x2A, 0x08, 0x83, 0x96, -0x03, 0x53, 0xAF, 0x80, 0x6F, 0xC8, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, -0x03, 0x53, 0xB0, 0xC0, 0x0C, 0x30, 0x8A, 0x51, 0x84, 0x65, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, -0x98, 0x95, 0x98, 0x51, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xE9, 0xBE, 0x84, 0x80, 0x83, 0x93, -0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x03, 0x30, 0x03, 0xD0, 0xA8, 0x8D, 0xFF, 0x7E, -0x03, 0x9D, 0x7D, 0x69, 0x03, 0xD0, 0x28, 0x4D, 0xA9, 0x00, 0x29, 0x08, 0x96, 0x00, 0x83, 0x96, -0x03, 0x53, 0x6F, 0x18, 0x8C, 0xA9, 0x90, 0x69, 0x83, 0x52, 0x03, 0x53, 0x18, 0x14, 0x93, 0xE9, -0x83, 0x52, 0x03, 0x53, 0x18, 0xD0, 0x18, 0x55, 0x18, 0x11, 0x01, 0xF0, 0xA8, 0xC0, 0x28, 0xC8, -0x83, 0x96, 0x03, 0x53, 0xEF, 0x87, 0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, 0xA0, 0x69, 0xA1, 0xA9, -0x2B, 0xE9, 0xEE, 0xC1, 0x04, 0xF0, 0x6E, 0x82, 0x03, 0x5C, 0xA7, 0x29, 0xA8, 0xA9, 0xAA, 0xE9, -0xDE, 0x69, 0xDE, 0x69, 0x07, 0x70, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, -0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x83, 0x93, 0x80, 0x40, -0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, -0xA8, 0xC0, 0x28, 0xC8, 0x96, 0x00, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xB1, 0x7E, 0x84, 0x80, -0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x95, 0x00, 0x98, 0x54, 0x98, 0x10, -0x01, 0xF0, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xEE, 0x47, 0x04, 0xF0, 0x6E, 0x82, -0x03, 0x5C, 0xDB, 0x69, 0xDC, 0x29, 0xAA, 0xE9, 0xDE, 0x69, 0xDE, 0x69, 0x83, 0x96, 0x03, 0x53, -0x6C, 0x48, 0xC9, 0x7E, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, -0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xE7, 0x80, 0x69, 0x48, 0xB9, 0xBE, 0x84, 0x80, 0x00, 0x48, -0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xE8, 0x00, 0x68, 0x08, -0x67, 0x07, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xEB, 0x80, -0x68, 0x08, 0x67, 0x07, 0xD6, 0xBE, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x97, 0x40, -0x83, 0x96, 0x03, 0x53, 0x6D, 0x88, 0xC9, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, -0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xE7, 0x80, 0x6A, 0x48, 0xB9, 0xBE, 0x84, 0x80, -0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xE8, 0x00, -0x68, 0x08, 0x67, 0x07, 0xD6, 0xBE, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x9C, 0x00, -0x83, 0x96, 0x03, 0x53, 0xEE, 0xC1, 0x04, 0xF0, 0x6E, 0x82, 0x03, 0x5C, 0x30, 0x6A, 0x31, 0xAA, -0x33, 0xEA, 0xBB, 0x6A, 0xBB, 0x6A, 0x6E, 0x88, 0xB1, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, -0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x95, 0x00, 0x0D, 0x08, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, -0x6E, 0x88, 0xB5, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, -0x03, 0x53, 0x6E, 0x88, 0xB5, 0xBE, 0x84, 0x80, 0x88, 0x30, 0x00, 0x42, 0x03, 0x5C, 0x51, 0xAA, -0x52, 0xAA, 0x7A, 0x2A, 0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, 0x0F, 0xB0, 0x00, 0x42, 0x03, 0x18, -0x5A, 0xEA, 0x5B, 0x2A, 0x7A, 0x2A, 0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x01, 0xBE, -0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, -0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xE3, 0xBE, -0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x96, 0x00, 0x98, 0x54, -0x98, 0x10, 0xAE, 0x2A, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xB5, 0xBE, 0x84, 0x80, 0x2D, 0xB0, -0x00, 0x42, 0x03, 0x18, 0x84, 0x6A, 0x85, 0xAA, 0xAE, 0x2A, 0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, -0x08, 0xF0, 0x00, 0x42, 0x03, 0x5C, 0x8D, 0xEA, 0x8E, 0xEA, 0xAE, 0x2A, 0x6E, 0x88, 0xE3, 0xBE, -0x84, 0x80, 0x00, 0x48, 0xFF, 0x7E, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, -0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, -0x03, 0x53, 0x6E, 0x88, 0xE3, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, -0x28, 0xC8, 0x96, 0x00, 0x98, 0x54, 0x98, 0x10, 0xAE, 0x2A, 0xAE, 0x2A, 0x01, 0xF0, 0x83, 0x52, -0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xEE, 0x47, 0x04, 0xF0, 0x6E, 0x82, 0x03, 0x5C, -0xBA, 0x2A, 0xBB, 0x6A, 0x33, 0xEA, 0xEF, 0x01, 0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, 0xC1, 0xAA, -0xC2, 0xAA, 0xC4, 0xAA, 0x0C, 0x6C, 0x0C, 0x6C, 0x6F, 0x18, 0xC7, 0x2A, 0xCB, 0x2A, 0x83, 0x52, -0x03, 0x53, 0x18, 0x14, 0xCE, 0x2A, 0x83, 0x52, 0x03, 0x53, 0x18, 0xD0, 0x0E, 0x08, 0xA8, 0xC0, -0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xE2, 0x00, 0x88, 0x30, 0x62, 0x02, 0x03, 0x5C, 0xD9, 0x2A, -0xDA, 0x2A, 0x0C, 0xAB, 0x6F, 0xC8, 0xE9, 0xBE, 0x84, 0x80, 0x0B, 0x70, 0x83, 0x93, 0x00, 0x42, -0x03, 0x18, 0xE3, 0x2A, 0xE4, 0xEA, 0x0C, 0xAB, 0x6F, 0xC8, 0xE9, 0xBE, 0x84, 0x80, 0x00, 0x48, -0x01, 0xBE, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xE9, 0xBE, -0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, -0xE9, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x03, 0x30, 0x03, 0xD0, -0xA8, 0x8D, 0xFF, 0x7E, 0x03, 0x9D, 0xFF, 0xEA, 0x03, 0xD0, 0x28, 0x4D, 0xA9, 0x00, 0x29, 0x08, -0x96, 0x00, 0x18, 0x55, 0x18, 0x11, 0x47, 0x2B, 0x2D, 0xB0, 0x83, 0x96, 0x03, 0x53, 0x62, 0x02, -0x03, 0x18, 0x13, 0xEB, 0x14, 0xAB, 0x47, 0x2B, 0x6F, 0xC8, 0xE9, 0xBE, 0x84, 0x80, 0x09, 0x30, -0x83, 0x93, 0x00, 0x42, 0x03, 0x5C, 0x1D, 0x2B, 0x1E, 0x2B, 0x47, 0x2B, 0x6F, 0xC8, 0xE9, 0xBE, -0x84, 0x80, 0x00, 0x48, 0xFF, 0x7E, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, -0x6F, 0xC8, 0xE9, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, -0x03, 0x53, 0x6F, 0xC8, 0xE9, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, -0x03, 0x30, 0x03, 0xD0, 0xA8, 0x8D, 0xFF, 0x7E, 0x03, 0x9D, 0x39, 0x2B, 0x03, 0xD0, 0x28, 0x4D, -0xA9, 0x00, 0x29, 0x08, 0x96, 0x00, 0x18, 0x55, 0x18, 0x11, 0x47, 0x2B, 0x47, 0x2B, 0x83, 0x52, -0x0F, 0x48, 0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xE1, 0x00, 0x33, 0xB0, 0x61, 0x02, -0x03, 0x5C, 0x53, 0x2B, 0x54, 0xEB, 0xA5, 0x2B, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x07, 0x70, -0x83, 0x93, 0x00, 0x42, 0x03, 0x18, 0x5D, 0x6B, 0x5E, 0x6B, 0xA5, 0x2B, 0x6F, 0xC8, 0xEC, 0xBE, -0x84, 0x80, 0x00, 0x48, 0x01, 0xBE, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, -0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, -0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xD1, 0x7E, 0x84, 0x80, 0x00, 0x48, -0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x05, 0x30, 0x03, 0xD0, 0xA8, 0x8D, 0xFF, 0x7E, 0x03, 0x9D, -0x7C, 0x6B, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xD9, 0xBE, -0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA9, 0x00, 0x29, 0x87, 0x28, 0xC4, 0xAA, 0x00, -0x2A, 0x08, 0x83, 0x96, 0x03, 0x53, 0xAF, 0x80, 0x6F, 0xC8, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, -0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB0, 0xC0, 0x0C, 0x30, 0x8A, 0x51, 0x84, 0x65, 0x8A, 0x51, -0x83, 0x52, 0x03, 0x53, 0x98, 0x95, 0x98, 0x51, 0xFE, 0xEB, 0x0F, 0xB0, 0x83, 0x96, 0x03, 0x53, -0x61, 0x02, 0x03, 0x18, 0xAC, 0x2B, 0xAD, 0x6B, 0xFE, 0xEB, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, -0x83, 0x93, 0x80, 0x88, 0x03, 0x59, 0xB5, 0x6B, 0xB6, 0x6B, 0xFE, 0xEB, 0x6F, 0xC8, 0xEC, 0xBE, -0x84, 0x80, 0x00, 0x48, 0xFF, 0x7E, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x83, 0x96, 0x03, 0x53, -0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x28, 0xC8, 0x80, 0x40, 0x83, 0x96, -0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xD1, 0x7E, 0x84, 0x80, 0x00, 0x48, -0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x05, 0x30, 0x03, 0xD0, 0xA8, 0x8D, 0xFF, 0x7E, 0x03, 0x9D, -0xD4, 0x2B, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xD9, 0xBE, -0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA9, 0x00, 0x29, 0x87, 0x28, 0xC4, 0xAA, 0x00, -0x2A, 0x08, 0x83, 0x96, 0x03, 0x53, 0xAF, 0x80, 0x6F, 0xC8, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, -0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB0, 0xC0, 0x0C, 0x30, 0x8A, 0x51, 0x84, 0x65, 0x8A, 0x51, -0x83, 0x52, 0x03, 0x53, 0x98, 0x95, 0x98, 0x51, 0xFE, 0xEB, 0xFE, 0xEB, 0x01, 0xF0, 0x83, 0x52, -0xA8, 0xC0, 0x28, 0xC8, 0x83, 0x96, 0x03, 0x53, 0xEF, 0x87, 0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, -0x0A, 0x6C, 0x0B, 0xAC, 0xC4, 0xAA, 0x0C, 0x6C, 0x6C, 0x48, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, -0x28, 0xC8, 0x9A, 0x00, 0x51, 0x70, 0x83, 0x96, 0x03, 0x53, 0x6B, 0x82, 0x03, 0x5C, 0x19, 0xAC, -0x1A, 0xAC, 0x21, 0x6C, 0x40, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x9B, 0x40, -0xDE, 0x69, 0x28, 0x30, 0x83, 0x96, 0x03, 0x53, 0x6B, 0x82, 0x03, 0x5C, 0x28, 0x6C, 0x29, 0xAC, -0x30, 0x6C, 0x80, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x9B, 0x40, 0xDE, 0x69, -0x15, 0x70, 0x83, 0x96, 0x03, 0x53, 0x6B, 0x82, 0x03, 0x5C, 0x37, 0x2C, 0x38, 0xAC, 0x3F, 0x6C, -0x08, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x9B, 0x40, 0xDE, 0x69, 0x11, 0x30, -0x83, 0x96, 0x03, 0x53, 0x6B, 0x82, 0x03, 0x5C, 0x46, 0xAC, 0x47, 0xEC, 0x4E, 0xEC, 0x10, 0xF0, -0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x9B, 0x40, 0xDE, 0x69, 0x0B, 0x70, 0x83, 0x96, -0x03, 0x53, 0x6B, 0x82, 0x03, 0x5C, 0x55, 0xEC, 0x56, 0xEC, 0x5D, 0x2C, 0x20, 0xF0, 0x83, 0x52, -0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, 0x9B, 0x40, 0xDE, 0x69, 0x06, 0x30, 0x83, 0x96, 0x03, 0x53, -0x6B, 0x82, 0x03, 0x5C, 0x64, 0xAC, 0x65, 0xEC, 0x6C, 0xEC, 0x01, 0xF0, 0x83, 0x52, 0x03, 0x53, -0xA8, 0xC0, 0x28, 0xC8, 0x9B, 0x40, 0xDE, 0x69, 0x04, 0xF0, 0x83, 0x96, 0x03, 0x53, 0x6B, 0x82, -0x03, 0x5C, 0x73, 0x2C, 0x74, 0xEC, 0x7B, 0x6C, 0x02, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, -0x28, 0xC8, 0x9B, 0x40, 0xDE, 0x69, 0x02, 0xF0, 0x83, 0x96, 0x03, 0x53, 0x6B, 0x82, 0x03, 0x5C, -0x82, 0x6C, 0x83, 0xAC, 0x8A, 0xAC, 0x04, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA8, 0xC0, 0x28, 0xC8, -0x9B, 0x40, 0xDE, 0x69, 0x83, 0x52, 0x03, 0x53, 0x9B, 0x81, 0xDE, 0x69, 0xDE, 0x69, 0xDE, 0x69, -0xDE, 0x69, 0xDE, 0x69, 0xDE, 0x69, 0xDE, 0x69, 0xDE, 0x69, 0xDE, 0x69, 0xDE, 0x69, 0x8A, 0x51, -0x11, 0x28, 0x8B, 0xDC, 0x9C, 0xEC, 0x9D, 0x2C, 0x75, 0x6D, 0x18, 0x12, 0x00, 0xB0, 0x13, 0xDB, -0x01, 0xF0, 0x9F, 0x80, 0x1F, 0x88, 0xA5, 0x00, 0x25, 0x58, 0xA7, 0x2C, 0xAB, 0x2C, 0x83, 0x52, -0x03, 0x53, 0x18, 0x14, 0xAE, 0x2C, 0x83, 0x52, 0x03, 0x53, 0x18, 0xD0, 0x12, 0xC8, 0x9F, 0x80, -0x1F, 0x88, 0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x04, 0xF0, 0x8A, 0x51, -0xA8, 0xA5, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x11, 0xC8, 0x9F, 0x80, 0x1F, 0x88, 0xAC, 0x00, -0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x05, 0x30, 0x8A, 0x51, 0xA8, 0xA5, 0x8A, 0x51, -0x83, 0x52, 0x03, 0x53, 0x10, 0x88, 0x9F, 0x80, 0x1F, 0x88, 0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, -0x20, 0x88, 0xAD, 0x40, 0x06, 0x30, 0x8A, 0x51, 0xA8, 0xA5, 0x8A, 0x51, 0x03, 0x30, 0x83, 0x52, -0x03, 0x53, 0x9F, 0x80, 0x1F, 0x88, 0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, -0x00, 0xB0, 0x8A, 0x51, 0xA8, 0xA5, 0x8A, 0x51, 0x07, 0x70, 0x83, 0x52, 0x03, 0x53, 0x9F, 0x80, -0x1F, 0x88, 0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x00, 0xB0, 0x8A, 0x51, -0xA8, 0xA5, 0x8A, 0x51, 0x0F, 0xB0, 0x83, 0x52, 0x03, 0x53, 0x9F, 0x80, 0x1F, 0x88, 0xAC, 0x00, -0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x00, 0xB0, 0x8A, 0x51, 0xA8, 0xA5, 0x8A, 0x51, -0x83, 0x52, 0x03, 0x53, 0x25, 0x08, 0x03, 0x9D, 0x06, 0xAD, 0x1D, 0x2D, 0x93, 0x1D, 0x09, 0xAD, -0x0D, 0xED, 0x83, 0x52, 0x03, 0x53, 0x19, 0xD7, 0x10, 0x6D, 0x83, 0x52, 0x03, 0x53, 0x19, 0x93, -0x93, 0xD9, 0x13, 0xED, 0x17, 0x2D, 0x83, 0x52, 0x03, 0x53, 0x99, 0x17, 0x1A, 0xED, 0x83, 0x52, -0x03, 0x53, 0x99, 0xD3, 0x19, 0x51, 0x99, 0xD5, 0x33, 0x2D, 0x93, 0x1D, 0x20, 0x6D, 0x24, 0xAD, -0x83, 0x52, 0x03, 0x53, 0x19, 0x96, 0x27, 0x2D, 0x83, 0x52, 0x03, 0x53, 0x19, 0x52, 0x93, 0xD9, -0x2A, 0xED, 0x2E, 0x2D, 0x83, 0x52, 0x03, 0x53, 0x99, 0xD6, 0x31, 0xED, 0x83, 0x52, 0x03, 0x53, -0x99, 0x92, 0x19, 0x10, 0x99, 0x94, 0x93, 0x1D, 0x36, 0x2D, 0x37, 0x6D, 0x44, 0xAD, 0x1D, 0xB0, -0x9F, 0x80, 0x1F, 0x88, 0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x08, 0xF0, -0x8A, 0x51, 0xA8, 0xA5, 0x8A, 0x51, 0x54, 0xED, 0x3B, 0xF0, 0x83, 0x52, 0x03, 0x53, 0x9F, 0x80, -0x1F, 0x88, 0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x08, 0xF0, 0x8A, 0x51, -0xA8, 0xA5, 0x8A, 0x51, 0x54, 0xED, 0x54, 0xED, 0x83, 0x52, 0x03, 0x53, 0x93, 0x1B, 0x59, 0x2D, -0x5A, 0x2D, 0x54, 0xED, 0x5B, 0x6D, 0x25, 0x08, 0x03, 0x9D, 0x5F, 0xAD, 0x62, 0xED, 0x99, 0x91, -0x19, 0x95, 0x65, 0x2D, 0x99, 0x50, 0x19, 0x54, 0x65, 0x2D, 0x03, 0x30, 0x9F, 0x80, 0x1F, 0x88, -0xAC, 0x00, 0x25, 0x08, 0xA0, 0x80, 0x20, 0x88, 0xAD, 0x40, 0x00, 0xB0, 0x8A, 0x51, 0xA8, 0xA5, -0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x18, 0x56, 0x75, 0x6D, 0x90, 0x30, 0x9F, 0x80, 0x1F, 0x88, -0x8B, 0x00, 0x24, 0xC8, 0x81, 0x80, 0x23, 0x08, 0x8A, 0xC0, 0x22, 0xC8, 0x84, 0x80, 0x21, 0x4E, -0x83, 0xC0, 0x80, 0x0E, 0x00, 0xCE, 0x09, 0x80, 0x83, 0x52, 0x03, 0x53, 0xA7, 0x40, 0x83, 0x96, -0x03, 0x53, 0x30, 0xC8, 0x03, 0x9D, 0x8D, 0x2D, 0x99, 0x2D, 0x2F, 0x88, 0x83, 0x52, 0x03, 0x53, -0xA6, 0x00, 0x26, 0x08, 0x88, 0x80, 0x27, 0x48, 0x80, 0x38, 0xA6, 0x00, 0x26, 0x08, 0x86, 0xC0, -0xA7, 0x6D, 0x83, 0x96, 0x03, 0x53, 0x2F, 0x88, 0x83, 0x52, 0x03, 0x53, 0xA6, 0x00, 0x26, 0x08, -0x88, 0x80, 0x27, 0x48, 0x80, 0x38, 0xA6, 0x00, 0x26, 0x08, 0x85, 0xC0, 0xA7, 0x6D, 0x08, 0x40, -0x83, 0x52, 0x03, 0x53, 0x9E, 0x40, 0x2D, 0x48, 0x03, 0x9D, 0xAF, 0xAD, 0xB9, 0x6D, 0x2C, 0x08, -0x9D, 0x40, 0x1D, 0x48, 0x88, 0x80, 0x1E, 0x48, 0x80, 0x38, 0x9D, 0x40, 0x1D, 0x48, 0x86, 0xC0, -0xC3, 0x2D, 0x2C, 0x08, 0x9D, 0x40, 0x1D, 0x48, 0x88, 0x80, 0x1E, 0x48, 0x80, 0x38, 0x9D, 0x40, -0x1D, 0x48, 0x85, 0xC0, 0xC3, 0x2D, 0x08, 0x40, 0x83, 0x96, 0x03, 0x53, 0x8A, 0x51, 0xD9, 0x25, -0x8A, 0x51, 0xAB, 0x40, 0x8A, 0x51, 0xDA, 0x25, 0x8A, 0x51, 0xAC, 0x00, 0x8A, 0x51, 0xDB, 0x65, -0x8A, 0x51, 0xAD, 0x40, 0x8A, 0x51, 0xDC, 0x25, 0x8A, 0x51, 0xAE, 0x40, 0x83, 0x01, 0x8A, 0x51, -0x13, 0x68, 0x00, 0xF4, 0x01, 0x34, 0x02, 0x34, 0x03, 0x74, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xA4, 0xC0, 0x04, 0x88, 0xA5, 0x00, 0x0A, 0xC8, 0xA6, 0x00, 0x01, 0x88, 0xA7, 0x40, 0x8A, 0x51, +0x09, 0x6C, 0x8A, 0x51, 0x20, 0x6D, 0x83, 0x96, 0x03, 0x53, 0x2F, 0x88, 0xB5, 0x40, 0x2E, 0x48, +0xB4, 0x00, 0x2D, 0x48, 0xB3, 0x40, 0x2C, 0x08, 0xB2, 0x00, 0x83, 0x52, 0x03, 0x53, 0x19, 0x54, +0x99, 0x50, 0x19, 0x95, 0x99, 0x91, 0x19, 0x52, 0x99, 0x92, 0x18, 0x12, 0x90, 0x30, 0xAB, 0x40, +0x2B, 0x48, 0x8B, 0x00, 0x98, 0x10, 0x18, 0x11, 0x98, 0x51, 0x97, 0x81, 0x9A, 0x41, 0x9B, 0x81, +0x83, 0x96, 0x03, 0x53, 0xD2, 0x41, 0xD2, 0x8A, 0x0F, 0xB0, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, +0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xDA, 0x40, 0xCA, 0x41, 0xD3, 0x81, 0xD3, 0xCA, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xDB, 0x80, 0x06, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xCB, 0x40, 0x02, 0xF0, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD4, 0x00, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xDC, 0x40, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xCC, 0x00, 0x03, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD5, 0x40, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xDD, 0x80, 0x12, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xCD, 0x40, 0x04, 0xF0, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD6, 0x40, 0x0F, 0xB0, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xDE, 0x80, 0x18, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xCE, 0x40, 0x04, 0xF0, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD7, 0x80, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xDF, 0xC0, 0x1E, 0xB0, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xCF, 0x80, 0x05, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD8, 0x00, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xE0, 0xC0, 0x24, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD0, 0xC0, 0x05, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD9, 0x40, 0x0C, 0x30, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xE1, 0x00, 0x2A, 0x70, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xD1, 0x00, 0xBA, 0x81, +0xBB, 0xC1, 0xBC, 0x81, 0xBD, 0xC1, 0xBE, 0xC1, 0xBF, 0x01, 0xC0, 0xC1, 0xC1, 0x01, 0xC2, 0x01, +0x06, 0x30, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC3, 0x00, +0x0C, 0x30, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC4, 0xC0, +0x12, 0x30, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC5, 0x00, +0x18, 0x30, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC6, 0x00, +0x1E, 0xB0, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC7, 0x40, +0x24, 0x30, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC8, 0xC0, +0x2A, 0x70, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xC9, 0x00, +0xEF, 0x01, 0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, 0x26, 0xA9, 0x27, 0xE9, 0x29, 0xA9, 0x9F, 0x69, +0x9F, 0x69, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x93, 0x80, 0x81, 0x08, 0xF0, 0x83, 0x52, +0x03, 0x53, 0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x83, 0x52, +0x03, 0x53, 0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, +0x00, 0x48, 0xD2, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x05, 0x30, +0x03, 0xD0, 0xAB, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, 0x48, 0x69, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, +0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xDA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, +0xAC, 0x00, 0x2C, 0x87, 0x2B, 0x44, 0xAD, 0x40, 0x2D, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB0, 0xC0, +0x6F, 0xC8, 0x83, 0x52, 0x03, 0x53, 0xAE, 0x40, 0x2E, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB1, 0x00, +0x0C, 0x30, 0x8A, 0x51, 0xE0, 0x64, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x98, 0x95, 0x98, 0x51, +0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x83, 0x52, +0x03, 0x53, 0xAB, 0x40, 0x03, 0x30, 0x03, 0xD0, 0xAB, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, 0x7B, 0x69, +0x03, 0xD0, 0x2B, 0xCD, 0xAC, 0x00, 0x2C, 0x08, 0x96, 0x00, 0x83, 0x96, 0x03, 0x53, 0x6F, 0x18, +0x8A, 0xA9, 0x8E, 0xE9, 0x83, 0x52, 0x03, 0x53, 0x18, 0x14, 0x91, 0xA9, 0x83, 0x52, 0x03, 0x53, +0x18, 0xD0, 0x18, 0x55, 0x18, 0x11, 0x01, 0xF0, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, +0xEF, 0x87, 0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, 0x9E, 0x29, 0x9F, 0x69, 0x29, 0xA9, 0xEE, 0xC1, +0x04, 0xF0, 0x6E, 0x82, 0x03, 0x5C, 0xA5, 0xE9, 0xA6, 0xE9, 0xA8, 0xA9, 0xDC, 0x29, 0xDC, 0x29, +0x07, 0x70, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xE6, 0xBE, +0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x2B, 0x48, 0x83, 0x93, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, +0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, +0x96, 0x00, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xB2, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, +0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x95, 0x00, 0x98, 0x54, 0x98, 0x10, 0x01, 0xF0, 0xAB, 0x40, +0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xEE, 0x47, 0x04, 0xF0, 0x6E, 0x82, 0x03, 0x5C, 0xD9, 0x29, +0xDA, 0x29, 0xA8, 0xA9, 0xDC, 0x29, 0xDC, 0x29, 0x83, 0x96, 0x03, 0x53, 0x6C, 0x48, 0xCA, 0x7E, +0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, +0x03, 0x53, 0xE4, 0x00, 0x6A, 0x48, 0xBA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xE5, 0x40, 0x65, 0x48, 0x64, 0x87, 0x83, 0x52, +0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x97, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6D, 0x88, 0xCA, 0x7E, +0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, +0xE4, 0x00, 0x6B, 0x88, 0xBA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, +0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xE5, 0x40, 0x65, 0x48, 0x64, 0x87, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x2B, 0x48, 0x9C, 0x00, 0x83, 0x96, 0x03, 0x53, 0xEE, 0xC1, 0x04, 0xF0, 0x6E, 0x82, +0x03, 0x5C, 0x23, 0xAA, 0x24, 0x6A, 0x26, 0xAA, 0xAE, 0x2A, 0xAE, 0x2A, 0x6E, 0x88, 0xB2, 0x7E, +0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x95, 0x00, 0x0D, 0x08, +0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xB6, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, +0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xB6, 0xBE, 0x84, 0x80, 0x88, 0x30, +0x00, 0x42, 0x03, 0x5C, 0x44, 0x6A, 0x45, 0xAA, 0x6D, 0x2A, 0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, +0x0F, 0xB0, 0x00, 0x42, 0x03, 0x18, 0x4D, 0xEA, 0x4E, 0xEA, 0x6D, 0x2A, 0x6E, 0x88, 0xE6, 0xBE, +0x84, 0x80, 0x00, 0x48, 0x01, 0xBE, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, +0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, +0x03, 0x53, 0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, +0x2B, 0x48, 0x96, 0x00, 0x98, 0x54, 0x98, 0x10, 0xA1, 0xAA, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, +0xB6, 0xBE, 0x84, 0x80, 0x2D, 0xB0, 0x00, 0x42, 0x03, 0x18, 0x77, 0x6A, 0x78, 0xEA, 0xA1, 0xAA, +0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x08, 0xF0, 0x00, 0x42, 0x03, 0x5C, 0x80, 0x2A, 0x81, 0x6A, +0xA1, 0xAA, 0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xFF, 0x7E, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, +0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6E, 0x88, 0xE6, 0xBE, 0x84, 0x80, 0x00, 0x48, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x96, 0x00, 0x98, 0x54, 0x98, 0x10, 0xA1, 0xAA, +0xA1, 0xAA, 0x01, 0xF0, 0x83, 0x52, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xEE, 0x47, +0x04, 0xF0, 0x6E, 0x82, 0x03, 0x5C, 0xAD, 0x2A, 0xAE, 0x2A, 0x26, 0xAA, 0xEF, 0x01, 0x02, 0xF0, +0x6F, 0xC2, 0x03, 0x5C, 0xB4, 0xEA, 0xB5, 0x2A, 0xB7, 0x6A, 0xFF, 0x2B, 0xFF, 0x2B, 0x6F, 0x18, +0xBA, 0x2A, 0xBE, 0x6A, 0x83, 0x52, 0x03, 0x53, 0x18, 0x14, 0xC1, 0xAA, 0x83, 0x52, 0x03, 0x53, +0x18, 0xD0, 0x0E, 0x08, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xE3, 0x40, 0x88, 0x30, +0x63, 0x42, 0x03, 0x5C, 0xCC, 0xEA, 0xCD, 0x2A, 0xFF, 0xEA, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, +0x0B, 0x70, 0x83, 0x93, 0x00, 0x42, 0x03, 0x18, 0xD6, 0x2A, 0xD7, 0x6A, 0xFF, 0xEA, 0x6F, 0xC8, +0xEA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x01, 0xBE, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x83, 0x96, +0x03, 0x53, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, 0x2B, 0x48, 0x80, 0x40, +0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x03, 0x30, 0x03, 0xD0, 0xAB, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, 0xF2, 0x2A, 0x03, 0xD0, +0x2B, 0xCD, 0xAC, 0x00, 0x2C, 0x08, 0x96, 0x00, 0x18, 0x55, 0x18, 0x11, 0x3A, 0x2B, 0x2D, 0xB0, +0x83, 0x96, 0x03, 0x53, 0x63, 0x42, 0x03, 0x18, 0x06, 0xAB, 0x07, 0xEB, 0x3A, 0x2B, 0x6F, 0xC8, +0xEA, 0xBE, 0x84, 0x80, 0x09, 0x30, 0x83, 0x93, 0x00, 0x42, 0x03, 0x5C, 0x10, 0x6B, 0x11, 0xAB, +0x3A, 0x2B, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xFF, 0x7E, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, +0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEA, 0xBE, 0x84, 0x80, 0x00, 0x48, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x03, 0x30, 0x03, 0xD0, 0xAB, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, +0x2C, 0xEB, 0x03, 0xD0, 0x2B, 0xCD, 0xAC, 0x00, 0x2C, 0x08, 0x96, 0x00, 0x18, 0x55, 0x18, 0x11, +0x3A, 0x2B, 0x3A, 0x2B, 0x83, 0x52, 0x0F, 0x48, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, +0xE2, 0x00, 0x29, 0x70, 0x62, 0x02, 0x03, 0x5C, 0x46, 0xEB, 0x47, 0x2B, 0x98, 0xEB, 0x6F, 0xC8, +0xEC, 0xBE, 0x84, 0x80, 0x07, 0x70, 0x83, 0x93, 0x00, 0x42, 0x03, 0x18, 0x50, 0xAB, 0x51, 0xEB, +0x98, 0xEB, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x01, 0xBE, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, +0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, +0xD2, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x05, 0x30, 0x03, 0xD0, +0xAB, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, 0x6F, 0xAB, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, +0x84, 0x80, 0x00, 0x48, 0xDA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAC, 0x00, +0x2C, 0x87, 0x2B, 0x44, 0xAD, 0x40, 0x2D, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB0, 0xC0, 0x6F, 0xC8, +0x83, 0x52, 0x03, 0x53, 0xAE, 0x40, 0x2E, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB1, 0x00, 0x0C, 0x30, +0x8A, 0x51, 0xE0, 0x64, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x98, 0x95, 0x98, 0x51, 0xF1, 0x6B, +0x0F, 0xB0, 0x83, 0x96, 0x03, 0x53, 0x62, 0x02, 0x03, 0x18, 0x9F, 0xAB, 0xA0, 0xAB, 0xF1, 0x6B, +0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x93, 0x80, 0x88, 0x03, 0x59, 0xA8, 0xEB, 0xA9, 0x2B, +0xF1, 0x6B, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, 0xFF, 0x7E, 0x83, 0x52, 0x03, 0x53, +0xAB, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x83, 0x52, 0x03, 0x53, +0x2B, 0x48, 0x80, 0x40, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, 0x84, 0x80, 0x00, 0x48, +0xD2, 0x7E, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x05, 0x30, 0x03, 0xD0, +0xAB, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, 0xC7, 0x6B, 0x83, 0x96, 0x03, 0x53, 0x6F, 0xC8, 0xEC, 0xBE, +0x84, 0x80, 0x00, 0x48, 0xDA, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x52, 0x03, 0x53, 0xAC, 0x00, +0x2C, 0x87, 0x2B, 0x44, 0xAD, 0x40, 0x2D, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB0, 0xC0, 0x6F, 0xC8, +0x83, 0x52, 0x03, 0x53, 0xAE, 0x40, 0x2E, 0x48, 0x83, 0x96, 0x03, 0x53, 0xB1, 0x00, 0x0C, 0x30, +0x8A, 0x51, 0xE0, 0x64, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x98, 0x95, 0x98, 0x51, 0xF1, 0x6B, +0xF1, 0x6B, 0x01, 0xF0, 0x83, 0x52, 0xAB, 0x40, 0x2B, 0x48, 0x83, 0x96, 0x03, 0x53, 0xEF, 0x87, +0x02, 0xF0, 0x6F, 0xC2, 0x03, 0x5C, 0xFD, 0xEB, 0xFE, 0xEB, 0xB7, 0x6A, 0xFF, 0x2B, 0x6C, 0x48, +0x83, 0x52, 0x03, 0x53, 0xAB, 0x40, 0x2B, 0x48, 0x9A, 0x00, 0xDC, 0x29, 0xDC, 0x29, 0x8A, 0x51, +0x11, 0x28, 0x8B, 0xDC, 0x0C, 0x6C, 0x0D, 0xAC, 0xD1, 0xEC, 0x18, 0x12, 0x00, 0xB0, 0x13, 0xDB, +0x01, 0xF0, 0xA2, 0xC0, 0x22, 0xC8, 0xA8, 0xC0, 0x28, 0x18, 0x17, 0xEC, 0x1B, 0xEC, 0x83, 0x52, +0x03, 0x53, 0x18, 0x14, 0x1E, 0xEC, 0x83, 0x52, 0x03, 0x53, 0x18, 0xD0, 0x12, 0xC8, 0xA2, 0xC0, +0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, 0xA3, 0x00, 0x23, 0x08, 0xB0, 0xC0, 0x04, 0xF0, 0x8A, 0x51, +0x04, 0x25, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x11, 0xC8, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, +0x28, 0xC8, 0xA3, 0x00, 0x23, 0x08, 0xB0, 0xC0, 0x05, 0x30, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, +0x83, 0x52, 0x03, 0x53, 0x10, 0x88, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, 0xA3, 0x00, +0x23, 0x08, 0xB0, 0xC0, 0x06, 0x30, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, 0x03, 0x30, 0x83, 0x52, +0x03, 0x53, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, 0xA3, 0x00, 0x23, 0x08, 0xB0, 0xC0, +0x00, 0xB0, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, 0x07, 0x70, 0x83, 0x52, 0x03, 0x53, 0xA2, 0xC0, +0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, 0xA3, 0x00, 0x23, 0x08, 0xB0, 0xC0, 0x00, 0xB0, 0x8A, 0x51, +0x04, 0x25, 0x8A, 0x51, 0x0F, 0xB0, 0x83, 0x52, 0x03, 0x53, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, +0x28, 0xC8, 0xA3, 0x00, 0x23, 0x08, 0xB0, 0xC0, 0x00, 0xB0, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, +0x83, 0x52, 0x03, 0x53, 0x93, 0x1D, 0x75, 0x2C, 0x79, 0x2C, 0x83, 0x52, 0x03, 0x53, 0x19, 0x96, +0x7C, 0x2C, 0x83, 0x52, 0x03, 0x53, 0x19, 0x52, 0x93, 0xD9, 0x7F, 0xAC, 0x83, 0xAC, 0x83, 0x52, +0x03, 0x53, 0x99, 0xD6, 0x86, 0xAC, 0x83, 0x52, 0x03, 0x53, 0x99, 0x92, 0x28, 0xC8, 0x03, 0x9D, +0x8A, 0xAC, 0x8D, 0xEC, 0x19, 0x51, 0x99, 0xD5, 0x8F, 0x2C, 0x19, 0x10, 0x99, 0x94, 0x93, 0x1D, +0x92, 0xAC, 0x93, 0xEC, 0xA0, 0x6C, 0x1D, 0xB0, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, +0xA3, 0x00, 0x23, 0x08, 0xB0, 0xC0, 0x08, 0xF0, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, 0xB0, 0xAC, +0x3B, 0xF0, 0x83, 0x52, 0x03, 0x53, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, 0xA3, 0x00, +0x23, 0x08, 0xB0, 0xC0, 0x08, 0xF0, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, 0xB0, 0xAC, 0xB0, 0xAC, +0x83, 0x52, 0x03, 0x53, 0x93, 0x1B, 0xB5, 0x2C, 0xB6, 0x2C, 0xB0, 0xAC, 0xB7, 0x6C, 0x28, 0xC8, +0x03, 0x9D, 0xBB, 0x6C, 0xBE, 0x6C, 0x99, 0x91, 0x19, 0x95, 0xC1, 0xAC, 0x99, 0x50, 0x19, 0x54, +0xC1, 0xAC, 0x03, 0x30, 0xA2, 0xC0, 0x22, 0xC8, 0xAF, 0x80, 0x28, 0xC8, 0xA3, 0x00, 0x23, 0x08, +0xB0, 0xC0, 0x00, 0xB0, 0x8A, 0x51, 0x04, 0x25, 0x8A, 0x51, 0x83, 0x52, 0x03, 0x53, 0x18, 0x56, +0xD1, 0xEC, 0x90, 0x30, 0xA2, 0xC0, 0x22, 0xC8, 0x8B, 0x00, 0x27, 0x48, 0x81, 0x80, 0x26, 0x08, +0x8A, 0xC0, 0x25, 0x08, 0x84, 0x80, 0x24, 0x4E, 0x83, 0xC0, 0x80, 0x0E, 0x00, 0xCE, 0x09, 0x80, +0x83, 0x52, 0x03, 0x53, 0xAA, 0x00, 0x83, 0x96, 0x03, 0x53, 0x31, 0x08, 0x03, 0x9D, 0xE9, 0x2C, +0xF5, 0x6C, 0x30, 0xC8, 0x83, 0x52, 0x03, 0x53, 0xA9, 0x00, 0x29, 0x08, 0x88, 0x80, 0x2A, 0x08, +0x80, 0x38, 0xA9, 0x00, 0x29, 0x08, 0x86, 0xC0, 0x03, 0xAD, 0x83, 0x96, 0x03, 0x53, 0x30, 0xC8, +0x83, 0x52, 0x03, 0x53, 0xA9, 0x00, 0x29, 0x08, 0x88, 0x80, 0x2A, 0x08, 0x80, 0x38, 0xA9, 0x00, +0x29, 0x08, 0x85, 0xC0, 0x03, 0xAD, 0x08, 0x40, 0x83, 0x52, 0x03, 0x53, 0xA1, 0xC0, 0x30, 0xC8, +0x03, 0x9D, 0x0B, 0xED, 0x15, 0xED, 0x2F, 0x88, 0xA0, 0x80, 0x20, 0x88, 0x88, 0x80, 0x21, 0xC8, +0x80, 0x38, 0xA0, 0x80, 0x20, 0x88, 0x86, 0xC0, 0x1F, 0x6D, 0x2F, 0x88, 0xA0, 0x80, 0x20, 0x88, +0x88, 0x80, 0x21, 0xC8, 0x80, 0x38, 0xA0, 0x80, 0x20, 0x88, 0x85, 0xC0, 0x1F, 0x6D, 0x08, 0x40, +0x83, 0x96, 0x03, 0x53, 0x8A, 0x51, 0x35, 0xE5, 0x8A, 0x51, 0xAC, 0x00, 0x8A, 0x51, 0x36, 0xE5, +0x8A, 0x51, 0xAD, 0x40, 0x8A, 0x51, 0x37, 0x25, 0x8A, 0x51, 0xAE, 0x40, 0x8A, 0x51, 0x38, 0xA5, +0x8A, 0x51, 0xAF, 0x80, 0x83, 0x01, 0x8A, 0x51, 0x13, 0x68, 0x00, 0xF4, 0x01, 0x34, 0x02, 0x34, +0x03, 0x74, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, diff --git a/loragw_hal/src/arb_fw.var b/loragw_hal/src/arb_fw.var index 2cb66f5..58e4f96 100644 --- a/loragw_hal/src/arb_fw.var +++ b/loragw_hal/src/arb_fw.var @@ -11,7 +11,7 @@ Description: */ static uint8_t arb_firmware[MCU_ARB_FW_BYTE] = { -0x31, 0xAA, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, +0xFF, 0xE9, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, @@ -73,70 +73,70 @@ static uint8_t arb_firmware[MCU_ARB_FW_BYTE] = { 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, -0xFF, 0xBF, 0x64, 0xC0, 0x80, 0x81, 0x84, 0x0A, 0x04, 0xC6, 0x03, 0x59, 0x00, 0xF4, 0x04, 0xC6, -0x2A, 0xAA, 0xDA, 0x81, 0x83, 0x93, 0x22, 0x30, 0x84, 0x80, 0x5A, 0xB0, 0x29, 0x62, 0xDB, 0xC1, -0xDC, 0x81, 0xDD, 0xC1, 0xE3, 0x81, 0xE1, 0x41, 0xE2, 0x41, 0xF6, 0x30, 0x84, 0x80, 0xFE, 0x70, -0x29, 0x62, 0x83, 0x01, 0xA8, 0xAA, 0x83, 0x52, 0xE2, 0x41, 0x08, 0xF0, 0x62, 0x02, 0x03, 0x5C, -0x4A, 0xAA, 0x4B, 0xEA, 0x4D, 0xEA, 0x70, 0xAA, 0x70, 0xAA, 0x62, 0x08, 0x32, 0x3E, 0x84, 0x80, -0x83, 0x93, 0x80, 0x81, 0x62, 0x08, 0x3A, 0x7E, 0x84, 0x80, 0x80, 0x81, 0x62, 0x08, 0x4A, 0x3E, -0x84, 0x80, 0x80, 0x81, 0x62, 0x08, 0x22, 0xFE, 0x84, 0x80, 0x80, 0x81, 0x62, 0x08, 0x42, 0xFE, -0x84, 0x80, 0x80, 0x81, 0x62, 0x08, 0x2A, 0x3E, 0x84, 0x80, 0x80, 0x81, 0x01, 0xF0, 0xDE, 0x80, -0x5E, 0x88, 0xE2, 0xC7, 0x08, 0xF0, 0x62, 0x02, 0x03, 0x5C, 0x6F, 0x6A, 0x70, 0xAA, 0x4D, 0xEA, -0xE1, 0x41, 0x5A, 0x50, 0xDA, 0x90, 0x08, 0x40, 0x83, 0x52, 0xDF, 0xC0, 0xDA, 0x90, 0x5F, 0xC8, -0xDE, 0x80, 0x5E, 0x88, 0x96, 0x00, 0x8D, 0xDC, 0x7E, 0x6A, 0x7F, 0xAA, 0xA7, 0x2A, 0x15, 0x54, -0xDA, 0xD4, 0x82, 0x6A, 0x0D, 0xDD, 0x85, 0xAA, 0x86, 0xAA, 0x82, 0x6A, 0x87, 0xEA, 0x10, 0x88, -0xDE, 0x80, 0x5E, 0x88, 0x83, 0x96, 0xF8, 0x40, 0x83, 0x52, 0x11, 0xC8, 0xDE, 0x80, 0x5E, 0x88, -0x83, 0x96, 0xF9, 0x80, 0x83, 0x52, 0x0F, 0x48, 0xDE, 0x80, 0x5E, 0x88, 0x83, 0x96, 0xFB, 0xC0, -0x83, 0x52, 0x0E, 0x08, 0xDE, 0x80, 0x5E, 0x88, 0x83, 0x96, 0xF7, 0xC0, 0x83, 0x52, 0x12, 0xC8, -0xDE, 0x80, 0x5E, 0x88, 0x83, 0x96, 0xFA, 0x80, 0x83, 0x52, 0x15, 0x10, 0xA7, 0x2A, 0x08, 0x40, -0x43, 0x62, 0xD0, 0xAA, 0xD0, 0xAA, 0xE1, 0x41, 0x04, 0xF0, 0x61, 0x02, 0x03, 0x5C, 0xB1, 0xEA, -0xB2, 0xEA, 0xB4, 0xEA, 0xD0, 0xAA, 0xD0, 0xAA, 0x5A, 0x94, 0x61, 0x08, 0x74, 0xA2, 0x83, 0x52, -0xDA, 0x1C, 0xBB, 0x6A, 0xBC, 0x2A, 0xBE, 0x6A, 0x36, 0xE3, 0xBE, 0x6A, 0x83, 0x52, 0x0D, 0x9C, -0xC2, 0xAA, 0xC3, 0xEA, 0xC5, 0xEA, 0xD0, 0xAA, 0xD0, 0xAA, 0x01, 0xF0, 0xE0, 0xC0, 0x60, 0xC8, -0xE1, 0xC7, 0x04, 0xF0, 0x61, 0x02, 0x03, 0x5C, 0xCE, 0x2A, 0xCF, 0x6A, 0xB4, 0xEA, 0xD0, 0xAA, -0x83, 0x52, 0x0D, 0x9C, 0xD4, 0xEA, 0xD5, 0x2A, 0xAB, 0x2A, 0x5A, 0xDC, 0xD8, 0xEA, 0xD9, 0x2A, -0xDB, 0x6A, 0xE0, 0x62, 0xDB, 0x6A, 0x83, 0x52, 0x5A, 0x50, 0xD0, 0xAA, 0xD0, 0xAA, 0x00, 0xA8, -0x83, 0x52, 0xDC, 0x81, 0xE2, 0x41, 0x08, 0xF0, 0x62, 0x02, 0x03, 0x5C, 0xE8, 0xEA, 0xE9, 0x2A, -0xEB, 0x6A, 0x35, 0x2B, 0x35, 0x2B, 0x62, 0x08, 0x2A, 0x3E, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, -0x01, 0x7A, 0x03, 0x9D, 0xF4, 0x2A, 0xF5, 0x6A, 0x2A, 0xEB, 0x01, 0xF0, 0xDE, 0x80, 0x5E, 0x88, -0xDC, 0x07, 0x62, 0x08, 0x2A, 0x3E, 0x84, 0x80, 0x80, 0x81, 0x62, 0x08, 0x42, 0xFE, 0x84, 0x80, -0x00, 0x48, 0xDE, 0x80, 0x5E, 0x88, 0x97, 0x40, 0x62, 0x08, 0x22, 0xFE, 0x84, 0x80, 0x00, 0x48, -0xDE, 0x80, 0x5E, 0x88, 0x98, 0xC0, 0x62, 0x08, 0x32, 0x3E, 0x84, 0x80, 0x00, 0x48, 0xDE, 0x80, -0x5E, 0x88, 0x99, 0x00, 0x62, 0x08, 0x3A, 0x7E, 0x84, 0x80, 0x00, 0x48, 0xDE, 0x80, 0x5E, 0x88, -0x9A, 0x00, 0x62, 0x08, 0xDE, 0x80, 0x5E, 0x88, 0x9B, 0x40, 0x62, 0x08, 0x4A, 0x3E, 0x84, 0x80, -0x00, 0x48, 0xDE, 0x80, 0x5E, 0x88, 0x9C, 0x00, 0x95, 0x94, 0x95, 0x94, 0x95, 0x94, 0x95, 0x94, -0x95, 0x50, 0x2A, 0xEB, 0x01, 0xF0, 0xDE, 0x80, 0x5E, 0x88, 0xE2, 0xC7, 0x08, 0xF0, 0x62, 0x02, -0x03, 0x5C, 0x33, 0x2B, 0x34, 0xEB, 0xEB, 0x6A, 0x35, 0x2B, 0x08, 0x40, 0x83, 0x52, 0x5A, 0x91, -0xE2, 0x41, 0x08, 0xF0, 0x62, 0x02, 0x03, 0x5C, 0x3E, 0x6B, 0x3F, 0xAB, 0x41, 0xAB, 0x96, 0x2B, -0x96, 0x2B, 0x5A, 0xD9, 0x44, 0xAB, 0x45, 0xEB, 0x85, 0xEB, 0x14, 0x30, 0x83, 0x96, 0x7B, 0xC2, -0x03, 0x18, 0x4B, 0x2B, 0x4C, 0xEB, 0x4F, 0x6B, 0x83, 0x52, 0x5A, 0xD5, 0x4F, 0x6B, 0x01, 0xF0, -0x83, 0x52, 0xDE, 0x80, 0x62, 0x4A, 0x56, 0x2B, 0x03, 0xD0, 0xDE, 0x4D, 0xFF, 0x7E, 0x03, 0x9D, -0x54, 0xEB, 0x5E, 0x88, 0x13, 0x45, 0x03, 0x9D, 0x5E, 0x6B, 0x5F, 0xAB, 0x6A, 0x2B, 0x62, 0x08, -0x2A, 0x3E, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x01, 0x7A, 0x03, 0x9D, 0x68, 0xEB, 0x69, 0x2B, -0x85, 0xEB, 0x6A, 0x2B, 0x62, 0x08, 0x42, 0xFE, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x83, 0x96, -0x7A, 0xC6, 0x03, 0x9D, 0x74, 0x2B, 0x75, 0x6B, 0x85, 0xEB, 0x83, 0x52, 0x62, 0x08, 0x22, 0xFE, +0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0x64, 0xC0, +0x80, 0x81, 0x84, 0x0A, 0x04, 0xC6, 0x03, 0x59, 0x00, 0xF4, 0x04, 0xC6, 0xF8, 0x29, 0xDB, 0xC1, +0x83, 0x93, 0x20, 0xF0, 0x84, 0x80, 0x5B, 0xF0, 0xF7, 0x61, 0xE1, 0x41, 0xDF, 0x01, 0xE0, 0x01, +0xF6, 0x30, 0x84, 0x80, 0xFE, 0x70, 0xF7, 0x61, 0x83, 0x01, 0x42, 0x6A, 0x83, 0x52, 0xDD, 0x80, +0xDB, 0xD0, 0x5D, 0x88, 0xDC, 0x40, 0x5C, 0x48, 0x96, 0x00, 0x8D, 0xDC, 0x18, 0x6A, 0x19, 0xAA, +0x41, 0x6A, 0x15, 0x54, 0xDB, 0x14, 0x1C, 0xAA, 0x0D, 0xDD, 0x1F, 0x2A, 0x20, 0x2A, 0x1C, 0xAA, +0x21, 0x6A, 0x10, 0x88, 0xDC, 0x40, 0x5C, 0x48, 0x83, 0x96, 0xF8, 0x40, 0x83, 0x52, 0x11, 0xC8, +0xDC, 0x40, 0x5C, 0x48, 0x83, 0x96, 0xF9, 0x80, 0x83, 0x52, 0x0F, 0x48, 0xDC, 0x40, 0x5C, 0x48, +0x83, 0x96, 0xFB, 0xC0, 0x83, 0x52, 0x0E, 0x08, 0xDC, 0x40, 0x5C, 0x48, 0x83, 0x96, 0xF7, 0xC0, +0x83, 0x52, 0x12, 0xC8, 0xDC, 0x40, 0x5C, 0x48, 0x83, 0x96, 0xFA, 0x80, 0x83, 0x52, 0x15, 0x10, +0x41, 0x6A, 0x08, 0x40, 0xD6, 0xE2, 0x83, 0x52, 0x9E, 0x81, 0x46, 0xAA, 0x1E, 0x48, 0x01, 0xBE, +0xDE, 0x80, 0x5E, 0x88, 0x9E, 0x40, 0x71, 0xEA, 0xDF, 0x01, 0x08, 0xF0, 0x5F, 0xC2, 0x03, 0x5C, +0x52, 0xAA, 0x53, 0xEA, 0x55, 0xEA, 0x71, 0xEA, 0x71, 0xEA, 0x5B, 0xD4, 0x5F, 0xC8, 0x0E, 0x62, +0x83, 0x52, 0xDB, 0x5C, 0x5C, 0xEA, 0x5D, 0x2A, 0x5F, 0x6A, 0x36, 0xE3, 0x5F, 0x6A, 0x83, 0x52, +0x0D, 0x9C, 0x63, 0xEA, 0x64, 0xAA, 0x66, 0xEA, 0x71, 0xEA, 0x71, 0xEA, 0x01, 0xF0, 0xDE, 0x80, +0x5E, 0x88, 0xDF, 0x87, 0x08, 0xF0, 0x5F, 0xC2, 0x03, 0x5C, 0x6F, 0x6A, 0x70, 0xAA, 0x55, 0xEA, +0x71, 0xEA, 0x0D, 0x9C, 0x74, 0xEA, 0x75, 0x2A, 0x4C, 0xAA, 0x5B, 0x1C, 0x78, 0xEA, 0x79, 0x2A, +0x7B, 0x6A, 0x80, 0xE2, 0x7B, 0x6A, 0x83, 0x52, 0x5B, 0x90, 0x46, 0xAA, 0x46, 0xAA, 0x00, 0xA8, +0x83, 0x52, 0xD9, 0x81, 0xE0, 0x01, 0x08, 0xF0, 0x60, 0xC2, 0x03, 0x5C, 0x88, 0x6A, 0x89, 0xAA, +0x8B, 0xEA, 0xD5, 0x2A, 0xD5, 0x2A, 0x60, 0xC8, 0x28, 0xFE, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, +0x01, 0x7A, 0x03, 0x9D, 0x94, 0xAA, 0x95, 0xEA, 0xCA, 0xEA, 0x01, 0xF0, 0xDC, 0x40, 0x5C, 0x48, +0xD9, 0x07, 0x60, 0xC8, 0x28, 0xFE, 0x84, 0x80, 0x80, 0x81, 0x60, 0xC8, 0x40, 0xBE, 0x84, 0x80, +0x00, 0x48, 0xDC, 0x40, 0x5C, 0x48, 0x97, 0x40, 0x60, 0xC8, 0x20, 0xBE, 0x84, 0x80, 0x00, 0x48, +0xDC, 0x40, 0x5C, 0x48, 0x98, 0xC0, 0x60, 0xC8, 0x30, 0xFE, 0x84, 0x80, 0x00, 0x48, 0xDC, 0x40, +0x5C, 0x48, 0x99, 0x00, 0x60, 0xC8, 0x38, 0x3E, 0x84, 0x80, 0x00, 0x48, 0xDC, 0x40, 0x5C, 0x48, +0x9A, 0x00, 0x60, 0xC8, 0xDC, 0x40, 0x5C, 0x48, 0x9B, 0x40, 0x60, 0xC8, 0x48, 0xFE, 0x84, 0x80, +0x00, 0x48, 0xDC, 0x40, 0x5C, 0x48, 0x9C, 0x00, 0x95, 0x94, 0x95, 0x94, 0x95, 0x94, 0x95, 0x94, +0x95, 0x50, 0xCA, 0xEA, 0x01, 0xF0, 0xDC, 0x40, 0x5C, 0x48, 0xE0, 0x87, 0x08, 0xF0, 0x60, 0xC2, +0x03, 0x5C, 0xD3, 0x2A, 0xD4, 0xEA, 0x8B, 0xEA, 0xD5, 0x2A, 0x08, 0x40, 0x83, 0x52, 0x95, 0x41, +0x96, 0x41, 0x97, 0x81, 0x98, 0x01, 0x99, 0x41, 0x9A, 0x41, 0x9B, 0x81, 0x9C, 0x41, 0x9E, 0x81, +0xE0, 0x01, 0x08, 0xF0, 0x60, 0xC2, 0x03, 0x5C, 0xE6, 0x2A, 0xE7, 0x6A, 0xE9, 0x2A, 0x0C, 0xAB, +0x0C, 0xAB, 0x60, 0xC8, 0x30, 0xFE, 0x84, 0x80, 0x83, 0x93, 0x80, 0x81, 0x60, 0xC8, 0x38, 0x3E, +0x84, 0x80, 0x80, 0x81, 0x60, 0xC8, 0x48, 0xFE, 0x84, 0x80, 0x80, 0x81, 0x60, 0xC8, 0x20, 0xBE, +0x84, 0x80, 0x80, 0x81, 0x60, 0xC8, 0x40, 0xBE, 0x84, 0x80, 0x80, 0x81, 0x60, 0xC8, 0x28, 0xFE, +0x84, 0x80, 0x80, 0x81, 0x01, 0xF0, 0xDC, 0x40, 0x5C, 0x48, 0xE0, 0x87, 0x08, 0xF0, 0x60, 0xC2, +0x03, 0x5C, 0x0B, 0xEB, 0x0C, 0xAB, 0xE9, 0x2A, 0xDF, 0x01, 0x5B, 0x90, 0xDB, 0xD0, 0xD9, 0x81, +0x5B, 0xD1, 0x83, 0x96, 0xFB, 0x01, 0x83, 0x52, 0x97, 0x81, 0x98, 0x01, 0x99, 0x41, 0x9A, 0x41, +0x9B, 0x81, 0x9C, 0x41, 0xD4, 0x41, 0xD5, 0x81, 0xD2, 0x41, 0xD3, 0x81, 0xD0, 0x01, 0xD1, 0x41, +0xD6, 0x81, 0xD7, 0xC1, 0x83, 0x96, 0xF8, 0x81, 0xF9, 0xC1, 0xFB, 0x01, 0xF7, 0x01, 0xFA, 0xC1, +0xFC, 0xC1, 0xFD, 0x01, 0xF6, 0xC1, 0x83, 0x52, 0xE0, 0x01, 0xDF, 0x01, 0xE1, 0x41, 0x5B, 0x90, +0xDB, 0xD0, 0x5B, 0xD1, 0xD9, 0x81, 0xD8, 0x41, 0xDA, 0x81, 0x08, 0x40, 0x83, 0x52, 0x5B, 0xD1, +0xE0, 0x01, 0x08, 0xF0, 0x60, 0xC2, 0x03, 0x5C, 0x3E, 0x6B, 0x3F, 0xAB, 0x41, 0xAB, 0x96, 0x2B, +0x96, 0x2B, 0x5B, 0x19, 0x44, 0xAB, 0x45, 0xEB, 0x85, 0xEB, 0x14, 0x30, 0x83, 0x96, 0x7B, 0xC2, +0x03, 0x18, 0x4B, 0x2B, 0x4C, 0xEB, 0x4F, 0x6B, 0x83, 0x52, 0x5B, 0x15, 0x4F, 0x6B, 0x01, 0xF0, +0x83, 0x52, 0xDC, 0x40, 0x60, 0x0A, 0x56, 0x2B, 0x03, 0xD0, 0xDC, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, +0x54, 0xEB, 0x5C, 0x48, 0x13, 0x45, 0x03, 0x9D, 0x5E, 0x6B, 0x5F, 0xAB, 0x6A, 0x2B, 0x60, 0xC8, +0x28, 0xFE, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x01, 0x7A, 0x03, 0x9D, 0x68, 0xEB, 0x69, 0x2B, +0x85, 0xEB, 0x6A, 0x2B, 0x60, 0xC8, 0x40, 0xBE, 0x84, 0x80, 0x83, 0x93, 0x00, 0x48, 0x83, 0x96, +0x7A, 0xC6, 0x03, 0x9D, 0x74, 0x2B, 0x75, 0x6B, 0x85, 0xEB, 0x83, 0x52, 0x60, 0xC8, 0x20, 0xBE, 0x84, 0x80, 0x00, 0x48, 0x83, 0x96, 0x77, 0x06, 0x03, 0x9D, 0x7F, 0xEB, 0x80, 0x6B, 0x85, 0xEB, -0x83, 0x52, 0x5A, 0xD5, 0x85, 0xEB, 0x85, 0xEB, 0x85, 0xEB, 0x83, 0x52, 0x5A, 0x1D, 0x89, 0xEB, -0x8A, 0xEB, 0x8C, 0xEB, 0x96, 0x2B, 0x96, 0x2B, 0x01, 0xF0, 0xDE, 0x80, 0x5E, 0x88, 0xE2, 0xC7, -0x08, 0xF0, 0x62, 0x02, 0x03, 0x5C, 0x95, 0x2B, 0x96, 0x2B, 0x41, 0xAB, 0x5A, 0xD9, 0x99, 0x2B, -0x9A, 0x2B, 0xFF, 0x2B, 0xE2, 0x41, 0x08, 0xF0, 0x62, 0x02, 0x03, 0x5C, 0xA0, 0xAB, 0xA1, 0xEB, -0xA3, 0x2B, 0xFF, 0x2B, 0xFF, 0x2B, 0x01, 0xF0, 0xDE, 0x80, 0x62, 0x4A, 0xA9, 0x2B, 0x03, 0xD0, -0xDE, 0x4D, 0xFF, 0x7E, 0x03, 0x9D, 0xA7, 0x6B, 0x5E, 0x88, 0x13, 0x45, 0x03, 0x9D, 0xB1, 0x2B, -0xB2, 0x2B, 0xF3, 0xAB, 0x62, 0x08, 0x2A, 0x3E, 0x84, 0x80, 0x83, 0x93, 0x80, 0x88, 0x03, 0x9D, -0xBA, 0x6B, 0xBB, 0xAB, 0xF3, 0xAB, 0x5A, 0xD9, 0xBE, 0xAB, 0xBF, 0xEB, 0xF3, 0xAB, 0x83, 0x96, -0x78, 0x48, 0x83, 0x52, 0xDE, 0x80, 0x62, 0x08, 0x32, 0x3E, 0x84, 0x80, 0x5E, 0x88, 0x80, 0x40, -0x83, 0x96, 0x79, 0x88, 0x83, 0x52, 0xDE, 0x80, 0x62, 0x08, 0x3A, 0x7E, 0x84, 0x80, 0x5E, 0x88, -0x80, 0x40, 0x83, 0x96, 0x7B, 0xC8, 0x83, 0x52, 0xDE, 0x80, 0x62, 0x08, 0x4A, 0x3E, 0x84, 0x80, -0x5E, 0x88, 0x80, 0x40, 0x83, 0x96, 0x77, 0xC8, 0x83, 0x52, 0xDE, 0x80, 0x62, 0x08, 0x22, 0xFE, -0x84, 0x80, 0x5E, 0x88, 0x80, 0x40, 0x83, 0x96, 0x7A, 0x88, 0x83, 0x52, 0xDE, 0x80, 0x62, 0x08, -0x42, 0xFE, 0x84, 0x80, 0x5E, 0x88, 0x80, 0x40, 0x62, 0x08, 0x2A, 0x3E, 0x84, 0x80, 0x80, 0x81, -0x80, 0xCA, 0x5A, 0xD5, 0xFF, 0x2B, 0x01, 0xF0, 0xDE, 0x80, 0x5E, 0x88, 0xE2, 0xC7, 0x08, 0xF0, -0x62, 0x02, 0x03, 0x5C, 0xFC, 0xAB, 0xFD, 0xEB, 0xA3, 0x2B, 0xFF, 0x2B, 0xFF, 0x2B, 0x08, 0x40 +0x83, 0x52, 0x5B, 0x15, 0x85, 0xEB, 0x85, 0xEB, 0x85, 0xEB, 0x83, 0x52, 0x5B, 0x5D, 0x89, 0xEB, +0x8A, 0xEB, 0x8C, 0xEB, 0x96, 0x2B, 0x96, 0x2B, 0x01, 0xF0, 0xDC, 0x40, 0x5C, 0x48, 0xE0, 0x87, +0x08, 0xF0, 0x60, 0xC2, 0x03, 0x5C, 0x95, 0x2B, 0x96, 0x2B, 0x41, 0xAB, 0x5B, 0x19, 0x99, 0x2B, +0x9A, 0x2B, 0xFF, 0x2B, 0xE0, 0x01, 0x08, 0xF0, 0x60, 0xC2, 0x03, 0x5C, 0xA0, 0xAB, 0xA1, 0xEB, +0xA3, 0x2B, 0xFF, 0x2B, 0xFF, 0x2B, 0x01, 0xF0, 0xDC, 0x40, 0x60, 0x0A, 0xA9, 0x2B, 0x03, 0xD0, +0xDC, 0x0D, 0xFF, 0x7E, 0x03, 0x9D, 0xA7, 0x6B, 0x5C, 0x48, 0x13, 0x45, 0x03, 0x9D, 0xB1, 0x2B, +0xB2, 0x2B, 0xF3, 0xAB, 0x60, 0xC8, 0x28, 0xFE, 0x84, 0x80, 0x83, 0x93, 0x80, 0x88, 0x03, 0x9D, +0xBA, 0x6B, 0xBB, 0xAB, 0xF3, 0xAB, 0x5B, 0x19, 0xBE, 0xAB, 0xBF, 0xEB, 0xF3, 0xAB, 0x83, 0x96, +0x78, 0x48, 0x83, 0x52, 0xDC, 0x40, 0x60, 0xC8, 0x30, 0xFE, 0x84, 0x80, 0x5C, 0x48, 0x80, 0x40, +0x83, 0x96, 0x79, 0x88, 0x83, 0x52, 0xDC, 0x40, 0x60, 0xC8, 0x38, 0x3E, 0x84, 0x80, 0x5C, 0x48, +0x80, 0x40, 0x83, 0x96, 0x7B, 0xC8, 0x83, 0x52, 0xDC, 0x40, 0x60, 0xC8, 0x48, 0xFE, 0x84, 0x80, +0x5C, 0x48, 0x80, 0x40, 0x83, 0x96, 0x77, 0xC8, 0x83, 0x52, 0xDC, 0x40, 0x60, 0xC8, 0x20, 0xBE, +0x84, 0x80, 0x5C, 0x48, 0x80, 0x40, 0x83, 0x96, 0x7A, 0x88, 0x83, 0x52, 0xDC, 0x40, 0x60, 0xC8, +0x40, 0xBE, 0x84, 0x80, 0x5C, 0x48, 0x80, 0x40, 0x60, 0xC8, 0x28, 0xFE, 0x84, 0x80, 0x80, 0x81, +0x80, 0xCA, 0x5B, 0x15, 0xFF, 0x2B, 0x01, 0xF0, 0xDC, 0x40, 0x5C, 0x48, 0xE0, 0x87, 0x08, 0xF0, +0x60, 0xC2, 0x03, 0x5C, 0xFC, 0xAB, 0xFD, 0xEB, 0xA3, 0x2B, 0xFF, 0x2B, 0xFF, 0x2B, 0x08, 0x40 }; diff --git a/loragw_hal/src/loragw_hal.c b/loragw_hal/src/loragw_hal.c index fcbc32a..9f9bf8a 100644 --- a/loragw_hal/src/loragw_hal.c +++ b/loragw_hal/src/loragw_hal.c @@ -70,7 +70,7 @@ const uint32_t rf_tx_upfreq[LGW_RF_CHAIN_NB] = LGW_RF_TX_UPFREQ; #define SX1257_RX_LNA_GAIN 1 /* 1 to 6, 1 highest gain */ #define SX1257_RX_BB_GAIN 12 /* 0 to 15 , 15 highest gain */ #define SX1257_RX_ADC_BW 7 /* 0 to 7, 2:100= 32) { - tx_cnt = 0; - - txs.rf_chain = tx_path; /* alternate between path A and B */ - i = lgw_send(txs); - printf("Packet sent, rf path %d, status %d\n", txs.rf_chain, i); - - tx_path = (tx_path+1) % 2; - } else { + if (loop_cnt%16 == 0) { + /* 32b counter in the payload, big endian */ + txbuf[16] = 0xff & (tx_cnt >> 24); + txbuf[17] = 0xff & (tx_cnt >> 16); + txbuf[18] = 0xff & (tx_cnt >> 8); + txbuf[19] = 0xff & tx_cnt; + i = lgw_send(txs); /* non-blocking scheduling of TX packet */ + j = 0; + printf("Sending packet #%d, rf path %d, return %d\nstatus -> ", tx_cnt, txs.rf_chain, i); + do { + ++j; + wait_ms(100); + lgw_status(TX_STATUS, &status_var); /* get TX status */ + printf("%d:", status_var); + } while ((status_var != TX_EMPTY) && (j < 100)); ++tx_cnt; + printf("\nTX finished\n"); } } @@ -243,7 +259,7 @@ int main(int argc, char **argv) lgw_stop(); } - printf("End of test for loragw_hal.c\n"); + printf("\nEnd of test for loragw_hal.c\n"); return 0; } -- cgit v1.2.3