- Unreleased
- 1.6.0 (2024-07-25)
- 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.
- Some 3rd party libraries test for
- Add
make run
target which runs the binary generated bymake 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 invokemake -C {dir} run
instead of running the binary directly. Thevim
editor can parse the output caused by the-C
flag, 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.h
interface 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
pin
parameter must satisfy0 <= pin < 32
, otherwisedigitalReadValue()
is a no-op. - See PR#61.
- Add an empty
EpoxyDuino.h
at 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
LittleFS
library 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::write
statement inStdioSerial.h
to pull in all other overloadedwrite()
methods from the parentPrint
class.
- 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_request
event may be useful. Upgrade GitHub docker image to Ubuntu 20.04.
- Add
- 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 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\n
again 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
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
.
- 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_CPU
to 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_argc
andepoxy_argv
as extern global variables which are set to theargc
andargv
parameters 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/CommandLine
which provides a basic command line parser that can be copied and modified for other applications.
- Add
toString()
toIPAddress
class, activated withEPOXY_CORE_ESP8266
for compatibility with ESP8266 Core. - Add
strstr_P()
topgmspace.h
. - Finally fix Issue #2 and Issue #25.
- Add
- 0.8 (2021-08-08)
- Add
EpoxyMockTimerOne
mock library forTimerOne
(https://github.com/PaulStoffregen/TimerOne). - Add
library.json
to support PlaformIO in Native mode. (See PR #31 by https://github.com/lopsided98). - Move code that pumps the
Serial
object fromunixhostduino_main()
toyield()
. Fix bug to allow correct handling ofNUL
byte in the serial stream. (See [PR #32] by https://github.com/lopsided98). - Breaking Repurpose the
EPOXY_CORE
make variable to be the name of the macro that defines the target architecture so thatArduino.h
brings 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_ESP8266
macro.
- 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
EpoxyPromAvr
toEpoxyEepromAvr
, andEpoxyPromEsp
toEpoxyEepromEsp
, for consistency and better self-description. - Add
EPOXY_CORE
andEPOXY_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()
andvsnprintf_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.
- 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 ESP8266FS
file 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_DUINO
macro is replaced withEPOXY_DUINO
, and theUnixHostDuino.mk
file 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
#ifdef
aroundmain()
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
#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).
- 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_DIR
withARDUINO_LIB_DIRS
which supports multiple external library locations, in addition to siblings of the UnixHostDuino directory. TheARDUINO_LIB_DIR
is no longer supported.
- Mark
- 0.1.3 (2019-11-21)
- Add 'Installation' section to the README.md.
- Add
UNIX_HOST_DUINO
macro 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
AUnit
and renamed fromunitduino
toUnixHostDuino
. - Add
UNIT_HOST_DUINO
macro. - Add
FPSTR()
macro for compatibilty with ESP8266 and ESP32. - Add
LED_BUILTIN
macro.
- Split from