1use crate::{Frame, SubscriptionError};
5
6#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
7#[event(Frame)]
8#[error(SubscriptionError)]
9pub struct Subscribe;
10
11#[derive(Debug, server::Message)]
12pub struct SetEnabled(pub bool);
13
14#[derive(Debug, server::Message)]
15pub struct NotifyVisible(pub bool);
16
17#[derive(Debug, server::Message)]
18#[response(bool)]
19pub struct IsEnabled;
20
21#[derive(Debug, server::Message)]
22#[response(bool)]
23pub struct IsInUse;
24
25#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
27#[response(CameraParams)]
28pub struct GetParams;
29
30#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
32pub struct SetParams(pub CameraParams);
33
34#[derive(Debug, Clone, Copy, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
36pub struct CameraParams {
37 pub auto_controls: u8,
39 pub agc_ceiling: u8,
41 pub brightness: u8,
43 pub contrast: u8,
45 pub saturation: u8,
47 pub sharpness: u8,
49 pub denoise: u8,
51 pub auto_sharpness: bool,
53 pub auto_denoise: bool,
55}
56
57impl Default for CameraParams {
58 fn default() -> Self { Self::DEFAULT }
59}
60
61impl CameraParams {
62 pub const DEFAULT: Self = Self {
63 auto_controls: 0x07, agc_ceiling: 1, brightness: 0, contrast: 0x28, saturation: 0x50, sharpness: 0x04, denoise: 0x08, auto_sharpness: false, auto_denoise: false, };
73}