debug页面添加充电ic寄存器打印
authorluozheng <1732036298@qq.com>
Wed, 6 May 2026 03:08:35 +0000 (11:08 +0800)
committerluozheng <1732036298@qq.com>
Wed, 6 May 2026 03:08:35 +0000 (11:08 +0800)
code/sdk/application/wearable/fd272/service/msg_center/CMakeLists.txt
code/sdk/application/wearable/fd272/service/msg_center/include/notify/debug_output_notification/debug_output_notification.h
code/sdk/application/wearable/fd272/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp
code/sdk/zhihui/drivers/charge/hp4570/hp4570.c
code/sdk/zhihui/drivers/charge/hp4570/hp4570.h

index 7a1dba1..86e0922 100644 (file)
@@ -151,6 +151,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/application/wearable/fd272/nativeapp/nativeui/
 
     ${ROOT_DIR}/zhihui/drivers
+    ${ROOT_DIR}/zhihui/drivers/charge/hp4570
     ${ROOT_DIR}/zhihui/services
     ${ROOT_DIR}/zhihui/UI/producttest/include/
 )
index 08aabfd..ddc157b 100644 (file)
@@ -43,6 +43,7 @@ namespace OHOS
         std::string get_uart_at_status(void);
         std::string get_current_vote_status(void);
         std::string get_offline_log_status(void);
+        std::string get_hp4570_register_dump(void);
 
 
       private:
index 624a851..bab0c58 100644 (file)
 #ifdef SUPPORT_BATTERY_SERVICE
 #include "battery_hal.h"
 #include "battery_service.h"
+#if defined(ENABLE_HP4570)
+extern "C" {
+#include "hp4570.h"
+}
+#endif
 #endif
 
 #ifdef SUPPORT_CAT1_SERVICE
@@ -192,6 +197,7 @@ namespace OHOS
         debugOutputItemInfo[index++] = {index, "CAT1升级"};
     
         debugOutputItemInfo[index++] = {index, "CWM日志开关"};
+        debugOutputItemInfo[index++] = {index, "充电iC寄存器的值"};
     
         usedLen = index;
         /* -------------------------------- 添加数据 -------------------------------- */
@@ -854,6 +860,17 @@ namespace OHOS
         return std::string("offline_log_status:") + std::to_string(offline);
     }
 
+    std::string DebugOutputViewEventListener::get_hp4570_register_dump(void)
+    {
+#if defined(SUPPORT_BATTERY_SERVICE) && defined(ENABLE_HP4570)
+        char buf[2048];
+        (void)hp4570n_dump_debug_registers(buf, sizeof(buf));
+        return std::string(buf);
+#else
+        return "HP4570 未启用(需 SUPPORT_BATTERY_SERVICE + ENABLE_HP4570)";
+#endif
+    }
+
     bool DebugOutputViewEventListener::OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event)
     {
         std::string viewId = view.GetViewId();
@@ -1196,6 +1213,9 @@ namespace OHOS
                 }
             }
             break;
+        case 22:
+            str = get_hp4570_register_dump();
+            break;
         default:
             str = "--";
             break;
index c7d8ab8..3f56841 100644 (file)
@@ -20,6 +20,7 @@
 \r
 #include "hp4570.h"\r
 #include "custom_utils.h"\r
