arduino_ci 0.1.20 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -19
  3. data/REFERENCE.md +625 -0
  4. data/cpp/arduino/Arduino.h +1 -2
  5. data/cpp/arduino/AvrMath.h +117 -17
  6. data/cpp/arduino/Client.h +26 -0
  7. data/cpp/arduino/EEPROM.h +64 -0
  8. data/cpp/arduino/Godmode.cpp +38 -19
  9. data/cpp/arduino/Godmode.h +88 -22
  10. data/cpp/arduino/HardwareSerial.h +9 -28
  11. data/cpp/arduino/IPAddress.h +59 -0
  12. data/cpp/arduino/MockEventQueue.h +86 -0
  13. data/cpp/arduino/PinHistory.h +64 -24
  14. data/cpp/arduino/Print.h +9 -12
  15. data/cpp/arduino/Printable.h +8 -0
  16. data/cpp/arduino/SPI.h +11 -3
  17. data/cpp/arduino/Server.h +5 -0
  18. data/cpp/arduino/Udp.h +27 -0
  19. data/cpp/arduino/Wire.h +234 -0
  20. data/cpp/arduino/avr/io.h +10 -1
  21. data/cpp/arduino/avr/pgmspace.h +76 -46
  22. data/cpp/arduino/ci/StreamTape.h +36 -0
  23. data/cpp/unittest/ArduinoUnitTests.h +1 -0
  24. data/cpp/unittest/Compare.h +91 -897
  25. data/cpp/unittest/OstreamHelpers.h +9 -0
  26. data/exe/arduino_ci.rb +401 -0
  27. data/exe/arduino_ci_remote.rb +2 -385
  28. data/lib/arduino_ci.rb +1 -0
  29. data/lib/arduino_ci/arduino_cmd.rb +13 -9
  30. data/lib/arduino_ci/arduino_downloader.rb +5 -4
  31. data/lib/arduino_ci/arduino_installation.rb +5 -5
  32. data/lib/arduino_ci/ci_config.rb +12 -0
  33. data/lib/arduino_ci/cpp_library.rb +152 -25
  34. data/lib/arduino_ci/installed_cpp_library.rb +0 -0
  35. data/lib/arduino_ci/library_properties.rb +86 -0
  36. data/lib/arduino_ci/version.rb +1 -1
  37. data/misc/default.yml +50 -3
  38. metadata +23 -13
  39. data/cpp/arduino/Arduino.h.orig +0 -143
  40. data/cpp/arduino/Nullptr.h +0 -7
  41. data/cpp/arduino/ci/Queue.h +0 -73
  42. data/exe/libasan.rb +0 -29
@@ -1,3 +1,3 @@
1
1
  module ArduinoCI
2
- VERSION = "0.1.20".freeze
2
+ VERSION = "0.4.0".freeze
3
3
  end
@@ -4,6 +4,7 @@
4
4
 
5
5
  packages:
6
6
  # arduino:xxx are builtin, we don't need to include them here
7
+ # but if we did, it would be url: https://downloads.arduino.cc/packages/package_index.json
7
8
  esp8266:esp8266:
8
9
  url: http://arduino.esp8266.com/stable/package_esp8266com_index.json
9
10
  adafruit:avr:
@@ -21,7 +22,10 @@ platforms:
21
22
  gcc:
22
23
  features:
23
24
  defines:
25
+ - __AVR__
24
26
  - __AVR_ATmega328P__
27
+ - ARDUINO_ARCH_AVR
28
+ - ARDUINO_AVR_UNO
25
29
  warnings:
26
30
  flags:
27
31
  due:
@@ -30,7 +34,10 @@ platforms:
30
34
  gcc:
31
35
  features:
32
36
  defines:
33
- - __AVR_ATmega328__
37
+ - __SAM3X8E__
38
+ - ARDUINO_ARCH_SAM
39
+ - ARDUINO_SAM_DUE
40
+ - NUM_SERIAL_PORTS=4
34
41
  warnings:
