Files
Block-Party-Firmware/lib/SerialMessage/BluetoothSerialMessage.cpp
2024-02-09 21:33:45 -05:00

58 lines
1.9 KiB
C++

#include "BluetoothSerialMessage.h"
BluetoothSerialMessage::BluetoothSerialMessage(BluetoothSerial *serial){
this->serial = serial;
}
void BluetoothSerialMessage::Init(unsigned int baud_rate){
// Don't need to do anything here, just let the user init bluetooth serial
}
void BluetoothSerialMessage::PrintArgs(){
serial->print("Current number of args: ");
serial->println(populated_args);
for (int i = 0; i < populated_args; i++) {
serial->print(args[i]);
serial->print(" ");
}
serial->println();
}
void BluetoothSerialMessage::readSerial(){
boolean recvInProgress = false;
byte ndx = 0;
char c;
// read the incoming serial data:
while (serial->available() > 0 && data_recieved == false) {
// get the neext character in the serial buffer
c = serial->read();
Serial.print(c);
// only execute this if the startMarker has been received
if (recvInProgress == true) {
// if the incoming character is not the endMarker...
if (c != endMarker) {
// add it to the data array
data[ndx] = c;
ndx++; // increment the data array index
// if the index is greater than the maximum data array size,
// keep overwriting the last element until the endMarker is received.
if (ndx >= num_chars) {
ndx = num_chars - 1;
}
}
// if the incoming character is the endMarker clean up and set the flags
else {
data[ndx] = '\0'; // terminate the string
recvInProgress = false;
ndx = 0;
data_recieved = true;
}
}
// if the incoming character is the startMarker, set the recvInProgress flag
else if (c == startMarker) {
recvInProgress = true;
}
}
}