Skip to content
This repository was archived by the owner on Mar 25, 2021. It is now read-only.

Added Class and Tests for Serial #10

Merged
merged 8 commits into from
Nov 4, 2020
Merged
Show file tree
Hide file tree
Changes from 3 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
3 changes: 3 additions & 0 deletions .arduino-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@ unittest:
- mega2560
libraries:
- "LiquidCrystal"
- "RTClib"

compile:
platforms:
- mega2560
libraries:
- "LiquidCrystal"
- "RTClib"

5 changes: 5 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't seem that this file association should be necessary. In any case, please update .gitignore to remove lines 4-7 so that this isn't part of your PR.

"files.associations": {
"ostream": "cpp"
}
}
85 changes: 85 additions & 0 deletions src/Devices/Serial_TC.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// Year-Month-Day Format for DateTime
// https://en.wikipedia.org/wiki/ISO_8601

#include <Arduino.h>
#include <RTClib.h>

class TC_Serial {
private:
const float RREF = 430.0;
// RTC_PCF8523 rtc;

public:
TC_Serial() {
Serial.begin(9600);
}

void print_PID(double Kp, double Ki, double Kd, double output) {
Serial.print(F("Kp:"));
Serial.print(Kp);
Serial.print(F(" Ki:"));
Serial.print(Ki);
Serial.print(F(" Kd:"));
Serial.println(Kd);
Serial.print(F("PID output (s): "));
Serial.println(output / 1000, 1);
}

void print_DateTime(DateTime now) {
Serial.print(now.year(), DEC);
Serial.print('-');
Serial.print(now.month(), DEC);
Serial.print('-');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
if (now.minute() < 10) {
Serial.print('0');
}
Serial.print(now.minute(), DEC);
Serial.print(':');
if (now.second() < 10) {
Serial.print('0');
}
Serial.print(now.second(), DEC);
Serial.println();
}

void print_mac(byte mac[]) {
Serial.print(F("MAC Address: "));
Serial.print(mac[0]);
for (int i = 1; i < 6; ++i) {
Serial.print(':');
Serial.print(mac[i]);
}
Serial.println();
}

void print(String aString, String aString2) {
Serial.println(aString);
Serial.println(aString2);
}

void print(String aString, int anInt) {
Serial.print(aString);
Serial.println(anInt);
}

void print(String aString, int anInt, int format) {
Serial.print(aString);
Serial.println(anInt, format);
}

void print(String aString) {
Serial.println(aString);
}

void write(byte aByte) {
Serial.write(aByte);
}

void write(char arr[], int anInt) {
Serial.write(arr, anInt);
}
};
3 changes: 2 additions & 1 deletion test.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#! /bin/sh
bundle install --path vendor/bundle
bundle config --local path vendor/bundle
bundle install
bundle exec arduino_ci_remote.rb --skip-compilation
28 changes: 28 additions & 0 deletions test/Serial_TC.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <Serial_TC.h>

#include "ArduinoUnitTests.h"

unittest(SerialTest) {
GodmodeState* state = GODMODE();
state->serialPort[0].dataIn = ""; // the queue of data waiting to be read
state->serialPort[0].dataOut = ""; // the history of data written

TC_Serial mySerial;

assertTrue(true);

mySerial.write('b');
assertEqual("", state->serialPort[0].dataIn);
assertEqual("b", state->serialPort[0].dataOut);

String test = "test:";
mySerial.print(test);
assertEqual("", state->serialPort[0].dataIn);
assertEqual("btest:\r\n", state->serialPort[0].dataOut);

mySerial.print(test, 3);
assertEqual("", state->serialPort[0].dataIn);
assertEqual("btest:\r\ntest:3\r\n", state->serialPort[0].dataOut);
}

unittest_main()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should have tests for each of the public API functions. It wouldn't take much to add a few more.