gui_server_api/msg/
register.rs

1// SPDX-FileCopyrightText: 2024 Foundation Devices, Inc. <hello@foundation.xyz>
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4use xous::CID;
5
6use crate::GuiServerError;
7
8#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
9#[response(Result<(), GuiServerError>)]
10pub struct RegisterAppMessage(pub crate::RegisterApp);
11
12#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
13#[response(Result<(), GuiServerError>)]
14pub struct RegisterControlCenter {
15    pub cid: CID,
16    pub height: usize,
17}
18
19#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
20#[response(Result<(), GuiServerError>)]
21pub struct RegisterKeyboard {
22    pub cid: CID,
23    pub height: usize,
24}
25
26/// A message that claims a privileged role. Restricts [`crate::GuiApi::register_with_role`]
27/// to the role-claim messages, so it can't be used to send arbitrary scalars.
28pub trait RoleClaim: server::BlockingScalar + Default {}
29
30macro_rules! declare_claim {
31    ($name:ident) => {
32        #[derive(Debug, Default, server::Message)]
33        #[response(())]
34        pub struct $name;
35
36        impl RoleClaim for $name {}
37    };
38}
39
40declare_claim!(ClaimLauncherRole);
41declare_claim!(ClaimSettingsRole);
42declare_claim!(ClaimOnboardingRole);
43declare_claim!(ClaimSwitcherRole);
44declare_claim!(ClaimLockScreenRole);
45declare_claim!(ClaimAlertsRole);