17 static SerialSim instance;
23 this->stateMachine_ = stateMachine;
28 serial_->write(
"START\n");
30 if (serial_->available() > 0) {
31 ack = serial_->read();
40 while (serial_->available() > 0) {
41 char c =
static_cast<char>(serial_->read());
46 handleIncomingLine(partialLine_);
56 return serial_->available() > 0;
61 timestamp = timestamp_;
65 accel->acceleration.x = accelX_;
66 accel->acceleration.y = accelY_;
67 accel->acceleration.z = accelZ_;
71 gyro->gyro.x = gyroX_;
72 gyro->gyro.y = gyroY_;
73 gyro->gyro.z = gyroZ_;
77 mag->magnetic.x = magneticX_;
78 mag->magnetic.y = magneticY_;
79 mag->magnetic.z = magneticZ_;
91 temp.temperature = temp_;
96 SerialSim(
const SerialSim&) =
delete;
97 SerialSim& operator=(
const SerialSim&) =
delete;
100 void handleIncomingLine(String &line) {
101 Serial.println(
"Handling line: " + line);
102 if (line.length() < 5) {
103 Serial.println(
"Line too short");
108 timestamp_ = parseNextFloat(line);
109 accelX_ = parseNextFloat(line);
110 accelY_ = parseNextFloat(line);
111 accelZ_ = parseNextFloat(line);
112 alt_ = parseNextFloat(line);
123 Serial.println(
"Parsed Data!");
129 float parseNextFloat(String &data) {
130 int commaIndex = data.indexOf(
',');
131 if (commaIndex == -1) {
133 float val = data.toFloat();
139 float value = data.substring(0, commaIndex).toFloat();
141 data = data.substring(commaIndex + 1);
147 serial_->write(stateMachine_->getState());
149 serial_->write(0xaa);
150 serial_->write(0xbb);
151 serial_->write(0xcc);
155 Stream* serial_ =
nullptr;
156 BaseStateMachine* stateMachine_ =
nullptr;
160 float timestamp_ = 0;
161 float accelX_ = 0, accelY_ = 0, accelZ_ = 0;
162 float gyroX_ = 0, gyroY_ = 0, gyroZ_ = 0;
163 float magneticX_ = 0, magneticY_ = 0, magneticZ_ = 0;