/*
There are three serial ports on the ESP known as U0UXD, U1UXD and U2UXD.
U0UXD is used to communicate with the ESP32 for programming and during reset/boot.
U1UXD is unused and can be used for your projects. Some boards use this port for SPI Flash access though
U2UXD is unused and can be used for your projects.
*/
#include "bytearray.h"
#include "PinButton.h"
#include <HardwareSerial.h>
#include "CampervanStructure.h"
#define RXD2 16
#define TXD2 17
#define RXD3 32
#define TXD3 33
#define SERIAL_BAUD 9600
HardwareSerial Serial3(2);
bool enableDebug = false;
int testSuccess = 0;
int testFailure = 0;
void resetTestCount() {
testSuccess = 0;
testFailure = 0;
}
void d(char* msg) {
if (enableDebug) {
Serial.print(" > [debug] ");
Serial.println(msg);
}
}
void asserti(int actual, int expected, char* test) {
if (expected == actual) {
Serial.print("Success | ");
Serial.println(test);
testSuccess += 1;
} else {
Serial.print("Failure | [expected=");
Serial.print(expected);
Serial.print(", actual=");
Serial.print(actual);
Serial.print("]");
Serial.println(test);
testFailure += 1;
}
}
void assertFail(char* message) {
Serial.print("Failure | ");
Serial.println(message);
testFailure += 1;
}
void readAll(HardwareSerial* serial) {
Serial.print("Serial read all=");
Serial.println(serial->available());
byte* b;
serial->readBytes(b, serial->available());
}
void testMsgButtonPress() {
//readAll(&Serial2);
MsgButtonPress btn;
btn.buttonType = btnTypeWaterPump;
btn.press = btnPressDouble;
d("testMsgButtonPress() Have the button");
sendMessage(&Serial2, &btn);
delay(200);
// Read the message....
// readMessage(&Serial2);
asserti(readMessageType(&Serial2), btn.messageType, "testMsgButtonPress() readMessageType messageType is correct");
// Read the message
MsgButtonPress btn2;
if (readMsgButtonPress(&Serial2, &btn2)) {
asserti(btn2.messageType, btn.messageType, "testMsgButtonPress() Read Message messageType is correct");
asserti(btn2.buttonType, btn.buttonType, "testMsgButtonPress() Read Message buttonType is correct");
asserti(btn2.press, btn.press, "testMsgButtonPress() Read Message press is correct");
} else {
assertFail("testMsgButtonPress() Unable to read the btn");
}
d("testMsgButtonPress() Copied");
delay(50);
}
void testRotaryChange() {
//readAll(&Serial2);
MsgRotaryChange rot;
btn.buttonType = btnTypeWaterPump;
btn.press = btnPressDouble;
d("testMsgButtonPress() Have the button");
sendMessage(&Serial2, &btn);
delay(200);
// Read the message....
// readMessage(&Serial2);
asserti(readMessageType(&Serial2), btn.messageType, "testMsgButtonPress() readMessageType messageType is correct");
// Read the message
MsgButtonPress btn2;
if (readMsgButtonPress(&Serial2, &btn2)) {
asserti(btn2.messageType, btn.messageType, "testMsgButtonPress() Read Message messageType is correct");
asserti(btn2.buttonType, btn.buttonType, "testMsgButtonPress() Read Message buttonType is correct");
asserti(btn2.press, btn.press, "testMsgButtonPress() Read Message press is correct");
} else {
assertFail("testMsgButtonPress() Unable to read the btn");
}
d("testMsgButtonPress() Copied");
delay(50);
}
void testAll() {
resetTestCount();
testMsgButtonPress();
Serial.print("Success ");
Serial.println(testSuccess);
Serial.print("Failure ");
Serial.println(testFailure);
}
void setup() {
// Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
Serial.begin(115200);
//Serial1.begin(9600, SERIAL_8N1, RXD2, TXD2);
Serial2.begin(SERIAL_BAUD, SERIAL_8N1, RXD2, TXD2);
Serial.println("Serial2 Txd is on pin: " + String(TX));
Serial.println("Serial2 Rxd is on pin: " + String(RX));
Serial3.begin(SERIAL_BAUD, SERIAL_8N1, RXD3, TXD3);
// Serial.println("Serial3 Txd is on pin: " + String(TX3));
// Serial.println("Serial3 Rxd is on pin: " + String(RX3));
testAll();
}
void loop() { //Choose Serial1 or Serial2 as required
// MsgButtonPress btn;
// btn.buttonType = btnTypeWaterPump;
// btn.press = btnPressDouble;
// myTransfer.sendDatum(btn, sizeof(btn));
// Serial.println("Completed Send");
// if (myTransfer.available())
// {
// myTransfer.rxObj(btn, sizeof(btn));
// Serial.println("Completed recieve");
// }
// if (Serial.available()) {
// //Read the message
// testAll();
// delay(1000);
// }
// Serial2.print("Test message");
// while (Serial2.available()) {
// Serial.print(char(Serial2.read()));
// }
// Serial3.print("Serial 3 message");
// while (Serial3.available()) {
// Serial.print(char(Serial3.read()));
// }
}
/* Baud-rates available: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200, 256000, 512000, 962100
Protocols available:
SERIAL_5N1 5-bit No parity 1 stop bit
SERIAL_6N1 6-bit No parity 1 stop bit
SERIAL_7N1 7-bit No parity 1 stop bit
SERIAL_8N1 (the default) 8-bit No parity 1 stop bit
SERIAL_5N2 5-bit No parity 2 stop bits
SERIAL_6N2 6-bit No parity 2 stop bits
SERIAL_7N2 7-bit No parity 2 stop bits
SERIAL_8N2 8-bit No parity 2 stop bits
SERIAL_5E1 5-bit Even parity 1 stop bit
SERIAL_6E1 6-bit Even parity 1 stop bit
SERIAL_7E1 7-bit Even parity 1 stop bit
SERIAL_8E1 8-bit Even parity 1 stop bit
SERIAL_5E2 5-bit Even parity 2 stop bit
SERIAL_6E2 6-bit Even parity 2 stop bit
SERIAL_7E2 7-bit Even parity 2 stop bit
SERIAL_8E2 8-bit Even parity 2 stop bit
SERIAL_5O1 5-bit Odd parity 1 stop bit
SERIAL_6O1 6-bit Odd parity 1 stop bit
SERIAL_7O1 7-bit Odd parity 1 stop bit
SERIAL_8O1 8-bit Odd parity 1 stop bit
SERIAL_5O2 5-bit Odd parity 2 stop bit
SERIAL_6O2 6-bit Odd parity 2 stop bit
SERIAL_7O2 7-bit Odd parity 2 stop bit
SERIAL_8O2 8-bit Odd parity 2 stop bit
*/