tobozo / YAMLDuino

YAML <=> JSON converter for ESP32, ESP8266, RP2040 and possibly other devices
Other
42 stars 2 forks source link

Request : wish the library support for ArduinoUno, Arduino MEGA. #11

Open TridentTD opened 2 years ago

TridentTD commented 2 years ago

It's a great library. By the ways, if the library support for Arduino Uno/MEGA, it's convenient for communication between MCUs by YAML.

Thank now.

tobozo commented 2 years ago

hi, thanks for you feedback :+1:

there's a blocking problem with AVR:

I've pushed some changes on an experimental branch so you can test, but this will require to manually add printf to your existing arduino package.

Files to edit:

~/.arduino15/packages/arduino/hardware/avr/1.8.5/cores/arduino/Print.h
~/.arduino15/packages/arduino/hardware/avr/1.8.5/cores/arduino/Print.cpp
TridentTD commented 2 years ago

hi, thanks for you feedback 👍

there's a blocking problem with AVR:

  • incomplete sdt lib (prevents some c++ templates from evaluating arg types)
  • Print object is missing the printf() method (e.g. should be inherited by Stream) which is critical for this library

I've pushed some changes on an experimental branch so you can test, but this will require to manually add printf to your existing arduino package.

Files to edit:

~/.arduino15/packages/arduino/hardware/avr/1.8.5/cores/arduino/Print.h
~/.arduino15/packages/arduino/hardware/avr/1.8.5/cores/arduino/Print.cpp

Thank you for the fast reply. I have already tested, it can be compiled. However for Arduino UNO, the mcu's space is too small to use.

If the project wish to use YAML on Arduino UNO, is there any way to parse the YAML data?

Thank you.

tobozo commented 2 years ago

I don't have a Uno, but 2048 bytes of ram sounds a bit too tight to hold both ArduinoJson and YAML library.

ArduinoJson support does compile with some serializeYml() tests though, but deserializeYml() jumps to 300% program space and 250% dynamic memory use, and the former doesn't make sense without the latter.

even mega2560's 8Kb of RAM doesn't sound much given how unoptimized the library is.

I'm trying to apply so basic optimization rules, and will probably get rid of some templates, but I'm very doubtful for deserializeYml() support.

tobozo commented 2 years ago

this printf() implementation is 148 bytes better https://github.com/arduino/ArduinoCore-API/pull/28/files