Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

String manipulations giving grief. As usual. #1639

Closed
jimmys01 opened this issue Oct 15, 2021 · 18 comments · Fixed by #1640
Closed

String manipulations giving grief. As usual. #1639

jimmys01 opened this issue Oct 15, 2021 · 18 comments · Fixed by #1640
Assignees
Labels
bug Hacktoberfest Hacktoberfest participation

Comments

@jimmys01
Copy link
Contributor

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
Copy link
Owner

crankyoldgit commented Oct 15, 2021

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

@crankyoldgit
Copy link
Owner

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

@jimmys01
Copy link
Contributor Author

jimmys01 commented Oct 16, 2021

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
Copy link
Owner

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
Copy link
Owner

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

@jimmys01
Copy link
Contributor Author

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
Copy link
Owner

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 added a commit that referenced this issue Oct 16, 2021
* Try to add backward compatiblity to older 8266 Arduino frameworks
* Add code comments to document why this has been done.
* Doesn't seem to be required as of 3.0.2 of the ESP8266 Arduino Framework/platform code.

Fixes #1639

Co-authored-by: @jimmys01
@crankyoldgit
Copy link
Owner

@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:/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
Copy link

TD-er commented Oct 16, 2021

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
Copy link
Owner

@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
Copy link

TD-er commented Oct 16, 2021

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
Copy link
Owner

crankyoldgit commented Oct 16, 2021

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

@TD-er
Copy link

TD-er commented Oct 16, 2021

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
Copy link
Owner

My review of https:/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. 🤞

@crankyoldgit crankyoldgit added Hacktoberfest Hacktoberfest participation Pending Confirmation Waiting for confirmation from user and removed more info labels Oct 16, 2021
@TD-er
Copy link

TD-er commented Oct 16, 2021

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

@crankyoldgit
Copy link
Owner

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

Thanks.

@crankyoldgit crankyoldgit removed the Pending Confirmation Waiting for confirmation from user label Oct 16, 2021
crankyoldgit added a commit that referenced this issue Oct 16, 2021
* Try to add backward compatibility to older 8266 Arduino frameworks
* Add code comments to document why this has been done.
* Doesn't seem to be required as of 3.0.0 of the ESP8266 Arduino Framework/platform code.
  - The fix doesn't seem to hurt either way. 🤷 

Fixes #1639

Co-authored-by: @jimmys01
crankyoldgit added a commit that referenced this issue Nov 19, 2021
_v2.8.0 (20211119)_

