- Unreleased
- Support sending output of
Serialport toSTDERR(replaces PR#92. - Add
SERIAL_OUTPUT_FILENOmacro which can be overridden on the command line (e.g.make EXTRA_CPPFLAGS='SERIAL_OUTPUT_FILENO=2'to override the default output file descriptor ofSerialat compile time.
- Support sending output of
- 1.6.0 (2024-07-25)
- 1.5.0 (2022-12-08)
- Support compiling plain
*.cfiles in libraries and in the application.- The C files are assumed to be written in C11.
- Define the
-D ARDUINO=100macro.- Some 3rd party libraries test for
ARDUINO >= 100to check if it's being compiled under Arduino. - Many will compile under EpoxyDuino with this macro set.
- Some 3rd party libraries test for
- Add
make runtarget which runs the binary generated bymake all.- Useful in the
vimeditor where:make runwill 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
forloops to invokemake -C {dir} runinstead of running the binary directly. Thevimeditor can parse the output caused by the-Cflag, and automatically generate the correct path to the files in the subdirectories.
- Useful in the
- Support compiling plain
- 1.4.0 (2022-11-06)
- Add
memcmp_P()by @dawidchyrzynski in PR#71. - Add
Udp.hinterface supporting both the AVR and ESP8266 variants. - Provide actual stub implementations of
configTime()for ESP8266.
- Add
- 1.3.1 (2022-08-13)
- 1.3.0 (2022-03-28)
- Add support for
EXTRA_CPPFLAGS, similar toEXTRA_CXXFLAGS. - Add
digitalReadValue(pin, val)to control the return value ofdigitalRead(pin).- May be useful for testing purposes.
- The
pinparameter must satisfy0 <= pin < 32, otherwisedigitalReadValue()is a no-op. - See PR#61.
- Add an empty
EpoxyDuino.hat the top level to stop warning messages from the Arduino IDE.- Fixes Issue#62.
- Add libraries/EpoxyMockSTM32RTC
- A mock of the STM32RTC library.
- Add support for
- 1.2.3 (2022-02-24)
- Rename
unixhostduino_main()toepoxyduino_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
LittleFSlibrary in ESP32 >=2.0.0. - Add EpoxyFS/SeekBenchmark to
measure the performance loss of calling
seek()before aread().- Sometimes the client-code is simpler when reading multiple records
if it can call
seek()with an explicit offset before eachread(). - 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 theseek()offset is identical to the internal cursor, so might be expected to be optimized away.
- Sometimes the client-code is simpler when reading multiple records
if it can call
- Add notes about Debugging tools and options under a Unix environment, such as Valgrind.
- Rename
- 1.2.2 (2022-02-02)
- Add a
using Print::writestatement inStdioSerial.hto pull in all other overloadedwrite()methods from the parentPrintclass.
- Add a
- 1.2.1 (2022-01-10)
- Add
strncasecmp_P()topgmspace.h. See PR#52. - Add Bugs and Limitations section in README.md
- Add comment in aunit_tests.yml
that a
pull_requestevent may be useful. Upgrade GitHub docker image to Ubuntu 20.04.
- Add
- 1.2.0 (2021-12-29)
- Simplify
StdioSerialclass, see Issue#43.- Replace input ring buffer with a buffer of one character.
- Wire
StdioSerial::write(uint8_t)directly to Posixwrite(), 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\nagain by default.- Fixes Issue#45.
- Add
Print::setLineModeNormal()andPrint::setLineModeUnix()methods to control the line termination behavior. - See README.md#UnixLineMode for usage info.
- Simplify
- 1.1.0 (2021-12-09)
- Add optional
DEPSvariable containing header files that the*.inodepends on. - Potential Breaking Change
Print::println()to print just a\ninstead 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\ninstead of\n.
- This is more compatible on Unix where the line terminator is a single
- Add
pgm_read_XXX_near()andpgm_read_XXX_far()macros which simply delegate to thepgm_read_XXX()macros. - Add
clockCyclesPerMicrosecond(),clockCyclesToMicroseconds(a), andmicrosecondsToClockCycles(a)macros. Set a fakeF_CPUto 16MHz on Unix machines. - Add
bitRead(),bitSet(),bitClear(),bitWrite()macros. AddbitToggle()macro as well, which seems to be defined only on the Arduino AVR core. - Add
min(),max(),abs(), etc. I don't normally use these Arduino macros in my libraries, but many other 3rd party libraries do. To compile those libraries under EpoxyDuino, we have to define them. - Add a minimal mock implementation of FastLED sufficient for my personal project.
- Add optional
- 1.0.0 (2021-09-30)
- Add
epoxy_argcandepoxy_argvas extern global variables which are set to theargcandargvparameters passed into the globalmain().- Allows command line arguments to be passed into an Arduino application, to facilitate debugging on a Unix desktop machine.
- Add
examples/CommandLinewhich provides a basic command line parser that can be copied and modified for other applications.
- Add
toString()toIPAddressclass, activated withEPOXY_CORE_ESP8266for compatibility with ESP8266 Core. - Add
strstr_P()topgmspace.h. - Finally fix Issue #2 and Issue #25.
- Add
- 0.8 (2021-08-08)
- Add
EpoxyMockTimerOnemock library forTimerOne(https://github.com/PaulStoffregen/TimerOne). - Add
library.jsonto support PlaformIO in Native mode. (See PR #31 by https://github.com/lopsided98). - Move code that pumps the
Serialobject fromunixhostduino_main()toyield(). Fix bug to allow correct handling ofNULbyte in the serial stream. (See [PR #32] by https://github.com/lopsided98). - Breaking Repurpose the
EPOXY_COREmake variable to be the name of the macro that defines the target architecture so thatArduino.hbrings in definitions which target specific Arduino platforms:- The valid options are:
EPOXY_CORE_AVR(default)EPOXY_CORE_ESP8266
- Merge ESP8266-specific changes from
https://github.com/hsaturn/EspMock/cores/esp8266 into
EpoxyDuino/cores/epoxy, guarded by
EPOXY_CORE_ESP8266macro.
- The valid options are:
- Add
map(),makeWord()functions toWMath.cpp.
- Add
- 0.7 (2021-04-28)
- Add
libraries/EpoxyMockDigitalWriteFast, a simple mock library fordigitalWriteFast(https://github.com/NicksonYap/digitalWriteFast) to allow code using these functions (e.g.digitalWriteFast()) to compile under EpoxyDuino. - Rename
EpoxyPromAvrtoEpoxyEepromAvr, andEpoxyPromEsptoEpoxyEepromEsp, for consistency and better self-description. - Add
EPOXY_COREandEPOXY_CORE_PATHvariables to allow alternate Arduino Core files to be specified. Move current Core files from top-level into./cores/epoxy/subdirectory. - Add
memcpy_P()andvsnprintf_P()(Thanks pmp-p@, #28). - Add
EXTRA_CXXFLAGSto 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.
- Add
- 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 forboolean,byte,word.
- Add more stubs for Arduino API functions:
- 0.6.1 (2021-02-25)
- Add experimental support for FreeBSD 12.2.
- 0.6 (2021-02-19)
- Add
libraries/EpoxyFS, an implementation of the ESP8266FSfile system that runs on Linux and MacOS. - Add
delayMicroSeconds(),WCharacter.h, and stub implementations ofIPAddress.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).
- Add
- 0.5 (2021-01-21)
- Breaking Change Change project name to "EpoxyDuino". The
UNIX_HOST_DUINOmacro is replaced withEPOXY_DUINO, and theUnixHostDuino.mkfile is nowEpoxyDuino.mk. The old macro and file are retained for backwards compatibility, but the GitHub repo name has changed. See Issue #15.
- Breaking Change Change project name to "EpoxyDuino". The
- 0.4 (2021-01-21)
- Wrap
#ifdefaroundmain()to avoid conflict when compiling other Arduino cores with UnixHostDuino inside thelibraries/directory. - Make
Stream::readBytes()andStream::readString()virtual, for compatibility with ESP8266, ESP32, STM32 and probably other 3rd party cores.
- Wrap
- 0.3.1 (2020-11-16)
- Add support for
random()function. - Cleanup header files.
- Add support for
- 0.3 (2020-08-20)
- Add
#definefor 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).
- Add
- 0.2.1 (2020-05-02)
- Add
MORE_CLEAN, an optional user-provided make-target to do additional cleaning, such as removing directories created by code-generators.
- Add
- 0.2 (2020-03-21)
- Mark
main()as a weak reference (supported by g++ and clang++) so that UniHostDuino can be used as a library in programs that already provide amain()function. (Thanks to Max Prokhorov mcspr@). - Replace
ARDUINO_LIB_DIRwithARDUINO_LIB_DIRSwhich supports multiple external library locations, in addition to siblings of the UnixHostDuino directory. TheARDUINO_LIB_DIRis no longer supported.
- Mark
- 0.1.3 (2019-11-21)
- Add 'Installation' section to the README.md.
- Add
UNIX_HOST_DUINOmacro symbol to the CPPFLAGS to allow conditional code that activates only when UnixHostDuino is used.
- 0.1.2 (2019-09-04)
- Implement
StdioSerial::flush()to enableSerial.flush().
- Implement
- 0.1.1 (2019-08-14)
- If the STDIN is not a real tty, continue without putting it into raw mode or exiting with an error. This allows unit tests inside continuous build frameworks.
- 0.1 (2019-07-31)
- Split from
AUnitand renamed fromunitduinotoUnixHostDuino. - Add
UNIT_HOST_DUINOmacro. - Add
FPSTR()macro for compatibilty with ESP8266 and ESP32. - Add
LED_BUILTINmacro.
- Split from