138 lines
3.4 KiB
C
Executable File
138 lines
3.4 KiB
C
Executable File
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "GxPower.h"
|
|
#include "kwrap/cmdsys.h"
|
|
#include "kwrap/sxcmd.h"
|
|
#include <kwrap/stdio.h>
|
|
#include "kwrap/debug.h"
|
|
|
|
extern GX_CALLBACK_PTR g_fpPowerCB;
|
|
|
|
|
|
static BOOL Cmd_gxpower_autooffen(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value = FALSE;
|
|
if (argc < 1) return 0;
|
|
sscanf_s(argv[0], "%d", &value);
|
|
GxPower_SetControl(GXPWR_CTRL_AUTOPOWEROFF_EN, value);
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
static BOOL Cmd_gxpower_setofftime(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 time = 30;
|
|
if (argc < 1) return 0;
|
|
sscanf_s(argv[0], "%d", &time);
|
|
GxPower_SetControl(GXPWR_CTRL_AUTOPOWEROFF_TIME, time);
|
|
return TRUE;
|
|
}
|
|
|
|
static BOOL Cmd_gxpower_autopwroff(unsigned char argc, char **argv)
|
|
{
|
|
if (g_fpPowerCB) {
|
|
g_fpPowerCB(POWER_CB_POWEROFF, 0, 0);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
static BOOL Cmd_gxpower_battempty(unsigned char argc, char **argv)
|
|
{
|
|
if (g_fpPowerCB) {
|
|
g_fpPowerCB(POWER_CB_BATT_EMPTY, 0, 0);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
static BOOL Cmd_gxpower_battchange(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value = 3;
|
|
if (argc < 1) return 0;
|
|
sscanf_s(argv[0], "%d", &value);
|
|
if (g_fpPowerCB) {
|
|
g_fpPowerCB(POWER_CB_BATT_CHG, 1, value);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
static BOOL Cmd_gxpower_chargecurrent(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value = 1;
|
|
if (argc < 1) return 0;
|
|
sscanf_s(argv[0], "%d", &value);
|
|
GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_CURRENT, value);
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
static BOOL Cmd_gxpower_chargeen(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value = TRUE;
|
|
if (argc < 1) return 0;
|
|
sscanf_s(argv[0], "%d", &value);
|
|
GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_EN, value);
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
#if 0
|
|
BOOL Cmd_gxpower_adc(unsigned char argc, char **argv)
|
|
{
|
|
extern UINT32 gAdcValue;
|
|
if (argc < 1) return 0;
|
|
sscanf(argv[0], "%d", &gAdcValue);
|
|
return TRUE;
|
|
}
|
|
#endif
|
|
|
|
|
|
static SXCMD_BEGIN(gxpower_cmd_tbl, "GxPower")
|
|
SXCMD_ITEM("autooffen %", Cmd_gxpower_autooffen, "enable auto power off, param value is 1 or 0")
|
|
SXCMD_ITEM("setofftime %", Cmd_gxpower_setofftime, "set auto power off time, param is auto off time(s)")
|
|
SXCMD_ITEM("autopwroff", Cmd_gxpower_autopwroff, "callback auto power off event")
|
|
SXCMD_ITEM("battempty", Cmd_gxpower_battempty, "callback battery emtpy event")
|
|
SXCMD_ITEM("battchange %", Cmd_gxpower_battchange, "callback battery level changed event, param value is battery level")
|
|
SXCMD_ITEM("chargecurrent %", Cmd_gxpower_chargecurrent, "set charge current, 0 is low, 1 is medium, 2 is high")
|
|
SXCMD_ITEM("chargeen %", Cmd_gxpower_chargeen, "enable battery charge, param value is 1 or 0")
|
|
SXCMD_END()
|
|
|
|
static int gxpower_cmd_showhelp(int (*dump)(const char *fmt, ...))
|
|
{
|
|
UINT32 cmd_num = SXCMD_NUM(gxpower_cmd_tbl);
|
|
UINT32 loop = 1;
|
|
|
|
dump("---------------------------------------------------------------------\r\n");
|
|
dump(" %s\n", "ker");
|
|
dump("---------------------------------------------------------------------\r\n");
|
|
|
|
for (loop = 1 ; loop <= cmd_num ; loop++) {
|
|
dump("%15s : %s\r\n", gxpower_cmd_tbl[loop].p_name, gxpower_cmd_tbl[loop].p_desc);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
MAINFUNC_ENTRY(gxpower, argc, argv)
|
|
{
|
|
UINT32 cmd_num = SXCMD_NUM(gxpower_cmd_tbl);
|
|
UINT32 loop;
|
|
int ret;
|
|
|
|
if (argc < 2) {
|
|
return -1;
|
|
}
|
|
if (strncmp(argv[1], "?", 2) == 0) {
|
|
gxpower_cmd_showhelp(vk_printk);
|
|
return 0;
|
|
}
|
|
for (loop = 1 ; loop <= cmd_num ; loop++) {
|
|
if (strncmp(argv[1], gxpower_cmd_tbl[loop].p_name, strlen(argv[1])) == 0) {
|
|
ret = gxpower_cmd_tbl[loop].p_func(argc-2, &argv[2]);
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|