**[Bug Fixes]**
- Fix compilation issue when using old 8266 Arduino Frameworks. (#1639 #1640)
- Fix potential security issue with `scrape_supported_devices.py` (#1616 #1619)

**[Features]**
- SAMSUNG_AC
  - Change `clean` setting to a toggle. (#1676 #1677)
  - Highest fan speed is available without Powerful setting. (#1675 #1678)
  - Change `beep` setting to a toggle. (#1669 #1671)
  - Fix Beep for AR12TXEAAWKNEU (#1668 #1669)
  - Add support for Horizontal Swing & Econo (#1277 #1667)
  - Add support for On, Off, & Sleep Timers (#1277 #1662)
  - Fix power control. Clean-up code & bitmaps from Checksum changes. (#1277 #1648 #1650)
- HAIER_AC176/HAIER_AC_YRW02
  - Add support A/B unit setting (#1672)
  - Add support degree Fahrenheit (#1659)
  - Add support `Lock` function (#1652)
  - Implement horizontal swing feature (#1641)
  - Implement Quiet setting. (#1634 #1635)
- Basic support for Airton Protocol (#1670 #1681)
- HAIER_AC176: Add Turbo and Quiet settings (#1634)
- Gree: Add `SwingH` & `Econo` control. (#1587 #1653)
- MIRAGE
  - Add experimental detailed support. (#1573 #1615)
  - Experimental detailed support for KKG29A-C1 remote. (#1573 #1660)
- ELECTRA_AC: Add support for "IFeel" & Sensor settings. (#1644 #1645)
- Add Russian translation (#1649)
- Add Swedish translation (#1627)
- Reduce flash space used. (#1633)
- Strings finally in Flash! (#1493 #1614 #1623)
- Add support for Rhoss Idrowall MPCV 20-30-35-40 A/C protocol (#1630)
- Make `IRAc::opmodeToString()` output nicer for humans. (#1613)
- TCL112AC/TEKNOPOINT: Add support for `GZ055BE1` model (#1486 #1602)
- Support for Arris protocol. (#1598)
- SharpAc: Allow position control of SwingV (#1590 #1594)

**[Misc]**
- HAIER_AC176/HAIER_AC_YRW02
  - Replace some magic numbers with constants (#1679)
  - Small fix `Quiet` and `Turbo` test (#1674)
  - Fix `IRHaierAC176::getTemp()` return value description (#1663)
- Security Policy creation and changes. (#1616 #1617 #1618 #1621 #1680)
- IRrecvDumpV2/3: Update PlatformIO envs for missing languages (#1661)
- IRMQTTServer
  - Use the correct string for Fan mode in Home Assistant. (#1610 #1657)
  - Move a lot of the strings/text to flash. (#1638)
- Minor code style improvements. (#1656)
- Update Supported Devices
  - HAIER_AC176 (#1673)
  - LG A/C (#1651 #1655)
  - Symphony (#1603 #1605)
  - Epson (#1574 #1601)
  - GREE (#1587 #1588)
  - SharpAc (#1590 #1591)
- Add extra tests for LG2 protocol (#1654)
- Fix parameter expansion in several macros.
- Move some strings to `IRtext.cpp` & `locale/default.h` (#1637)
- RHOSS: Move include and defines to their correct places (#1636)
- Make makefile only build required files when running `run-%` target (#1632)
- Update Portuguese translation (#1628)
- Add possibility to run specific test case (#1625)
- Change `googletest` library ignore (#1626)
- Re-work "Fan Only" strings & matching. (#1610)
- Address `C0209` pylint warnings. (#1608)
crankyoldgit added a commit that referenced this issue Nov 19, 2021
## _v2.8.0 (20211119)_

**[Bug Fixes]**
- Fix compilation issue when using old 8266 Arduino Frameworks. (#1639 #1640)
- Fix potential security issue with `scrape_supported_devices.py` (#1616 #1619)

**[Features]**
- SAMSUNG_AC
  - Change `clean` setting to a toggle. (#1676 #1677)
  - Highest fan speed is available without Powerful setting. (#1675 #1678)
  - Change `beep` setting to a toggle. (#1669 #1671)
  - Fix Beep for AR12TXEAAWKNEU (#1668 #1669)
  - Add support for Horizontal Swing & Econo (#1277 #1667)
  - Add support for On, Off, & Sleep Timers (#1277 #1662)
  - Fix power control. Clean-up code & bitmaps from Checksum changes. (#1277 #1648 #1650)
- HAIER_AC176/HAIER_AC_YRW02
  - Add support A/B unit setting (#1672)
  - Add support degree Fahrenheit (#1659)
  - Add support `Lock` function (#1652)
  - Implement horizontal swing feature (#1641)
  - Implement Quiet setting. (#1634 #1635)
- Basic support for Airton Protocol (#1670 #1681)
- HAIER_AC176: Add Turbo and Quiet settings (#1634)
- Gree: Add `SwingH` & `Econo` control. (#1587 #1653)
- MIRAGE
  - Add experimental detailed support. (#1573 #1615)
  - Experimental detailed support for KKG29A-C1 remote. (#1573 #1660)
- ELECTRA_AC: Add support for "IFeel" & Sensor settings. (#1644 #1645)
- Add Russian translation (#1649)
- Add Swedish translation (#1627)
- Reduce flash space used. (#1633)
- Strings finally in Flash! (#1493 #1614 #1623)
- Add support for Rhoss Idrowall MPCV 20-30-35-40 A/C protocol (#1630)
- Make `IRAc::opmodeToString()` output nicer for humans. (#1613)
- TCL112AC/TEKNOPOINT: Add support for `GZ055BE1` model (#1486 #1602)
- Support for Arris protocol. (#1598)
- SharpAc: Allow position control of SwingV (#1590 #1594)

**[Misc]**
- HAIER_AC176/HAIER_AC_YRW02
  - Replace some magic numbers with constants (#1679)
  - Small fix `Quiet` and `Turbo` test (#1674)
  - Fix `IRHaierAC176::getTemp()` return value description (#1663)
- Security Policy creation and changes. (#1616 #1617 #1618 #1621 #1680)
- IRrecvDumpV2/3: Update PlatformIO envs for missing languages (#1661)
- IRMQTTServer
  - Use the correct string for Fan mode in Home Assistant. (#1610 #1657)
  - Move a lot of the strings/text to flash. (#1638)
- Minor code style improvements. (#1656)
- Update Supported Devices
  - HAIER_AC176 (#1673)
  - LG A/C (#1651 #1655)
  - Symphony (#1603 #1605)
  - Epson (#1574 #1601)
  - GREE (#1587 #1588)
  - SharpAc (#1590 #1591)
- Add extra tests for LG2 protocol (#1654)
- Fix parameter expansion in several macros.
- Move some strings to `IRtext.cpp` & `locale/default.h` (#1637)
- RHOSS: Move include and defines to their correct places (#1636)
- Make makefile only build required files when running `run-%` target (#1632)
- Update Portuguese translation (#1628)
- Add possibility to run specific test case (#1625)
- Change `googletest` library ignore (#1626)
- Re-work "Fan Only" strings & matching. (#1610)
- Address `C0209` pylint warnings. (#1608)
@crankyoldgit
Copy link
Owner

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

@TD-er
Copy link

TD-er commented Nov 19, 2021

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Hacktoberfest Hacktoberfest participation
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants