#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
debugOutputItemInfo[index++] = {index, "CAT1升级"};
debugOutputItemInfo[index++] = {index, "CWM日志开关"};
+ debugOutputItemInfo[index++] = {index, "充电iC寄存器的值"};
usedLen = index;
/* -------------------------------- 添加数据 -------------------------------- */
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();
}
}
break;
+ case 22:
+ str = get_hp4570_register_dump();
+ break;
default:
str = "--";
break;
\r
#include "hp4570.h"\r
#include "custom_utils.h"\r
+#include <stdio.h>\r
\r
struct CHIP_STATE{\r
bool vin_fault;\r
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