| | |
| | | dwt_entersleep(); |
| | | |
| | | } |
| | | #define START_FREQ 480 |
| | | #define END_FREQ 483 //LR 远距离通道 |
| | | wg_state_enum wg_state = WG_Lost; |
| | | uint8_t lora_sendbuffer[200]; |
| | | u8 seq_num; |
| | | extern u32 wg_lost_count; |
| | | uint16_t wg_report_freq,wg_report_id; |
| | | uint16_t wg_report_freq = START_FREQ,wg_report_id; |
| | | #define WG_LOST_SWITCH_THRES 5 |
| | | #define WG_LOST_NOUWB_COUNT 60 |
| | | #define DEFAULT_WG_ID 0xFFFF |
| | | u8 lora_jianting_flag = 1; |
| | | |
| | | void LoraReportFreqPoll(void) |
| | | { |
| | | if(wg_lost_count++>WG_LOST_NOUWB_COUNT) //网关60秒没有通讯,就不开启UWB测距lora监听 |
| | | if(wg_lost_count++>3) |
| | | { |
| | | lora_jianting_flag = 0; |
| | | wg_state = WG_Lost; |
| | | wg_report_id = DEFAULT_WG_ID; |
| | | // if(wg_report_freq++>END_FREQ) |
| | | { |
| | | wg_report_freq = START_FREQ; |
| | | } |
| | | if(wg_report_freq==END_FREQ) |
| | | { |
| | | SwitchLoraSettings(wg_report_freq,LR_CHANNEL_SF,g_com_map[LORA_POWER]); |
| | | }else{ |
| | | SwitchLoraSettings(wg_report_freq, REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); |
| | | } |
| | | |
| | | } |
| | | // wg_report_freq = g_com_map[ALARM_DISTANCE2]; |
| | | if(wg_lost_count++>WG_LOST_NOUWB_COUNT) //网关60秒没有通讯,就不开启UWB测距lora监听 |
| | | |
| | | { |
| | | // lora_jianting_flag = 0; |
| | | } else { |
| | | lora_jianting_flag = 1; |
| | | } |
| | | if(wg_state==WG_Lost) |
| | | { |
| | | wg_report_id = DEFAULT_WG_ID; |
| | | wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 |
| | | } else { |
| | | if(wg_lost_count>WG_LOST_SWITCH_THRES) |
| | | { |
| | | wg_state = WG_Lost; |
| | | } |
| | | } |
| | | // if(wg_state==WG_Lost) |
| | | // { |
| | | // wg_report_id = DEFAULT_WG_ID; |
| | | // wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 |
| | | // } else { |
| | | // if(wg_lost_count>WG_LOST_SWITCH_THRES) |
| | | // { |
| | | // wg_state = WG_Lost; |
| | | // } |
| | | // } |
| | | \ |
| | | } |
| | | static u16 checksum; |
| | | u8 gps_state,gps_chafenlingqi,gps_satel_num,gps_signalpower; |
| | |
| | | LoraReportFreqPoll(); |
| | | flag_getwgresp = 0; |
| | | // wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; |
| | | SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); |
| | | // SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); |
| | | if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包 |
| | | { |
| | | heatbeat_count = 0; |
| | |
| | | memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); |
| | | lora_sendbuffer[SEQNUM_IDX] = seq_num++; |
| | | lora_sendbuffer[BAT_IDX] = bat_percent; |
| | | // lora_sendbuffer[BAT_IDX] = recnum[0]; |
| | | lora_sendbuffer[BAT_IDX] = wg_report_freq-400; |
| | | // lora_sendbuffer[SEQNUM_IDX] = recnum[1]; |
| | | lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1; |
| | | #ifdef USE_GPS |