wanghechen 8 mesi fa
parent
commit
726d48b73b

+ 6 - 0
components/LED/LED.c

@@ -109,4 +109,10 @@ void beep_blink(uint16_t ms, uint16_t count)
         // beep_close();
         // esp_rom_delay_us(ms*1000);//阻塞延时
     }
+}
+void beep_start_ms(uint16_t ms)
+{
+    beep_open();
+    vTaskDelay(ms / portTICK_PERIOD_MS);
+    beep_close();
 }

+ 1 - 0
components/LED/include/LED.h

@@ -53,4 +53,5 @@ void beep_init(void);
 void led_set(uint8_t led_index,uint8_t led_status);
 
 void beep_blink(uint16_t ms,uint16_t count);
+void beep_start_ms(uint16_t ms);
 #endif/*_LED_H_*/

+ 1 - 0
components/button/include/user_button.h

@@ -110,6 +110,7 @@ typedef enum
     
     POWER_ON_INTO_STATUS_CHANGE_VALUE = 0xF6,//切换开关机
     POWER_ON_INTO_DIS_RIGHT      = 0xF7,
+    POWER_ON_INTO_SETTING_VALUE_LORA_0 = 0xF8,//设置Lora电源为0
     
 }KEY_VALUE_t;
 

+ 12 - 0
components/button/user_button.c

