Skip to content

CI fixes #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Mar 7, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,22 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]
### Added
- `CppLibrary` can now report `gcc_version`

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

### Deprecated

### Removed

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

### Security

Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Be prepared to write tests to accompany any code you would like to see merged.
## Packaging the Gem

* Merge pull request with new features
* `git pull --rebase`
* 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)
* Update the sections of `CHANGELOG.md`
* `git add README.md CHANGELOG.md lib/arduino_ci/version.rb`
Expand Down
2 changes: 2 additions & 0 deletions cpp/arduino/ArduinoDefines.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#pragma once

#include <avr/pgmspace.h>

#define HIGH 0x1
#define LOW 0x0

Expand Down
2 changes: 1 addition & 1 deletion cpp/arduino/PinHistory.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class PinHistory : public ObservableDataStream {
// this sets the value of the pin authoritatively
// so if there was a queue, dump it.
// the actual "set" operation doesn't happen until the next read
const T &operator=(const T& i) {
T operator=(const T& i) {
qIn.clear();
qOut.push(i);
advertiseBit(qOut.back()); // not valid for all possible types but whatever
Expand Down
45 changes: 23 additions & 22 deletions cpp/arduino/Print.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ class Print
virtual size_t write(uint8_t) = 0;
size_t write(const char *str) { return str == NULL ? 0 : write((const uint8_t *)str, String(str).length()); }

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

virtual size_t write(const uint8_t *buffer, size_t size) {
size_t n;
Expand All @@ -41,28 +40,30 @@ class Print
}
size_t write(const char *buffer, size_t size) { return write((const uint8_t *)buffer, size); }

size_t print(const String &s) { return write(s.c_str(), s.length()); }
size_t print(const char* str) { return print(String(str)); }
size_t print(char c) { return print(String(c)); }
size_t print(unsigned char b, int base) { return print(String(b, base)); }
size_t print(int n, int base) { return print(String(n, base)); }
size_t print(unsigned int n, int base) { return print(String(n, base)); }
size_t print(long n, int base) { return print(String(n, base)); }
size_t print(unsigned long n, int base) { return print(String(n, base)); }
size_t print(double n, int digits) { return print(String(n, digits)); }
size_t print(const Printable& x) { return x.printTo(*this); }
size_t print(const String &s) { return write(s.c_str(), s.length()); }
size_t print(const __FlashStringHelper *str) { return print(reinterpret_cast<PGM_P>(str)); }
size_t print(const char* str) { return print(String(str)); }
size_t print(char c) { return print(String(c)); }
size_t print(unsigned char b, int base) { return print(String(b, base)); }
size_t print(int n, int base) { return print(String(n, base)); }
size_t print(unsigned int n, int base) { return print(String(n, base)); }
size_t print(long n, int base) { return print(String(n, base)); }
size_t print(unsigned long n, int base) { return print(String(n, base)); }
size_t print(double n, int digits) { return print(String(n, digits)); }
size_t print(const Printable& x) { return x.printTo(*this); }

size_t println(void) { return print("\r\n"); }
size_t println(const String &s) { return print(s) + println(); }
size_t println(const char* c) { return println(String(c)); }
size_t println(char c) { return println(String(c)); }
size_t println(unsigned char b, int base) { return println(String(b, base)); }
size_t println(int num, int base) { return println(String(num, base)); }
size_t println(unsigned int num, int base) { return println(String(num, base)); }
size_t println(long num, int base) { return println(String(num, base)); }
size_t println(unsigned long num, int base) { return println(String(num, base)); }
size_t println(double num, int digits) { return println(String(num, digits)); }
size_t println(const Printable& x) { return print(x) + println(); }
size_t println(void) { return print("\r\n"); }
size_t println(const String &s) { return print(s) + println(); }
size_t println(const __FlashStringHelper *str) { return println(reinterpret_cast<PGM_P>(str)); }
size_t println(const char* c) { return println(String(c)); }
size_t println(char c) { return println(String(c)); }
size_t println(unsigned char b, int base) { return println(String(b, base)); }
size_t println(int num, int base) { return println(String(num, base)); }
size_t println(unsigned int num, int base) { return println(String(num, base)); }
size_t println(long num, int base) { return println(String(num, base)); }
size_t println(unsigned long num, int base) { return println(String(num, base)); }
size_t println(double num, int digits) { return println(String(num, digits)); }
size_t println(const Printable& x) { return print(x) + println(); }

virtual void flush() { }

Expand Down
7 changes: 5 additions & 2 deletions cpp/arduino/SoftwareSerial.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,19 @@ class SoftwareSerial : public Stream
private:
int mPinIn;
int mPinOut;
bool mInverse;
bool mIsListening;
GodmodeState* mState;
unsigned long mOffset; // bits to offset stream
bool bigEndian;

public:
SoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false) {
// @TODO this is public for now to avoid a compiler warning
bool mInvertLogic; // @TODO not sure how to implement yet

SoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool invertLogic = false) {
mPinIn = receivePin;
mPinOut = transmitPin;
mIsListening = invertLogic;
mIsListening = false;
mOffset = 0; // godmode starts with 1 bit in the queue
mState = GODMODE();
Expand Down
Loading