Merge #1379 into sdk602patch0911 from refs/changes/1379/head
author彭磊 <1624952103@qq.com>
Sat, 9 Nov 2024 08:58:08 +0000 (08:58 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Sat, 9 Nov 2024 08:58:08 +0000 (08:58 +0000)
修复手表重启跳电BUG

* refs/changes/1379/head: (1 commits squashed)

  - 修复手表重启跳电BUG

Signed-off-by: aliyun6865282430 <1624952103@qq.com>
Reviewed-by: Caisking <3449750381@qq.com>
Reviewed-by: 罗正 <1732036298@qq.com>
Reviewed-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Reviewed-by: aliyun6865282430 <1624952103@qq.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1379
code/sdk/application/battery/service/battery_driver.cpp
code/sdk/application/battery/service/battery_service.cpp

index c2b20aa..0ae388b 100644 (file)
@@ -475,8 +475,23 @@ static int battery_get_percent_by_voltage(float voltage)
     if (voltage <= batteryservice_VOLTAGE_MIN)
         percent = 0;
 
-    if (voltage >= batteryservice_VOLTAGE_MAX)
-        percent = 100;
+    if (voltage >= batteryservice_VOLTAGE_MAX) //电压大于4.3
+    {
+        if(get_charge_stat() && history_percent < 100) //充电中则均匀增加
+        {
+            history_percent++;
+            percent = history_percent;
+        }
+        else if(history_percent) //未充电且history_percent不为0 则保持不变 
+        {
+            percent = history_percent;
+        }
+        else
+        {
+            percent = 100;
+        }
+    }
+
 
     return percent;
 }
@@ -587,9 +602,18 @@ static bool adc_get_sample_result(float *voltage, uint8_t channel)
         get_avg_voltage(voltage);
         if(percernt_installized)
         {
-            cur_percent = battery_get_percent_by_voltage(*voltage);
+             //历史电量不为0 则开机第一个电量为历史电量
+            if(history_percent && !cur_percent && *voltage > batteryservice_VOLTAGE_MIN)
+            {
+                cur_percent = history_percent;
+            }
+            else
+            {
+                cur_percent = battery_get_percent_by_voltage(*voltage);
+            }
+
         }
-        // PRINT("cur_percent : %d , history_percent : %d \n",cur_percent,history_percent);
+        // PRINT("cur_percent : %d , history_percent : %d  *voltage : %f\n",cur_percent,history_percent,*voltage);
     }
     else if (channel == 0){
         *voltage = adc_trans_systick_to_battery_ntc(stick);
index d169d10..47a43d0 100644 (file)
@@ -394,7 +394,6 @@ static void battery_check_task(void *arg)
             charger_plug_event_ui_sendmsg_toUI(0);
         }else if(mail.comm.event == BATTERY_CMD_FIRST_CHECK)
         {
-            battery_check_voltage();
             battery_check_chargement();
 
         }else if(mail.comm.event == BATTERY_CMD_SAVE_PERCENT)
@@ -561,6 +560,7 @@ void uapi_battery_create_queue(void)
 #define BATTERY_TASK_SIZE 0x1C00
 errcode_t uapi_battery_init(void)
 {
+    battery_check_voltage();
     battery_percent_init(battery_get_percent_onstart()); //先读历史电量
 
     app_task_definition_t taskcfg={0};