@@ -399,6 +399,18 @@ static void power_long_press_hold_cb(void *arg, void *usr_data)
 
     switch ((int)hold_cnt)
     {
+    // case 1:
+    // {
+    //     if (is_setting)
+    //     {
+    //         button_info = POWER_ON_INTO_SETTING_VALUE_LORA_0;
+    //         if (xQueueSend(button_Data_queue, &button_info, 0) != true)
+    //         {
+    //             ESP_LOGE(LOG_TAG, "queue send is fail");
+    //             return;
+    //         }
+    //     }
+    // }
     case 2: // 设置模式,长按3s进入
         if (is_setting && is_reset_net)
         {

+ 8 - 6
main/ulp_riscv_adc_example_main.c

@@ -82,7 +82,6 @@ bool read_charge_is_running()
 
 static void light_sleep_task(void *args)
 {
-
     // if(Machine_info.eflagID != 0xff)  //如果未分配ID
     // {
     //  esp_light_sleep_start();  //进入休眠
@@ -94,9 +93,9 @@ static void light_sleep_task(void *args)
     int lev_2 = 0;
     while (true)
     {
-        if (is_key_press() || !is_epd_ok || !is_epd_ok_cplt|| !is_change_chanel_ok)
+        if (is_key_press() || !is_epd_ok || !is_epd_ok_cplt || !is_change_chanel_ok)
         {
-            ESP_LOGI(LOG_TAG, "%d %d %d %dnot sleep 1s continue", is_key_press(), !is_epd_ok, !is_epd_ok_cplt,!is_change_chanel_ok);
+            ESP_LOGI(LOG_TAG, "%d %d %d %dnot sleep 1s continue", is_key_press(), !is_epd_ok, !is_epd_ok_cplt, !is_change_chanel_ok);
             vTaskDelay(1000 / portTICK_PERIOD_MS);
             continue;
         }
@@ -131,7 +130,7 @@ static void light_sleep_task(void *args)
 
                 gpio_reset_pin(4);
                 int ext_wakeup_pin_0 = 4;
-                printf("Enabling EXT0 wakeup on pin GPIO%d\n", ext_wakeup_pin_0);
+                // printf("Enabling EXT0 wakeup on pin GPIO%d\n", ext_wakeup_pin_0);
                 ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(ext_wakeup_pin_0, 0));
 
                 // Configure pullup/downs via RTCIO to tie wakeup pins to inactive level during deepsleep.
@@ -161,7 +160,7 @@ static void light_sleep_task(void *args)
                 gpio_reset_pin(2);
                 const int ext_wakeup_pin_1 = 2;
                 const uint64_t ext_wakeup_pin_1_mask = 1ULL << ext_wakeup_pin_1;
-                printf("Enabling EXT1 wakeup on pins GPIO %d\r\n", ext_wakeup_pin_1);
+                // printf("Enabling EXT1 wakeup on pins GPIO %d\r\n", ext_wakeup_pin_1);
                 ESP_ERROR_CHECK(esp_sleep_enable_ext1_wakeup(ext_wakeup_pin_1_mask, ESP_EXT1_WAKEUP_ALL_LOW));
 
 #endif
@@ -252,6 +251,7 @@ static void light_sleep_task(void *args)
                 if (!is_adv)
                 {
                     getRtcTime(&Machine_info);
+                    printRtcTime("-> sleep");
                     ESP_LOGW(LOG_TAG, "-> sleep\r\n");
                     uart_wait_tx_idle_polling(1);                           // 抛出剩余串口1消息
                     uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM); // 抛出剩余串口0消息
@@ -283,6 +283,7 @@ static void light_sleep_task(void *args)
             terminal_send_data(); // 添加数据队列
         }
         ESP_LOGW(LOG_TAG, "wakeup reson = %d\r\n", reson);
+        printRtcTime("wakeup ");
         switch (reson)
         {
         case ESP_SLEEP_WAKEUP_TIMER:
@@ -316,7 +317,6 @@ static void light_sleep_task(void *args)
                         // f_send_test();
                         f_send_get_time();
                         f_send_get_chart_data();
-                        // f_send_lora_rssi(Machine_info.rssi);
                         f_send_battary_vaule(Machine_info.batt_precent);
                     }
 
@@ -528,11 +528,13 @@ static void light_sleep_task(void *args)
  **********************************************************************************/
 void app_main(void)
 {
+    printRtcTime("app_main before");
     app_init();   // 用户任务相关
     sleep_init(); // 使能协处理器相关
                   // 创建休眠任务
     xTaskCreate(light_sleep_task, "light_sleep_task", 4096 * 5, NULL, 1, NULL);
 
+    printRtcTime("app_main after");
     printf("Machine_info.power_status = %d\r\n", Machine_info.power_status);
 
     if (Machine_info.power_status == 0) // 关机状态

+ 17 - 6
main/user_time.c

@@ -36,7 +36,18 @@ void setRtcTime(unsigned int year, unsigned int month, unsigned int day,
     struct timeval tv = {.tv_sec = timestamp, .tv_usec = 0};
     settimeofday(&tv, NULL);
 }
+void printRtcTime(char * data)
+{
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+    // 使用 localtime 函数将时间戳转换为本地时间
+    struct tm *tm_info = localtime(&tv.tv_sec);
 
+    // 打印本地时间
+    printf("%s print Time: %04d-%02d-%02d %02d:%02d:%02d\n",data,
+           tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday,
+           tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);
+}
 void getRtcTime(Machine_info_t *info)
 {
     // 获取 RTC 时间
@@ -49,10 +60,10 @@ void getRtcTime(Machine_info_t *info)
     // 使用 localtime 函数将时间戳转换为本地时间
     struct tm *tm_info = localtime(&tv.tv_sec);
 
-    // 打印本地时间
-    printf("Local Time: %04d-%02d-%02d %02d:%02d:%02d\n",
-           tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday,
-           tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);
+    // // 打印本地时间
+    // printf("Local Time: %04d-%02d-%02d %02d:%02d:%02d\n",
+    //        tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday,
+    //        tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);
 
     info->year = tm_info->tm_year + 1900;
     info->month = tm_info->tm_mon + 1;
@@ -61,8 +72,8 @@ void getRtcTime(Machine_info_t *info)
     info->min = tm_info->tm_min;
     info->sec = tm_info->tm_sec;
 
-    printf("free_heap_size:%ld \r\n free_internal_heap_size:%ld \r\n minimum_free_heap_size:%ld\r\n",
-           esp_get_free_heap_size(), esp_get_free_internal_heap_size(), esp_get_minimum_free_heap_size());
+    // printf("free_heap_size:%ld \r\n free_internal_heap_size:%ld \r\n minimum_free_heap_size:%ld\r\n",
+    //        esp_get_free_heap_size(), esp_get_free_internal_heap_size(), esp_get_minimum_free_heap_size());
 }
 
 bool is_sync_time(Machine_info_t *info)

+ 1 - 1
main/user_time.h

@@ -21,7 +21,7 @@ bool is_sync_time(Machine_info_t *info);
 
 long long calculate_minutes_difference(int year1, int month1, int day1, int hour1, int minute1, int second1,
                                        int year2, int month2, int day2, int hour2, int minute2, int second2);
-
+void printRtcTime(char * data);
 // void timestampToStr(const char* timestamp_str, char* output_buffer, int size, int timezone_offset);
 // char* extractTimestamp(const char* input_str);
 

+ 1 - 1
main/yc_protocol.c

@@ -114,7 +114,7 @@ void reset_default(bool is_dis, uint8_t power_status)
  */
 void print_systenInfo(void)
 {
-    printf("============OTA2=====================\r\n");
+    printf("=================================\r\n");
     printf("=======%s======\r\n", "2024.1.9 [18时] burn"); // 打印烧录时间
     printf("=============%s===========\r\n", __TIME__);
     printf("=================================\r\n");

+ 12 - 5
main/yc_terminal.c

@@ -535,7 +535,7 @@ if(tmp_paint_buf!=NULL)
                 if (read_battery_voltage() < 10) // 判断电压小于10% 不让开机
                 {
 
-                    printf("start power off\r\n");
+                    printf("start power off// 判断电压小于10 不让开机\r\n");
                     uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);
 
 #if 1 // 电源按键
@@ -573,10 +573,13 @@ if(tmp_paint_buf!=NULL)
                     if (Machine_info.power_status == 0)
                     {
                         Machine_info.power_status = 1; // 开机
-                        lora_set_power_level(1);       // 打开lora电源
+                        gpio_set_level(LORA_TXD_PIN, 0);
+                        gpio_set_level(LORA_RXD_PIN, 0);
+                        lora_set_power_level(1); // 打开lora电源
+
+                        beep_start_ms(1000);
                         // 恢复串口i功能
                         uart_sleep_out_config();
-                        beep_blink(1000, 1);
 
                         Machine_info.left_current_Quick_refresh_time = 5;
                         vTaskDelay(1000 / portTICK_PERIOD_MS);
@@ -597,7 +600,7 @@ if(tmp_paint_buf!=NULL)
             else
             {
 
-                printf("start power off\r\n");
+                printf("0 != gpio_get_level(4)\r\n");
                 uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);
 
 #if 1 // 电源按键
@@ -644,7 +647,7 @@ if(tmp_paint_buf!=NULL)
 
             if (Machine_info.power_status == 0)
             {
-                ESP_LOGW(LOG_TAG,"left key press power off\r\n");
+                ESP_LOGW(LOG_TAG, "left key press power off\r\n");
                 uart_wait_tx_idle_polling(CONFIG_ESP_CONSOLE_UART_NUM);
 
 #if 1
@@ -1106,6 +1109,10 @@ static void button_task(void *arg)
                     esp_ble_ota();
                 }
 
+                // if (button_info == POWER_ON_INTO_SETTING_VALUE_LORA_0)
+                // {
+                //     lora_set_power_level(0);
+                // }
                 if (button_info == POWER_ON_INTO_RESET_VALUE) // 进入配网模式
                 {
                     is_change_chanel_ok = false;