35
42
  flags:
36
43
  zero:
@@ -39,8 +46,11 @@ platforms:
39
46
  gcc:
40
47
  features:
41
48
  defines:
42
- - __SAMD21G18A__
43
- - ARDUINO_SAMD_ZERO
49
+ - __SAMD21G18A__
50
+ - ARDUINO_ARCH_SAMD
51
+ - ARDUINO_SAMD_ZERO
52
+ # This also has SerialUSB, which is not included here.
53
+ - NUM_SERIAL_PORTS=2
44
54
  warnings:
45
55
  flags:
46
56
  esp32:
@@ -49,6 +59,10 @@ platforms:
49
59
  gcc:
50
60
  features:
51
61
  defines:
62
+ - ESP32
63
+ - ARDUINO_ARCH_ESP32
64
+ - ARDUINO_FEATHER_ESP32
65
+ - NUM_SERIAL_PORTS=3
52
66
  warnings:
53
67
  flags:
54
68
  esp8266:
@@ -57,6 +71,10 @@ platforms:
57
71
  gcc:
58
72
  features:
59
73
  defines:
74
+ - ESP8266
75
+ - ARDUINO_ARCH_ESP8266
76
+ - ARDUINO_ESP8266_ESP12
77
+ - NUM_SERIAL_PORTS=2
60
78
  warnings:
61
79
  flags:
62
80
  leonardo:
@@ -65,7 +83,10 @@ platforms:
65
83
  gcc:
66
84
  features:
67
85
  defines:
86
+ - __AVR__
68
87
  - __AVR_ATmega32U4__
88
+ - ARDUINO_ARCH_AVR
89
+ - ARDUINO_AVR_LEONARDO
69
90
  warnings:
70
91
  flags:
71
92
  trinket:
@@ -74,6 +95,10 @@ platforms:
74
95
  gcc:
75
96
  features:
76
97
  defines:
98
+ - __AVR__
99
+ - __AVR_ATtiny85__
100
+ - ARDUINO_ARCH_AVR
101
+ - ARDUINO_AVR_TRINKET5
77
102
  warnings:
78
103
  flags:
79
104
  gemma:
@@ -82,6 +107,10 @@ platforms:
82
107
  gcc:
83
108
  features:
84
109
  defines:
110
+ - __AVR__
111
+ - __AVR_ATtiny85__
112
+ - ARDUINO_ARCH_AVR
113
+ - ARDUINO_AVR_GEMMA
85
114
  warnings:
86
115
  flags:
87
116
  m4:
@@ -90,6 +119,12 @@ platforms:
90
119
  gcc:
91
120
  features:
92
121
  defines:
122
+ - __SAMD51__
123
+ - __SAMD51J19A__
124
+ - ARDUINO_ARCH_SAMD
125
+ - ARDUINO_METRO_M4
126
+ # Serial is actually USB virtual serial, not HardwareSerial
127
+ - NUM_SERIAL_PORTS=2
93
128
  warnings:
94
129
  flags:
95
130
  mega2560:
@@ -98,7 +133,10 @@ platforms:
98
133
  gcc:
99
134
  features:
100
135
  defines:
136
+ - __AVR__
101
137
  - __AVR_ATmega2560__
138
+ - ARDUINO_ARCH_AVR
139
+ - ARDUINO_AVR_MEGA2560
102
140
  warnings:
103
141
  flags:
104
142
  cplayClassic:
@@ -107,6 +145,10 @@ platforms:
107
145
  gcc:
108
146
  features:
109
147
  defines:
148
+ - __AVR__
149
+ - __AVR_ATmega32U4__
150
+ - ARDUINO_ARCH_AVR
151
+ - ARDUINO_AVR_CIRCUITPLAY
110
152
  warnings:
111
153
  flags:
112
154
  cplayExpress:
@@ -115,6 +157,11 @@ platforms:
115
157
  gcc:
116
158
  features:
117
159
  defines:
