refactored mavlink mocking to "uas" module on the extension

This commit is contained in:
2026-05-07 03:37:22 -03:00
parent 3e11dd9e16
commit 52edf94b17
11 changed files with 1236 additions and 242 deletions

178
src/uas/payload.rs Normal file
View File

@@ -0,0 +1,178 @@
use arma_rs::{FromArma, FromArmaError};
pub struct UasTelemetryPayload {
pub address: String,
pub system_id: u8,
pub component_id: u8,
pub vehicle_type: u8,
pub lat_deg: f64,
pub lon_deg: f64,
pub alt_msl_m: f32,
pub rel_alt_m: f32,
pub heading_deg: f32,
pub groundspeed_mps: f32,
pub roll_deg: f32,
pub pitch_deg: f32,
pub yaw_deg: f32,
pub flying: bool,
}
#[allow(dead_code)]
pub struct UasSystemPayload {
pub address: String,
pub entity_uuid: String,
pub callsign: String,
pub vehicle_type: u8,
pub lat_deg: f64,
pub lon_deg: f64,
pub alt_msl_m: f32,
pub rel_alt_m: f32,
pub heading_deg: f32,
pub groundspeed_mps: f32,
pub roll_deg: f32,
pub pitch_deg: f32,
pub yaw_deg: f32,
pub flying: bool,
pub gimbal_roll_deg: f32,
pub gimbal_pitch_deg: f32,
pub gimbal_yaw_deg: f32,
pub video_uri: String,
pub hfov_deg: f32,
pub vfov_deg: f32,
pub image_lat_deg: f64,
pub image_lon_deg: f64,
pub image_alt_msl_m: f32,
}
impl FromArma for UasTelemetryPayload {
fn from_arma(data: String) -> Result<Self, FromArmaError> {
let (
address,
system_id,
component_id,
vehicle_type,
lat_deg,
lon_deg,
alt_msl_m,
rel_alt_m,
heading_deg,
groundspeed_mps,
roll_deg,
pitch_deg,
yaw_deg,
flying,
) = <(
String,
i32,
i32,
i32,
f64,
f64,
f32,
f32,
f32,
f32,
f32,
f32,
f32,
i32,
)>::from_arma(data)?;
Ok(Self {
address,
system_id: system_id.clamp(1, 255) as u8,
component_id: component_id.clamp(1, 255) as u8,
vehicle_type: vehicle_type.clamp(0, 255) as u8,
lat_deg,
lon_deg,
alt_msl_m,
rel_alt_m,
heading_deg,
groundspeed_mps,
roll_deg,
pitch_deg,
yaw_deg,
flying: flying != 0,
})
}
}
impl FromArma for UasSystemPayload {
fn from_arma(data: String) -> Result<Self, FromArmaError> {
let (
address,
entity_uuid,
callsign,
vehicle_type,
lat_deg,
lon_deg,
alt_msl_m,
rel_alt_m,
heading_deg,
groundspeed_mps,
roll_deg,
pitch_deg,
yaw_deg,
flying,
gimbal_roll_deg,
gimbal_pitch_deg,
gimbal_yaw_deg,
video_uri,
hfov_deg,
vfov_deg,
image_lat_deg,
image_lon_deg,
image_alt_msl_m,
) = <(
String,
String,
String,
i32,
f64,
f64,
f32,
f32,
f32,
f32,
f32,
f32,
f32,
i32,
f32,
f32,
f32,
String,
f32,
f32,
f64,
f64,
f32,
)>::from_arma(data)?;
Ok(Self {
address,
entity_uuid,
callsign,
vehicle_type: vehicle_type.clamp(0, 255) as u8,
lat_deg,
lon_deg,
alt_msl_m,
rel_alt_m,
heading_deg,
groundspeed_mps,
roll_deg,
pitch_deg,
yaw_deg,
flying: flying != 0,
gimbal_roll_deg,
gimbal_pitch_deg,
gimbal_yaw_deg,
video_uri,
hfov_deg,
vfov_deg,
image_lat_deg,
image_lon_deg,
image_alt_msl_m,
})
}
}