添加电池调试信息
authorSnickerSun <snickersun@163.com>
Sat, 30 Mar 2024 14:44:51 +0000 (22:44 +0800)
committerSnickerSun <snickersun@163.com>
Sat, 30 Mar 2024 14:44:51 +0000 (22:44 +0800)
code/sdk/application/battery/service/battery_driver.cpp
code/sdk/application/battery/service/battery_service.cpp
code/sdk/application/battery/service/battery_service.h
code/sdk/application/battery/test/battery_at_cmd.cpp
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmagnetic.cpp

index 16b0ca3..12649d5 100644 (file)
@@ -514,7 +514,13 @@ void enable_02c(void)
     // PRINT("GPIO_PIN_ENABLE_CHARGE_0_2C uapi_gpio_get_output_val %d\r\n",level);
 }
 
-
+uint8_t get_02c_value(void)
+{
+    if (GPIO_LEVEL_LOW ==  uapi_gpio_get_output_val(GPIO_PIN_ENABLE_CHARGE_0_2C))
+        return 0;
+    else 
+        return 1;
+}
 void disable_02c(void)
 {
     // PRINT("disable_charge_02c\r\n");
index 3a9cbc6..62c22af 100644 (file)
@@ -75,7 +75,7 @@ static unsigned long g_app_queue;
 
 #define BATTERY_LOWPOWER_ALARM_POWERLEVEL 15
 #define BATTERY_LOWPOWER_ALARM_SHUTDOWNLEVEL 5
-#define BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE 50   //停止充电温度
+#define BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE (50.0f)   //停止充电温度
 
 #define BATTERY_VOLTAGE_DEBOUNCE 2
 
@@ -146,6 +146,13 @@ static void battery_check_voltage(void)
     batteryservice_get_voltage_by_channel(&current_battery_info->pcb_ntc_temp,ADC_CHANNEL_PCB_TEMP);
     uapi_tcxo_delay_ms(20);    
 }
+
+static int g_chargestatus =0;
+
+int get_charge_current_status(void)
+{
+    return g_chargestatus;
+}
 /**
  * 充电中则使能充电IC,并根据电量确认充电电流.
  * 未插入充电线,则停止充电IC
@@ -155,35 +162,56 @@ static void battery_check_chargement(void)
 {
     float voltage;
     float bat_temp;
+    //获取电量
     uint8_t percent = batteryservice_get_voltage(&voltage);
+    //获取电池温度
     batteryservice_get_battery_temp(&bat_temp);
       
-    if(uapi_get_charger_plug_status()){
+    if(get_charge_stat() == 1){
         
+        PRINT("charging enable charge !  bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE);
         /**
          * 如果充电过程中,电池温度>=BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE,则停止充电
          * 否则按正常流程充电
         */
