mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-28 21:26:33 +00:00
Change number of `FriendlyName
`s from 4 to 8
Change number of ``FriendlyName``s from 4 to 8
This commit is contained in:
parent
def4378499
commit
a2478f9569
@ -55,6 +55,7 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
|
||||
- Change Settings text handling allowing variable length text within a total text pool of 699 characters
|
||||
- Change Smoother ``Fade`` using 100Hz instead of 20Hz animation (#7179)
|
||||
- Change number of rule ``Var``s and ``Mem``s from 5 to 16 (#4933)
|
||||
- Change number of ``FriendlyName``s from 4 to 8
|
||||
- Add support for max 150 characters in most command parameter strings (#3686, #4754)
|
||||
- Add support for GPS as NTP server by Christian Baars and Adrian Scillato
|
||||
- Add support for ``AdcParam`` parameters to control ADC0 Moisture formula by Federico Leoni (#7309)
|
||||
|
@ -3,6 +3,7 @@
|
||||
### 8.0.0.2 20191223
|
||||
|
||||
- Changed Settings variable namings
|
||||
- Change number of ``FriendlyName``s from 4 to 8
|
||||
- Add Zigbee better support for Xiaomi Double Switch and Xiaomi Vibration sensor
|
||||
- Add support for ``AdcParam`` parameters to control ADC0 Moisture formula by Federico Leoni (#7309)
|
||||
|
||||
|
@ -337,7 +337,7 @@ struct SYSCFG {
|
||||
SysBitfield3 flag3; // 3A0
|
||||
uint8_t switchmode[MAX_SWITCHES]; // 3A4 (6.0.0b - moved from 0x4CA)
|
||||
|
||||
char ex_friendlyname[MAX_FRIENDLYNAMES][33]; // 3AC
|
||||
char ex_friendlyname[4][33]; // 3AC
|
||||
char ex_switch_topic[33]; // 430
|
||||
|
||||
char serial_delimiter; // 451
|
||||
|
@ -58,7 +58,6 @@ const uint8_t MAX_PWMS = 5; // Max number of PWM channels
|
||||
const uint8_t MAX_COUNTERS = 4; // Max number of counter sensors
|
||||
const uint8_t MAX_TIMERS = 16; // Max number of Timers
|
||||
const uint8_t MAX_PULSETIMERS = 8; // Max number of supported pulse timers
|
||||
const uint8_t MAX_FRIENDLYNAMES = 4; // Max number of Friendly names
|
||||
const uint8_t MAX_DOMOTICZ_IDX = 4; // Max number of Domoticz device, key and switch indices
|
||||
const uint8_t MAX_DOMOTICZ_SNS_IDX = 12; // Max number of Domoticz sensors indices
|
||||
const uint8_t MAX_KNX_GA = 10; // Max number of KNX Group Addresses to read that can be set
|
||||
@ -73,7 +72,10 @@ const uint8_t MAX_PCF8574 = 8; // Max number of PCF8574 devices
|
||||
const uint8_t MAX_RULE_SETS = 3; // Max number of rule sets of size 512 characters
|
||||
const uint16_t MAX_RULE_SIZE = 512; // Max number of characters in rules
|
||||
|
||||
// Changes to the following MAX_ defines need to be in line with enum SettingsTextIndex
|
||||
const uint8_t MAX_FRIENDLYNAMES = 8; // Max number of Friendly names
|
||||
const uint8_t MAX_RULE_MEMS = 16; // Max number of saved vars
|
||||
|
||||
const uint8_t MAX_HUE_DEVICES = 15; // Max number of Philips Hue device per emulation
|
||||
|
||||
const char MQTT_TOKEN_PREFIX[] PROGMEM = "%prefix%"; // To be substituted by mqtt_prefix[x]
|
||||
@ -287,13 +289,11 @@ enum SettingsTextIndex { SET_OTAURL,
|
||||
SET_MEM1, SET_MEM2, SET_MEM3, SET_MEM4, SET_MEM5, SET_MEM6, SET_MEM7, SET_MEM8,
|
||||
SET_MEM9, SET_MEM10, SET_MEM11, SET_MEM12, SET_MEM13, SET_MEM14, SET_MEM15, SET_MEM16,
|
||||
SET_FRIENDLYNAME1, SET_FRIENDLYNAME2, SET_FRIENDLYNAME3, SET_FRIENDLYNAME4,
|
||||
|
||||
// SET_FRIENDLYNAME5, SET_FRIENDLYNAME6, SET_FRIENDLYNAME7, SET_FRIENDLYNAME8, // Future extension
|
||||
// SET_BUTTON1, SET_BUTTON2, SET_BUTTON3, SET_BUTTON4, // Future extension
|
||||
// SET_BUTTON5, SET_BUTTON6, SET_BUTTON7, SET_BUTTON8, // Future extension
|
||||
// SET_BUTTON9, SET_BUTTON10, SET_BUTTON11, SET_BUTTON12, // Future extension
|
||||
// SET_BUTTON13, SET_BUTTON14, SET_BUTTON15, SET_BUTTON16, // Future extension
|
||||
|
||||
SET_FRIENDLYNAME5, SET_FRIENDLYNAME6, SET_FRIENDLYNAME7, SET_FRIENDLYNAME8,
|
||||
SET_BUTTON1, SET_BUTTON2, SET_BUTTON3, SET_BUTTON4,
|
||||
SET_BUTTON5, SET_BUTTON6, SET_BUTTON7, SET_BUTTON8,
|
||||
SET_BUTTON9, SET_BUTTON10, SET_BUTTON11, SET_BUTTON12,
|
||||
SET_BUTTON13, SET_BUTTON14, SET_BUTTON15, SET_BUTTON16,
|
||||
SET_MAX };
|
||||
|
||||
enum CommandSource { SRC_IGNORE, SRC_MQTT, SRC_RESTART, SRC_BUTTON, SRC_SWITCH, SRC_BACKLOG, SRC_SERIAL, SRC_WEBGUI, SRC_WEBCOMMAND, SRC_WEBCONSOLE, SRC_PULSETIMER,
|
||||
|
@ -1846,6 +1846,7 @@ void OtherSaveSettings(void)
|
||||
char tmp[TOPSZ];
|
||||
char webindex[5];
|
||||
char friendlyname[TOPSZ];
|
||||
char message[LOGSZ];
|
||||
|
||||
WebGetArg("wp", tmp, sizeof(tmp));
|
||||
SettingsUpdateText(SET_WEBPWD, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? SettingsText(SET_WEBPWD) : tmp);
|
||||
@ -1854,15 +1855,17 @@ void OtherSaveSettings(void)
|
||||
WebGetArg("b2", tmp, sizeof(tmp));
|
||||
Settings.flag2.emulation = (!strlen(tmp)) ? 0 : atoi(tmp);
|
||||
#endif // USE_EMULATION
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_OTHER D_MQTT_ENABLE " %s, " D_CMND_EMULATION " %d, " D_CMND_FRIENDLYNAME), GetStateText(Settings.flag.mqtt_enabled), Settings.flag2.emulation);
|
||||
|
||||
snprintf_P(message, sizeof(message), PSTR(D_LOG_OTHER D_MQTT_ENABLE " %s, " D_CMND_EMULATION " %d, " D_CMND_FRIENDLYNAME), GetStateText(Settings.flag.mqtt_enabled), Settings.flag2.emulation);
|
||||
for (uint32_t i = 0; i < MAX_FRIENDLYNAMES; i++) {
|
||||
snprintf_P(webindex, sizeof(webindex), PSTR("a%d"), i);
|
||||
WebGetArg(webindex, tmp, sizeof(tmp));
|
||||
snprintf_P(friendlyname, sizeof(friendlyname), PSTR(FRIENDLY_NAME"%d"), i +1);
|
||||
SettingsUpdateText(SET_FRIENDLYNAME1 +i, (!strlen(tmp)) ? (i) ? friendlyname : FRIENDLY_NAME : tmp);
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR("%s%s %s"), log_data, (i) ? "," : "", SettingsText(SET_FRIENDLYNAME1 +i));
|
||||
snprintf_P(message, sizeof(message), PSTR("%s%s %s"), message, (i) ? "," : "", SettingsText(SET_FRIENDLYNAME1 +i));
|
||||
}
|
||||
AddLog(LOG_LEVEL_INFO);
|
||||
AddLog_P(LOG_LEVEL_INFO, message);
|
||||
|
||||
WebGetArg("t1", tmp, sizeof(tmp));
|
||||
if (strlen(tmp)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255}
|
||||
char svalue[128];
|
||||
|
@ -733,12 +733,13 @@ void HandleTimerConfiguration(void)
|
||||
void TimerSaveSettings(void)
|
||||
{
|
||||
char tmp[MAX_TIMERS *12]; // Need space for MAX_TIMERS x 10 digit numbers separated by a comma
|
||||
char message[LOGSZ];
|
||||
Timer timer;
|
||||
|
||||
Settings.flag3.timers_enable = WebServer->hasArg("e0"); // CMND_TIMERS
|
||||
WebGetArg("t0", tmp, sizeof(tmp));
|
||||
char *p = tmp;
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_TIMERS " %d"), Settings.flag3.timers_enable); // CMND_TIMERS
|
||||
snprintf_P(message, sizeof(message), PSTR(D_LOG_MQTT D_CMND_TIMERS " %d"), Settings.flag3.timers_enable); // CMND_TIMERS
|
||||
for (uint32_t i = 0; i < MAX_TIMERS; i++) {
|
||||
timer.data = strtol(p, &p, 10);
|
||||
p++; // Skip comma
|
||||
@ -747,9 +748,9 @@ void TimerSaveSettings(void)
|
||||
Settings.timer[i].data = timer.data;
|
||||
if (flag) TimerSetRandomWindow(i);
|
||||
}
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR("%s,0x%08X"), log_data, Settings.timer[i].data);
|
||||
snprintf_P(message, sizeof(message), PSTR("%s,0x%08X"), message, Settings.timer[i].data);
|
||||
}
|
||||
AddLog(LOG_LEVEL_DEBUG);
|
||||
AddLog_P(LOG_LEVEL_DEBUG, message);
|
||||
}
|
||||
#endif // USE_TIMERS_WEB
|
||||
#endif // USE_WEBSERVER
|
||||
|
@ -1400,8 +1400,7 @@ bool evaluateLogicalExpression(const char * expression, int len)
|
||||
memcpy(expbuff, expression, len);
|
||||
expbuff[len] = '\0';
|
||||
|
||||
//snprintf_P(log_data, sizeof(log_data), PSTR("EvalLogic: |%s|"), expbuff);
|
||||
//AddLog(LOG_LEVEL_DEBUG);
|
||||
//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EvalLogic: |%s|"), expbuff);
|
||||
char * pointer = expbuff;
|
||||
LinkedList<bool> values;
|
||||
LinkedList<int8_t> logicOperators;
|
||||
@ -1527,8 +1526,7 @@ void ExecuteCommandBlock(const char * commands, int len)
|
||||
memcpy(cmdbuff, commands, len);
|
||||
cmdbuff[len] = '\0';
|
||||
|
||||
//snprintf_P(log_data, sizeof(log_data), PSTR("ExecCmd: |%s|"), cmdbuff);
|
||||
//AddLog(LOG_LEVEL_DEBUG);
|
||||
//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ExecCmd: |%s|"), cmdbuff);
|
||||
char oneCommand[len + 1]; //To put one command
|
||||
int insertPosition = 0; //When insert into backlog, we should do it by 0, 1, 2 ...
|
||||
char * pos = cmdbuff;
|
||||
|
@ -2203,8 +2203,7 @@ void Replace_Cmd_Vars(char *srcbuf,char *dstbuf,uint16_t dstsize) {
|
||||
|
||||
void toLog(const char *str) {
|
||||
if (!str) return;
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR("%s"),str);
|
||||
AddLog(LOG_LEVEL_INFO);
|
||||
AddLog_P(LOG_LEVEL_INFO, str);
|
||||
}
|
||||
|
||||
|
||||
@ -2681,8 +2680,7 @@ int16_t Run_Scripter(const char *type, int8_t tlen, char *js) {
|
||||
}
|
||||
cmd[count]=*lp++;
|
||||
}
|
||||
//snprintf_P(log_data, sizeof(log_data), tmp);
|
||||
//AddLog(LOG_LEVEL_INFO);
|
||||
//AddLog_P(LOG_LEVEL_INFO, tmp);
|
||||
// replace vars in cmd
|
||||
char *tmp=cmdmem+SCRIPT_CMDMEM/2;
|
||||
Replace_Cmd_Vars(cmd,tmp,SCRIPT_CMDMEM/2);
|
||||
@ -2694,8 +2692,7 @@ int16_t Run_Scripter(const char *type, int8_t tlen, char *js) {
|
||||
} else {
|
||||
if (!sflag) {
|
||||
tasm_cmd_activ=1;
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR("Script: performs \"%s\""), tmp);
|
||||
AddLog(glob_script_mem.script_loglevel&0x7f);
|
||||
AddLog_P2(glob_script_mem.script_loglevel&0x7f, PSTR("Script: performs \"%s\""), tmp);
|
||||
} else if (sflag==2) {
|
||||
// allow recursive call
|
||||
} else {
|
||||
@ -3544,8 +3541,7 @@ void ScriptSaveSettings(void) {
|
||||
if (bitRead(Settings.rule_enabled, 0)) {
|
||||
int16_t res=Init_Scripter();
|
||||
if (res) {
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR("script init error: %d"),res);
|
||||
AddLog(LOG_LEVEL_INFO);
|
||||
AddLog_P2(LOG_LEVEL_INFO, PSTR("script init error: %d"), res);
|
||||
return;
|
||||
}
|
||||
Run_Scripter(">B",2,0);
|
||||
|
@ -124,8 +124,7 @@ void Ssd1306PrintLog(void)
|
||||
strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
|
||||
DisplayFillScreen(last_row);
|
||||
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
|
||||
AddLog(LOG_LEVEL_DEBUG);
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
|
||||
|
||||
renderer->println(disp_screen_buffer[last_row]);
|
||||
renderer->Updateframe();
|
||||
|
@ -119,8 +119,7 @@ void SH1106PrintLog(void)
|
||||
strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
|
||||
DisplayFillScreen(last_row);
|
||||
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
|
||||
AddLog(LOG_LEVEL_DEBUG);
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
|
||||
|
||||
renderer->println(disp_screen_buffer[last_row]);
|
||||
renderer->Updateframe();
|
||||
|
@ -112,8 +112,7 @@ void SSD1351PrintLog(void)
|
||||
strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
|
||||
DisplayFillScreen(last_row);
|
||||
|
||||
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
|
||||
AddLog(LOG_LEVEL_DEBUG);
|
||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
|
||||
|
||||
renderer->println(disp_screen_buffer[last_row]);
|
||||
renderer->Updateframe();
|
||||
|
@ -75,8 +75,7 @@ void Max4409Detect(void)
|
||||
|
||||
if ((I2cValidRead8(&buffer1, max44009_address, REG_LOWER_THRESHOLD)) &&
|
||||
(I2cValidRead8(&buffer2, max44009_address, REG_THRESHOLD_TIMER))) {
|
||||
//snprintf(log_data, sizeof(log_data), "MAX44009 %x: %x, %x", max44009_address, (int)buffer1, (int)buffer2);
|
||||
//AddLog(LOG_LEVEL_DEBUG_MORE);
|
||||
//AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("MAX44009 %x: %x, %x"), max44009_address, (int)buffer1, (int)buffer2);
|
||||
if ((0x00 == buffer1) &&
|
||||
(0xFF == buffer2)) {
|
||||
|
||||
|
@ -23,6 +23,8 @@
|
||||
#define XSNS_42 42
|
||||
#define XI2C_29 29 // See I2CDEVICES.md
|
||||
|
||||
//#define SCD30_DEBUG
|
||||
|
||||
#define SCD30_ADDRESS 0x61
|
||||
|
||||
#define SCD30_MAX_MISSED_READS 3
|
||||
@ -118,24 +120,23 @@ void Scd30Update(void)
|
||||
scd30ErrorState = SCD30_STATE_ERROR_DATA_CRC;
|
||||
scd30CrcError_count++;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: CRC error, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld", scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: CRC error, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"),
|
||||
scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case ERROR_SCD30_CO2_ZERO:
|
||||
scd30Co2Zero_count++;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: CO2 zero, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld", scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: CO2 zero, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"),
|
||||
scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
#endif
|
||||
break;
|
||||
|
||||
default: {
|
||||
scd30ErrorState = SCD30_STATE_ERROR_READ_MEAS;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: Update: ReadMeasurement error: 0x%lX, counter: %ld", error, scd30Loop_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: Update: ReadMeasurement error: 0x%lX, counter: %ld"), error, scd30Loop_count);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
@ -147,10 +148,9 @@ void Scd30Update(void)
|
||||
case SCD30_STATE_ERROR_DATA_CRC: {
|
||||
//scd30IsDataValid = false;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld", scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: got CRC error, try again, counter: %ld", scd30Loop_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"),
|
||||
scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: got CRC error, try again, counter: %ld"), scd30Loop_count);
|
||||
#endif
|
||||
scd30ErrorState = ERROR_SCD30_NO_ERROR;
|
||||
}
|
||||
@ -159,17 +159,15 @@ void Scd30Update(void)
|
||||
case SCD30_STATE_ERROR_READ_MEAS: {
|
||||
//scd30IsDataValid = false;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld", scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: not answering, sending soft reset, counter: %ld", scd30Loop_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"),
|
||||
scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: not answering, sending soft reset, counter: %ld"), scd30Loop_count);
|
||||
#endif
|
||||
scd30Reset_count++;
|
||||
error = scd30.softReset();
|
||||
if (error) {
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: resetting got error: 0x%lX", error);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: resetting got error: 0x%lX"), error);
|
||||
#endif
|
||||
error >>= 8;
|
||||
if (error == 4) {
|
||||
@ -186,18 +184,16 @@ void Scd30Update(void)
|
||||
case SCD30_STATE_ERROR_SOFT_RESET: {
|
||||
//scd30IsDataValid = false;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld", scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: clearing i2c bus");
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"),
|
||||
scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
|
||||
AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: clearing i2c bus"));
|
||||
#endif
|
||||
i2cReset_count++;
|
||||
error = scd30.clearI2CBus();
|
||||
if (error) {
|
||||
scd30ErrorState = SCD30_STATE_ERROR_I2C_RESET;
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: error clearing i2c bus: 0x%lX", error);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: error clearing i2c bus: 0x%lX"), error);
|
||||
#endif
|
||||
} else {
|
||||
scd30ErrorState = ERROR_SCD30_NO_ERROR;
|
||||
@ -342,8 +338,7 @@ bool Scd30CommandSensor()
|
||||
if (error)
|
||||
{
|
||||
#ifdef SCD30_DEBUG
|
||||
snprintf_P(log_data, sizeof(log_data), "SCD30: error getting FW version: 0x%lX", error);
|
||||
AddLog(LOG_LEVEL_ERROR);
|
||||
AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: error getting FW version: 0x%lX"), error);
|
||||
#endif
|
||||
serviced = false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user