pub mod cap {
pub mod common {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.common.v1.rs"));
}
}
pub mod capability {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.capability.v1.rs"));
}
}
pub mod node {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.node.v1.rs"));
}
}
pub mod cell {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.cell.v1.rs"));
}
}
pub mod beacon {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.beacon.v1.rs"));
}
}
pub mod composition {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.composition.v1.rs"));
}
}
pub mod zone {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.zone.v1.rs"));
}
}
pub mod role {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.role.v1.rs"));
}
}
pub mod hierarchy {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.hierarchy.v1.rs"));
}
}
pub mod command {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.command.v1.rs"));
}
}
pub mod security {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.security.v1.rs"));
}
}
pub mod track {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.track.v1.rs"));
}
}
pub mod model {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.model.v1.rs"));
}
}
pub mod sensor {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.sensor.v1.rs"));
}
}
#[allow(clippy::enum_variant_names)]
pub mod actuator {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.actuator.v1.rs"));
}
}
#[allow(clippy::enum_variant_names)]
pub mod effector {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.effector.v1.rs"));
}
}
pub mod product {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.product.v1.rs"));
}
}
#[allow(clippy::enum_variant_names)]
pub mod tasking {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.tasking.v1.rs"));
}
}
#[allow(clippy::enum_variant_names)]
pub mod event {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.event.v1.rs"));
}
}
#[allow(clippy::enum_variant_names)]
pub mod registry {
pub mod v1 {
include!(concat!(env!("OUT_DIR"), "/cap.registry.v1.rs"));
}
}
}
pub use cap::*;
pub mod validation;
pub mod ontology;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_schema_packages_accessible() {
use capability::v1::CapabilityType;
use common::v1::Position;
use node::v1::Phase;
let _pos = Position {
latitude: 0.0,
longitude: 0.0,
altitude: 0.0,
};
let _cap_type = CapabilityType::Sensor;
let _phase = Phase::Discovery;
assert_eq!(CapabilityType::Sensor as i32, 1);
assert_eq!(Phase::Discovery as i32, 1);
}
#[test]
fn test_capability_advertisement_accessible() {
use capability::v1::{CapabilityAdvertisement, OperationalStatus, ResourceStatus};
let _cap_ad = CapabilityAdvertisement {
platform_id: "Alpha-3".to_string(),
advertised_at: None,
capabilities: vec![],
resources: None,
operational_status: OperationalStatus::Ready as i32,
};
let _resources = ResourceStatus {
compute_utilization: 0.5,
memory_utilization: 0.3,
power_level: 0.9,
storage_utilization: 0.2,
bandwidth_utilization: 0.1,
extra_json: String::new(),
};
assert_eq!(OperationalStatus::Ready as i32, 1);
}
#[test]
fn test_event_types_accessible() {
use event::v1::{
AggregationPolicy, EventClass, EventPriority, EventQuery, EventSummary, PeatEvent,
PropagationMode,
};
let policy = AggregationPolicy {
propagation: PropagationMode::PropagationSummary as i32,
priority: EventPriority::PriorityNormal as i32,
ttl_seconds: 300,
aggregation_window_ms: 1000,
};
let _event = PeatEvent {
event_id: "evt-001".to_string(),
timestamp: None,
source_node_id: "node-1".to_string(),
source_formation_id: "squad-1".to_string(),
source_instance_id: Some("model-v1".to_string()),
event_class: EventClass::Product as i32,
event_type: "detection".to_string(),
routing: Some(policy),
payload_type_url: "type.googleapis.com/example.Detection".to_string(),
payload_value: vec![],
};
let _summary = EventSummary {
formation_id: "squad-1".to_string(),
window_start: None,
window_end: None,
event_class: EventClass::Product as i32,
event_type: "detection".to_string(),
event_count: 10,
source_node_ids: vec!["node-1".to_string(), "node-2".to_string()],
summary_type_url: String::new(),
summary_value: vec![],
};
let _query = EventQuery {
query_id: "q-001".to_string(),
requester_id: "platoon-leader".to_string(),
scope: None,
filters: None,
limit: 100,
};
assert_eq!(EventClass::Product as i32, 1);
assert_eq!(EventClass::Anomaly as i32, 2);
assert_eq!(EventClass::Telemetry as i32, 3);
assert_eq!(PropagationMode::PropagationFull as i32, 0);
assert_eq!(PropagationMode::PropagationSummary as i32, 1);
assert_eq!(EventPriority::PriorityCritical as i32, 0);
assert_eq!(EventPriority::PriorityNormal as i32, 2);
}
#[test]
fn test_track_types_accessible() {
use track::v1::{
SourceType, Track, TrackPosition, TrackSource, TrackState, TrackUpdate, UpdateType,
};
let _track = Track {
track_id: "TRK-001".to_string(),
classification: "person".to_string(),
confidence: 0.95,
position: Some(TrackPosition {
latitude: 38.0,
longitude: -122.0,
altitude: 0.0,
cep_m: 5.0,
vertical_error_m: 0.0,
}),
velocity: None,
state: TrackState::Confirmed as i32,
source: Some(TrackSource {
platform_id: "Alpha-3".to_string(),
sensor_id: "camera-1".to_string(),
model_version: "1.0.0".to_string(),
source_type: SourceType::AiModel as i32,
}),
attributes_json: r#"{"color":"red"}"#.to_string(),
first_seen: None,
last_seen: None,
observation_count: 5,
};
let _update = TrackUpdate {
update_type: UpdateType::New as i32,
track: Some(_track),
previous_track_id: String::new(),
timestamp: None,
};
assert_eq!(TrackState::Confirmed as i32, 2);
assert_eq!(SourceType::AiModel as i32, 2);
assert_eq!(UpdateType::New as i32, 1);
}
}