1#![deny(missing_docs)]
2#![deny(unreachable_pub)]
3#![forbid(unsafe_code)]
4#![doc = include_str!("../README.md")]
5#![doc(issue_tracker_base_url = "https://github.com/Finomnis/mcumgr-toolkit/issues")]
6#![allow(clippy::collapsible_if)]
8#![cfg_attr(docsrs, feature(doc_cfg))]
9
10pub mod client;
12pub use client::MCUmgrClient;
13
14mod errno;
15pub use errno::Errno;
16
17pub mod commands;
19
20pub mod connection;
22
23pub mod transport;
25
26pub mod smp_errors;
28
29pub mod bootloader;
31
32pub mod mcuboot;
34
35#[derive(strum::FromRepr, strum::Display, Debug, Copy, Clone, PartialEq, Eq)]
37#[repr(u16)]
38#[allow(non_camel_case_types)]
39#[allow(missing_docs)]
40pub enum MCUmgrGroup {
41 MGMT_GROUP_ID_OS = 0,
42 MGMT_GROUP_ID_IMAGE,
43 MGMT_GROUP_ID_STAT,
44 MGMT_GROUP_ID_SETTINGS,
45 MGMT_GROUP_ID_LOG,
46 MGMT_GROUP_ID_CRASH,
47 MGMT_GROUP_ID_SPLIT,
48 MGMT_GROUP_ID_RUN,
49 MGMT_GROUP_ID_FS,
50 MGMT_GROUP_ID_SHELL,
51 MGMT_GROUP_ID_ENUM,
52 ZEPHYR_MGMT_GRP_BASIC = 63,
53 MGMT_GROUP_ID_PERUSER = 64,
54}
55
56impl MCUmgrGroup {
57 pub fn group_id_to_string(group_id: u16) -> String {
59 const PERUSER: MCUmgrGroup = MCUmgrGroup::MGMT_GROUP_ID_PERUSER;
60 if group_id < PERUSER as u16 {
61 if let Some(group_enum) = Self::from_repr(group_id) {
62 format!("{group_enum}")
63 } else {
64 format!("MGMT_GROUP_ID_UNKNOWN({group_id})")
65 }
66 } else {
67 format!("{PERUSER}({group_id})")
68 }
69 }
70}
71
72pub const DEFAULT_TIMEOUT_MS: u64 = 1000;
74
75pub const DEFAULT_RETRIES: u8 = 5;