Skip to content

Commit 88b345a

Browse files
authored
Merge pull request #53 from bxparks/develop
merge v1.2.1 into master
2 parents 2606815 + 442d75f commit 88b345a

File tree

6 files changed

+107
-17
lines changed

6 files changed

+107
-17
lines changed

.github/workflows/aunit_tests.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
name: AUnit Tests
22

3+
# Trigger on 'push' on all branches.
4+
#
5+
# Some may find adding 'pull_request' to be useful (see
6+
# https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#pull_request).
7+
# But this may cause duplicate workflow iterations. Then consider restricting
8+
# the 'push' event to just the master branch, like this:
9+
#
10+
# on:
11+
# push:
12+
# branches:
13+
# -master
14+
# pull_request:
15+
#
316
on: [push]
417

518
jobs:
619
build:
720

8-
runs-on: ubuntu-18.04
21+
runs-on: ubuntu-20.04
922

1023
steps:
1124
- uses: actions/checkout@v2

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# Changelog
22

33
* Unreleased
4+
* 1.2.1 (2022-01-10)
5+
* Add `strncasecmp_P()` to `pgmspace.h`. See
6+
[PR#52](https://github.com/bxparks/EpoxyDuino/pull/52).
7+
* Add [Bugs and Limitations](README.md##BugsAndLimitations) section in
8+
README.md
9+
* Add comment in [aunit_tests.yml](.github/workflows/aunit_tests.yml)
10+
that a `pull_request` event may be useful. Upgrade GitHub docker image to
11+
Ubuntu 20.04.
412
* 1.2.0 (2021-12-29)
513
* Simplify `StdioSerial` class, see
614
[Issue#43](https://github.com/bxparks/EpoxyDuino/issues/43).

README.md

Lines changed: 81 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

123124
This 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

418433
Take 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
510526
directory. When these header files are modified, the `*.ino` file must be
511527
recompiled. 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

581597
The `library.json` file supports [PlaformIO in Native
582598
mode](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).

cores/epoxy/Arduino.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
#define EPOXY_DUINO_EPOXY_ARDUINO_H
1515

1616
// xx.yy.zz => xxyyzz (without leading 0)
17-
#define EPOXY_DUINO_VERSION 10200
18-
#define EPOXY_DUINO_VERSION_STRING "1.2.0"
17+
#define EPOXY_DUINO_VERSION 10201
18+
#define EPOXY_DUINO_VERSION_STRING "1.2.1"
1919

2020
#include <algorithm> // min(), max()
2121
#include <cmath> // abs()

cores/epoxy/pgmspace.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#define strcmp_P strcmp
4747
#define strncmp_P strncmp
4848
#define strcasecmp_P strcasecmp
49+
#define strncasecmp_P strncasecmp
4950
#define strchr_P strchr
5051
#define strrchr_P strrchr
5152
#define strstr_P strstr

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "EpoxyDuino",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"description": "Compile and run Arduino programs natively on Linux, MacOS and FreeBSD.",
55
"keywords": [
66
"unit-test",

0 commit comments

Comments
 (0)