#include "stm32l0xx_hal.h" #include "stdlib.h" #include "string.h" #include "AppConfig.h" #include "Shell.h" #include "HIDO_Shell.h" #include "HIDO_Util.h" #include "HIDO_Debug.h" #include "GPIO.h" #include "DBG.h" #include "RTC.h" #include "Reboot.h" #include "Param.h" #include "HIDO_ATLite.h" #include "Lock.h" //#include "Log.h" #include "HIDO_Log.h" #include "Battery.h" #include "gps.h" #include "power.h" #include "beep.h" #include "lora.h" extern uint8_t bat_percent; static HIDO_INT32 Shell_Test(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_Reboot(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_RTCGet(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_RTCSet(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_Info(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_DebugOn(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_DebugOff(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_SetIP(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_SetWIFI(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_SetDevID(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_SetADC(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_SetContrast(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_GpsOn(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_GpsOff(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_BeepOn(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_BeepOff(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static HIDO_INT32 Shell_Sleep(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv); static const HIDO_ShellCmdStruct l_astShellCmdList[] = { { "test", Shell_Test }, { "reboot", Shell_Reboot }, { "info", Shell_Info }, { "debug_on", Shell_DebugOn }, { "debug_off", Shell_DebugOff }, { "rtc_get", Shell_RTCGet }, { "rtc_set", Shell_RTCSet }, { "set_adc", Shell_SetADC }, { "set_ip", Shell_SetIP }, { "set_dev_id", Shell_SetDevID }, //{ "set_dev", Shell_SetDev }, { "set_wifi", Shell_SetWIFI }, { "set_contrast", Shell_SetContrast }, { "gps_on", Shell_GpsOn }, { "gps_off", Shell_GpsOff }, { "beep_on", Shell_BeepOn }, { "beep_off", Shell_BeepOff }, { "sleep", Shell_Sleep }, }; static HIDO_INT32 Shell_Test(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Lora_Run(); return HIDO_OK; } static HIDO_INT32 Shell_Reboot(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Reboot(0); return HIDO_OK; } static HIDO_INT32 Shell_RTCSet(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc != 7) { HIDO_ShellPrintf("usage: rtc_set yyyy mm dd hh mm ss\r\n"); return HIDO_ERR; } return HIDO_OK; } static HIDO_INT32 Shell_RTCGet(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { return HIDO_OK; } static HIDO_INT32 Shell_DebugOn(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 2) { HIDO_ShellPrintf("debug_on flag\r\n"); return HIDO_ERR; } switch(atoi(_ppcArgv[1])) { case 0: { HIDO_ATLiteDebugOn(); break; } case 1: { //GPRS_DebugOn(); break; } } return HIDO_OK; } static HIDO_INT32 Shell_DebugOff(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 2) { HIDO_ShellPrintf("debug_off flag\r\n"); return HIDO_ERR; } switch(atoi(_ppcArgv[1])) { case 0: { HIDO_ATLiteDebugOff(); break; } case 1: { //GPRS_DebugOff(); break; } } return HIDO_OK; } static HIDO_INT32 Shell_SetIP(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 3) { HIDO_ShellPrintf("set_ip [server_ip] [server_port]\r\n"); return HIDO_ERR; } HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_SetWIFI(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 3) { HIDO_ShellPrintf("set_wifi [ssid] [password] [ip]\r\n"); return HIDO_ERR; } HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_SetDevID(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 2) { HIDO_ShellPrintf("set_dev_id id\r\n"); return HIDO_ERR; } HIDO_UINT32 u32DevID = atoi(_ppcArgv[1]); if(u32DevID == 0 || u32DevID > 8) { HIDO_ShellPrintf("id error\r\n"); return HIDO_ERR; } //Device_SetDeviceID(u32DevID); //Device_SaveSettings(); HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_SetADC(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 6) { HIDO_ShellPrintf("set_adc normal_min normal_max error_min error_max error_cnt\r\n"); return HIDO_ERR; } //Device_GetSettings()->m_u8PumpErrorCnt = atoi(_ppcArgv[5]); //Device_GetSettings()->m_fPumpNormalMin = atof(_ppcArgv[1]); //Device_GetSettings()->m_fPumpNormalMax = atof(_ppcArgv[2]); //Device_GetSettings()->m_fPumpErrorMin = atof(_ppcArgv[3]); //Device_GetSettings()->m_fPumpErrorMax = atof(_ppcArgv[4]); //Device_SaveSettings(); HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_SetContrast(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { if (_i32Argc < 2) { HIDO_ShellPrintf("ERROR\r\n"); return HIDO_OK; } HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_GpsOn(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Power_GPS_LoraOn(); HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_GpsOff(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Power_GPS_LoraOff(); HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_BeepOn(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Beep_On(); HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_Sleep(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Power_Sleep(); return HIDO_OK; } static HIDO_INT32 Shell_BeepOff(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { Beep_Off(); HIDO_ShellPrintf("OK\r\n"); return HIDO_OK; } static HIDO_INT32 Shell_Info(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv) { //HIDO_ShellPrintf("DeviceID: %u\r\n", Device_GetDeviceID()); HIDO_ShellPrintf("Version: %s\r\n", APP_CONFIG_VERSION); HIDO_ShellPrintf("Battery: %u%% %.2fV\r\n", bat_percent, Battery_GetVoltage()); return HIDO_OK; } HIDO_INT32 Shell_Init(void) { HIDO_ShellCmdRegister(&l_astShellCmdList[0], HIDO_ARRARY_COUNT(l_astShellCmdList)); return HIDO_OK; }