|
35 | 35 | */ |
36 | 36 |
|
37 | 37 | #include "lr1110_modem_helper.h" |
38 | | -#include "lr1110_modem_lorawan.h" |
39 | 38 |
|
40 | 39 | /* |
41 | 40 | * ----------------------------------------------------------------------------- |
@@ -229,6 +228,75 @@ lr1110_modem_helper_status_t lr1110_modem_helper_gnss_get_event_type( const uint |
229 | 228 | return status; |
230 | 229 | } |
231 | 230 |
|
| 231 | +lr1110_modem_helper_status_t lr1110_modem_helper_get_event_data( const void* context, |
| 232 | + lr1110_modem_event_t* modem_event ) |
| 233 | +{ |
| 234 | + lr1110_modem_helper_status_t status = LR1110_MODEM_HELPER_STATUS_ERROR; |
| 235 | + lr1110_modem_response_code_t modem_response_code = LR1110_MODEM_RESPONSE_CODE_OK; |
| 236 | + lr1110_modem_event_fields_t event_fields; |
| 237 | + |
| 238 | + modem_response_code = lr1110_modem_get_event( context, &event_fields ); |
| 239 | + |
| 240 | + if( modem_response_code == LR1110_MODEM_RESPONSE_CODE_OK ) |
| 241 | + { |
| 242 | + status = LR1110_MODEM_HELPER_STATUS_OK; |
| 243 | + modem_event->event_type = event_fields.event_type; |
| 244 | + modem_event->missed_events = event_fields.missed_events_count; |
| 245 | + |
| 246 | + switch( modem_event->event_type ) |
| 247 | + { |
| 248 | + case LR1110_MODEM_LORAWAN_EVENT_RESET: |
| 249 | + modem_event->event_data.reset.count = ( ( uint16_t ) event_fields.buffer[0] << 8 ) + event_fields.buffer[1]; |
| 250 | + break; |
| 251 | + case LR1110_MODEM_LORAWAN_EVENT_TX_DONE: |
| 252 | + modem_event->event_data.txdone.status = ( lr1110_modem_tx_done_event_t ) event_fields.buffer[0]; |
| 253 | + break; |
| 254 | + case LR1110_MODEM_LORAWAN_EVENT_DOWN_DATA: |
| 255 | + modem_event->event_data.downdata.rssi = ( ( int8_t ) event_fields.buffer[0] ) - 64; |
| 256 | + modem_event->event_data.downdata.snr = ( ( ( int8_t ) event_fields.buffer[1] ) >> 2 ); |
| 257 | + modem_event->event_data.downdata.flag = ( lr1110_modem_down_data_flag_t ) event_fields.buffer[2]; |
| 258 | + modem_event->event_data.downdata.fport = event_fields.buffer[3]; |
| 259 | + modem_event->event_data.downdata.length = |
| 260 | + event_fields.buffer_len - 4; // remove rssi/snr/flag and fport from buffer |
| 261 | + for( uint8_t i = 0; i < modem_event->event_data.downdata.length; i++ ) |
| 262 | + { |
| 263 | + modem_event->event_data.downdata.data[i] = event_fields.buffer[i + 4]; |
| 264 | + } |
| 265 | + break; |
| 266 | + case LR1110_MODEM_LORAWAN_EVENT_UPLOAD_DONE: |
| 267 | + modem_event->event_data.upload.status = ( lr1110_modem_upload_event_t ) event_fields.buffer[0]; |
| 268 | + break; |
| 269 | + case LR1110_MODEM_LORAWAN_EVENT_SET_CONF: |
| 270 | + modem_event->event_data.setconf.tag = ( lr1110_modem_event_setconf_tag_t ) event_fields.buffer[0]; |
| 271 | + break; |
| 272 | + case LR1110_MODEM_LORAWAN_EVENT_MUTE: |
| 273 | + modem_event->event_data.mute.status = ( lr1110_modem_mute_t ) event_fields.buffer[0]; |
| 274 | + break; |
| 275 | + case LR1110_MODEM_LORAWAN_EVENT_WIFI_SCAN_DONE: |
| 276 | + modem_event->event_data.wifi.len = event_fields.buffer_len; |
| 277 | + for( uint16_t i = 0; i < event_fields.buffer_len; i++ ) |
| 278 | + { |
| 279 | + modem_event->event_data.wifi.buffer[i] = event_fields.buffer[i]; |
| 280 | + } |
| 281 | + break; |
| 282 | + case LR1110_MODEM_LORAWAN_EVENT_GNSS_SCAN_DONE: |
| 283 | + modem_event->event_data.gnss.len = event_fields.buffer_len; |
| 284 | + for( uint16_t i = 0; i < event_fields.buffer_len; i++ ) |
| 285 | + { |
| 286 | + modem_event->event_data.gnss.nav_message[i] = event_fields.buffer[i]; |
| 287 | + } |
| 288 | + break; |
| 289 | + case LR1110_MODEM_LORAWAN_EVENT_TIME_UPDATED_ALC_SYNC: |
| 290 | + modem_event->event_data.time.status = ( lr1110_modem_alc_sync_state_t ) event_fields.buffer[0]; |
| 291 | + break; |
| 292 | + default: |
| 293 | + break; |
| 294 | + } |
| 295 | + } |
| 296 | + |
| 297 | + return status; |
| 298 | +} |
| 299 | + |
232 | 300 | /* |
233 | 301 | * ----------------------------------------------------------------------------- |
234 | 302 | * --- PRIVATE FUNCTIONS DEFINITION -------------------------------------------- |
|
0 commit comments