EpoxyDuino

Compile and run Arduino programs natively on Linux, MacOS and FreeBSD.

MIT License

Stars
99
EpoxyDuino - support old v1.0 library format which can put files in the 'utility' subdirectory Latest Release

Published by bxparks 3 months ago

  • 1.6.0 (2024-07-25)
    • Add strncat_P() to pgmspace.h.
    • Add ESP.restart() and ESP.getChipId(). See
      PR#84.
    • Support files located in the utility subdirectory for libraries using
      the old v1.0 format. Fixes
      Issue#89.
EpoxyDuino - 1.5.0 - support C files; add ARDUINO=100 macro; add 'make run' target

Published by bxparks almost 2 years ago

  • 1.5.0 (2022-12-08)
    • Support compiling plain *.c files in libraries and in the application.
      • The C files are assumed to be written in C11.
    • Define the -D ARDUINO=100 macro.
      • Some 3rd party libraries test for ARDUINO >= 100 to check if it's
        being compiled under Arduino.
      • Many will compile under EpoxyDuino with this macro set.
    • Add make run target which runs the binary generated by make all.
      • Useful in the vim editor where :make run will invoke the quickfix
        feature so that the editor will jump directly to the file and line
        where the AUnit assertion failure occurred.
      • Update the example for loops to invoke make -C {dir} run instead
        of running the binary directly. The vim editor can parse the output
        caused by the -C flag, and automatically generate the correct path
        to the files in the subdirectories.
EpoxyDuino - 1.4.0 - add Udp.h; implement stubs of configTime()

Published by bxparks almost 2 years ago

  • 1.4.0 (2022-11-06)
    • Add memcmp_P() by @dawidchyrzynski in
      PR#71.
    • Add Udp.h interface supporting both the AVR and ESP8266 variants.
    • Provide actual stub implementations of configTime() for ESP8266.
EpoxyDuino - v1.3.1 - allow mocking of digitalWrite(); add stubs for tone() and noTone()

Published by bxparks about 2 years ago

  • 1.3.1 (2022-08-13)
    • Add tone() and noTone() stubs. By @kwisii in
      PR#69.
    • Add uint8_t digitalWriteValue(pin) which returns the value of the
      most recent digitalWrite(pin, val). By @kwisii in
      PR#68.
  • 1.3.0 (2022-03-28)
    • Add support for EXTRA_CPPFLAGS, similar to EXTRA_CXXFLAGS.
    • Add digitalReadValue(pin, val) to control the return value of
      digitalRead(pin).
      • May be useful for testing purposes.
      • The pin parameter must satisfy 0 <= pin < 32, otherwise
        digitalReadValue() is a no-op.
      • See PR#61.
    • Add an empty EpoxyDuino.h at the top level to stop warning messages from
      the Arduino IDE.
    • Add libraries/EpoxyMockSTM32RTC
  • 1.2.3 (2022-02-24)
    • Rename unixhostduino_main() to epoxyduino_main(), and make it
      static. No need to expose it publicly.
    • Add enableTerminalEcho() function to enable terminal echoing.
      See Enable Terminal Echo.
    • Update examples and EpoxyFS/README.md to be
      compatible with new LittleFS library in ESP32 >=2.0.0.
    • Add EpoxyFS/SeekBenchmark to
      measure the performance loss of calling seek() before a read().
      • Sometimes the client-code is simpler when reading multiple records
        if it can call seek() with an explicit offset before each read().
      • The alternative would be calling read() multiple times sequentially
        and using its internal cursor to advance automatically.
      • This benchmark shows that seek() causes significant performance
        loss, even if the seek() offset is identical to the internal cursor,
        so might be expected to be optimized away.
    • Add notes about Debugging tools and options
      under a Unix environment, such as Valgrind.
EpoxyDuino - v1.2.2 - inherit overloaded Print::write() methods into StdioSerial class

Published by bxparks over 2 years ago

  • 1.2.2 (2022-02-02)
    • Add a using Print::write statement in StdioSerial.h to
      pull in all other overloaded write() methods from the parent Print
      class.
EpoxyDuino - v1.2.1 - add strncasecmp_P(); update README.md doc

Published by bxparks almost 3 years ago

  • 1.2.0 (2021-12-29)
    • Simplify StdioSerial class, see
      Issue#43.
      • Replace input ring buffer with a buffer of one character.
      • Wire StdioSerial::write(uint8_t) directly to Posix write(),
        by-passing the <stdio.h> buffer. flush() is no longer necessary.
      • Thanks to @felias-fogg.
    • Revert Breaking Change Made in v1.1.0 Revert 432e304, so that
      Print::writeln() writes \r\n again by default.
      • Fixes Issue#45.
      • Add Print::setLineModeNormal() and Print::setLineModeUnix()
        methods to control the line termination behavior.
      • See README.md#UnixLineMode for usage info.
EpoxyDuino - v1.1.0 - add more Arduino.h functions and macros; add mock FastLED library