160
+ - __SAMD21G18A__
161
+ - ARDUINO_ARCH_SAMD
162
+ - ARDUINO_SAMD_CIRCUITPLAYGROUND_EXPRESS
163
+ # Serial is actually an alias of SerialUSB, not a HardwareSerial
164
+ - NUM_SERIAL_PORTS=2
118
165
  warnings:
119
166
  flags:
120
167
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arduino_ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Katz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-31 00:00:00.000000000 Z
11
+ date: 2020-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.15'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.15'
55
55
  - !ruby/object:Gem::Dependency
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.0.1
61
+ version: 0.0.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.0.1
68
+ version: 0.0.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -110,33 +110,40 @@ dependencies:
110
110
  version: 0.9.11
111
111
  description: ''
112
112
  email:
113
- - ianfixes@gmail.com
113
+ - arduino.continuous.integration@gmail.com
114
114
  executables:
115
+ - arduino_ci.rb
115
116
  - arduino_ci_remote.rb
116
117
  - arduino_library_location.rb
117
118
  - ensure_arduino_installation.rb
118
- - libasan.rb
119
119
  extensions: []
120
120
  extra_rdoc_files: []
121
121
  files:
122
122
  - ".yardopts"
123
123
  - README.md
124
+ - REFERENCE.md
124
125
  - cpp/arduino/Arduino.cpp
125
126
  - cpp/arduino/Arduino.h
126
- - cpp/arduino/Arduino.h.orig
127
127
  - cpp/arduino/ArduinoDefines.h
128
128
  - cpp/arduino/AvrMath.h
129
+ - cpp/arduino/Client.h
130
+ - cpp/arduino/EEPROM.h
129
131
  - cpp/arduino/Godmode.cpp
130
132
  - cpp/arduino/Godmode.h
131
133
  - cpp/arduino/HardwareSerial.h
132
- - cpp/arduino/Nullptr.h
134
+ - cpp/arduino/IPAddress.h
135
+ - cpp/arduino/MockEventQueue.h
133
136
  - cpp/arduino/PinHistory.h
134
137
  - cpp/arduino/Print.h
138
+ - cpp/arduino/Printable.h
135
139
  - cpp/arduino/SPI.h
140
+ - cpp/arduino/Server.h
136
141
  - cpp/arduino/SoftwareSerial.h
137
142
  - cpp/arduino/Stream.h
143
+ - cpp/arduino/Udp.h
138
144
  - cpp/arduino/WCharacter.h
139
145
  - cpp/arduino/WString.h
146
+ - cpp/arduino/Wire.h
140
147
  - cpp/arduino/avr/README.md
141
148
  - cpp/arduino/avr/common.h
142
149
  - cpp/arduino/avr/fuse.h
@@ -415,8 +422,8 @@ files:
415
422
  - cpp/arduino/binary.h
416
423
  - cpp/arduino/ci/DeviceUsingBytes.h
417
424
  - cpp/arduino/ci/ObservableDataStream.h
418
- - cpp/arduino/ci/Queue.h
419
425
  - cpp/arduino/ci/README.md
426
+ - cpp/arduino/ci/StreamTape.h
420
427
  - cpp/arduino/ci/Table.h
421
428
  - cpp/arduino/stdlib.cpp
422
429
  - cpp/arduino/stdlib.h
@@ -424,10 +431,11 @@ files:
424
431
  - cpp/unittest/ArduinoUnitTests.h
425
432
  - cpp/unittest/Assertion.h
426
433
  - cpp/unittest/Compare.h
434
+ - cpp/unittest/OstreamHelpers.h
435
+ - exe/arduino_ci.rb
427
436
  - exe/arduino_ci_remote.rb
428
437
  - exe/arduino_library_location.rb
429
438
  - exe/ensure_arduino_installation.rb
430
- - exe/libasan.rb
431
439
  - lib/arduino_ci.rb
432
440
  - lib/arduino_ci/arduino_cmd.rb
433
441
  - lib/arduino_ci/arduino_cmd_linux.rb
