Skip to content

Commit a4437a6

Browse files
committed
more aggressive rotation detection
1 parent 3f8908c commit a4437a6

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/hid.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -276,16 +276,19 @@ void hid_write_packet_n(uint8_t *data, uint8_t rssi)
276276
uint8_t *cur_p = &cur_p_trackers[data[1]];
277277
float mag = q_diff_mag(q, last_q); // difference between last valid
278278
float mag_cur = q_diff_mag(q, cur_q); // difference between last received
279-
bool mag_invalid = mag > 0.5f && mag < 6.28f - 0.5f; // possibly invalid rotation
280-
bool mag_cur_invalid = mag_cur > 0.5f && mag_cur < 6.28f - 0.5f; // possibly inconsistent rotation
279+
bool mag_invalid = mag > 0.26f && mag < 6.28f - 0.26f; // possibly invalid rotation
280+
bool mag_cur_invalid = mag_cur > 0.26f && mag_cur < 6.28f - 0.26f; // possibly inconsistent rotation
281281
if (mag_invalid && !last_invalid)
282282
{
283-
// HWID, ID, packet type, rotation difference (rad), last valid packet
284-
LOG_ERR("Abnormal rot. %012llX i%d p%d m%.2f/%.2f v%d", stored_tracker_addr[data[1]], data[1], data[0], (double)mag, (double)mag_cur, last_valid_trackers[data[1]]);
285-
// decoded quat, packet type, q_buf
286-
printk("a: %5.2f %5.2f %5.2f %5.2f p%d:%08X\n", (double)q[0], (double)q[1], (double)q[2], (double)q[3], data[0], *q_buf);
287-
printk("b: %5.2f %5.2f %5.2f %5.2f p%d:%08X\n", (double)cur_q[0], (double)cur_q[1], (double)cur_q[2], (double)cur_q[3], *cur_p, *cur_v);
288-
printk("c: %5.2f %5.2f %5.2f %5.2f p%d:%08X\n", (double)last_q[0], (double)last_q[1], (double)last_q[2], (double)last_q[3], *last_p, *last_v);
283+
if (!mag_cur_invalid && last_valid_trackers[data[1]] >= RESET_THRESHOLD - 1)
284+
{
285+
// HWID, ID, packet type, rotation difference (rad), last valid packet
286+
LOG_ERR("Abnormal rot. %012llX i%d p%d m%.2f/%.2f v%d", stored_tracker_addr[data[1]], data[1], data[0], (double)mag, (double)mag_cur, last_valid_trackers[data[1]]);
287+
// decoded quat, packet type, q_buf
288+
printk("a: %5.2f %5.2f %5.2f %5.2f p%d:%08X\n", (double)q[0], (double)q[1], (double)q[2], (double)q[3], data[0], *q_buf);
289+
printk("b: %5.2f %5.2f %5.2f %5.2f p%d:%08X\n", (double)cur_q[0], (double)cur_q[1], (double)cur_q[2], (double)cur_q[3], *cur_p, *cur_v);
290+
printk("c: %5.2f %5.2f %5.2f %5.2f p%d:%08X\n", (double)last_q[0], (double)last_q[1], (double)last_q[2], (double)last_q[3], *last_p, *last_v);
291+
}
289292
last_valid_trackers[data[1]]++;
290293
memcpy(cur_q, q, sizeof(q));
291294
*cur_v = *q_buf;

0 commit comments

Comments
 (0)