Published by bxparks almost 3 years ago

  • 1.1.0 (2021-12-09)
    • Add optional DEPS variable containing header files that the *.ino
      depends on.
    • Potential Breaking Change Print::println() to print just a \n
      instead of \r\n.
      • This is more compatible on Unix where the line terminator is a single
        \n
      • This allows the text output of Arduino programs to be redirected to
        a file or piped to another Unix program with the correct line
        termination character.
      • This change may break some programs (usually unit tests) which print
        to a
        PrintStr
        object (from my AceCommon
        library), and then expect \r\n instead of \n.
  • 1.0 (2021-09-30)
    • Add epoxy_argc and epoxy_argv as extern global variables which
      are set to the argc and argv parameters passed into the global
      main().
      • Allows command line arguments to be passed into an Arduino
        application, to facilitate debugging on a Unix desktop machine.
      • Add examples/CommandLine which provides a basic command line parser
        that can be copied and modified for other applications.
    • Add toString() to IPAddress class, activated with EPOXY_CORE_ESP8266
      for compatibility with ESP8266 Core.
    • Add strstr_P() to pgmspace.h.
    • Finally fix Issue #2 and
      Issue #25.
EpoxyDuino - v0.8 - merge ESP8266 compatibility code from EspMock into EpoxyDuino

Published by bxparks about 3 years ago

  • 0.7 (2021-04-28)
    • Add libraries/EpoxyMockDigitalWriteFast, a simple mock library for
      digitalWriteFast (https://github.com/NicksonYap/digitalWriteFast) to
      allow code using these functions (e.g. digitalWriteFast()) to compile
      under EpoxyDuino.
    • Rename EpoxyPromAvr to EpoxyEepromAvr, and EpoxyPromEsp to
      EpoxyEepromEsp, for consistency and better self-description.
    • Add EPOXY_CORE and EPOXY_CORE_PATH variables to allow alternate
      Arduino Core files to be specified. Move current Core files from top-level
      into ./cores/epoxy/ subdirectory.
    • Add memcpy_P() and vsnprintf_P() (Thanks pmp-p@, #28).
    • Add EXTRA_CXXFLAGS to allow additional c++ flags to be specified.
    • Add -Wextra (in addition to -Wall) because some Arduino platforms
      enable both when "warnings" are enabled, so it's convenient to catch those
      warnings on the desktop when using EpoxyDuino.
EpoxyDuino - v0.6.2 - add additional Arduino API stubs, constants and typedefs

Published by bxparks over 3 years ago

  • 0.6.2 (2021-03-15)
    • Add more stubs for Arduino API functions: pulseIn(), pulseInLong(),
      shiftOut(), shiftIn(), I2C and SPI pins (SS, MOSI, MISO, SCK, SDA,
      SCL), analogWrite(), typedefs for boolean, byte, word
EpoxyDuino - v0.6.1 - add experimental support for FreeBSD 12.2

Published by bxparks over 3 years ago

  • 0.6.1 (2021-02-25)
    • Add experimental support for FreeBSD 12.2.
EpoxyDuino - v0.6 - implement EpoxyFS, EpoxyPromAvr, EpoxyPromEsp libraries

Published by bxparks over 3 years ago

  • 0.6 (2021-02-19)
    • Add libraries/EpoxyFS, an implementation of the ESP8266 FS file system
      that runs on Linux and MacOS.
    • Add delayMicroSeconds(), WCharacter.h, and stub implementations of
      IPAddress.h, SPI.h, by Erik Tideman (@ramboerik), see
      PR #18.
    • Add libraries/EpoxyPromEsp (EEPROM using the API of ESP8266/ESP32).
    • Add libraries/EpoxyPromAvr (EEPROM using the API of AVR processors).
EpoxyDuino - v0.5 - rename project to EpoxyDuino

Published by bxparks almost 4 years ago

  • 0.5 (2021-01-21)
    • Breaking Change Change project name to "EpoxyDuino". The
      UNIX_HOST_DUINO macro is replaced with EPOXY_DUINO, and the
      UnixHostDuino.mk file is now EpoxyDuino.mk. The old macro and file are
      retained for backwards compatibility, but the GitHub repo name has
      changed. See
      Issue #15.
EpoxyDuino - v0.4 - make Stream::readBytes() and readString() virtual

Published by bxparks almost 4 years ago

  • 0.4 (2021-01-21)
    • Wrap #ifdef around main() to avoid conflict when compiling other
      Arduino cores with UnixHostDuino inside the libraries/ directory.
    • Make Stream::readBytes() and Stream::readString() virtual, for
      compatibility with ESP8266, ESP32, STM32 and probably other 3rd party
      cores.
EpoxyDuino - v0.3.1 - add random(), cleanup header files

Published by bxparks almost 4 years ago

  • 0.3.1 (2020-11-16)
    • Add support for random() function.
    • Cleanup header files.
EpoxyDuino - v0.3 - add Print.printf(), analogRead()

Published by bxparks about 4 years ago

  • 0.3 (2020-08-20)
    • Add #define for various digital and analog pins: D0-D19, A0-A9.
    • Add stub for analogRead().
    • Add Print.printf() provided by a significant number of Arduino boards
      (ESP8266, ESP32, Teensy, etc).