+#include <stdio.h>\r
 \r
 struct CHIP_STATE{\r
   bool vin_fault;\r
@@ -50,6 +51,68 @@ static bool hp4570n_read_reg(uint8_t reg, uint8_t *value){
   return custom_i2c_read_regs(hp4570n_i2c_addr, reg, 1, value, 1, HP4570N_I2C_BUS); \r
 }\r
 \r
+size_t hp4570n_dump_debug_registers(char *buf, size_t buf_len)\r
+{\r
+  static const struct {\r
+    uint8_t reg;\r
+    const char *name;\r
+  } rows[] = {\r
+    { HP4570N_REG_DPM_SET, "DPM_SET" },\r
+    { HP4570N_REG_SYS_CTRL0, "SYS_CTRL0" },\r
+    { HP4570N_REG_SYS_CTRL1, "SYS_CTRL1" },\r
+    { HP4570N_REG_IDSG_ITERM_SET, "IDSG_ITERM_SET" },\r
+    { HP4570N_REG_BAT_VOL_SET, "BAT_VOL_SET" },\r
+    { HP4570N_REG_SYS_CTRL2, "SYS_CTRL2" },\r
+    { HP4570N_REG_SYS_CTRL3, "SYS_CTRL3" },\r
+    { HP4570N_REG_SYS_CTRL4, "SYS_CTRL4" },\r
+    { HP4570N_REG_CHIP_STAT0, "CHIP_STAT0" },\r
+    { HP4570N_REG_CHIP_STAT1, "CHIP_STAT1" },\r
+    { HP4570N_REG_CHIP_STAT2, "CHIP_STAT2" },\r
+    { HP4570N_REG_VIPRE, "VIPRE" },\r
+    { HP4570N_REG_EXT_CTRL, "EXT_CTRL" },\r
+    { HP4570N_REG_SYS_CTRL5, "SYS_CTRL5" },\r
+    { HP4570N_REG_SYS_CTRL6, "SYS_CTRL6" },\r
+    { HP4570N_REG_SYS_CTRL7, "SYS_CTRL7" },\r
+    { HP4570N_REG_SYS_WAKE_UP_SRC, "SYS_WAKE_UP_SRC" },\r
+    { HP4570N_REG_INT0_ENABLE, "INT0_ENABLE" },\r
+    { HP4570N_REG_INT0_STAT, "INT0_STAT" },\r
+    { HP4570N_REG_VID_LSB, "VID_LSB" },\r
+    { HP4570N_REG_VID_MSB, "VID_MSB" },\r
+    { HP4570N_REG_PID_LSB, "PID_LSB" },\r
+    { HP4570N_REG_PID_MSB, "PID_MSB" },\r
+    { HP4570N_REG_CHIP_VER, "CHIP_VER" },\r
+  };\r
+\r
+  if (buf == NULL || buf_len == 0) {\r
+    return 0;\r
+  }\r
+  buf[0] = '\0';\r
+  size_t off = 0;\r
+  for (size_t i = 0; i < sizeof(rows) / sizeof(rows[0]); i++) {\r
+    uint8_t v = 0;\r
+    int n;\r
+    /* custom_i2c_read_regs returns ERRCODE_SUCC(0) on success; hp4570n_read_reg wrongly casts that to bool false */\r
+    errcode_t rc = custom_i2c_read_regs(hp4570n_i2c_addr, rows[i].reg, 1, &v, 1, HP4570N_I2C_BUS);\r
+    if (rc == ERRCODE_SUCC) {\r
+      n = snprintf(buf + off, buf_len - off, "%s(0x%02x):0x%02x\n",\r
+          rows[i].name, (unsigned int)rows[i].reg, v);\r
+    } else {\r
+      n = snprintf(buf + off, buf_len - off, "%s(0x%02x):read fail(0x%x)\n",\r
+          rows[i].name, (unsigned int)rows[i].reg, (unsigned int)rc);\r
+    }\r
+    if (n < 0) {\r
+      break;\r
+    }\r
+    if ((size_t)n >= buf_len - off) {\r
+      off = buf_len - 1;\r
+      break;\r
+    }\r
+    off += (size_t)n;\r
+  }\r
+  buf[buf_len - 1] = '\0';\r
+  return off;\r
+}\r
+\r
 #define INPUT_PARA_FAIL_RETURN(value, min, max) \\r
   do { \\r
     if (value < min || value > max) \\r
index 9858a2f..216dae7 100644 (file)
@@ -23,6 +23,7 @@
 #ifndef HP4570N_CHARGER_H\r
 #define HP4570N_CHARGER_H\r
 \r
+#include <stddef.h>\r
 #include <stdint.h>\r
 #include <stdbool.h>\r
 #include "std_def.h"\r
@@ -423,6 +424,9 @@ static const uint16_t HP4570N_t_hiccup_time[HP4570N_NUM_T_HICCUP_VAL] = {
 bool hp4570n_init(uint8_t chip_ver);\r
 bool hp4570n_identify(uint8_t chip_ver);\r
 \r
+/** Dump key charger registers into buf (NUL-terminated). Returns written length (excluding NUL). */\r
+size_t hp4570n_dump_debug_registers(char *buf, size_t buf_len);\r
+\r
 void hp4570n_set_pwrkey_en(bool en);// PWRKEY function enable control \r
 bool hp4570n_set_trst_dgl_mS(uint32_t time);// Pull INT low to disconnect the battery then auto on\r
 \r