[SOLVED] mega-20210503 doesn't compile on Arduino 1.8.15
Posted: 01 Aug 2021, 12:35
Followed instructions from:
https://espeasy.readthedocs.io/en/lates ... sy-sources
I just need P065 (DFPLayer Mini) on 1M ESP-01S, no other changes made. Tried Arduino 1.8.13 and 1.8.15, doesn't compile, produces this error:
Context:
Please help me resolve this.
https://espeasy.readthedocs.io/en/lates ... sy-sources
I just need P065 (DFPLayer Mini) on 1M ESP-01S, no other changes made. Tried Arduino 1.8.13 and 1.8.15, doesn't compile, produces this error:
Code: Select all
C:\software\arduino-1.8.15\portable\sketchbook\ESPEasy\src\Commands\GPIO.cpp: In function 'bool gpio_mode_range_helper(byte, byte, EventStruct*, const char*)':
C:\software\arduino-1.8.15\portable\sketchbook\ESPEasy\src\Commands\GPIO.cpp:925:38: error: cannot convert 'String' to 'bool' in return
925 | return return_command_success();
| ~~~~~~~~~~~~~~~~~~~~~~^~
| |
| String
C:\software\arduino-1.8.15\portable\sketchbook\ESPEasy\src\Commands\GPIO.cpp:928:37: error: cannot convert 'String' to 'bool' in return
928 | return return_command_failed();
| ~~~~~~~~~~~~~~~~~~~~~^~
| |
| String
C:\software\arduino-1.8.15\portable\sketchbook\ESPEasy\src\Commands\GPIO.cpp:932:35: error: cannot convert 'String' to 'bool' in return
932 | return return_command_failed();
| ~~~~~~~~~~~~~~~~~~~~~^~
| |
| String
C:\software\arduino-1.8.15\portable\sketchbook\ESPEasy\src\Commands\GPIO.cpp:936:33: error: cannot convert 'String' to 'bool' in return
936 | return return_command_failed();
| ~~~~~~~~~~~~~~~~~~~~~^~
| |
| String
exit status 1
Error compiling for board Generic ESP8266 Module.
Code: Select all
String Command_GPIO_Mode(struct EventStruct *event, const char* Line)
{
if (gpio_mode_range_helper(event->Par1, event->Par2, event, Line))
return return_command_success();
else
return return_command_failed();
}
String Command_GPIO_ModeRange(struct EventStruct *event, const char* Line)
{
bool success=true;
for (byte i=event->Par1;i<=event->Par2;i++) {
success &= gpio_mode_range_helper(i, event->Par3, event, Line);
}
return success?return_command_success():return_command_failed();
}
bool gpio_mode_range_helper(byte pin, byte pinMode, struct EventStruct *event, const char* Line)
{
String logPrefix;// = new char;
String logPostfix;// = new char;
pluginID_t pluginID=INVALID_PLUGIN_ID;
//Line[0]='g':gpio; ='p':pcfgpio; ='m':mcpgpio
bool success = getPluginIDAndPrefix(Line[0], pluginID, logPrefix);
if (success && checkValidPortRange(pluginID, pin))
{
//int8_t state=0;
byte mode=255;
//bool setSuccess=false;
switch (pinMode) {
case 0:
mode = PIN_MODE_OUTPUT;
logPostfix = F("OUTPUT");
break;
case 1:
mode = PIN_MODE_INPUT_PULLUP;
logPostfix = F("INPUT PULLUP");
break;
case 2:
mode = PIN_MODE_INPUT;
logPostfix = F("INPUT");
break;
}
if (mode < 255) {
switch(pluginID) {
case PLUGIN_GPIO:
/* setSuccess = */ setGPIOMode(pin, mode);
break;
case PLUGIN_PCF:
//set pin = 1 when INPUT
/* setSuccess = */ setPCFMode(pin, mode);
break;
case PLUGIN_MCP:
/* setSuccess = */ setMCPMode(pin, mode);
break;
}
const uint32_t key = createKey(pluginID,pin);
if (globalMapPortStatus[key].mode != PIN_MODE_OFFLINE)
{
int8_t currentState;
GPIO_Read(pluginID, pin, currentState);
//state = currentState;
if (currentState==-1) {
mode=PIN_MODE_OFFLINE;
//state = -1;
}
createAndSetPortStatus_Mode_State(key,mode,currentState);
String log = logPrefix + String(F(" : port#")) + String(pin) + String(F(": MODE set to ")) + logPostfix + String(F(". Value = ")) + String(currentState);
addLog(LOG_LEVEL_INFO, log);
SendStatusOnlyIfNeeded(event, SEARCH_PIN_STATE, key, log, 0);
return return_command_success();
} else {
logErrorGpioOffline(logPrefix,pin);
return return_command_failed();
}
} else {
logErrorModeOutOfRange(logPrefix,pin);
return return_command_failed();
}
} else {
logErrorGpioOutOfRange(logPrefix,pin, Line);
return return_command_failed();
}
}
bool getGPIOPinStateValues(String& str) {
// parseString(string, 1) = device (gpio,mcpgpio,pcfgpio) that can be shortened to g, m or p
// parseString(string, 2) = command (pinstate,pinrange)
// parseString(string, 3) = gpio 1st number or a range separated by '-'
bool success=false;
String logPrefix="";
if ((parseString(str, 2).length() >= 8) && parseString(str, 2).equalsIgnoreCase(F("pinstate"))) {
// returns pin value using syntax: [plugin#xxxxxxx#pinstate#x]
int par1;
switch (parseString(str, 1)[0]) {
case 'g':
if (validIntFromString(parseString(str, 3), par1)) {
str = String(digitalRead(par1));
logPrefix="GPIO";
success=true;
}
break;
case 'm':
if (validIntFromString(parseString(str, 3), par1)) {
str = String(GPIO_MCP_Read(par1));
logPrefix="MCP";
success=true;
}
break;
case 'p':
if (validIntFromString(parseString(str, 3), par1)) {
str = GPIO_PCF_Read(par1);
logPrefix="PCF";
success=true;
}
break;
}
if (success) {
addLog(LOG_LEVEL_DEBUG,logPrefix+String(F(" PLUGIN PINSTATE pin ="))+String(par1)+String(F("; value="))+str);
} else {
str="0";
addLog(LOG_LEVEL_INFO,logPrefix+String(F(" PLUGIN PINSTATE. Syntax error. Pin parameter is not numeric")));
}
} else if ((parseString(str, 2).length() >= 8) && parseString(str, 2).equalsIgnoreCase(F("pinrange"))) {
// returns pin value using syntax: [plugin#xxxxxxx#pinrange#x-y]
int par1,par2;
bool successPar = false;
int dashpos = parseString(str, 3).indexOf('-');
if (dashpos != -1) {
// Found an extra '-' in the 4th param, will split.
successPar = validIntFromString(parseString(str, 3).substring(dashpos + 1),par2);
successPar &= validIntFromString(parseString(str, 3).substring(0, dashpos),par1);
}