add reliable BLE telemetry transport

This commit is contained in:
Jay
2026-08-18 06:24:10 -04:00
parent 00f52ecf0f
commit 7617010d8e
26 changed files with 1499 additions and 47 deletions
+34
View File
@@ -202,3 +202,37 @@ size_t trikke_encode_sample_packet(
put_u32_le(output + 32, packet_crc32(output, payload_size));
return packet_size;
}
size_t trikke_encode_status_packet(
uint8_t *output,
size_t output_size,
uint32_t packet_sequence,
int64_t timestamp_us,
uint32_t dropped_sample_count,
uint32_t loop_overrun_count,
const trikke_wire_status_t *status)
{
const size_t packet_size =
TRIKKE_WIRE_HEADER_SIZE + TRIKKE_WIRE_STATUS_SIZE;
if (output == NULL || status == NULL || output_size < packet_size) {
return 0;
}
encode_header(output, TRIKKE_PACKET_TYPE_STATUS, 0, 0, 0,
TRIKKE_WIRE_STATUS_SIZE, packet_sequence, timestamp_us,
dropped_sample_count, loop_overrun_count);
uint8_t *payload = output + TRIKKE_WIRE_HEADER_SIZE;
put_u16_le(payload, 1); // Status payload version.
put_u16_le(payload + 2, TRIKKE_WIRE_STATUS_SIZE);
put_u32_le(payload + 4, status->sensor_read_failure_count);
put_u32_le(payload + 8, status->queue_overflow_count);
put_u32_le(payload + 12, status->transport_begin_retry_count);
put_u32_le(payload + 16, status->transport_disconnect_count);
put_u32_le(payload + 20, status->transport_send_failure_count);
put_u32_le(payload + 24, status->transport_replay_count);
put_u32_le(payload + 28, status->transport_invalid_ack_count);
put_u32_le(output + 32, packet_crc32(output, TRIKKE_WIRE_STATUS_SIZE));
return packet_size;
}