\r
uint32_t mcu_pm_remove_vote(uint8_t *para, uint32_t para_len)\r
{\r
- unused(para);\r
- unused(para_len);\r
-\r
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_DEBUG);\r
+ pm_id_t pm_id = PM_ID_DEBUG; // 默认使用 PM_ID_DEBUG\r
+ \r
+ // 如果提供了参数,解析数字\r
+ if (para != NULL && para_len > 0) {\r
+ // 尝试将参数转换为数字\r
+ pm_id = (pm_id_t)atoi((char*)para);\r
+ \r
+ // 检查范围是否有效\r
+ if (pm_id < PM_ID_BSP || pm_id >= PM_ID_MAX) {\r
+ wstp_print("Invalid PM_ID: %d (valid range: 0-%d)\r\n", pm_id, PM_ID_MAX - 1);\r
+ return ERRCODE_FAIL;\r
+ }\r
+ }\r
+ \r
+ // 获取 PM_ID 名称\r
+ const char* pm_id_name = get_pm_id_name(pm_id);\r
+ \r
+ // 获取当前投票计数\r
+ uint8_t cnt = pm_veto_get_id_cnt(pm_id);\r
+ \r
if (cnt > 0) {\r
- wstp_print("MCU remove pm_id_debug vote\r\n");\r
- uapi_pm_remove_sleep_veto(PM_ID_DEBUG);\r
+ wstp_print("MCU remove %s (PM_ID=%d) vote, current count=%d\r\n", pm_id_name, pm_id, cnt);\r
+ uapi_pm_remove_sleep_veto(pm_id);\r
+ wstp_print("\r\nMCU SLEEP SUCCESS (removed %s vote)\r\n", pm_id_name);\r
} else {\r
- wstp_print("MCU has delete pm_id_debug vote\r\n");\r
+ wstp_print("MCU has already deleted %s (PM_ID=%d) vote (count=0)\r\n", pm_id_name, pm_id);\r
}\r
- wstp_print("\r\nMCU SLEEP SUCCESS\r\n");\r
+ \r
uapi_tcxo_delay_ms(5); // delay 5ms for print debug infor with uart\r
return ERRCODE_SUCC;\r
}\r