diff --git a/.arduino-ci.yml b/.arduino-ci.yml index 9db6f922..37f758b2 100644 --- a/.arduino-ci.yml +++ b/.arduino-ci.yml @@ -17,9 +17,12 @@ unittest: - mega2560 libraries: - "LiquidCrystal" + - "RTClib" compile: platforms: - mega2560 libraries: - "LiquidCrystal" + - "RTClib" + diff --git a/.gitignore b/.gitignore index bb02685c..589f2031 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,6 @@ # IDE - VSCode .vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json # misc *.zip diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 00000000..ef17bd83 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,4 @@ +#! /bin/sh +bundle config --local path vendor/bundle +bundle install +bundle exec arduino_ci_remote.rb --skip-examples-compilation diff --git a/src/Devices/Serial_TC.h b/src/Devices/Serial_TC.h new file mode 100644 index 00000000..ee5fa387 --- /dev/null +++ b/src/Devices/Serial_TC.h @@ -0,0 +1,85 @@ +// This class is for the Serial Commands used in Tank Controller. +// Serial here mostly deals with writing or printing data over through the serial port. +// Serial.print and Serial.write can be called in different ways to print data. +// Also print_PID, print_DataTime, print_mac are used to print the PID information, current date information, and the +// mac address. + +#include +#include + +class Serial_TC { +private: +public: + Serial_TC() { + 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_two_digits(int value) { + if (value < 10) { + Serial.print('0'); + } + Serial.print(value, DEC); + } + void print_DateTime(DateTime dateTime) { + Serial.print(dateTime.year(), DEC); + Serial.print('-'); + print_two_digits(dateTime.month()); + Serial.print('-'); + print_two_digits(dateTime.day()); + Serial.print(' '); + print_two_digits(dateTime.hour()); + Serial.print(':'); + print_two_digits(dateTime.minute()); + Serial.print(':'); + print_two_digits(dateTime.second()); + 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); + } +}; diff --git a/test.sh b/test.sh deleted file mode 100755 index 5dcda88f..00000000 --- a/test.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh -bundle install --path vendor/bundle -bundle exec arduino_ci_remote.rb --skip-compilation diff --git a/test/Serial_TC.cpp b/test/Serial_TC.cpp new file mode 100644 index 00000000..5a132865 --- /dev/null +++ b/test/Serial_TC.cpp @@ -0,0 +1,60 @@ +#include +#include + +#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 + + Serial_TC mySerial; + + mySerial.write('b'); + assertEqual("", state->serialPort[0].dataIn); + assertEqual("b", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + String test = "test:"; + mySerial.print(test); + assertEqual("test:\r\n", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + mySerial.print(test, 2); + assertEqual("test:2\r\n", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + mySerial.print("Label: ", "value"); + assertEqual("Label: \r\nvalue\r\n", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + mySerial.print("Test Hex:", 78, HEX); + assertEqual("Test Hex:4E\r\n", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + byte mac[6] = {0x90, 0xA2, 0xDA, 0x00, 0x00, 0x00}; + mySerial.print_mac(mac); + assertEqual("MAC Address: 144:162:218:0:0:0\r\n", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + char temp[] = {'a', 'b', 'c', '\0'}; + mySerial.write(temp, strlen(temp)); + assertEqual("abc", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + mySerial.print_PID(1.1, 2.2, 3.3, 1234.5); + assertEqual("Kp:1.1000000000 Ki:2.2000000000 Kd:3.3000000000\r\nPID output (s): 1.2\r\n", + state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + DateTime dateTime = DateTime(2020, 1, 2, 3, 4, 5); + mySerial.print_DateTime(dateTime); + assertEqual("2020-01-02 03:04:05\r\n", state->serialPort[0].dataOut); + + state->serialPort[0].dataOut = ""; // the history of data written + dateTime = DateTime(2020, 11, 12, 13, 14, 15); + mySerial.print_DateTime(dateTime); + assertEqual("2020-11-12 13:14:15\r\n", state->serialPort[0].dataOut); +} + +unittest_main()