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

Commit 9acb47f

Browse files
khalilxlkhalilxljJames Foster
authored
Added Class and Tests for Serial (#10)
Co-authored-by: Khalil Llewellyn <[email protected]> Co-authored-by: James Foster <[email protected]>
1 parent 2e801a1 commit 9acb47f

File tree

3 files changed

+148
-0
lines changed

3 files changed

+148
-0
lines changed

.arduino-ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@ unittest:
1717
- mega2560
1818
libraries:
1919
- "LiquidCrystal"
20+
- "RTClib"
2021

2122
compile:
2223
platforms:
2324
- mega2560
2425
libraries:
2526
- "LiquidCrystal"
27+
- "RTClib"
28+

src/Devices/Serial_TC.h

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// This class is for the Serial Commands used in Tank Controller.
2+
// Serial here mostly deals with writing or printing data over through the serial port.
3+
// Serial.print and Serial.write can be called in different ways to print data.
4+
// Also print_PID, print_DataTime, print_mac are used to print the PID information, current date information, and the
5+
// mac address.
6+
7+
#include <Arduino.h>
8+
#include <RTClib.h>
9+
10+
class Serial_TC {
11+
private:
12+
public:
13+
Serial_TC() {
14+
Serial.begin(9600);
15+
}
16+
17+
void print_PID(double Kp, double Ki, double Kd, double output) {
18+
Serial.print(F("Kp:"));
19+
Serial.print(Kp);
20+
Serial.print(F(" Ki:"));
21+
Serial.print(Ki);
22+
Serial.print(F(" Kd:"));
23+
Serial.println(Kd);
24+
Serial.print(F("PID output (s): "));
25+
Serial.println(output / 1000, 1);
26+
}
27+
28+
void print_two_digits(int value) {
29+
if (value < 10) {
30+
Serial.print('0');
31+
}
32+
Serial.print(value, DEC);
33+
}
34+
void print_DateTime(DateTime dateTime) {
35+
Serial.print(dateTime.year(), DEC);
36+
Serial.print('-');
37+
print_two_digits(dateTime.month());
38+
Serial.print('-');
39+
print_two_digits(dateTime.day());
40+
Serial.print(' ');
41+
print_two_digits(dateTime.hour());
42+
Serial.print(':');
43+
print_two_digits(dateTime.minute());
44+
Serial.print(':');
45+
print_two_digits(dateTime.second());
46+
Serial.println();
47+
}
48+
49+
void print_mac(byte mac[]) {
50+
Serial.print(F("MAC Address: "));
51+
Serial.print(mac[0]);
52+
for (int i = 1; i < 6; ++i) {
53+
Serial.print(':');
54+
Serial.print(mac[i]);
55+
}
56+
Serial.println();
57+
}
58+
59+
void print(String aString, String aString2) {
60+
Serial.println(aString);
61+
Serial.println(aString2);
62+
}
63+
64+
void print(String aString, int anInt) {
65+
Serial.print(aString);
66+
Serial.println(anInt);
67+
}
68+
69+
void print(String aString, int anInt, int format) {
70+
Serial.print(aString);
71+
Serial.println(anInt, format);
72+
}
73+
74+
void print(String aString) {
75+
Serial.println(aString);
76+
}
77+
78+
void write(byte aByte) {
79+
Serial.write(aByte);
80+
}
81+
82+
void write(char arr[], int anInt) {
83+
Serial.write(arr, anInt);
84+
}
85+
};

test/Serial_TC.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <RTClib.h>
2+
#include <Serial_TC.h>
3+
4+
#include "ArduinoUnitTests.h"
5+
6+
unittest(SerialTest) {
7+
GodmodeState* state = GODMODE();
8+
state->serialPort[0].dataIn = ""; // the queue of data waiting to be read
9+
state->serialPort[0].dataOut = ""; // the history of data written
10+
11+
Serial_TC mySerial;
12+
13+
mySerial.write('b');
14+
assertEqual("", state->serialPort[0].dataIn);
15+
assertEqual("b", state->serialPort[0].dataOut);
16+
17+
state->serialPort[0].dataOut = ""; // the history of data written
18+
String test = "test:";
19+
mySerial.print(test);
20+
assertEqual("test:\r\n", state->serialPort[0].dataOut);
21+
22+
state->serialPort[0].dataOut = ""; // the history of data written
23+
mySerial.print(test, 2);
24+
assertEqual("test:2\r\n", state->serialPort[0].dataOut);
25+
26+
state->serialPort[0].dataOut = ""; // the history of data written
27+
mySerial.print("Label: ", "value");
28+
assertEqual("Label: \r\nvalue\r\n", state->serialPort[0].dataOut);
29+
30+
state->serialPort[0].dataOut = ""; // the history of data written
31+
mySerial.print("Test Hex:", 78, HEX);
32+
assertEqual("Test Hex:4E\r\n", state->serialPort[0].dataOut);
33+
34+
state->serialPort[0].dataOut = ""; // the history of data written
35+
byte mac[6] = {0x90, 0xA2, 0xDA, 0x00, 0x00, 0x00};
36+
mySerial.print_mac(mac);
37+
assertEqual("MAC Address: 144:162:218:0:0:0\r\n", state->serialPort[0].dataOut);
38+
39+
state->serialPort[0].dataOut = ""; // the history of data written
40+
char temp[] = {'a', 'b', 'c', '\0'};
41+
mySerial.write(temp, strlen(temp));
42+
assertEqual("abc", state->serialPort[0].dataOut);
43+
44+
state->serialPort[0].dataOut = ""; // the history of data written
45+
mySerial.print_PID(1.1, 2.2, 3.3, 1234.5);
46+
assertEqual("Kp:1.1000000000 Ki:2.2000000000 Kd:3.3000000000\r\nPID output (s): 1.2\r\n",
47+
state->serialPort[0].dataOut);
48+
49+
state->serialPort[0].dataOut = ""; // the history of data written
50+
DateTime dateTime = DateTime(2020, 1, 2, 3, 4, 5);
51+
mySerial.print_DateTime(dateTime);
52+
assertEqual("2020-01-02 03:04:05\r\n", state->serialPort[0].dataOut);
53+
54+
state->serialPort[0].dataOut = ""; // the history of data written
55+
dateTime = DateTime(2020, 11, 12, 13, 14, 15);
56+
mySerial.print_DateTime(dateTime);
57+
assertEqual("2020-11-12 13:14:15\r\n", state->serialPort[0].dataOut);
58+
}
59+
60+
unittest_main()

0 commit comments

Comments
 (0)