@@ -68,7 +68,7 @@ The disadvantages are:
6868 environments (e.g. 16-bit ` int ` versus 32-bit ` int ` , or 32-bit ` long ` versus
6969 64-bit ` long ` ).
7070
71- ** Version** : 1.2.0 (2021-12-09 )
71+ ** Version** : 1.2.1 (2022-01-10 )
7272
7373** Changelog** : See [ CHANGELOG.md] ( CHANGELOG.md )
7474
@@ -101,6 +101,7 @@ The disadvantages are:
101101 * [ Mock Libraries] ( #MockLibraries )
102102* [ System Requirements] ( #SystemRequirements )
103103* [ License] ( #License )
104+ * [ Bugs And Limitations] ( #BugsAndLimitations )
104105* [ Feedback and Support] ( #FeedbackAndSupport )
105106* [ Authors] ( #Authors )
106107
@@ -121,7 +122,21 @@ $ git clone https://github.com/bxparks/EpoxyDuino.git
121122```
122123
123124This will create a directory called
124- ` {sketchbook_directory}/libraries/EpoxyDuino ` .
125+ ` {sketchbook_directory}/libraries/EpoxyDuino ` , and put you on the default
126+ ` develop ` branch.
127+
128+ You can be slightly conservative and use the latest stable release on the
129+ ` master ` branch:
130+ ```
131+ $ cd {sketchbook_directory}/libraries/EpoxyDuino
132+ $ git checkout master
133+ ```
134+
135+ You can go to a specific release by checking out the corresponding tag, for
136+ example ` v1.2.0 ` :
137+ ```
138+ $ git checkout v1.2.0
139+ ```
125140
126141### Dependencies
127142
@@ -417,6 +432,7 @@ Arduino CLI. You need:
417432
418433Take a look at some of my GitHub Actions YAML config files:
419434
435+ * [ .github/workflows] ( .github/workflows ) used by this project
420436* https://github.com/bxparks/AceButton/tree/develop/.github/workflows
421437* https://github.com/bxparks/AceCRC/tree/develop/.github/workflows
422438* https://github.com/bxparks/AceCommon/tree/develop/.github/workflows
@@ -506,7 +522,7 @@ more_clean:
506522<a name =" AdditionalDependencies " ></a >
507523### Additional Dependencies
508524
509- Sometimes the ` *.ino ` file depend on additional header files within the same
525+ Sometimes the ` *.ino ` file depends on additional header files within the same
510526directory. When these header files are modified, the ` *.ino ` file must be
511527recompiled. These additional header files can be listed in the ` DEPS ` variable:
512528
@@ -580,9 +596,10 @@ EPOXY_CORE_PATH := {my_own_directory}/cores/mycore
580596
581597The ` library.json ` file supports [ PlaformIO in Native
582598mode] ( https://docs.platformio.org/en/latest/platforms/native.html ) . It was added
583- in [ Issue #31 ] ( https://github.com/bxparks/EpoxyDuino/pull/31 ) (thanks
584- https://github.com/lopsided98 ). However, this functionality is * unsupported* . If
585- it becomes broken in the future, please send me a PR to fix it.
599+ in [ PR #31 ] ( https://github.com/bxparks/EpoxyDuino/pull/31 ) (thanks
600+ [ @lopsided98 ] ( https://github.com/lopsided98 ) ). However, this functionality is
601+ * unsupported* . If it becomes broken in the future, please send me a PR to fix
602+ it.
586603
587604<a name =" CommandLineFlagsAndArguments " ></a >
588605### Command Line Flags and Arguments
@@ -958,10 +975,54 @@ The following environments are Tier 2 because I do not test them often enough:
958975
959976[MIT License](https://opensource.org/licenses/MIT)
960977
961- <a name="Bugs "></a>
978+ <a name="BugsAndLimitations "></a>
962979## Bugs and Limitations
963980
964- None that I am aware of.
981+ * There is no formal specification of the "Arduino API" that I am aware of.
982+ * The reference documentation at https://www.arduino.cc/reference/ may be
983+ good enough for beginners to blink a few LED lights, but it is not
984+ sufficient to build an API emulator on a Linux machine.
985+ * The version of the Arduino API implemented in this library has been
986+ reverse engineered and inferred from
987+ [ArduinoCore-avr](https://github.com/arduino/ArduinoCore-avr), either
988+ v1.8.2 and v1.8.3 (I cannot remember).
989+ * Each third party Arduino-compatible platform (e.g. STM32, ESP8266, ESP32)
990+ has implemented a slightly different version of the "Arduino API".
991+ * EpoxyDuino does not support the idiosyncrasies of all of these
992+ different Arduino platforms.
993+ * There is yet another version of the "Arduino API" described by
994+ [ArduinoCore-API](https://github.com/arduino/ArduinoCore-API).
995+ * Some Arduino-branded microcontrollers have been migrated to
996+ this new API (e.g. Nano Every, MKR1000, Nano 33 IoT).
997+ * The new Arduino API has a number of backwards incompatible changes to
998+ the old Arduino API.
999+ * EpoxyDuino does *not* support this new Arduino API.
1000+ * The Arduino API on a microcontroller automatically provides a `main()`
1001+ function that calls the global `setup()` function, then calls the global
1002+ `loop()` function forever, as fast as possible.
1003+ * The EpoxyDuino version of `main()` calls `loop()` with a delay of 1 ms
1004+ per iteration. Without the 1 ms delay, the application consumes 100% of
1005+ CPU time on the host computer.
1006+ * This means that the `loop()` function is called at a maximum frequency of
1007+ 1000 Hz.
1008+ * The Serial port emulation provided by `StdioSerial` may be buggy or behave in
1009+ non-intuitive ways.
1010+ * When the application is executed without input or output redirection, the
1011+ *stdin* is put into "raw" mode.
1012+ * If either the input or output is redirected (e.g. output redirected to a
1013+ file), then the *stdin* remains in normal Unix "cooked" mode.
1014+ * This allows the Arduino program to be piped into a screen pager (e.g.
1015+ `less(1)`, while allowing the `less(1)` program to support its normal
1016+ keyboard control keys.
1017+ * The *stdout* is wired directly into the POSIX `write()` function, which is
1018+ unbuffered. This may cause performance problems when generating a lot of
1019+ output.
1020+ * The compiler used to compile the microcontroller binary may be significantly
1021+ different than the compiler used on the host Unix computer, even if they are
1022+ both `g++`.
1023+ * I am not sure that I have migrated all the relevant and important compiler
1024+ flags from the microcontroller environment (AVR, ESP8266, etc.) to
1025+ the EpoxyDuino environment.
9651026
9661027<a name="FeedbackAndSupport"></a>
9671028## Feedback and Support
@@ -983,10 +1044,17 @@ people ask similar questions later.
9831044## Authors
9841045
9851046* Created by Brian T. Park ([email protected] ). 986- * Support for using as library, by making `main()` a weak reference, added
987- by Max Prokhorov ([email protected] ). 1047+ * Support for using as library, by making `main()` a weak reference,
1048+ by Max Prokhorov (@mcspr), see
1049+ [PR#6](https://github.com/bxparks/EpoxyDuino/pull/6).
9881050* Add `delayMicroSeconds()`, `WCharacter.h`, and stub implementations of
9891051 `IPAddress.h`, `SPI.h`, by Erik Tideman (@ramboerik), see
990- [PR #18](https://github.com/bxparks/EpoxyDuino/pull/18).
991- * Add `memcpy_P()` and `vsnprintf_P()` by @pmp-p,
992- [PR #28](https://github.com/bxparks/EpoxyDuino/pull/28).
1052+ [PR#18](https://github.com/bxparks/EpoxyDuino/pull/18).
1053+ * Add `memcpy_P()` and `vsnprintf_P()` by Paul m. p. P. (@pmp-p),
1054+ [PR#28](https://github.com/bxparks/EpoxyDuino/pull/28).
1055+ * Support PlatformIO native mode, by Ben Wolsieffer (@lopsided98),
1056+ see [PR#31](https://github.com/bxparks/EpoxyDuino/pull/31).
1057+ * Move stdin processing to `yield()` by Ben Wolsieffer (@lopsided98),
1058+ see [PR#32](https://github.com/bxparks/EpoxyDuino/pull/32).
1059+ * Simplify `StdioSerial` by Bernhard (@felias-fogg),
1060+ [Issue#43](https://github.com/bxparks/EpoxyDuino/issues/43).
0 commit comments