rytm_rs/query/
raw.rs

1use super::ObjectQuery;
2use crate::sysex::AnySysexType;
3
4#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
5/// A permissive query type that allows for querying any object.
6pub struct RawQuery {
7    sysex_type: u8,
8    device_id: u8,
9    object_number: u16,
10}
11
12impl RawQuery {
13    /// Creates a new raw query.
14    pub const fn new(sysex_type: u8, object_number: u16) -> Self {
15        Self {
16            sysex_type,
17            device_id: 0,
18            object_number,
19        }
20    }
21
22    /// Creates a new raw query with a device id.
23    pub const fn new_with_device_id(sysex_type: u8, device_id: u8, object_number: u16) -> Self {
24        Self {
25            sysex_type,
26            device_id,
27            object_number,
28        }
29    }
30}
31
32impl ObjectQuery for RawQuery {
33    fn sysex_type(&self) -> AnySysexType {
34        self.sysex_type.into()
35    }
36
37    fn device_id(&self) -> u8 {
38        self.device_id
39    }
40
41    fn obj_nr(&self) -> u16 {
42        self.object_number
43    }
44}