#![allow(clippy::identity_op)]
#![allow(clippy::module_inception)]
#![allow(clippy::derivable_impls)]
#[allow(unused_imports)]
use crate::common::sealed;
#[allow(unused_imports)]
use crate::common::*;
#[doc = r"Independent Watchdog Timer"]
unsafe impl ::core::marker::Send for super::Iwdt {}
unsafe impl ::core::marker::Sync for super::Iwdt {}
impl super::Iwdt {
    #[allow(unused)]
    #[inline(always)]
    pub(crate) const fn _svd2pac_as_ptr(&self) -> *mut u8 {
        self.ptr
    }
    #[doc = "IWDT Refresh Register"]
    #[inline(always)]
    pub const fn iwdtrr(
        &self,
    ) -> &'static crate::common::Reg<self::Iwdtrr_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::Iwdtrr_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(0usize),
            )
        }
    }
    #[doc = "IWDT Status Register"]
    #[inline(always)]
    pub const fn iwdtsr(
        &self,
    ) -> &'static crate::common::Reg<self::Iwdtsr_SPEC, crate::common::RW> {
        unsafe {
            crate::common::Reg::<self::Iwdtsr_SPEC, crate::common::RW>::from_ptr(
                self._svd2pac_as_ptr().add(4usize),
            )
        }
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Iwdtrr_SPEC;
impl crate::sealed::RegSpec for Iwdtrr_SPEC {
    type DataType = u8;
}
#[doc = "IWDT Refresh Register"]
pub type Iwdtrr = crate::RegValueT<Iwdtrr_SPEC>;
impl NoBitfieldReg<Iwdtrr_SPEC> for Iwdtrr {}
impl ::core::default::Default for Iwdtrr {
    #[inline(always)]
    fn default() -> Iwdtrr {
        <crate::RegValueT<Iwdtrr_SPEC> as RegisterValue<_>>::new(255)
    }
}
#[doc(hidden)]
#[derive(Copy, Clone, Eq, PartialEq)]
pub struct Iwdtsr_SPEC;
impl crate::sealed::RegSpec for Iwdtsr_SPEC {
    type DataType = u16;
}
#[doc = "IWDT Status Register"]
pub type Iwdtsr = crate::RegValueT<Iwdtsr_SPEC>;
impl Iwdtsr {
    #[doc = "Down-counter Value"]
    #[inline(always)]
    pub fn cntval(
        self,
    ) -> crate::common::RegisterField<0, 0x3fff, 1, 0, u16, u16, Iwdtsr_SPEC, crate::common::R>
    {
        crate::common::RegisterField::<0,0x3fff,1,0,u16,u16,Iwdtsr_SPEC,crate::common::R>::from_register(self,0)
    }
    #[doc = "Underflow Flag"]
    #[inline(always)]
    pub fn undff(
        self,
    ) -> crate::common::RegisterField<
        14,
        0x1,
        1,
        0,
        iwdtsr::Undff,
        iwdtsr::Undff,
        Iwdtsr_SPEC,
        crate::common::RW,
    > {
        crate::common::RegisterField::<
            14,
            0x1,
            1,
            0,
            iwdtsr::Undff,
            iwdtsr::Undff,
            Iwdtsr_SPEC,
            crate::common::RW,
        >::from_register(self, 0)
    }
    #[doc = "Refresh Error Flag"]
    #[inline(always)]
    pub fn refef(
        self,
    ) -> crate::common::RegisterField<
        15,
        0x1,
        1,
        0,
        iwdtsr::Refef,
        iwdtsr::Refef,
        Iwdtsr_SPEC,
        crate::common::RW,
    > {
        crate::common::RegisterField::<
            15,
            0x1,
            1,
            0,
            iwdtsr::Refef,
            iwdtsr::Refef,
            Iwdtsr_SPEC,
            crate::common::RW,
        >::from_register(self, 0)
    }
}
impl ::core::default::Default for Iwdtsr {
    #[inline(always)]
    fn default() -> Iwdtsr {
        <crate::RegValueT<Iwdtsr_SPEC> as RegisterValue<_>>::new(0)
    }
}
pub mod iwdtsr {
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Undff_SPEC;
    pub type Undff = crate::EnumBitfieldStruct<u8, Undff_SPEC>;
    impl Undff {
        #[doc = "No underflow occurred"]
        pub const _0: Self = Self::new(0);
        #[doc = "Underflow occurred"]
        pub const _1: Self = Self::new(1);
    }
    #[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
    pub struct Refef_SPEC;
    pub type Refef = crate::EnumBitfieldStruct<u8, Refef_SPEC>;
    impl Refef {
        #[doc = "No refresh error occurred"]
        pub const _0: Self = Self::new(0);
        #[doc = "Refresh error occurred"]
        pub const _1: Self = Self::new(1);
    }
}