crankyoldgit / IRremoteESP8266

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
GNU Lesser General Public License v2.1
2.92k stars 827 forks source link

String manipulations giving grief. As usual. #1639

Closed jimmys01 closed 2 years ago

jimmys01 commented 2 years ago

Version/revision of the library used

Latest and greatest self compiled build

Describe the bug

The Compiler is nagging about IRutils.cpp:98:50: error: conversion from 'const __FlashStringHelper* const' to 'const StringSumHelper' is ambiguous return kDashStr + uint64ToString(-input, base); My fix ( I do not know if is the best solution) return String(kDashStr) + uint64ToString(-input, base);

Also

ir_Coolix.cpp:614:57: error: operands to ?: have different types 'const __FlashStringHelper* const' and 'StringSumHelper'
           ? kOffStr : uint64ToString(getSensorTemp()) + 'C', kSensorTempStr);

My fix (also dont know if this is the best solution) ? kOffStr : String(uint64ToString(getSensorTemp()) + 'C'), kSensorTempStr);

Expected behaviour

To compile.

Keep up the excelent work Mutsos Gracias

crankyoldgit commented 2 years ago

Thanks for the report. Can you please tell us what build target, platform, and IDE you're using so we can replicate this?

crankyoldgit commented 2 years ago

I'm asking because this isn't showing up in our automated build system (which is PlatformIO).

jimmys01 commented 2 years ago

The IDE is Visual Studio with PlatformIO I can recreate it with IRrecvDumpV3 from the examples