@@ -442,9 +450,11 @@ files:
442
450
  - lib/arduino_ci/ci_config.rb
443
451
  - lib/arduino_ci/cpp_library.rb
444
452
  - lib/arduino_ci/host.rb
453
+ - lib/arduino_ci/installed_cpp_library.rb
454
+ - lib/arduino_ci/library_properties.rb
445
455
  - lib/arduino_ci/version.rb
446
456
  - misc/default.yml
447
- homepage: http://github.com/ianfixes/arduino_ci
457
+ homepage: http://github.com/Arduino-CI/arduino_ci
448
458
  licenses:
449
459
  - Apache-2.0
450
460
  metadata: {}
@@ -1,143 +0,0 @@
1
- #pragma once
2
- /*
3
- Mock Arduino.h library.
4
-
5
- Where possible, variable names from the Arduino library are used to avoid conflicts
6
-
7
- */
8
- // Chars and strings
9
-
10
- #include "ArduinoDefines.h"
11
-
12
- #include "WCharacter.h"
13
- #include "WString.h"
14
- #include "Print.h"
15
- #include "Stream.h"
16
- #include "HardwareSerial.h"
17
- #include "SPI.h"
18
- #include "Nullptr.h"
19
-
20
- typedef bool boolean;
21
- typedef uint8_t byte;
22
-
23
- #include "binary.h"
24
-
25
- // Math and Trig
26
- #include "AvrMath.h"
27
-
28
- #include "Godmode.h"
29
-
30
-
31
- // Bits and Bytes
32
- #define bit(b) (1UL << (b))
33
- #define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
34
- #define bitRead(value, bit) (((value) >> (bit)) & 0x01)
35
- #define bitSet(value, bit) ((value) |= (1UL << (bit)))
36
- #define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
37
- #define highByte(w) ((uint8_t) ((w) >> 8))
38
- #define lowByte(w) ((uint8_t) ((w) & 0xff))
39
-
40
- // Arduino defines this
41
- #define _NOP() do { 0; } while (0)
42
-
43
- // might as well use that NO-op macro for these, while unit testing
44
- // you need interrupts? interrupt yourself
45
- #define yield() _NOP()
46
- #define interrupts() _NOP()
47
- #define noInterrupts() _NOP()
48
-
49
- // TODO: correctly establish this per-board!
50
- #define F_CPU 1000000UL
51
- #define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
52
- #define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
53
- #define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )
54
-
55
- typedef unsigned int word;
56
-
57
- #define bit(b) (1UL << (b))
58
-
59
-
60
-
61
- /*
62
- unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
63
- unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout);
64
-
65
- void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
66
- uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);
67
-
68
- */
69
-
70
- // Get the bit location within the hardware port of the given virtual pin.
71
- // This comes from the pins_*.c file for the active board configuration.
72
-
73
- #define analogInPinToBit(P) (P)
74
- #define digitalPinToInterrupt(P) (P)
75
-
76
- /*
77
- // On the ATmega1280, the addresses of some of the port registers are
78
- // greater than 255, so we can't store them in uint8_t's.
79
- extern const uint16_t PROGMEM port_to_mode_PGM[];
80
- extern const uint16_t PROGMEM port_to_input_PGM[];
81
- extern const uint16_t PROGMEM port_to_output_PGM[];
82
-
83
- extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
84
- // extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
85
- extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];
86
- extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];
87
-
88
- // Get the bit location within the hardware port of the given virtual pin.
89
- // This comes from the pins_*.c file for the active board configuration.
90
- //
91
- // These perform slightly better as macros compared to inline functions
92
- //
93
- #define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
94
- #define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
95
- #define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
96
- #define analogInPinToBit(P) (P)
97
- #define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) )
98
- #define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) )
99
- #define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) )
100
-
101
- */
102
-
103
-
104
- /* TODO
105
-
106
- // USB
107
- #include "USBAPI.h"
108
- Keyboard
109
- Mouse
110
-
111
- */
112
-
113
- // uint16_t makeWord(uint16_t w);
114
- // uint16_t makeWord(byte h, byte l);
115
- inline unsigned int makeWord(unsigned int w) { return w; }
116
- inline unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }
117
-
118
- #define word(...) makeWord(__VA_ARGS__)
119
-
120
- <<<<<<< Updated upstream
121
-
122
- =======
123
- unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
124
- unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
125
-
126
- // audio is taken care of in GODMODE
127
-
128
-
129
- // BIG TODO ON THIS ONE
130
- // $ find . | grep pins_
131
- // ./arduino-1.8.5/hardware/arduino/avr/variants/circuitplay32u4/pins_arduino.h
132
- // ./arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h
133
- // ./arduino-1.8.5/hardware/arduino/avr/variants/ethernet/pins_arduino.h
134
- // ./arduino-1.8.5/hardware/arduino/avr/variants/gemma/pins_arduino.h
135
- // ./arduino-1.8.5/hardware/arduino/avr/variants/leonardo/pins_arduino.h
136
- // ./arduino-1.8.5/hardware/arduino/avr/variants/mega/pins_arduino.h
137
- // ./arduino-1.8.5/hardware/arduino/avr/variants/micro/pins_arduino.h
138
- // ./arduino-1.8.5/hardware/arduino/avr/variants/robot_control/pins_arduino.h
139
- // ./arduino-1.8.5/hardware/arduino/avr/variants/robot_motor/pins_arduino.h
140
- // ./arduino-1.8.5/hardware/arduino/avr/variants/standard/pins_arduino.h
141
- // ./arduino-1.8.5/hardware/arduino/avr/variants/yun/pins_arduino.h
142
- // #include "pins_arduino.h"
143
- >>>>>>> Stashed changes
@@ -1,7 +0,0 @@
1
- #pragma once
2
-
3
- // Define C++11 nullptr
4
- typedef void * my_nullptr_t;
5
- #define nullptr (my_nullptr_t)NULL
6
-
7
- inline std::ostream& operator << (std::ostream& out, const my_nullptr_t &np) { return out << "nullptr"; }
@@ -1,73 +0,0 @@
1
- #pragma once
2
-
3
- template <typename T>
4
- class ArduinoCIQueue {
5
- private:
6
- struct Node {
7
- T data;
8
- Node* next;
9
- };
10
-
11
- Node* mFront;
12
- Node* mBack;
13
- unsigned long mSize;
14
- T mNil;
15
-
16
- void init() {
17
- mFront = mBack = NULL;
18
- mSize = 0;
19
- }
20
-
21
- public:
22
- ArduinoCIQueue(): mNil() { init(); }
23
-
24
- ArduinoCIQueue(const ArduinoCIQueue<T>& q) {
25
- init();
26
- for (Node* n = q.mFront; n; n = n->next) push(n->data);
27
- }
28
-
29
- inline unsigned long size() const { return mSize; }
30
-
31
- inline bool empty() const { return 0 == mSize; }
32
-
33
- T front() const { return empty() ? mNil : mFront->data; }
34
-
35
- T back() const { return empty() ? mNil : mBack->data; }
36
-
37
- bool push(const T& v)
38
- {
39
- Node *n = new Node;
40
- if (n == NULL) return false;
41
-
42
- n->data = v;
43
- n->next = NULL;
44
-
45
- if (mFront == NULL)
46
- {
47
- mFront = mBack = n;
48
- } else {
49
- mBack->next = n;
50
- mBack = n;
51
- }
52
-
53
- ++mSize;
54
- return true;
55
- }
56
-
57
- void pop() {
58
- if (empty()) return;
59
- if (mFront == mBack) {
60
- mFront = mBack = NULL;
61
- } else {
62
- Node* n = mFront;
63
- mFront = mFront->next;
64
- delete n;
65
- }
66
-
67
- --mSize;
68
- }
69
-
70
- void clear() { while (!empty()) pop(); }
71
-
72
- ~ArduinoCIQueue() { clear(); }
73
- };