From fadf2a684268a36b7d3069f0e4e932147416c481 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期一, 21 四月 2025 18:23:57 +0800 Subject: [PATCH] 手环V1.16版本,修改gps闪灯状态e后为1时不用状态机控制,修改5s后关闭4g和gps逻辑,初步测试成功,但OTA中途会重连导致升级不了 --- keil/include/src/gps.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 92 insertions(+), 4 deletions(-) diff --git a/keil/include/src/gps.c b/keil/include/src/gps.c index 5093e76..0b74400 100644 --- a/keil/include/src/gps.c +++ b/keil/include/src/gps.c @@ -1,15 +1,31 @@ #include "board.h" #include "HIDO_Util.h" #include "global_param.h" -#define GPS_OPEN_TIME_OUT 48 //1分钟开启 +#define GPS_OPEN_TIME_OUT 120 //1分钟开启 #define GPS_RESTART_TIME1 480 //10分钟 #define GPS_RESTART_TIME2 48 //1分钟 #define GPS_RESTART_TIME3 30 //30s + +#define GPS_VALID_LED_WAIT_COUNT 1 +#define GPS_INVALID_LED_WAIT_COUNT 5 +#define AIR_CONNECT_LED_WAIT_COUNT 5 extern uint16_t gps_wait_count,g_com_map[COM_MAP_SIZE]; extern uint8_t flag_first_TCPconnect; extern uint16_t gps_wait_count2; uint16_t g_spsum,g_snum,ave_sp; -uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1,gps_open_flag; +uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1,gps_open_flag,gps_first_flag=1; +extern uint8_t gps_success_state,air780_success_state,power_low_flag,state5V_prase_flag,green_charge_state,enbale_blink_flag,active_flag; +typedef enum { + STATE_IDLE, + STATE_VALID, + STATE_INVALID +} GPSState; +typedef enum { + CONNECT, + DISCONNECT, +} LED4GState; +GPSState GPS_state=STATE_IDLE; +LED4GState LED_4g_state=DISCONNECT; void GPS_Poll(void) { @@ -77,12 +93,15 @@ } void Gps_change(void) { -if(gps_open_flag){ + if(gps_open_flag){ if(gps_need_data_flag) { gps_power_state = 1; //打开GPS电源 gps_wait_count++; - if(gps_wait_count>=g_com_map[SEND_4G_SECOND]) { //超时切换工作状态 + if(gps_wait_count>34) + gps_first_flag=0;//新加入第一次开启 + if(gps_wait_count>=GPS_OPEN_TIME_OUT) { //超时切换工作状态 + gps_timeout_flag=1;//串口添加改变timeout逻辑 gps_wait_count=0; gps_need_data_flag=0;//切换为关闭模式 @@ -112,7 +131,76 @@ } update_led_power_state(); } +void POWER_LED_Task(void) +{ +if(enbale_blink_flag) + { + green_charge_state=0; + charge_red_on(); + } + charge_state_change();//充电状态判断 + if(enbale_blink_flag) + { + delay_us(5000); + green_charge_state=0; + charge_red_off(); + } +} + uint8_t wltag_gps_timer,wltag_4g_timer;; +void GPS_LED_Task(void) +{ + if(state5V_prase_flag||power_low_flag||!gps_power_state) + { + GPS_state=STATE_IDLE; + } +switch(GPS_state){ + case STATE_INVALID: + if(wltag_gps_timer++>=GPS_INVALID_LED_WAIT_COUNT) + { wltag_gps_timer=0; + blink_led(&gps_success_state); + } + break; + case STATE_VALID: + if(wltag_gps_timer++>=GPS_VALID_LED_WAIT_COUNT) + { wltag_gps_timer=0; + blink_led(&gps_success_state); + } + break; + case STATE_IDLE: + gps_led_off(); + wltag_gps_timer=0; + break; + } +} +void LED_4G_task(void) +{ + +if(Internet_IsIPReady() == HIDO_TRUE&&!power_low_flag&&active_flag) +{ +LED_4g_state=CONNECT; +}else{ +LED_4g_state=DISCONNECT; +} +switch(LED_4g_state){ + case CONNECT: + if(wltag_4g_timer++>=AIR_CONNECT_LED_WAIT_COUNT) + { wltag_4g_timer=0; + blink_led(&air780_success_state); + } + break; + case DISCONNECT: + air780_led_off(); + wltag_4g_timer=0; + break; + } +} +void LED_Task(void) +{ +POWER_LED_Task(); +LED_4G_task(); +GPS_LED_Task(); +} HIDO_INT32 GPS_ParseGSV(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len) { HIDO_DataStruct spower[4]; -- Gitblit v1.9.3