From 38c1a38c08b6dfbc4632def361ddf8398a9f2107 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期日, 20 四月 2025 18:38:09 +0800 Subject: [PATCH] 修改GPS4G灯充电灯闪灯逻辑,修改发送逻辑,处理4G立即关闭无法发送心跳包逻辑,完成3连击单击长按按钮逻辑,初步测试成功版本 --- keil/include/src/gps.c | 85 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 85 insertions(+), 0 deletions(-) diff --git a/keil/include/src/gps.c b/keil/include/src/gps.c index 64a424d..0b74400 100644 --- a/keil/include/src/gps.c +++ b/keil/include/src/gps.c @@ -5,11 +5,27 @@ #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,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) { @@ -115,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