rust_cryptoauthlib/
atca_iface_cfg.rs1use super::{AtcaDeviceType, AtcaIface, AtcaIfaceCfg, AtcaIfaceI2c, AtcaIfaceType};
2use log::error;
3
4impl Default for AtcaIfaceCfg {
5 fn default() -> AtcaIfaceCfg {
6 AtcaIfaceCfg {
7 iface_type: AtcaIfaceType::AtcaUnknownIface,
8 devtype: AtcaDeviceType::AtcaDevUnknown,
9 iface: None,
10 wake_delay: 0u16,
11 rx_retries: 0i32,
12 }
13 }
14}
15
16impl Default for AtcaIface {
17 fn default() -> AtcaIface {
18 AtcaIface {
19 atcai2c: AtcaIfaceI2c::default(),
20 }
21 }
22}
23
24impl AtcaIfaceCfg {
25 pub fn set_iface_type(mut self, iface_type: String) -> AtcaIfaceCfg {
26 self.iface_type = match iface_type.as_str() {
27 "i2c" => AtcaIfaceType::AtcaI2cIface,
28 "test-interface" => AtcaIfaceType::AtcaTestIface,
29 _ => {
30 error!("Unsupported ATCA interface type {}", iface_type);
31 AtcaIfaceType::AtcaUnknownIface
32 }
33 };
34 self
35 }
36 pub fn set_devtype(mut self, devtype: String) -> AtcaIfaceCfg {
37 self.devtype = match devtype.as_str() {
38 "atecc608a" => AtcaDeviceType::ATECC608A,
39 "atecc508a" => AtcaDeviceType::ATECC508A,
40 "always-fail" => AtcaDeviceType::AtcaTestDevFail,
41 "always-success" => AtcaDeviceType::AtcaTestDevSuccess,
42 "unimplemented-fail" => AtcaDeviceType::AtcaTestDevFailUnimplemented,
43 _ => {
44 error!("Unsupported ATCA device type {}", devtype);
45 AtcaDeviceType::AtcaDevUnknown
46 }
47 };
48 self
49 }
50 pub fn set_wake_delay(mut self, wake_delay: u16) -> AtcaIfaceCfg {
51 self.wake_delay = wake_delay;
52 self
53 }
54 pub fn set_rx_retries(mut self, rx_retries: i32) -> AtcaIfaceCfg {
55 self.rx_retries = rx_retries;
56 self
57 }
58 pub fn set_iface(mut self, iface: AtcaIface) -> AtcaIfaceCfg {
59 self.iface = Some(iface);
60 self
61 }
62}
63
64impl AtcaIface {
65 pub fn set_atcai2c(mut self, atcai2c: AtcaIfaceI2c) -> AtcaIface {
66 self.atcai2c = atcai2c;
67 self
68 }
69}
70
71impl AtcaIfaceI2c {
72 pub fn set_slave_address(mut self, slave_address: u8) -> AtcaIfaceI2c {
73 self.slave_address = slave_address;
74 self
75 }
76 pub fn set_bus(mut self, bus: u8) -> AtcaIfaceI2c {
77 self.bus = bus;
78 self
79 }
80 pub fn set_baud(mut self, baud: u32) -> AtcaIfaceI2c {
81 self.baud = baud;
82 self
83 }
84}