feat(diagnostics): split error and shutdown messages

This commit is contained in:
Onur Özkan committed 2026-08-09 22:20:59 +03:00
1 parent 9646451645
commit afafd126d7
25 files changed
+608 -225

No files matched your search

@@ -4,7 +4,7 @@ use kaptan_board::{
BoardConfig, BoardProfile, DataChannelRates, ImuDevice, ImuMount, MavlinkEndpoint, MavlinkPort,
TelemetryProfile, VerticalSensingKind,
};
use kaptan_log::{LogFlags, LogRecord, LogText, Severity};
use kaptan_log::{ErrorAdditionalInformation, ErrorPath, LogFlags, LogRecord, LogText, Severity};
use kaptan_log_mavlink::{DiagnosticPayload, encode_diagnostic};
use kaptan_mavlink::encoder::MavlinkEncoder;
use platform_stm32f7::{
@@ -214,7 +214,11 @@ fn telemetry_has_no_inbound_command_authority() {
fn f722_link_budget_uses_both_maximum_generated_diagnostic_frames() {
let text = LogText::from_message(&"x".repeat(160));
let log_record = LogRecord::new(Severity::Info, LogFlags::NONE, text);
let error_record = LogRecord::new(Severity::Error, LogFlags::NONE, text);
let error_record = LogRecord::error(
LogFlags::NONE,
ErrorPath::from_message(&"p".repeat(96)),
ErrorAdditionalInformation::from_message(&"i".repeat(64)),
);
let mut encoder = MavlinkEncoder::new(1, 1);
let DiagnosticPayload::Log(log_payload) = encode_diagnostic(&log_record) else {
panic!("info record must use KAPTAN_LOG");
@@ -230,17 +234,20 @@ fn f722_link_budget_uses_both_maximum_generated_diagnostic_frames() {
kaptan_mavlink::message::kaptan::KAPTAN_LOG_DATA::ENCODED_LEN,
163
);
assert_eq!(error_frame.raw_bytes().len(), 174);
assert_eq!(error_frame.raw_bytes().len(), 175);
assert_eq!(
kaptan_mavlink::message::kaptan::KAPTAN_ERROR_DATA::ENCODED_LEN,
162
163
);
assert_eq!(error_payload.path_length, 96);
assert_eq!(error_payload.additional_information_length, 64);
assert_eq!(error_payload.flags.bits(), LogFlags::NONE.bits());
assert_eq!(
62 * 48 + 10 * error_frame.raw_bytes().len() + 5 * log_frame.raw_bytes().len(),
5_591
5_601
);
let board = platform_source("src/f722/board.rs");
assert!(board.contains("KAPTAN_ERROR_FRAME_MAXIMUM_BYTES"));
assert!(board.contains("KAPTAN_LOG_FRAME_MAXIMUM_BYTES"));
assert!(board.contains("5,591 bytes/s"));
assert!(board.contains("5,601 bytes/s"));
}