feat(mavlink): adopt the kaptan-native dialect
This commit is contained in:
1 parent
1c90870634
commit
5f91465e66
87 files changed
+7733
-6850
No files matched your search
@@ -141,13 +141,17 @@ fn ordinary_f722_image_has_direct_configuration_after_output_inhibition() {
|
||||
"ordinary board images must not hide configuration behind a development feature"
|
||||
);
|
||||
for required in [
|
||||
"configuration: F722ConfigManager",
|
||||
"config_protocol: ConfigProtocol",
|
||||
"receiver: IntegrityMavlinkReceiver<2>",
|
||||
"config_lease_ticks: u16",
|
||||
"wire::decode_command",
|
||||
"self.config_protocol.dispatch_from_composition",
|
||||
"visit_response(response, &mut sender)",
|
||||
"config_file: F722ConfigFile",
|
||||
"file_service: FileService",
|
||||
"receiver: IntegrityMavlinkReceiver<1>",
|
||||
"file_lease_ticks: u16",
|
||||
"TRANSFER_REPLAY_LEASE_SECONDS",
|
||||
"let Some(message) = frame.decode()",
|
||||
"wire::decode_request",
|
||||
".dispatch(&mut self.config_file",
|
||||
"send_file_response",
|
||||
"let class = kaptan_mavlink::transmitter::FrameClass::Critical",
|
||||
"control.status != FileStatus::RequestConflict",
|
||||
] {
|
||||
assert!(
|
||||
board.contains(required),
|
||||
@@ -163,23 +167,15 @@ fn ordinary_f722_image_has_direct_configuration_after_output_inhibition() {
|
||||
"the MPU runtime may drive only PB2 atomically, not retain GPIOB ownership"
|
||||
);
|
||||
assert!(!board.contains("development-config"));
|
||||
assert!(
|
||||
!board.contains("ArmRequest"),
|
||||
"telemetry must not decode arm commands"
|
||||
);
|
||||
assert!(
|
||||
!board.contains("MAV_CMD_COMPONENT_ARM_DISARM") && !board.contains("decode_arm_request"),
|
||||
"telemetry must not accept an arm command"
|
||||
);
|
||||
assert!(
|
||||
!firmware.contains("shared = [mavlink, motors]"),
|
||||
"the MAVLink worker must not share a motor resource"
|
||||
);
|
||||
assert!(
|
||||
firmware.contains("const MAVLINK_EVENT_RECEIVED")
|
||||
&& firmware.contains("mavlink.receive_config_interrupt(event)")
|
||||
&& firmware.contains("mavlink.receive_mavlink_interrupt(event)")
|
||||
&& !firmware.contains("development-config"),
|
||||
"ordinary images must always dispatch received configuration frames"
|
||||
"ordinary images must always dispatch received MAVLink frames"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -279,7 +275,7 @@ fn configuration_schema_is_generated_without_board_forwarding_code() {
|
||||
for semantic_id in [
|
||||
"MAVLINK_SYSTEM_ID",
|
||||
"MAVLINK_COMPONENT_ID",
|
||||
"RAW_IMU_HZ",
|
||||
"IMU_HZ",
|
||||
"HEARTBEAT_HZ",
|
||||
"MAVLINK_LOG_LEVEL_FILTER",
|
||||
"RANGE_HZ",
|
||||
@@ -330,8 +326,8 @@ fn f722_link_budget_reserves_only_deterministic_telemetry() {
|
||||
"ERROR_RECORDS_PER_SECOND",
|
||||
"LOG_RECORDS_PER_SECOND",
|
||||
"WORST_CASE_OBSERVABILITY_BYTES_PER_SECOND",
|
||||
"KAPTAN_ERROR_FRAME_MAXIMUM_BYTES",
|
||||
"KAPTAN_LOG_FRAME_MAXIMUM_BYTES",
|
||||
"ERROR_FRAME_MAXIMUM_BYTES",
|
||||
"LOG_FRAME_MAXIMUM_BYTES",
|
||||
"budget_ticks",
|
||||
"error_budget",
|
||||
"log_budget",
|
||||
@@ -385,6 +381,7 @@ fn mavlink_transport_faults_do_not_recurse_or_retain_dead_accounting() {
|
||||
#[test]
|
||||
fn f722_producers_keep_logs_and_reportable_errors_separate() {
|
||||
let board = platform_source("src/f722/board.rs");
|
||||
let config = platform_source("src/f722/config.rs");
|
||||
let logger = platform_source("../../libs/kaptan-log/src/facade.rs");
|
||||
let errors = platform_source("../../libs/kaptan-err-reportable/src/ingress.rs");
|
||||
|
||||
@@ -400,6 +397,14 @@ fn f722_producers_keep_logs_and_reportable_errors_separate() {
|
||||
);
|
||||
}
|
||||
assert!(board.contains("#[kaptan_err_reportable::propagate]"));
|
||||
assert!(
|
||||
config.contains("enum PersistConfigurationError {")
|
||||
&& config.contains("#[kaptan_error(id = 2210)]")
|
||||
&& config.contains("#[kaptan_error(id = 2209)]")
|
||||
&& config.contains("impl From<JournalError<F722FlashError>>")
|
||||
&& config.contains("fn persist_candidate(")
|
||||
&& config.contains("#[kaptan_err_reportable::propagate]")
|
||||
);
|
||||
assert!(!board.contains("report_error"));
|
||||
assert!(!board.contains("report_static_error"));
|
||||
assert!(logger.contains("GLOBAL_INGRESS_CAPACITY"));
|
||||
|
||||
Reference in new issue
Block a user