embedded_devices_derive/
lib.rs1use proc_macro::TokenStream;
4use syn::DeriveInput;
5
6mod derive_measurement;
7mod forward_command_fns;
8mod forward_register_fns;
9mod sensor;
10
11#[proc_macro_attribute]
12pub fn forward_command_fns(args: TokenStream, input: TokenStream) -> TokenStream {
13 match forward_command_fns::forward_command_fns(args.into(), input.into()) {
14 Ok(result) => result.into(),
15 Err(e) => e.into_compile_error().into(),
16 }
17}
18
19#[proc_macro_attribute]
20pub fn forward_register_fns(args: TokenStream, input: TokenStream) -> TokenStream {
21 match forward_register_fns::forward_register_fns(args.into(), input.into()) {
22 Ok(result) => result.into(),
23 Err(e) => e.into_compile_error().into(),
24 }
25}
26
27#[proc_macro_derive(Measurement, attributes(measurement))]
28pub fn derive_measurement(input: TokenStream) -> TokenStream {
29 let input = syn::parse_macro_input!(input as DeriveInput);
30 match derive_measurement::generate(&input) {
31 Ok(result) => result.into(),
32 Err(e) => e.to_compile_error().into(),
33 }
34}
35
36#[proc_macro_attribute]
37pub fn sensor(args: TokenStream, input: TokenStream) -> TokenStream {
38 match sensor::sensor(args.into(), input.into()) {
39 Ok(result) => result.into(),
40 Err(e) => e.into_compile_error().into(),
41 }
42}