58 lines
1.9 KiB
C++
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;
|
|
}
|
|
}
|
|
} |