mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-31 02:48:44 +00:00
refactor(core): refactor pm prodtest to new namespace, add watch test
[no changelog]
This commit is contained in:
parent
9c8db0bcba
commit
614528acb6
@ -19,19 +19,18 @@
|
||||
|
||||
#ifdef USE_POWERCTL
|
||||
|
||||
#include <rust_ui_prodtest.h>
|
||||
#include <rtl/cli.h>
|
||||
#include <rtl/unit_test.h>
|
||||
#include <rtl/mini_printf.h>
|
||||
#include <rtl/unit_test.h>
|
||||
#include <rust_ui_prodtest.h>
|
||||
#include <sys/power_manager.h>
|
||||
#include <sys/systick.h>
|
||||
|
||||
#include <trezor_rtl.h>
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
void prodtest_power_manager_hibernate(cli_t* cli) {
|
||||
void prodtest_pm_hibernate(cli_t* cli) {
|
||||
if (cli_arg_count(cli) > 0) {
|
||||
cli_error_arg_count(cli);
|
||||
return;
|
||||
@ -39,7 +38,7 @@ void prodtest_power_manager_hibernate(cli_t* cli) {
|
||||
|
||||
cli_trace(cli, "Hibernating the device...");
|
||||
|
||||
if (!power_manager_hibernate()) {
|
||||
if (!pm_hibernate()) {
|
||||
cli_error(cli, CLI_ERROR, "Failed to hibernate.");
|
||||
return;
|
||||
}
|
||||
@ -48,7 +47,7 @@ void prodtest_power_manager_hibernate(cli_t* cli) {
|
||||
cli_ok(cli, "");
|
||||
}
|
||||
|
||||
void prodtest_power_manager_suspend(cli_t* cli) {
|
||||
void prodtest_pm_suspend(cli_t* cli) {
|
||||
if (cli_arg_count(cli) > 0) {
|
||||
cli_error_arg_count(cli);
|
||||
return;
|
||||
@ -58,7 +57,7 @@ void prodtest_power_manager_suspend(cli_t* cli) {
|
||||
cli_trace(cli, "Press the POWER button to resume.");
|
||||
systick_delay_ms(1000);
|
||||
|
||||
power_manager_suspend();
|
||||
pm_suspend();
|
||||
|
||||
systick_delay_ms(1500);
|
||||
cli_trace(cli, "Resumed to active mode.");
|
||||
@ -66,8 +65,7 @@ void prodtest_power_manager_suspend(cli_t* cli) {
|
||||
cli_ok(cli, "");
|
||||
}
|
||||
|
||||
void prodtest_power_manager_watch(cli_t* cli) {
|
||||
|
||||
void prodtest_pm_watch(cli_t* cli) {
|
||||
if (cli_arg_count(cli) > 0) {
|
||||
cli_error_arg_count(cli);
|
||||
return;
|
||||
@ -75,37 +73,35 @@ void prodtest_power_manager_watch(cli_t* cli) {
|
||||
|
||||
char screen_text_buf[100];
|
||||
|
||||
while(1){
|
||||
|
||||
power_manager_report_t report;
|
||||
power_manager_status_t status = power_manager_get_report(&report);
|
||||
if (status != POWER_MANAGER_OK) {
|
||||
while (1) {
|
||||
pm_report_t report;
|
||||
pm_status_t status = pm_get_report(&report);
|
||||
if (status != PM_OK) {
|
||||
cli_error(cli, CLI_ERROR, "Failed to get power manager report");
|
||||
return;
|
||||
}
|
||||
|
||||
if(cli_aborted(cli)){
|
||||
if (cli_aborted(cli)) {
|
||||
cli_trace(cli, "aborted");
|
||||
break;
|
||||
}
|
||||
|
||||
cli_progress(cli, "%d.%03d %d.%03d %d.%03d %d.%02d",
|
||||
(int)report.battery_voltage_v,
|
||||
(int)(report.battery_voltage_v * 1000) % 1000,
|
||||
(int)report.battery_current_ma,
|
||||
abs((int)(report.battery_current_ma * 1000) % 1000),
|
||||
(int)report.battery_temp_c,
|
||||
abs((int)(report.battery_temp_c * 1000) % 1000),
|
||||
(int)(report.battery_soc*100),
|
||||
(int)(report.battery_soc * 10000) % 100);
|
||||
|
||||
cli_progress(cli, "%d.%03d %d.%03d %d.%03d %d.%02d",
|
||||
(int)report.battery_voltage_v,
|
||||
(int)(report.battery_voltage_v * 1000) % 1000,
|
||||
(int)report.battery_current_ma,
|
||||
abs((int)(report.battery_current_ma * 1000) % 1000),
|
||||
(int)report.battery_temp_c,
|
||||
abs((int)(report.battery_temp_c * 1000) % 1000),
|
||||
(int)(report.battery_soc * 100),
|
||||
(int)(report.battery_soc * 10000) % 100);
|
||||
|
||||
mini_snprintf(screen_text_buf, 100, "%d.%03dV %d.%03dmA %d.%02d ",
|
||||
(int)report.battery_voltage_v,
|
||||
(int)(report.battery_voltage_v * 1000) % 1000,
|
||||
(int)report.battery_current_ma,
|
||||
abs((int)(report.battery_current_ma * 1000) % 1000),
|
||||
(int)(report.battery_soc*100),
|
||||
(int)(report.battery_soc * 100),
|
||||
(int)(report.battery_soc * 10000) % 100);
|
||||
|
||||
screen_prodtest_show_text(screen_text_buf, strlen(screen_text_buf));
|
||||
@ -114,19 +110,17 @@ void prodtest_power_manager_watch(cli_t* cli) {
|
||||
}
|
||||
|
||||
cli_ok(cli, "");
|
||||
|
||||
}
|
||||
|
||||
void prodtest_power_manager_report(cli_t* cli) {
|
||||
|
||||
void prodtest_pm_report(cli_t* cli) {
|
||||
if (cli_arg_count(cli) > 0) {
|
||||
cli_error_arg_count(cli);
|
||||
return;
|
||||
}
|
||||
|
||||
power_manager_report_t report;
|
||||
power_manager_status_t status = power_manager_get_report(&report);
|
||||
if (status != POWER_MANAGER_OK) {
|
||||
pm_report_t report;
|
||||
pm_status_t status = pm_get_report(&report);
|
||||
if (status != PM_OK) {
|
||||
cli_error(cli, CLI_ERROR, "Failed to get power manager report");
|
||||
return;
|
||||
}
|
||||
@ -142,9 +136,10 @@ void prodtest_power_manager_report(cli_t* cli) {
|
||||
abs((int)(report.battery_current_ma * 1000) % 1000));
|
||||
cli_trace(cli, " Battery temperature: %d.%03d C", (int)report.battery_temp_c,
|
||||
abs((int)(report.battery_temp_c * 1000) % 1000));
|
||||
cli_trace(cli, " Battery SoC: %d.%02d", (int)(report.battery_soc*100),
|
||||
cli_trace(cli, " Battery SoC: %d.%02d", (int)(report.battery_soc * 100),
|
||||
(int)(report.battery_soc * 10000) % 100);
|
||||
cli_trace(cli, " Battery SoC latched: %d.%02d", (int)(report.battery_soc_latched*100),
|
||||
cli_trace(cli, " Battery SoC latched: %d.%02d",
|
||||
(int)(report.battery_soc_latched * 100),
|
||||
(int)(report.battery_soc_latched * 10000) % 100);
|
||||
cli_trace(cli, " PMIC die temperature: %d.%03d C", (int)report.pmic_temp_c,
|
||||
(int)(report.pmic_temp_c * 1000) % 1000);
|
||||
@ -162,23 +157,23 @@ void prodtest_power_manager_report(cli_t* cli) {
|
||||
cli_ok(cli, "");
|
||||
}
|
||||
|
||||
void prodtest_power_manager_monitor(cli_t* cli) {
|
||||
void prodtest_pm_monitor(cli_t* cli) {
|
||||
if (cli_arg_count(cli) > 0) {
|
||||
cli_error_arg_count(cli);
|
||||
return;
|
||||
}
|
||||
|
||||
power_manager_status_t status;
|
||||
power_manager_event_t event_flag;
|
||||
power_manager_state_t state;
|
||||
pm_status_t status;
|
||||
pm_event_t event_flag;
|
||||
pm_state_t state;
|
||||
|
||||
status = power_manager_get_state(&state);
|
||||
status = pm_get_state(&state);
|
||||
|
||||
// Clear leftover events
|
||||
power_manager_get_events(&event_flag);
|
||||
pm_get_events(&event_flag);
|
||||
|
||||
cli_trace(cli, "Start power manager monitor, current state: {%s}",
|
||||
power_manager_get_state_name(state));
|
||||
pm_get_state_name(state));
|
||||
|
||||
while (true) {
|
||||
if (cli_aborted(cli)) {
|
||||
@ -186,31 +181,31 @@ void prodtest_power_manager_monitor(cli_t* cli) {
|
||||
break;
|
||||
}
|
||||
|
||||
status = power_manager_get_events(&event_flag);
|
||||
if (status != POWER_MANAGER_OK) {
|
||||
status = pm_get_events(&event_flag);
|
||||
if (status != PM_OK) {
|
||||
cli_error(cli, CLI_ERROR, "Failed to get power manager events");
|
||||
}
|
||||
|
||||
if (event_flag & POWER_MANAGER_EVENT_STATE_CHANGED) {
|
||||
status = power_manager_get_state(&state);
|
||||
if (event_flag & PM_EVENT_STATE_CHANGED) {
|
||||
status = pm_get_state(&state);
|
||||
|
||||
cli_trace(cli, "Power manager state changed to {%s}",
|
||||
power_manager_get_state_name(state));
|
||||
pm_get_state_name(state));
|
||||
}
|
||||
|
||||
if (event_flag & POWER_MANAGER_EVENT_USB_CONNECTED) {
|
||||
if (event_flag & PM_EVENT_USB_CONNECTED) {
|
||||
cli_trace(cli, "USB connected");
|
||||
}
|
||||
|
||||
if (event_flag & POWER_MANAGER_EVENT_USB_DISCONNECTED) {
|
||||
if (event_flag & PM_EVENT_USB_DISCONNECTED) {
|
||||
cli_trace(cli, "USB disconnected");
|
||||
}
|
||||
|
||||
if (event_flag & POWER_MANAGER_EVENT_WIRELESS_CONNECTED) {
|
||||
if (event_flag & PM_EVENT_WIRELESS_CONNECTED) {
|
||||
cli_trace(cli, "WLC connected");
|
||||
}
|
||||
|
||||
if (event_flag & POWER_MANAGER_EVENT_WIRELESS_DISCONNECTED) {
|
||||
if (event_flag & PM_EVENT_WIRELESS_DISCONNECTED) {
|
||||
cli_trace(cli, "WLC disconnected");
|
||||
}
|
||||
|
||||
@ -224,35 +219,35 @@ void prodtest_power_manager_monitor(cli_t* cli) {
|
||||
|
||||
PRODTEST_CLI_CMD(
|
||||
.name = "power-manager-monitor",
|
||||
.func = prodtest_power_manager_monitor,
|
||||
.func = prodtest_pm_monitor,
|
||||
.info = "Run power manager monitor",
|
||||
.args = ""
|
||||
);
|
||||
|
||||
PRODTEST_CLI_CMD(
|
||||
.name = "power-manager-watch",
|
||||
.func = prodtest_power_manager_watch,
|
||||
.func = prodtest_pm_watch,
|
||||
.info = "Watch power manager reports",
|
||||
.args = ""
|
||||
);
|
||||
|
||||
PRODTEST_CLI_CMD(
|
||||
.name = "power-manager-report",
|
||||
.func = prodtest_power_manager_report,
|
||||
.func = prodtest_pm_report,
|
||||
.info = "Get power manager report",
|
||||
.args = ""
|
||||
);
|
||||
|
||||
PRODTEST_CLI_CMD(
|
||||
.name = "power-manager-suspend",
|
||||
.func = prodtest_power_manager_suspend,
|
||||
.func = prodtest_pm_suspend,
|
||||
.info = "Suspend the device to low-power mode",
|
||||
.args = ""
|
||||
);
|
||||
|
||||
PRODTEST_CLI_CMD(
|
||||
.name = "power-manager-hibernate",
|
||||
.func = prodtest_power_manager_hibernate,
|
||||
.func = prodtest_pm_hibernate,
|
||||
.info = "Hibernate the device into a near power-off state",
|
||||
.args = ""
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user