mirror of
https://github.com/arendst/Tasmota.git
synced 2025-08-01 15:07:42 +00:00
Refactor Debug command
Refactor Debug command
This commit is contained in:
parent
a756914fb6
commit
abee4e8bd4
@ -57,12 +57,33 @@
|
|||||||
#define D_CMND_SETSENSOR "SetSensor"
|
#define D_CMND_SETSENSOR "SetSensor"
|
||||||
#define D_CMND_FLASHMODE "FlashMode"
|
#define D_CMND_FLASHMODE "FlashMode"
|
||||||
|
|
||||||
enum DebugCommands {
|
|
||||||
CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGSHOW, CMND_CFGXOR,
|
|
||||||
CMND_CPUCHECK, CMND_EXCEPTION, CMND_FREEMEM, CMND_RTCDUMP, CMND_SETSENSOR, CMND_FLASHMODE, CMND_HELP };
|
|
||||||
const char kDebugCommands[] PROGMEM =
|
const char kDebugCommands[] PROGMEM =
|
||||||
D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGSHOW "|" D_CMND_CFGXOR "|"
|
D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|"
|
||||||
D_CMND_CPUCHECK "|" D_CMND_EXCEPTION "|" D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_SETSENSOR "|" D_CMND_FLASHMODE "|" D_CMND_HELP;
|
#ifdef USE_DEBUG_SETTING_NAMES
|
||||||
|
D_CMND_CFGSHOW "|"
|
||||||
|
#endif
|
||||||
|
#ifdef USE_WEBSERVER
|
||||||
|
D_CMND_CFGXOR "|"
|
||||||
|
#endif
|
||||||
|
D_CMND_CPUCHECK "|"
|
||||||
|
#ifdef DEBUG_THEO
|
||||||
|
D_CMND_EXCEPTION "|"
|
||||||
|
#endif
|
||||||
|
D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_SETSENSOR "|" D_CMND_FLASHMODE "|" D_CMND_HELP;
|
||||||
|
|
||||||
|
void (* const DebugCommand[])(void) PROGMEM = {
|
||||||
|
&CmndCfgDump, &CmndCfgPeek, &CmndCfgPoke,
|
||||||
|
#ifdef USE_DEBUG_SETTING_NAMES
|
||||||
|
&CmndCfgShow,
|
||||||
|
#endif
|
||||||
|
#ifdef USE_WEBSERVER
|
||||||
|
&CmndCfgXor,
|
||||||
|
#endif
|
||||||
|
&CmndCpuCheck,
|
||||||
|
#ifdef DEBUG_THEO
|
||||||
|
&CmndException,
|
||||||
|
#endif
|
||||||
|
&CmndFreemem, &CmndRtcDump, &CmndSetSensor, &CmndFlashMode, &CmndHelp };
|
||||||
|
|
||||||
uint32_t CPU_loops = 0;
|
uint32_t CPU_loops = 0;
|
||||||
uint32_t CPU_last_millis = 0;
|
uint32_t CPU_last_millis = 0;
|
||||||
@ -398,91 +419,110 @@ void SetFlashMode(uint8_t mode)
|
|||||||
if (ESP.flashRead(address, (uint32_t*)_buffer, FLASH_SECTOR_SIZE)) {
|
if (ESP.flashRead(address, (uint32_t*)_buffer, FLASH_SECTOR_SIZE)) {
|
||||||
if (_buffer[2] != mode) { // DOUT
|
if (_buffer[2] != mode) { // DOUT
|
||||||
_buffer[2] = mode;
|
_buffer[2] = mode;
|
||||||
if (ESP.flashEraseSector(address / FLASH_SECTOR_SIZE)) ESP.flashWrite(address, (uint32_t*)_buffer, FLASH_SECTOR_SIZE);
|
if (ESP.flashEraseSector(address / FLASH_SECTOR_SIZE)) {
|
||||||
|
ESP.flashWrite(address, (uint32_t*)_buffer, FLASH_SECTOR_SIZE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete[] _buffer;
|
delete[] _buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************************/
|
/*********************************************************************************************\
|
||||||
|
* Commands
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
bool DebugCommand(void)
|
void CmndHelp(void)
|
||||||
{
|
{
|
||||||
bool serviced = true;
|
AddLog_P(LOG_LEVEL_INFO, kDebugCommands);
|
||||||
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndRtcDump(void)
|
||||||
|
{
|
||||||
|
DebugRtcDump(XdrvMailbox.data);
|
||||||
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndCfgDump(void)
|
||||||
|
{
|
||||||
|
DebugCfgDump(XdrvMailbox.data);
|
||||||
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndCfgPeek(void)
|
||||||
|
{
|
||||||
|
DebugCfgPeek(XdrvMailbox.data);
|
||||||
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndCfgPoke(void)
|
||||||
|
{
|
||||||
|
DebugCfgPoke(XdrvMailbox.data);
|
||||||
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
|
|
||||||
int command_code = GetCommandCode(XdrvMailbox.command, CMDSZ, XdrvMailbox.topic, kDebugCommands);
|
|
||||||
if (-1 == command_code) {
|
|
||||||
serviced = false; // Unknown command
|
|
||||||
}
|
|
||||||
else if (CMND_HELP == command_code) {
|
|
||||||
AddLog_P(LOG_LEVEL_INFO, kDebugCommands);
|
|
||||||
ResponseCmndDone();
|
|
||||||
}
|
|
||||||
else if (CMND_RTCDUMP == command_code) {
|
|
||||||
DebugRtcDump(XdrvMailbox.data);
|
|
||||||
ResponseCmndDone();
|
|
||||||
}
|
|
||||||
else if (CMND_CFGDUMP == command_code) {
|
|
||||||
DebugCfgDump(XdrvMailbox.data);
|
|
||||||
ResponseCmndDone();
|
|
||||||
}
|
|
||||||
else if (CMND_CFGPEEK == command_code) {
|
|
||||||
DebugCfgPeek(XdrvMailbox.data);
|
|
||||||
ResponseCmndDone();
|
|
||||||
}
|
|
||||||
else if (CMND_CFGPOKE == command_code) {
|
|
||||||
DebugCfgPoke(XdrvMailbox.data);
|
|
||||||
ResponseCmndDone();
|
|
||||||
}
|
|
||||||
#ifdef USE_DEBUG_SETTING_NAMES
|
#ifdef USE_DEBUG_SETTING_NAMES
|
||||||
else if (CMND_CFGSHOW == command_code) {
|
void CmndCfgShow(void)
|
||||||
DebugCfgShow(XdrvMailbox.payload);
|
{
|
||||||
ResponseCmndDone();
|
DebugCfgShow(XdrvMailbox.payload);
|
||||||
}
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
#endif // USE_DEBUG_SETTING_NAMES
|
#endif // USE_DEBUG_SETTING_NAMES
|
||||||
|
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
else if (CMND_CFGXOR == command_code) {
|
void CmndCfgXor(void)
|
||||||
if (XdrvMailbox.data_len > 0) {
|
{
|
||||||
config_xor_on_set = XdrvMailbox.payload;
|
if (XdrvMailbox.data_len > 0) {
|
||||||
}
|
config_xor_on_set = XdrvMailbox.payload;
|
||||||
ResponseCmndNumber(config_xor_on_set);
|
|
||||||
}
|
}
|
||||||
|
ResponseCmndNumber(config_xor_on_set);
|
||||||
|
}
|
||||||
#endif // USE_WEBSERVER
|
#endif // USE_WEBSERVER
|
||||||
|
|
||||||
#ifdef DEBUG_THEO
|
#ifdef DEBUG_THEO
|
||||||
else if (CMND_EXCEPTION == command_code) {
|
void CmndException(void)
|
||||||
if (XdrvMailbox.data_len > 0) ExceptionTest(XdrvMailbox.payload);
|
{
|
||||||
ResponseCmndDone();
|
if (XdrvMailbox.data_len > 0) { ExceptionTest(XdrvMailbox.payload); }
|
||||||
}
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
#endif // DEBUG_THEO
|
#endif // DEBUG_THEO
|
||||||
else if (CMND_CPUCHECK == command_code) {
|
|
||||||
if (XdrvMailbox.data_len > 0) {
|
void CmndCpuCheck(void)
|
||||||
CPU_load_check = XdrvMailbox.payload;
|
{
|
||||||
CPU_last_millis = CPU_last_loop_time;
|
if (XdrvMailbox.data_len > 0) {
|
||||||
}
|
CPU_load_check = XdrvMailbox.payload;
|
||||||
ResponseCmndNumber(CPU_load_check);
|
CPU_last_millis = CPU_last_loop_time;
|
||||||
}
|
}
|
||||||
else if (CMND_FREEMEM == command_code) {
|
ResponseCmndNumber(CPU_load_check);
|
||||||
if (XdrvMailbox.data_len > 0) {
|
}
|
||||||
CPU_show_freemem = XdrvMailbox.payload;
|
|
||||||
}
|
void CmndFreemem(void)
|
||||||
ResponseCmndNumber(CPU_show_freemem);
|
{
|
||||||
|
if (XdrvMailbox.data_len > 0) {
|
||||||
|
CPU_show_freemem = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
else if ((CMND_SETSENSOR == command_code) && (XdrvMailbox.index < MAX_XSNS_DRIVERS)) {
|
ResponseCmndNumber(CPU_show_freemem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndSetSensor(void)
|
||||||
|
{
|
||||||
|
if (XdrvMailbox.index < MAX_XSNS_DRIVERS) {
|
||||||
if ((XdrvMailbox.payload >= 0) && XsnsPresent(XdrvMailbox.index)) {
|
if ((XdrvMailbox.payload >= 0) && XsnsPresent(XdrvMailbox.index)) {
|
||||||
bitWrite(Settings.sensors[XdrvMailbox.index / 32], XdrvMailbox.index % 32, XdrvMailbox.payload &1);
|
bitWrite(Settings.sensors[XdrvMailbox.index / 32], XdrvMailbox.index % 32, XdrvMailbox.payload &1);
|
||||||
if (1 == XdrvMailbox.payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle
|
if (1 == XdrvMailbox.payload) {
|
||||||
|
restart_flag = 2; // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Response_P(S_JSON_COMMAND_XVALUE, XdrvMailbox.command, XsnsGetSensors().c_str());
|
Response_P(S_JSON_COMMAND_XVALUE, XdrvMailbox.command, XsnsGetSensors().c_str());
|
||||||
}
|
}
|
||||||
else if (CMND_FLASHMODE == command_code) {
|
}
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 3)) {
|
|
||||||
SetFlashMode(XdrvMailbox.payload);
|
|
||||||
}
|
|
||||||
ResponseCmndNumber(ESP.getFlashChipMode());
|
|
||||||
}
|
|
||||||
else serviced = false; // Unknown command
|
|
||||||
|
|
||||||
return serviced;
|
void CmndFlashMode(void)
|
||||||
|
{
|
||||||
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 3)) {
|
||||||
|
SetFlashMode(XdrvMailbox.payload);
|
||||||
|
}
|
||||||
|
ResponseCmndNumber(ESP.getFlashChipMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
@ -497,14 +537,14 @@ bool Xdrv99(uint8_t function)
|
|||||||
case FUNC_LOOP:
|
case FUNC_LOOP:
|
||||||
CpuLoadLoop();
|
CpuLoadLoop();
|
||||||
break;
|
break;
|
||||||
|
case FUNC_FREE_MEM:
|
||||||
|
if (CPU_show_freemem) { DebugFreeMem(); }
|
||||||
|
break;
|
||||||
case FUNC_PRE_INIT:
|
case FUNC_PRE_INIT:
|
||||||
CPU_last_millis = millis();
|
CPU_last_millis = millis();
|
||||||
break;
|
break;
|
||||||
case FUNC_COMMAND:
|
case FUNC_COMMAND:
|
||||||
result = DebugCommand();
|
result = DecodeCommand(kDebugCommands, DebugCommand);
|
||||||
break;
|
|
||||||
case FUNC_FREE_MEM:
|
|
||||||
if (CPU_show_freemem) { DebugFreeMem(); }
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user