firewire_dice_protocols/
lib.rs1#![doc = include_str!("../README.md")]
5
6pub mod alesis;
7pub mod avid;
8pub mod focusrite;
9pub mod lexicon;
10pub mod loud;
11pub mod maudio;
12pub mod presonus;
13pub mod tcat;
14pub mod tcelectronic;
15pub mod weiss;
16
17use {
18 glib::Error,
19 hinawa::{FwNode, FwReq},
20};
21
22fn serialize_bool(val: &bool, raw: &mut [u8]) {
23 assert!(raw.len() >= 4);
24
25 raw[..4].copy_from_slice(&(*val as u32).to_be_bytes())
26}
27
28fn deserialize_bool(val: &mut bool, raw: &[u8]) {
29 assert!(raw.len() >= 4);
30
31 let mut quadlet = [0; 4];
32 quadlet.copy_from_slice(&raw[..4]);
33 *val = u32::from_be_bytes(quadlet) > 0;
34}
35
36fn serialize_i32(val: &i32, raw: &mut [u8]) {
37 assert!(raw.len() >= 4);
38
39 raw[..4].copy_from_slice(&val.to_be_bytes())
40}
41
42fn deserialize_i32(val: &mut i32, raw: &[u8]) {
43 assert!(raw.len() >= 4);
44
45 let mut quadlet = [0; 4];
46 quadlet.copy_from_slice(&raw[..4]);
47 *val = i32::from_be_bytes(quadlet);
48}
49
50fn serialize_i8(val: &i8, raw: &mut [u8]) {
51 serialize_i32(&(*val as i32), raw)
52}
53
54fn deserialize_i8(val: &mut i8, raw: &[u8]) {
55 let mut v = 0i32;
56 deserialize_i32(&mut v, raw);
57 *val = v as i8;
58}
59
60fn serialize_i16(val: &i16, raw: &mut [u8]) {
61 serialize_i32(&(*val as i32), raw)
62}
63
64fn deserialize_i16(val: &mut i16, raw: &[u8]) {
65 let mut v = 0i32;
66 deserialize_i32(&mut v, raw);
67 *val = v as i16;
68}
69
70fn serialize_u32(val: &u32, raw: &mut [u8]) {
71 assert!(raw.len() >= 4);
72
73 raw[..4].copy_from_slice(&val.to_be_bytes())
74}
75
76fn deserialize_u32(val: &mut u32, raw: &[u8]) {
77 assert!(raw.len() >= 4);
78
79 let mut quadlet = [0; 4];
80 quadlet.copy_from_slice(&raw[..4]);
81 *val = u32::from_be_bytes(quadlet);
82}
83
84fn serialize_u8(val: &u8, raw: &mut [u8]) {
85 assert!(raw.len() >= 4);
86
87 serialize_u32(&(*val as u32), raw);
88}
89
90fn deserialize_u8(val: &mut u8, raw: &[u8]) {
91 assert!(raw.len() >= 4);
92
93 let mut v = 0u32;
94 deserialize_u32(&mut v, raw);
95 *val = v as u8;
96}
97
98fn serialize_usize(val: &usize, raw: &mut [u8]) {
99 assert!(raw.len() >= 4);
100
101 serialize_u32(&(*val as u32), raw);
102}
103
104fn deserialize_usize(val: &mut usize, raw: &[u8]) {
105 assert!(raw.len() >= 4);
106
107 let mut v = 0u32;
108 deserialize_u32(&mut v, raw);
109 *val = v as usize;
110}