sam3x8e-pac 0.1.6-dev

Peripheral Access Crate (PAC) for the Atmel SAM3X8E.
#[doc = "Control Register"]
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Cr(pub u32);
impl Cr {
    #[doc = "Enables the TRNG to provide random values"]
    #[must_use]
    #[inline(always)]
    pub const fn enable(&self) -> bool {
        let val = (self.0 >> 0usize) & 0x01;
        val != 0
    }
    #[doc = "Enables the TRNG to provide random values"]
    #[inline(always)]
    pub const fn set_enable(&mut self, val: bool) {
        self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
    }
    #[doc = "Write Protection Key Password"]
    #[must_use]
    #[inline(always)]
    pub const fn key(&self) -> super::vals::WpKey {
        let val = (self.0 >> 8usize) & 0x00ff_ffff;
        super::vals::WpKey::from_bits(val as u32)
    }
    #[doc = "Write Protection Key Password"]
    #[inline(always)]
    pub const fn set_key(&mut self, val: super::vals::WpKey) {
        self.0 = (self.0 & !(0x00ff_ffff << 8usize))
            | (((val.to_bits() as u32) & 0x00ff_ffff) << 8usize);
    }
}
impl Default for Cr {
    #[inline(always)]
    fn default() -> Cr {
        Cr(0)
    }
}
impl core::fmt::Debug for Cr {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("Cr")
            .field("enable", &self.enable())
            .field("key", &self.key())
            .finish()
    }
}
#[cfg(feature = "defmt")]
impl defmt::Format for Cr {
    fn format(&self, f: defmt::Formatter) {
        defmt::write!(
            f,
            "Cr {{ enable: {=bool:?}, key: {:?} }}",
            self.enable(),
            self.key()
        )
    }
}
#[doc = "Interrupt Disable Register"]
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Idr(pub u32);
impl Idr {
    #[doc = "Data Ready Interrupt Disable"]
    #[must_use]
    #[inline(always)]
    pub const fn datrdy(&self) -> bool {
        let val = (self.0 >> 0usize) & 0x01;
        val != 0
    }
    #[doc = "Data Ready Interrupt Disable"]
    #[inline(always)]
    pub const fn set_datrdy(&mut self, val: bool) {
        self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
    }
}
impl Default for Idr {
    #[inline(always)]
    fn default() -> Idr {
        Idr(0)
    }
}
impl core::fmt::Debug for Idr {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("Idr")
            .field("datrdy", &self.datrdy())
            .finish()
    }
}
#[cfg(feature = "defmt")]
impl defmt::Format for Idr {
    fn format(&self, f: defmt::Formatter) {
        defmt::write!(f, "Idr {{ datrdy: {=bool:?} }}", self.datrdy())
    }
}
#[doc = "Interrupt Enable Register"]
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Ier(pub u32);
impl Ier {
    #[doc = "Data Ready Interrupt Enable"]
    #[must_use]
    #[inline(always)]
    pub const fn datrdy(&self) -> bool {
        let val = (self.0 >> 0usize) & 0x01;
        val != 0
    }
    #[doc = "Data Ready Interrupt Enable"]
    #[inline(always)]
    pub const fn set_datrdy(&mut self, val: bool) {
        self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
    }
}
impl Default for Ier {
    #[inline(always)]
    fn default() -> Ier {
        Ier(0)
    }
}
impl core::fmt::Debug for Ier {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("Ier")
            .field("datrdy", &self.datrdy())
            .finish()
    }
}
#[cfg(feature = "defmt")]
impl defmt::Format for Ier {
    fn format(&self, f: defmt::Formatter) {
        defmt::write!(f, "Ier {{ datrdy: {=bool:?} }}", self.datrdy())
    }
}
#[doc = "Interrupt Mask Register"]
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Imr(pub u32);
impl Imr {
    #[doc = "Data Ready Interrupt Mask"]
    #[must_use]
    #[inline(always)]
    pub const fn datrdy(&self) -> bool {
        let val = (self.0 >> 0usize) & 0x01;
        val != 0
    }
    #[doc = "Data Ready Interrupt Mask"]
    #[inline(always)]
    pub const fn set_datrdy(&mut self, val: bool) {
        self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
    }
}
impl Default for Imr {
    #[inline(always)]
    fn default() -> Imr {
        Imr(0)
    }
}
impl core::fmt::Debug for Imr {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("Imr")
            .field("datrdy", &self.datrdy())
            .finish()
    }
}
#[cfg(feature = "defmt")]
impl defmt::Format for Imr {
    fn format(&self, f: defmt::Formatter) {
        defmt::write!(f, "Imr {{ datrdy: {=bool:?} }}", self.datrdy())
    }
}
#[doc = "Interrupt Status Register"]
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Isr(pub u32);
impl Isr {
    #[doc = "Data Ready"]
    #[must_use]
    #[inline(always)]
    pub const fn datrdy(&self) -> bool {
        let val = (self.0 >> 0usize) & 0x01;
        val != 0
    }
    #[doc = "Data Ready"]
    #[inline(always)]
    pub const fn set_datrdy(&mut self, val: bool) {
        self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize);
    }
}
impl Default for Isr {
    #[inline(always)]
    fn default() -> Isr {
        Isr(0)
    }
}
impl core::fmt::Debug for Isr {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("Isr")
            .field("datrdy", &self.datrdy())
            .finish()
    }
}
#[cfg(feature = "defmt")]
impl defmt::Format for Isr {
    fn format(&self, f: defmt::Formatter) {
        defmt::write!(f, "Isr {{ datrdy: {=bool:?} }}", self.datrdy())
    }
}
#[doc = "Output Data Register"]
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Odata(pub u32);
impl Odata {
    #[doc = "Output Data"]
    #[must_use]
    #[inline(always)]
    pub const fn odata(&self) -> u32 {
        let val = (self.0 >> 0usize) & 0xffff_ffff;
        val as u32
    }
    #[doc = "Output Data"]
    #[inline(always)]
    pub const fn set_odata(&mut self, val: u32) {
        self.0 = (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize);
    }
}
impl Default for Odata {
    #[inline(always)]
    fn default() -> Odata {
        Odata(0)
    }
}
impl core::fmt::Debug for Odata {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        f.debug_struct("Odata")
            .field("odata", &self.odata())
            .finish()
    }
}
#[cfg(feature = "defmt")]
impl defmt::Format for Odata {
    fn format(&self, f: defmt::Formatter) {
        defmt::write!(f, "Odata {{ odata: {=u32:?} }}", self.odata())
    }
}