Skip to main content

sim_lib_auto_core/
capability.rs

1//! Automotive capability names exported by the core library.
2
3use sim_kernel::CapabilityName;
4
5/// Read access to modeled diagnostic values and decoded trouble codes.
6pub const AUTO_DIAGNOSTICS_READ: &str = "auto/diagnostics/read";
7/// Read access to modeled vehicle telemetry.
8pub const AUTO_TELEMETRY_READ: &str = "auto/telemetry/read";
9/// Execute access for vehicle-control effects.
10pub const AUTO_CONTROL_EXEC: &str = "auto/control/exec";
11/// Write access for shop-side service records and procedures.
12pub const AUTO_SERVICE_WRITE: &str = "auto/service/write";
13/// Place or revise supplier orders for automotive parts.
14pub const AUTO_ORDER: &str = "auto/order";
15/// Read and write access for modeled ECU stock maps and flash payloads.
16pub const AUTO_FLASH: &str = "auto/flash";
17/// Read access to automotive site manifests.
18pub const AUTO_MANIFEST_READ: &str = "auto/manifest/read";
19/// Connect access for automotive transport endpoints.
20pub const AUTO_TRANSPORT_CONNECT: &str = "auto/transport/connect";
21
22const AUTO_CAPABILITIES: &[&str] = &[
23    AUTO_DIAGNOSTICS_READ,
24    AUTO_TELEMETRY_READ,
25    AUTO_CONTROL_EXEC,
26    AUTO_SERVICE_WRITE,
27    AUTO_ORDER,
28    AUTO_FLASH,
29    AUTO_MANIFEST_READ,
30    AUTO_TRANSPORT_CONNECT,
31];
32
33/// Returns the stable automotive capability strings.
34pub fn auto_capability_texts() -> &'static [&'static str] {
35    AUTO_CAPABILITIES
36}
37
38/// Returns the stable automotive capability names.
39pub fn auto_capability_names() -> Vec<CapabilityName> {
40    AUTO_CAPABILITIES
41        .iter()
42        .map(|capability| CapabilityName::new(*capability))
43        .collect()
44}