rust_cryptoauthlib/hw_impl/
rust2c.rs

1use std::convert::{From, TryFrom};
2
3impl TryFrom<super::AtcaIfaceCfg> for cryptoauthlib_sys::ATCAIfaceCfg {
4    type Error = ();
5
6    fn try_from(rust_iface_cfg: super::AtcaIfaceCfg) -> Result<Self, Self::Error> {
7        let atca_iface: cryptoauthlib_sys::ATCAIfaceCfg__bindgen_ty_1 = match rust_iface_cfg
8            .iface_type
9        {
10            super::AtcaIfaceType::AtcaI2cIface => cryptoauthlib_sys::ATCAIfaceCfg__bindgen_ty_1 {
11                atcai2c: match rust_iface_cfg.iface {
12                    Some(x) => cryptoauthlib_sys::ATCAIfaceCfg__bindgen_ty_1__bindgen_ty_1 {
13                        slave_address: unsafe { x.atcai2c.slave_address },
14                        bus: unsafe { x.atcai2c.bus },
15                        baud: unsafe { x.atcai2c.baud },
16                    },
17                    None => return Err(()),
18                },
19            },
20            _ => return Err(()),
21        }; // match rust_iface_cfg.iface_type
22        Ok(cryptoauthlib_sys::ATCAIfaceCfg {
23            iface_type: cryptoauthlib_sys::ATCAIfaceType::from(rust_iface_cfg.iface_type),
24            devtype: cryptoauthlib_sys::ATCADeviceType::from(rust_iface_cfg.devtype),
25            __bindgen_anon_1: atca_iface,
26            wake_delay: rust_iface_cfg.wake_delay,
27            rx_retries: rust_iface_cfg.rx_retries,
28            cfg_data: std::ptr::null_mut(),
29        }) // return Some
30    } // pub fn r2c_atca_iface_cfg
31}
32
33impl From<super::AtcaIfaceType> for cryptoauthlib_sys::ATCAIfaceType {
34    fn from(rust_iface_type: super::AtcaIfaceType) -> Self {
35        match rust_iface_type {
36            super::AtcaIfaceType::AtcaI2cIface => cryptoauthlib_sys::ATCAIfaceType_ATCA_I2C_IFACE,
37            super::AtcaIfaceType::AtcaSwiIface => cryptoauthlib_sys::ATCAIfaceType_ATCA_SWI_IFACE,
38            super::AtcaIfaceType::AtcaUartIface => cryptoauthlib_sys::ATCAIfaceType_ATCA_UART_IFACE,
39            super::AtcaIfaceType::AtcaSpiIface => cryptoauthlib_sys::ATCAIfaceType_ATCA_SPI_IFACE,
40            super::AtcaIfaceType::AtcaHidIface => cryptoauthlib_sys::ATCAIfaceType_ATCA_HID_IFACE,
41            super::AtcaIfaceType::AtcaCustomIface => {
42                cryptoauthlib_sys::ATCAIfaceType_ATCA_CUSTOM_IFACE
43            }
44            _ => cryptoauthlib_sys::ATCAIfaceType_ATCA_UNKNOWN_IFACE,
45        }
46    }
47}
48
49impl From<super::AtcaDeviceType> for cryptoauthlib_sys::ATCADeviceType {
50    fn from(rust_iface_devtype: super::AtcaDeviceType) -> Self {
51        match rust_iface_devtype {
52            super::AtcaDeviceType::ATSHA204A => cryptoauthlib_sys::ATCADeviceType_ATSHA204A,
53            super::AtcaDeviceType::ATECC108A => cryptoauthlib_sys::ATCADeviceType_ATECC108A,
54            super::AtcaDeviceType::ATECC508A => cryptoauthlib_sys::ATCADeviceType_ATECC508A,
55            super::AtcaDeviceType::ATECC608A => cryptoauthlib_sys::ATCADeviceType_ATECC608A,
56            super::AtcaDeviceType::ATSHA206A => cryptoauthlib_sys::ATCADeviceType_ATSHA206A,
57            _ => cryptoauthlib_sys::ATCADeviceType_ATCA_DEV_UNKNOWN,
58        }
59    }
60}