| | |
| | | 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; |
| | |
| | | |
| | | void LoraReportFreqPoll(void) |
| | | { |
| | | if(wg_lost_count++>3) |
| | | if(wg_lost_count++>WG_LOST_SWITCH_THRES) |
| | | { |
| | | wg_state = WG_Lost; |
| | | wg_report_id = DEFAULT_WG_ID; |
| | | // if(wg_report_freq++>END_FREQ) |
| | | 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; |
| | | // lora_jianting_flag = 0; |
| | | } else { |
| | | lora_jianting_flag = 1; |
| | | } |
| | |
| | | printf("气压值:%d",intheight); |
| | | #endif |
| | | |
| | | TagListUpdate(); |
| | | |
| | | |
| | | LoraReportFreqPoll(); |
| | | flag_getwgresp = 0; |
| | | 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]); |
| | | } |
| | | if(wg_state == WG_Lost) |
| | | { |
| | | if(wg_report_freq==END_FREQ) |
| | | TagListUpdate(); |
| | | }else{ |
| | | TagListUpdate(); |
| | | } |
| | | // wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; |
| | | // SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); |
| | | if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包 |
| | |
| | | { |
| | | Lora_send_flag=0; |
| | | #ifdef GROUPID_SWITCH |
| | | if(lora_jianting_flag) |
| | | { |
| | | if(++group_id>2) |
| | | { |
| | | group_id = 1; |
| | | } |
| | | t22[ti++] = group_id; |
| | | if(ti>=20) |
| | | ti=0; |
| | | group_min_dist[group_id] = 0xffff; |
| | | Radio.Standby(); |
| | | SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); |
| | | Radio.Rx(0); |
| | | } |
| | | if(rec_secdelay>0) |
| | | { |
| | | rec_secdelay--; |
| | | if(lora_jianting_flag) |
| | | { |
| | | if(++group_id>GROUP_NUM) |
| | | { |
| | | group_id = 1; |
| | | } |
| | | t22[ti++] = group_id; |
| | | if(ti>=20) |
| | | ti=0; |
| | | group_min_dist[group_id] = 0xffff; |
| | | Radio.Standby(); |
| | | SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); |
| | | Radio.Rx(0); |
| | | } |
| | | return; |
| | | } |
| | | // //找3个小组中最近距离最大的小组,上传报文后切换到这个小组,因为上传报文会时间占用。 |
| | |
| | | // group_maxdist_index = group_min_dist[2]>group_min_dist[3]?2:3; //取 2和3 最大值 |
| | | // group_mindist_index = group_min_dist[1]<group_min_dist[3]?1:3;//取 1和3 最小值 |
| | | // } |
| | | group_id = 1; |
| | | // group_id = 1; |
| | | // group_id = group_maxdist_index; |
| | | #endif |
| | | t22[ti++] = group_id; |