+
         if(bat_temp >= BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE)
         {
+            PRINT("battery temp is too high : %.2f >= %.2f, disable charge!\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE);
             disable_charge();
+            g_chargestatus = 0;
         }else{
-            enable_charge(); 
+
             /**
              * check and control charge current event
              *  larger than 90%, use low charge current
              *  other stat , use high charge current
              * pay attention to : debounce 
             */
-            if(percent >=90) enable_02c();
-            else disable_02c();
-            PRINT("%d\r\n",BATTERY_VOLTAGE_DEBOUNCE);
+
+            if(percent >=90)
+            {
+                PRINT("%d >= 90 percent , enable low current charge !\r\n",percent);
+                enable_charge(); 
+                enable_02c();
+                g_chargestatus = 1;
+            }
+            else 
+            {
+                PRINT("%d < 90 percent , enable normal current charge !\r\n",percent);
+                enable_charge(); 
+                disable_02c();
+                g_chargestatus = 2;
+            }
+            // PRINT("%d\r\n",BATTERY_VOLTAGE_DEBOUNCE);
         }
 
     }else{
         //冗余操作,理论上不必在此关闭充电IC
-        disable_charge();   
+        PRINT("charger not plugged ,disable charge !\r\n");
 
+        disable_charge();   
+        g_chargestatus = 0;
         /**
          * if no in_charge then : 
          * check and report low power event
@@ -210,7 +238,7 @@ static void battery_check_task(void *arg)
     
 
     /**开机初始化电量及充电状态 Start*/
-    if(uapi_get_charger_plug_status())
+    if(get_charge_stat() == 1)
     {   //如果充电线插入状态,为了获取准确电池数据,需要先停止充电一秒,再继续获取电量。
         disable_charge();
         uapi_tcxo_delay_ms(1000);
index 21a52e9..028a1a3 100644 (file)
@@ -32,6 +32,9 @@ void disable_02c(void);
 void enable_charge(void);
 void disable_charge(void);
 
+//0 停止充电 , 1 低电流充电, 2 正常电流充电
+int get_charge_current_status(void);
+uint8_t get_02c_value(void);
 #ifdef __cplusplus
 #if __cplusplus
 }
index a32b5da..e7cb6df 100644 (file)
@@ -64,6 +64,9 @@ static uint32_t battery_do_test(uint8_t *para, uint32_t paraLen, char *strCommon
         return ERRCODE_FAIL;
     }
     char *mode = (char*)argv[0];
+
+    PRINT("BATTERYTEST ATCMD %s\n",mode);
+
     if (strcmp(mode, "enable") == 0) {
         enable_charge();
     } else if (strcmp(mode, "disable") == 0) {
index 50472e9..c901d7e 100644 (file)
@@ -4,7 +4,11 @@
 #include "producttest/include/testmagnetic.h"
 #include "mag_service.h"
 #include "cmsis_os2.h"
-
+// #define TEST_BATTERY
+#ifdef TEST_BATTERY
+#include "battery_service.h"
+#include "battery_hal.h"
+#endif
 namespace OHOS
 {
 
@@ -66,10 +70,31 @@ namespace OHOS
          testMagicView::GetInstance()->set_data();
     }
     uint8_t MG_TEST_FALG=0;
+    char buf[128]={0};
     void testMagicView ::set_data(void)
     {
-        
-        MG_TEST_FALG++;
+#ifdef TEST_BATTERY
+
+        float battery_voltage ;
+      
+        uint8_t charge_stat = get_charge_stat();
+        int charge_current_status = get_charge_current_status();
+        float battery_temp;
+        battery_get_battery_temp(&battery_temp);
+        uint8_t  percent = battery_get_voltage(&battery_voltage);
+        uint8_t _02c_vaule = get_02c_value();
+        memset(buf,0,sizeof(buf));
+        sprintf(buf,"V:%d,P:%d,T:%d,CS:%d,S:%d,2c:%d",
+            (int)(100.0f*battery_voltage),
+            percent,
+            (int)(100*battery_temp),
+            charge_current_status,
+            charge_stat,
+            _02c_vaule);
+        x->SetText(buf);
+        RootView::GetInstance()->Invalidate();
+#else
+       MG_TEST_FALG++;
         uint16_t angle_value= (int16_t)mag_service_get_fAzimuth();
         char buf[16]={0};
         sprintf(buf,"angle:%d",angle_value);
@@ -78,6 +103,7 @@ namespace OHOS
 
         if(MG_TEST_FALG>10)
         CompassModel::GetInstance()->CloseCompassSensor();
+#endif
     }
 
     UILabel *testMagicView::InitLabel(LabelConfig &labelConfig)
@@ -103,9 +129,9 @@ namespace OHOS
     {
         uint32_t tick;
         osStatus_t retTimer;
-
+#ifndef TEST_BATTERY
         CompassModel::GetInstance()->OpenCompassSensor();
-
+#endif
         testmagicScrollView = new UIScrollView();
         if (testmagicScrollView == nullptr)
         {
@@ -162,11 +188,19 @@ namespace OHOS
         char buf[16]={0};
         sprintf(buf,"angle:%d",angle_value);
         Config = {
+#ifdef TEST_BATTERY
+            .left = 30,
+            .top = 160,
+            .width = 400,
+            .height = 35,
+            .fontSize = 20,
+#else
             .left = 173,
             .top = 160,
             .width = 120,
             .height = 35,
             .fontSize = 50,
+#endif
             .lineHeigh = 35,
             .text = buf,
             .lineBreakMode = UILabel::LINE_BREAK_ADAPT,