Skip to content

Commit 4d2571c

Browse files
committed
README.md: Add EpoxyMockFastLED; add additional functions from Arduino.h
1 parent 656695e commit 4d2571c

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

README.md

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,21 @@ produces an executable with a `.out` extension, for example, `SampleTest.out`.
2323
The `Serial` port object sends the output to the `STDOUT` and reads from the
2424
`STDIN` of the Unix host environment. Most other hardware dependent
2525
features (e.g. I2C, SPI, GPIO) are stubbed out (defined but don't do anything)
26-
to allow the Arduino programs to compile. This may be sufficient for a CI
27-
pipeline. For actual application development, I have started to build a set of
26+
to allow the Arduino programs to compile. Mock versions of various libraries are
27+
also provided:
28+
29+
* `<Wire.h>`: mock I2C library
30+
* `<SPI.h>`: mock SPI library
31+
* [EpoxyMockDigitalWriteFast](libraries/EpoxyMockDigitalWriteFast): mock
32+
version of the `digitalWriteFast` libraries
33+
* [EpoxyMockTimerOne](libraries/EpoxyMockTimerOne): mock version of the
34+
TimerOne (https://github.com/PaulStoffregen/TimerOne) library
35+
* [EpoxyMockFastLED](libraries/EpoxyMockFastLED/): mock version of the
36+
FastLED (https://github.com/FastLED/FastLED) library
37+
38+
These mock libraries may be sufficient for a CI pipeline.
39+
40+
For actual application development, I have started to build a set of
2841
libraries within EpoxyDuino which emulate the versions that run the actual
2942
hardware:
3043

@@ -620,7 +633,8 @@ A more advanced example can be seen in
620633
<a name="ArduinoFunctions"></a>
621634
### Arduino Functions
622635

623-
The following functions and features of the Arduino framework are implemented:
636+
The following is an incomplete list of Arduino functions and features
637+
which are implemented:
624638

625639
* `Arduino.h`
626640
* `setup()`, `loop()`
@@ -629,6 +643,12 @@ The following functions and features of the Arduino framework are implemented:
629643
* `digitalWrite()`, `digitalRead()`, `pinMode()` (empty stubs)
630644
* `analogRead()`, `analogWrite()` (empty stubs)
631645
* `pulseIn()`, `pulseInLong()`, `shiftIn()`, `shiftOut()` (empty stubs)
646+
* `min()`, `max()`, `abs()`, `round()`, etc
647+
* `bit()`, `bitRead()`, `bitSet()`, `bitClear()`, `bitWrite()`
648+
* `random()`, `randomSeed()`, `map()`
649+
* `makeWord()`
650+
* `F_CPU`, `clockCyclesPerMicrosecond(), `clockCyclesToMicroseconds(),
651+
`microsecondsToClockCycles()`
632652
* `HIGH`, `LOW`, `INPUT`, `OUTPUT`, `INPUT_PULLUP`
633653
* I2C and SPI pins: `SS`, `MOSI`, `MISO`, `SCK`, `SDA`, `SCL`
634654
* typedefs: `boolean`, `byte`, `word`
@@ -658,14 +678,13 @@ The following functions and features of the Arduino framework are implemented:
658678
* `Wire.h` (stub implementation)
659679
* `SPI.h` (stub implementation)
660680

661-
See
662-
[Arduino.h](https://github.com/bxparks/EpoxyDuino/blob/develop/cores/epoxy/Arduino.h)
681+
See [Arduino.h](cores/epoxy/Arduino.h)
663682
for the latest list. Most of the header files included by this `Arduino.h`
664683
file were copied and modified from the [arduino:avr
665684
core](https://github.com/arduino/ArduinoCore-avr/tree/master/cores/arduino),
666-
versions 1.8.2 (if I recall) or 1.8.3. A number of tweaks have been made to
667-
support slight variations in the API of other platforms, particularly the
668-
ESP8266 and ESP32 cores.
685+
v1.8.2 or v1.8.3. A number of tweaks have been made to support slight variations
686+
in the API of other platforms, particularly the ESP8266 v2.7.4 and ESP32 v1.0.6
687+
cores.
669688

670689
The `Print.printf()` function is an extension to the `Print` class that is
671690
provided by many Arduino-compatible microcontrollers (but not the AVR
@@ -743,7 +762,7 @@ These 3 types are described in more detail below.
743762
### Inherently Compatible Libraries
744763

745764
Almost all libraries that I write will be inherently compatible with EpoxyDuino
746-
because EpoxyDuino is what I use to my libraries.
765+
because EpoxyDuino is what I use to develop and test my libraries.
747766

748767
* AUnit (https://github.com/bxparks/AUnit)
749768
* AceButton (https://github.com/bxparks/AceButton)
@@ -816,6 +835,8 @@ intended. This limitation may be sufficient for Continous Integration purposes.
816835
* [EpoxyMockTimerOne](libraries/EpoxyMockTimerOne)
817836
* A simple mock of the TimerOne (https://github.com/PaulStoffregen/TimerOne)
818837
library.
838+
* [EpoxyMockFastLED](libraries/EpoxyMockFastLED/)
839+
* Mock version of the FastLED (https://github.com/FastLED/FastLED) library.
819840
* EspMock (https://github.com/hsaturn/EspMock)
820841
* This is a separate project that provides various mocks for functions and
821842
libraries included with the ESP8266 and the ESP32 processors.
@@ -825,7 +846,7 @@ intended. This limitation may be sufficient for Continous Integration purposes.
825846
<a name="SystemRequirements"></a>
826847
## System Requirements
827848

828-
This library has been tested on:
849+
This library has Tier 1 support on:
829850

830851
* Ubuntu 18.04
831852
* g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
@@ -836,6 +857,9 @@ This library has been tested on:
836857
* g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0
837858
* clang++ version 10.0.0-4ubuntu1
838859
* GNU Make 4.2.1
860+
861+
The following environments are Tier 2 because I do not test them often enough:
862+
839863
* Raspbian GNU/Linux 10 (buster)
840864
* On Raspberry Pi Model 3B
841865
* g++ (Raspbian 8.3.0-6+rpi1) 8.3.0
@@ -889,5 +913,5 @@ people ask similar questions later.
889913
* Add `delayMicroSeconds()`, `WCharacter.h`, and stub implementations of
890914
`IPAddress.h`, `SPI.h`, by Erik Tideman (@ramboerik), see
891915
[PR #18](https://github.com/bxparks/EpoxyDuino/pull/18).
892-
* Add `memcpy_P()` and `vsnprintf_P()` by @pmp-p,
916+
* Add `memcpy_P()` and `vsnprintf_P()` by @pmp-p,
893917
[PR #28](https://github.com/bxparks/EpoxyDuino/pull/28).

0 commit comments

Comments
 (0)