@@ -23,8 +23,21 @@ produces an executable with a `.out` extension, for example, `SampleTest.out`.
2323The ` Serial ` port object sends the output to the ` STDOUT ` and reads from the
2424` STDIN ` of the Unix host environment. Most other hardware dependent
2525features (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
2841libraries within EpoxyDuino which emulate the versions that run the actual
2942hardware:
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 )
663682for the latest list. Most of the header files included by this ` Arduino.h `
664683file were copied and modified from the [ arduino: avr
665684core] ( 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
670689The ` Print.printf() ` function is an extension to the ` Print ` class that is
671690provided 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
745764Almost 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