Expand description
MAVSpec Rust Procedural Macros
This crate provides proc macros for MAVLink MAVLink entities generated by MAVSpec.
§Usage
In most cases marcos defined here will be used by autogenerated code. However, it is possible to use them for creating custom MAVLink entities.
Custom MAVLink message:
use mavspec::rust::derive::Message;
#[derive(Clone, Debug, Message)]
#[message_id(255)] // Specify message ID
struct CustomMessage {
scalar_u8: u8,
array_u8_4: [u8; 4],
#[extension] // This marks an extension fields
ext_array_u32_4: [u32; 4],
}
Custom MAVLink enum:
use mavspec::rust::derive::Enum;
#[repr(u8)] // Define enum representation
#[derive(Clone, Copy, Debug, Default, Enum)]
enum Variants {
#[default]
OptionA = 0,
OptionB = 1,
OptionC = 2,
}
Custom MAVLink dialect:
use mavspec::rust::derive::{Dialect, Message};
#[derive(Clone, Debug, Message)]
#[message_id(255)] // Specify message ID
struct CustomMessage {
scalar_u8: u8,
array_u8_4: [u8; 4],
#[extension] // This marks an extension fields
ext_array_u32_4: [u32; 4],
}
#[derive(Clone, Debug, Dialect)]
#[dialect(1099)] // Specify unique dialect `ID`
#[version(99)] // Specify dialect version
enum CustomDialect {
Custom(CustomMessage),
}