Skip to content

Commit

Permalink
Resend sensor packet on calibration
Browse files Browse the repository at this point in the history
  • Loading branch information
gorbit99 committed Feb 3, 2025
1 parent b71803c commit 3d1dd41
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/network/connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ void Connection::updateSensorState(std::vector<std::unique_ptr<Sensor>>& sensors
m_LastSensorInfoPacketTimestamp = millis();

for (int i = 0; i < (int)sensors.size(); i++) {
if (m_AckedSensorState[i] != sensors[i]->getSensorState()) {
if (isSensorStateUpdated(i, sensors[i])) {
sendSensorInfo(*sensors[i]);
}
}
Expand All @@ -554,6 +554,11 @@ void Connection::maybeRequestFeatureFlags() {
m_FeatureFlagsRequestAttempts++;
}

bool Connection::isSensorStateUpdated(int i, std::unique_ptr<Sensor>& sensor) {
return m_AckedSensorState[i] != sensor->getSensorState()
|| m_AckedSensorCalibration[i] != sensor->completedRestCalibration();
}

void Connection::searchForServer() {
while (true) {
int packetSize = m_UDP.parsePacket();
Expand Down Expand Up @@ -625,6 +630,11 @@ void Connection::reset() {
m_AckedSensorState + MAX_IMU_COUNT,
SensorStatus::SENSOR_OFFLINE
);
std::fill(
m_AckedSensorCalibration,
m_AckedSensorCalibration + MAX_IMU_COUNT,
false
);

m_UDP.begin(m_ServerPort);

Expand All @@ -651,6 +661,11 @@ void Connection::update() {
m_AckedSensorState + MAX_IMU_COUNT,
SensorStatus::SENSOR_OFFLINE
);
std::fill(
m_AckedSensorCalibration,
m_AckedSensorCalibration + MAX_IMU_COUNT,
false
);
m_Logger.warn("Connection to server timed out");

return;
Expand Down Expand Up @@ -708,6 +723,7 @@ void Connection::update() {
for (int i = 0; i < (int)sensors.size(); i++) {
if (m_Packet[4] == sensors[i]->getSensorId()) {
m_AckedSensorState[i] = (SensorStatus)m_Packet[5];
m_AckedSensorCalibration[i] = (bool)m_Packet[9];
break;
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/network/connection.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ class Connection {
private:
void updateSensorState(std::vector<std::unique_ptr<Sensor>>& sensors);
void maybeRequestFeatureFlags();
bool isSensorStateUpdated(int i, std::unique_ptr<Sensor>& sensor);

bool beginPacket();
bool endPacket();
Expand Down Expand Up @@ -171,6 +172,7 @@ class Connection {
unsigned long m_LastPacketTimestamp;

SensorStatus m_AckedSensorState[MAX_IMU_COUNT] = {SensorStatus::SENSOR_OFFLINE};
bool m_AckedSensorCalibration[MAX_IMU_COUNT] = {false};
unsigned long m_LastSensorInfoPacketTimestamp = 0;

uint8_t m_FeatureFlagsRequestAttempts = 0;
Expand Down

0 comments on commit 3d1dd41

Please sign in to comment.