Skip to content

Commit d09afc2

Browse files
authored
Merge pull request #21 from ifreecarve/2018-03-05_ci_fixes
CI fixes
2 parents 128d134 + 53a4f56 commit d09afc2

20 files changed

+868
-330
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,22 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
66

77
## [Unreleased]
88
### Added
9+
- `CppLibrary` can now report `gcc_version`
910

1011
### Changed
12+
- `arduino_ci_remote.rb` now formats tasks with multiple output lines more nicely
13+
- Templates for CI classes are now pass-by-value (no const reference)
1114

1215
### Deprecated
1316

1417
### Removed
1518

1619
### Fixed
20+
- Replaced pipes with `Open3.capture3` to avoid deadlocks when commands have too much output
21+
- `ci_config.rb` now returns empty arrays (instead of nil) for undefined config keys
22+
- `pgmspace.h` explictly includes `<string.h>`
23+
- `__FlashStringHelper` should now be properly mocked for compilation
24+
- `WString.h` bool operator now works and is simpler
1725

1826
### Security
1927

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Be prepared to write tests to accompany any code you would like to see merged.
1818
## Packaging the Gem
1919

2020
* Merge pull request with new features
21+
* `git pull --rebase`
2122
* Bump the version in lib/arduino_ci/version.rb and change it in README.md (since rubydoc.info doesn't always redirect to the latest version)
2223
* Update the sections of `CHANGELOG.md`
2324
* `git add README.md CHANGELOG.md lib/arduino_ci/version.rb`

cpp/arduino/ArduinoDefines.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#pragma once
22

3+
#include <avr/pgmspace.h>
4+
35
#define HIGH 0x1
46
#define LOW 0x0
57

cpp/arduino/PinHistory.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class PinHistory : public ObservableDataStream {
8686
// this sets the value of the pin authoritatively
8787
// so if there was a queue, dump it.
8888
// the actual "set" operation doesn't happen until the next read
89-
const T &operator=(const T& i) {
89+
T operator=(const T& i) {
9090
qIn.clear();
9191
qOut.push(i);
9292
advertiseBit(qOut.back()); // not valid for all possible types but whatever

cpp/arduino/Print.h

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class Print
3232
virtual size_t write(uint8_t) = 0;
3333
size_t write(const char *str) { return str == NULL ? 0 : write((const uint8_t *)str, String(str).length()); }
3434

35-
size_t write(const __FlashStringHelper *str) { return write((const char *)str); }
3635

3736
virtual size_t write(const uint8_t *buffer, size_t size) {
3837
size_t n;
@@ -41,28 +40,30 @@ class Print
4140
}
4241
size_t write(const char *buffer, size_t size) { return write((const uint8_t *)buffer, size); }
4342

44-
size_t print(const String &s) { return write(s.c_str(), s.length()); }
45-
size_t print(const char* str) { return print(String(str)); }
46-
size_t print(char c) { return print(String(c)); }
47-
size_t print(unsigned char b, int base) { return print(String(b, base)); }
48-
size_t print(int n, int base) { return print(String(n, base)); }
49-
size_t print(unsigned int n, int base) { return print(String(n, base)); }
50-
size_t print(long n, int base) { return print(String(n, base)); }
51-
size_t print(unsigned long n, int base) { return print(String(n, base)); }
52-
size_t print(double n, int digits) { return print(String(n, digits)); }
53-
size_t print(const Printable& x) { return x.printTo(*this); }
43+
size_t print(const String &s) { return write(s.c_str(), s.length()); }
44+
size_t print(const __FlashStringHelper *str) { return print(reinterpret_cast<PGM_P>(str)); }
45+
size_t print(const char* str) { return print(String(str)); }
46+
size_t print(char c) { return print(String(c)); }
47+
size_t print(unsigned char b, int base) { return print(String(b, base)); }
48+
size_t print(int n, int base) { return print(String(n, base)); }
49+
size_t print(unsigned int n, int base) { return print(String(n, base)); }
50+
size_t print(long n, int base) { return print(String(n, base)); }
51+
size_t print(unsigned long n, int base) { return print(String(n, base)); }
52+
size_t print(double n, int digits) { return print(String(n, digits)); }
53+
size_t print(const Printable& x) { return x.printTo(*this); }
5454

55-
size_t println(void) { return print("\r\n"); }
56-
size_t println(const String &s) { return print(s) + println(); }
57-
size_t println(const char* c) { return println(String(c)); }
58-
size_t println(char c) { return println(String(c)); }
59-
size_t println(unsigned char b, int base) { return println(String(b, base)); }
60-
size_t println(int num, int base) { return println(String(num, base)); }
61-
size_t println(unsigned int num, int base) { return println(String(num, base)); }
62-
size_t println(long num, int base) { return println(String(num, base)); }
63-
size_t println(unsigned long num, int base) { return println(String(num, base)); }
64-
size_t println(double num, int digits) { return println(String(num, digits)); }
65-
size_t println(const Printable& x) { return print(x) + println(); }
55+
size_t println(void) { return print("\r\n"); }
56+
size_t println(const String &s) { return print(s) + println(); }
57+
size_t println(const __FlashStringHelper *str) { return println(reinterpret_cast<PGM_P>(str)); }
58+
size_t println(const char* c) { return println(String(c)); }
59+
size_t println(char c) { return println(String(c)); }
60+
size_t println(unsigned char b, int base) { return println(String(b, base)); }
61+
size_t println(int num, int base) { return println(String(num, base)); }
62+
size_t println(unsigned int num, int base) { return println(String(num, base)); }
63+
size_t println(long num, int base) { return println(String(num, base)); }
64+
size_t println(unsigned long num, int base) { return println(String(num, base)); }
65+
size_t println(double num, int digits) { return println(String(num, digits)); }
66+
size_t println(const Printable& x) { return print(x) + println(); }
6667

6768
virtual void flush() { }
6869

cpp/arduino/SoftwareSerial.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,19 @@ class SoftwareSerial : public Stream
1010
private:
1111
int mPinIn;
1212
int mPinOut;
13-
bool mInverse;
1413
bool mIsListening;
1514
GodmodeState* mState;
1615
unsigned long mOffset; // bits to offset stream
1716
bool bigEndian;
1817

1918
public:
20-
SoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false) {
19+
// @TODO this is public for now to avoid a compiler warning
20+
bool mInvertLogic; // @TODO not sure how to implement yet
21+
22+
SoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool invertLogic = false) {
2123
mPinIn = receivePin;
2224
mPinOut = transmitPin;
25+
mIsListening = invertLogic;
2326
mIsListening = false;
2427
mOffset = 0; // godmode starts with 1 bit in the queue
2528
mState = GODMODE();

0 commit comments

Comments
 (0)