Processing nodemcuv2 (board: nodemcuv2; platform: espressif8266; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
PLATFORM: Espressif 8266 (2.6.3) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 3.20704.0 (2.7.4)
 - tool-esptool 1.413.0 (4.13)
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa 2.40802.200502 (4.8.2)
crankyoldgit commented 2 years ago

Interesting.

I don't get the same result with my env. Looking through my build and your environment, it looks like this may have been an issue fixed in the more recent Espressif 8266 platform (i.e. 3.0.2 vs your 2.6.3) and framework-arduinoespressif8266 3.30002.0 (3.0.2 vs your 2.7.4)

i.e.

PLATFORM: Espressif 8266 (3.2.0) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif8266 3.30002.0 (3.0.2) 
 - tool-esptool 1.413.0 (4.13) 
 - tool-esptoolpy 1.30000.201119 (3.0.0) 
 - toolchain-xtensa 2.100300.210717 (10.3.0)

Full output of the build below:

examples/IRrecvDumpV3$ pio run --project-dir . --environment nodemcuv2
********************************************************************************
Obsolete PIO Core v5.2.0 is used (previous was 5.2.1)
Please remove multiple PIO Cores from a system:
https://docs.platformio.org/page/faq.html#multiple-platformio-cores-in-a-system
********************************************************************************
Processing nodemcuv2 (board: nodemcuv2; platform: espressif8266; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
PLATFORM: Espressif 8266 (3.2.0) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif8266 3.30002.0 (3.0.2) 
 - tool-esptool 1.413.0 (4.13) 
 - tool-esptoolpy 1.30000.201119 (3.0.0) 
 - toolchain-xtensa 2.100300.210717 (10.3.0)
Converting IRrecvDumpV3.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ deep+, Compatibility ~ soft
Found 46 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <ESP8266WiFi> 1.0
|-- <ArduinoOTA> 1.0
|   |-- <ESP8266WiFi> 1.0
|   |-- <ESP8266mDNS> 1.2
|   |   |-- <ESP8266WiFi> 1.0
|-- <src>
Building in release mode
Compiling .pio/build/nodemcuv2/src/IRrecvDumpV3.ino.cpp.o
Generating LD script .pio/build/nodemcuv2/ld/local.eagle.app.v6.common.ld
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFi.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiAP.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiMulti.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiSTA.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/ESP8266WiFiScan.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/WiFiClient.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/WiFiServer.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/WiFiUdp.cpp.o
Compiling .pio/build/nodemcuv2/liba45/ESP8266WiFi/enable_wifi_at_boot_time.cpp.o
Compiling .pio/build/nodemcuv2/lib98e/ESP8266mDNS/ESP8266mDNS.cpp.o
Compiling .pio/build/nodemcuv2/lib98e/ESP8266mDNS/LEAmDNS.cpp.o
Archiving .pio/build/nodemcuv2/liba45/libESP8266WiFi.a
Indexing .pio/build/nodemcuv2/liba45/libESP8266WiFi.a
Compiling .pio/build/nodemcuv2/lib98e/ESP8266mDNS/LEAmDNS_Control.cpp.o
Compiling .pio/build/nodemcuv2/lib98e/ESP8266mDNS/LEAmDNS_Helpers.cpp.o
Compiling .pio/build/nodemcuv2/lib98e/ESP8266mDNS/LEAmDNS_Structs.cpp.o
Compiling .pio/build/nodemcuv2/lib98e/ESP8266mDNS/LEAmDNS_Transfer.cpp.o
Compiling .pio/build/nodemcuv2/lib603/ArduinoOTA/ArduinoOTA.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/IRac.cpp.o
Archiving .pio/build/nodemcuv2/lib98e/libESP8266mDNS.a
Indexing .pio/build/nodemcuv2/lib98e/libESP8266mDNS.a
Compiling .pio/build/nodemcuv2/libd31/src/IRrecv.cpp.o
Archiving .pio/build/nodemcuv2/lib603/libArduinoOTA.a
Indexing .pio/build/nodemcuv2/lib603/libArduinoOTA.a
Compiling .pio/build/nodemcuv2/libd31/src/IRsend.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/IRtext.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/IRtimer.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/IRutils.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Airwell.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Aiwa.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Amcor.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Argo.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Arris.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Bose.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Carrier.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Coolix.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Corona.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Daikin.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Delonghi.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Denon.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Dish.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Doshisha.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Ecoclim.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Electra.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_EliteScreens.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Epson.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Fujitsu.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_GICable.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_GlobalCache.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Goodweather.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Gree.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Haier.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Hitachi.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Inax.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_JVC.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Kelon.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Kelvinator.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_LG.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Lasertag.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Lego.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Lutron.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_MWM.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Magiquest.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Metz.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Midea.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_MilesTag2.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Mirage.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Mitsubishi.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_MitsubishiHeavy.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Multibrackets.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_NEC.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Neoclima.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Nikai.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Panasonic.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Pioneer.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Pronto.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_RC5_RC6.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_RCMM.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Rhoss.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Samsung.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Sanyo.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Sharp.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Sherwood.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Sony.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Symphony.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Tcl.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Technibel.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Teco.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Teknopoint.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Toshiba.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Transcold.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Trotec.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Truma.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Vestel.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Voltas.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Whirlpool.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Whynter.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Xmp.cpp.o
Compiling .pio/build/nodemcuv2/libd31/src/ir_Zepeal.cpp.o
Archiving .pio/build/nodemcuv2/libFrameworkArduinoVariant.a
Indexing .pio/build/nodemcuv2/libFrameworkArduinoVariant.a
Compiling .pio/build/nodemcuv2/FrameworkArduino/Crypto.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Esp-frag.cpp.o
Archiving .pio/build/nodemcuv2/libd31/libsrc.a
Indexing .pio/build/nodemcuv2/libd31/libsrc.a
Compiling .pio/build/nodemcuv2/FrameworkArduino/Esp-version.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Esp.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/FS.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/FSnoop.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/FunctionalInterrupt.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/LwipDhcpServer-NonOS.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/LwipDhcpServer.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/LwipIntf.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/LwipIntfCB.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/MD5Builder.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Print.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Schedule.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/StackThunk.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/StreamSend.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/TypeConversion.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/Updater.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/WString.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/abi.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/aes_unwrap.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/base64.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/cbuf.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/cont.S.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/cont_util.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_app_entry_noextra4k.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_eboot_command.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_features.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_flash_quirks.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_flash_utils.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_i2s.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_main.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_non32xfer.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_noniso.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_phy.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_postmortem.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_si2c.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_sigma_delta.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_spi_utils.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_timer.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_vm.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_waveform_phase.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_waveform_pwm.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_wiring.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_wiring_analog.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_wiring_digital.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_wiring_pulse.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_wiring_pwm.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/core_esp8266_wiring_shift.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/crc32.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/debug.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/exc-c-wrapper-handler.S.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/exc-sethandler.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/flash_hal.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/gdb_hooks.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/heap.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/hwdt_app_entry.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/libb64/cdecode.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/libb64/cencode.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/libc_replacements.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/mmu_iram.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/reboot_uart_dwnld.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/spiffs/spiffs_cache.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/spiffs/spiffs_check.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/spiffs/spiffs_gc.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/spiffs/spiffs_hydrogen.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/spiffs/spiffs_nucleus.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/spiffs_api.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/sqrt32.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/stdlib_noniso.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/time.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/uart.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/umm_malloc/umm_info.c.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/umm_malloc/umm_integrity.c.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/umm_malloc/umm_local.c.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/umm_malloc/umm_malloc.cpp.o
Compiling .pio/build/nodemcuv2/FrameworkArduino/umm_malloc/umm_poison.c.o
Archiving .pio/build/nodemcuv2/libFrameworkArduino.a
Indexing .pio/build/nodemcuv2/libFrameworkArduino.a
Linking .pio/build/nodemcuv2/firmware.elf
Retrieving maximum program size .pio/build/nodemcuv2/firmware.elf
Checking size .pio/build/nodemcuv2/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [====      ]  35.5% (used 29072 bytes from 81920 bytes)
Flash: [====      ]  35.8% (used 373617 bytes from 1044464 bytes)
Building .pio/build/nodemcuv2/firmware.bin
Creating BIN file ".pio/build/nodemcuv2/firmware.bin" using "/home/david/.platformio/packages/framework-arduinoespressif8266/bootloaders/eboot/eboot.elf" and ".pio/build/nodemcuv2/firmware.elf"
========================= [SUCCESS] Took 37.61 seconds =========================

Environment    Status    Duration
-------------  --------  ------------
nodemcuv2      SUCCESS   00:00:37.606
========================= 1 succeeded in 00:00:37.606 =========================

However, in the meantime, assuming you can't upgrade, I'll look to see what is the "best" fix to give you backward compatiblity.

crankyoldgit commented 2 years ago

Oh, and I'm using the current master branch head, not that I think it matters. Just for reference.

jimmys01 commented 2 years ago

Looking through my build and your environment, it looks like this may have been an issue fixed in the more recent Espressif 8266 platform (i.e. 3.0.2 vs your 2.6.3) and framework-arduinoespressif8266 3.30002.0 (3.0.2 vs your 2.7.4)

@TD-er

crankyoldgit commented 2 years ago

Looking through my build and your environment, it looks like this may have been an issue fixed in the more recent Espressif 8266 platform (i.e. 3.0.2 vs your 2.6.3) and framework-arduinoespressif8266 3.30002.0 (3.0.2 vs your 2.7.4)

@TD-er

FWIW, that is just an educated guess. I didn't look to see if it was something that was fixed, but it wouldn't surprise me if it was something that was fixed.

crankyoldgit commented 2 years ago

@jimmys01 & @TD-er Can you please test it against your build environment? I'm going to assume it works as I've basically taking @jimmys01's suggested changes. Branch: https://github.com/crankyoldgit/IRremoteESP8266/tree/Issue1639 (PR #1640)

To save me the effort of downgrading my environment, any chance I can get you to run the following in your build env (i.e. 2.6.x) in the examples/IRrecvDumpV2 & examples/IRMQTTServer directories:

pio run --project-dir . --environment nodemcuv2

That is to see if we can flush out any other compiler warning/error oddities I'm not finding in my build env.

Thanks in advance.

TD-er commented 2 years ago

I don't know why that "custom IR" build env. is still using 2.6.3 As soon as this fix of yours is done, we may need to look into why that one is not set to 2.7.4 at least.

Still working on 3.0.x support as it had a lot more to change than I would have expected it to be.

crankyoldgit commented 2 years ago

@TD-er I'd be interested to see what "version" they fixed this in (assuming I'm correct) .. I'm hunting through to find when/where they fixed it.

TD-er commented 2 years ago

Well there has been a recent merge of PR of mine regarding the way how FlashStrings are being dealt with in the String class. That one was mainly intended to reduce build size as you would otherwise get a lot of explicit String() casts in the compiled binary. But maybe that also "fixed" this issue we're seeing now. As far as I remember, that one was merged after 3.0 was released.

crankyoldgit commented 2 years ago

My current leading candidate is: https://github.com/esp8266/Arduino/pull/7781 where they fixed/corrected the + overload operator and rework etc. i.e. 3.0.0

TD-er commented 2 years ago

Yep, looks like a good candidate for what we're seeing here.

Concatenating directly to flashstring items used to be quite problematic in the past. Glad to know that will be less of an issue in the future :)

crankyoldgit commented 2 years ago

My review of https://github.com/esp8266/Arduino/releases looking for likely changes is 3.0.0 introduced the improvement. i.e. My guess above as the best candidate PR for the change.

Anyway. Just waiting for review etc and I'll merge the suggestions. I just fear in all the recent string work we've done there is going to be some other pre-3.0.0 compile issue that we've missed. 🤞

TD-er commented 2 years ago

With the suggested changes made by @jimmys01 the build was successful. See GH actions of that build.

crankyoldgit commented 2 years ago

With the suggested changes made by @jimmys01 the build was successful. See GH actions of that build.

Thanks.

crankyoldgit commented 2 years ago

FYI, the changes mentioned above have now been included in the new v2.8.0 release of the library.

TD-er commented 2 years ago

Thanks for the heads up. I guess @jimmys01 is already preparing a new PR for ESPEasy then :)