feat: add display UI with splash screen, dashboard, and RSSI sparkline

Implement full SSD1306 OLED display support:
- Splash screen on boot (1.5s) with project name, version, board
- Dashboard showing radio state, config, counters, RSSI/SNR
- RSSI history sparkline (64-sample ring buffer, 2px-wide bars)
- DisplayOn/DisplayOff host commands routed via dedicated channel
- Pure render functions against generic DrawTarget (no hardware coupling)
- Display on/off control bypasses radio task entirely

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
swaitsandClaude Opus 4.6 committed 2026-03-29 20:42:54 -06:00
1 parent 7064110293
commit 3102fc747a
17624 files changed
+4564928 -38

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `BLE_1MBIT[%s]` reader"]
pub struct R(crate::R<BLE_1MBIT_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<BLE_1MBIT_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<BLE_1MBIT_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<BLE_1MBIT_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Override values for the OVERRIDEn registers in RADIO for BLE_1Mbit mode.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [ble_1mbit](index.html) module"]
pub struct BLE_1MBIT_SPEC;
impl crate::RegisterSpec for BLE_1MBIT_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [ble_1mbit::R](R) reader structure"]
impl crate::Readable for BLE_1MBIT_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets BLE_1MBIT[%s]
to value 0xffff_ffff"]
impl crate::Resettable for BLE_1MBIT_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+31
View File
@@ -0,0 +1,31 @@
#[doc = "Register `CLENR0` reader"]
pub struct R(crate::R<CLENR0_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<CLENR0_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<CLENR0_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<CLENR0_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Length of code region 0 in bytes.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [clenr0](index.html) module"]
pub struct CLENR0_SPEC;
impl crate::RegisterSpec for CLENR0_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [clenr0::R](R) reader structure"]
impl crate::Readable for CLENR0_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets CLENR0 to value 0xffff_ffff"]
impl crate::Resettable for CLENR0_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+31
View File
@@ -0,0 +1,31 @@
#[doc = "Register `CODEPAGESIZE` reader"]
pub struct R(crate::R<CODEPAGESIZE_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<CODEPAGESIZE_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<CODEPAGESIZE_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<CODEPAGESIZE_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Code memory page size in bytes.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [codepagesize](index.html) module"]
pub struct CODEPAGESIZE_SPEC;
impl crate::RegisterSpec for CODEPAGESIZE_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [codepagesize::R](R) reader structure"]
impl crate::Readable for CODEPAGESIZE_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets CODEPAGESIZE to value 0xffff_ffff"]
impl crate::Resettable for CODEPAGESIZE_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+31
View File
@@ -0,0 +1,31 @@
#[doc = "Register `CODESIZE` reader"]
pub struct R(crate::R<CODESIZE_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<CODESIZE_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<CODESIZE_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<CODESIZE_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Code memory size in pages.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [codesize](index.html) module"]
pub struct CODESIZE_SPEC;
impl crate::RegisterSpec for CODESIZE_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [codesize::R](R) reader structure"]
impl crate::Readable for CODESIZE_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets CODESIZE to value 0xffff_ffff"]
impl crate::Resettable for CODESIZE_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+47
View File
@@ -0,0 +1,47 @@
#[doc = "Register `CONFIGID` reader"]
pub struct R(crate::R<CONFIGID_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<CONFIGID_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<CONFIGID_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<CONFIGID_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Field `HWID` reader - Hardware Identification Number."]
pub type HWID_R = crate::FieldReader<u16, u16>;
#[doc = "Field `FWID` reader - Firmware Identification Number pre-loaded into the flash."]
pub type FWID_R = crate::FieldReader<u16, u16>;
impl R {
#[doc = "Bits 0:15 - Hardware Identification Number."]
#[inline(always)]
pub fn hwid(&self) -> HWID_R {
HWID_R::new((self.bits & 0xffff) as u16)
}
#[doc = "Bits 16:31 - Firmware Identification Number pre-loaded into the flash."]
#[inline(always)]
pub fn fwid(&self) -> FWID_R {
FWID_R::new(((self.bits >> 16) & 0xffff) as u16)
}
}
#[doc = "Configuration identifier.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [configid](index.html) module"]
pub struct CONFIGID_SPEC;
impl crate::RegisterSpec for CONFIGID_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [configid::R](R) reader structure"]
impl crate::Readable for CONFIGID_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets CONFIGID to value 0xffff_ffff"]
impl crate::Resettable for CONFIGID_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `DEVICEADDR[%s]` reader"]
pub struct R(crate::R<DEVICEADDR_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<DEVICEADDR_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<DEVICEADDR_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<DEVICEADDR_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Device address.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [deviceaddr](index.html) module"]
pub struct DEVICEADDR_SPEC;
impl crate::RegisterSpec for DEVICEADDR_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [deviceaddr::R](R) reader structure"]
impl crate::Readable for DEVICEADDR_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets DEVICEADDR[%s]
to value 0xffff_ffff"]
impl crate::Resettable for DEVICEADDR_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+74
View File
@@ -0,0 +1,74 @@
#[doc = "Register `DEVICEADDRTYPE` reader"]
pub struct R(crate::R<DEVICEADDRTYPE_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<DEVICEADDRTYPE_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<DEVICEADDRTYPE_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<DEVICEADDRTYPE_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Field `DEVICEADDRTYPE` reader - Device address type."]
pub type DEVICEADDRTYPE_R = crate::BitReader<DEVICEADDRTYPE_A>;
#[doc = "Device address type.\n\nValue on reset: 1"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum DEVICEADDRTYPE_A {
#[doc = "0: Public address."]
PUBLIC = 0,
#[doc = "1: Random address."]
RANDOM = 1,
}
impl From<DEVICEADDRTYPE_A> for bool {
#[inline(always)]
fn from(variant: DEVICEADDRTYPE_A) -> Self {
variant as u8 != 0
}
}
impl DEVICEADDRTYPE_R {
#[doc = "Get enumerated values variant"]
#[inline(always)]
pub fn variant(&self) -> DEVICEADDRTYPE_A {
match self.bits {
false => DEVICEADDRTYPE_A::PUBLIC,
true => DEVICEADDRTYPE_A::RANDOM,
}
}
#[doc = "Checks if the value of the field is `PUBLIC`"]
#[inline(always)]
pub fn is_public(&self) -> bool {
*self == DEVICEADDRTYPE_A::PUBLIC
}
#[doc = "Checks if the value of the field is `RANDOM`"]
#[inline(always)]
pub fn is_random(&self) -> bool {
*self == DEVICEADDRTYPE_A::RANDOM
}
}
impl R {
#[doc = "Bit 0 - Device address type."]
#[inline(always)]
pub fn deviceaddrtype(&self) -> DEVICEADDRTYPE_R {
DEVICEADDRTYPE_R::new((self.bits & 1) != 0)
}
}
#[doc = "Device address type.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [deviceaddrtype](index.html) module"]
pub struct DEVICEADDRTYPE_SPEC;
impl crate::RegisterSpec for DEVICEADDRTYPE_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [deviceaddrtype::R](R) reader structure"]
impl crate::Readable for DEVICEADDRTYPE_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets DEVICEADDRTYPE to value 0xffff_ffff"]
impl crate::Resettable for DEVICEADDRTYPE_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `DEVICEID[%s]` reader"]
pub struct R(crate::R<DEVICEID_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<DEVICEID_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<DEVICEID_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<DEVICEID_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Device identifier.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [deviceid](index.html) module"]
pub struct DEVICEID_SPEC;
impl crate::RegisterSpec for DEVICEID_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [deviceid::R](R) reader structure"]
impl crate::Readable for DEVICEID_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets DEVICEID[%s]
to value 0xffff_ffff"]
impl crate::Resettable for DEVICEID_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `ER[%s]` reader"]
pub struct R(crate::R<ER_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<ER_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<ER_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<ER_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Encryption root.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [er](index.html) module"]
pub struct ER_SPEC;
impl crate::RegisterSpec for ER_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [er::R](R) reader structure"]
impl crate::Readable for ER_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets ER[%s]
to value 0xffff_ffff"]
impl crate::Resettable for ER_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `IR[%s]` reader"]
pub struct R(crate::R<IR_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<IR_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<IR_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<IR_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Identity root.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [ir](index.html) module"]
pub struct IR_SPEC;
impl crate::RegisterSpec for IR_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [ir::R](R) reader structure"]
impl crate::Readable for IR_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets IR[%s]
to value 0xffff_ffff"]
impl crate::Resettable for IR_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `NRF_1MBIT[%s]` reader"]
pub struct R(crate::R<NRF_1MBIT_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<NRF_1MBIT_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<NRF_1MBIT_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<NRF_1MBIT_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Override values for the OVERRIDEn registers in RADIO for NRF_1Mbit mode.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [nrf_1mbit](index.html) module"]
pub struct NRF_1MBIT_SPEC;
impl crate::RegisterSpec for NRF_1MBIT_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [nrf_1mbit::R](R) reader structure"]
impl crate::Readable for NRF_1MBIT_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets NRF_1MBIT[%s]
to value 0xffff_ffff"]
impl crate::Resettable for NRF_1MBIT_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+31
View File
@@ -0,0 +1,31 @@
#[doc = "Register `NUMRAMBLOCK` reader"]
pub struct R(crate::R<NUMRAMBLOCK_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<NUMRAMBLOCK_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<NUMRAMBLOCK_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<NUMRAMBLOCK_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Number of individualy controllable RAM blocks.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [numramblock](index.html) module"]
pub struct NUMRAMBLOCK_SPEC;
impl crate::RegisterSpec for NUMRAMBLOCK_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [numramblock::R](R) reader structure"]
impl crate::Readable for NUMRAMBLOCK_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets NUMRAMBLOCK to value 0xffff_ffff"]
impl crate::Resettable for NUMRAMBLOCK_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+115
View File
@@ -0,0 +1,115 @@
#[doc = "Register `OVERRIDEEN` reader"]
pub struct R(crate::R<OVERRIDEEN_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<OVERRIDEEN_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<OVERRIDEEN_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<OVERRIDEEN_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Field `NRF_1MBIT` reader - Override default values for NRF_1Mbit mode."]
pub type NRF_1MBIT_R = crate::BitReader<NRF_1MBIT_A>;
#[doc = "Override default values for NRF_1Mbit mode.\n\nValue on reset: 1"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum NRF_1MBIT_A {
#[doc = "0: Override the default values for NRF_1Mbit mode."]
OVERRIDE = 0,
#[doc = "1: Do not override the default values for NRF_1Mbit mode."]
NOT_OVERRIDE = 1,
}
impl From<NRF_1MBIT_A> for bool {
#[inline(always)]
fn from(variant: NRF_1MBIT_A) -> Self {
variant as u8 != 0
}
}
impl NRF_1MBIT_R {
#[doc = "Get enumerated values variant"]
#[inline(always)]
pub fn variant(&self) -> NRF_1MBIT_A {
match self.bits {
false => NRF_1MBIT_A::OVERRIDE,
true => NRF_1MBIT_A::NOT_OVERRIDE,
}
}
#[doc = "Checks if the value of the field is `OVERRIDE`"]
#[inline(always)]
pub fn is_override(&self) -> bool {
*self == NRF_1MBIT_A::OVERRIDE
}
#[doc = "Checks if the value of the field is `NOT_OVERRIDE`"]
#[inline(always)]
pub fn is_not_override(&self) -> bool {
*self == NRF_1MBIT_A::NOT_OVERRIDE
}
}
#[doc = "Field `BLE_1MBIT` reader - Override default values for BLE_1Mbit mode."]
pub type BLE_1MBIT_R = crate::BitReader<BLE_1MBIT_A>;
#[doc = "Override default values for BLE_1Mbit mode.\n\nValue on reset: 1"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum BLE_1MBIT_A {
#[doc = "0: Override the default values for BLE_1Mbit mode."]
OVERRIDE = 0,
#[doc = "1: Do not override the default values for BLE_1Mbit mode."]
NOT_OVERRIDE = 1,
}
impl From<BLE_1MBIT_A> for bool {
#[inline(always)]
fn from(variant: BLE_1MBIT_A) -> Self {
variant as u8 != 0
}
}
impl BLE_1MBIT_R {
#[doc = "Get enumerated values variant"]
#[inline(always)]
pub fn variant(&self) -> BLE_1MBIT_A {
match self.bits {
false => BLE_1MBIT_A::OVERRIDE,
true => BLE_1MBIT_A::NOT_OVERRIDE,
}
}
#[doc = "Checks if the value of the field is `OVERRIDE`"]
#[inline(always)]
pub fn is_override(&self) -> bool {
*self == BLE_1MBIT_A::OVERRIDE
}
#[doc = "Checks if the value of the field is `NOT_OVERRIDE`"]
#[inline(always)]
pub fn is_not_override(&self) -> bool {
*self == BLE_1MBIT_A::NOT_OVERRIDE
}
}
impl R {
#[doc = "Bit 0 - Override default values for NRF_1Mbit mode."]
#[inline(always)]
pub fn nrf_1mbit(&self) -> NRF_1MBIT_R {
NRF_1MBIT_R::new((self.bits & 1) != 0)
}
#[doc = "Bit 3 - Override default values for BLE_1Mbit mode."]
#[inline(always)]
pub fn ble_1mbit(&self) -> BLE_1MBIT_R {
BLE_1MBIT_R::new(((self.bits >> 3) & 1) != 0)
}
}
#[doc = "Radio calibration override enable.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [overrideen](index.html) module"]
pub struct OVERRIDEEN_SPEC;
impl crate::RegisterSpec for OVERRIDEEN_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [overrideen::R](R) reader structure"]
impl crate::Readable for OVERRIDEEN_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets OVERRIDEEN to value 0xffff_ffff"]
impl crate::Resettable for OVERRIDEEN_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+76
View File
@@ -0,0 +1,76 @@
#[doc = "Register `PPFC` reader"]
pub struct R(crate::R<PPFC_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<PPFC_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<PPFC_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<PPFC_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Field `PPFC` reader - Pre-programmed factory code present."]
pub type PPFC_R = crate::FieldReader<u8, PPFC_A>;
#[doc = "Pre-programmed factory code present.\n\nValue on reset: 255"]
#[derive(Clone, Copy, Debug, PartialEq)]
#[repr(u8)]
pub enum PPFC_A {
#[doc = "255: Not present."]
NOT_PRESENT = 255,
#[doc = "0: Present."]
PRESENT = 0,
}
impl From<PPFC_A> for u8 {
#[inline(always)]
fn from(variant: PPFC_A) -> Self {
variant as _
}
}
impl PPFC_R {
#[doc = "Get enumerated values variant"]
#[inline(always)]
pub fn variant(&self) -> Option<PPFC_A> {
match self.bits {
255 => Some(PPFC_A::NOT_PRESENT),
0 => Some(PPFC_A::PRESENT),
_ => None,
}
}
#[doc = "Checks if the value of the field is `NOT_PRESENT`"]
#[inline(always)]
pub fn is_not_present(&self) -> bool {
*self == PPFC_A::NOT_PRESENT
}
#[doc = "Checks if the value of the field is `PRESENT`"]
#[inline(always)]
pub fn is_present(&self) -> bool {
*self == PPFC_A::PRESENT
}
}
impl R {
#[doc = "Bits 0:7 - Pre-programmed factory code present."]
#[inline(always)]
pub fn ppfc(&self) -> PPFC_R {
PPFC_R::new((self.bits & 0xff) as u8)
}
}
#[doc = "Pre-programmed factory code present.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [ppfc](index.html) module"]
pub struct PPFC_SPEC;
impl crate::RegisterSpec for PPFC_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [ppfc::R](R) reader structure"]
impl crate::Readable for PPFC_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets PPFC to value 0xffff_ffff"]
impl crate::Resettable for PPFC_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+32
View File
@@ -0,0 +1,32 @@
#[doc = "Register `SIZERAMBLOCK[%s]` reader"]
pub struct R(crate::R<SIZERAMBLOCK_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<SIZERAMBLOCK_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<SIZERAMBLOCK_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<SIZERAMBLOCK_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Deprecated array of size of RAM block in bytes. This name is kept for backward compatinility purposes. Use SIZERAMBLOCKS instead.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [sizeramblock](index.html) module"]
pub struct SIZERAMBLOCK_SPEC;
impl crate::RegisterSpec for SIZERAMBLOCK_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [sizeramblock::R](R) reader structure"]
impl crate::Readable for SIZERAMBLOCK_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets SIZERAMBLOCK[%s]
to value 0xffff_ffff"]
impl crate::Resettable for SIZERAMBLOCK_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}
+31
View File
@@ -0,0 +1,31 @@
#[doc = "Register `SIZERAMBLOCKS` reader"]
pub struct R(crate::R<SIZERAMBLOCKS_SPEC>);
impl core::ops::Deref for R {
type Target = crate::R<SIZERAMBLOCKS_SPEC>;
#[inline(always)]
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<crate::R<SIZERAMBLOCKS_SPEC>> for R {
#[inline(always)]
fn from(reader: crate::R<SIZERAMBLOCKS_SPEC>) -> Self {
R(reader)
}
}
#[doc = "Size of RAM blocks in bytes.\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [sizeramblocks](index.html) module"]
pub struct SIZERAMBLOCKS_SPEC;
impl crate::RegisterSpec for SIZERAMBLOCKS_SPEC {
type Ux = u32;
}
#[doc = "`read()` method returns [sizeramblocks::R](R) reader structure"]
impl crate::Readable for SIZERAMBLOCKS_SPEC {
type Reader = R;
}
#[doc = "`reset()` method sets SIZERAMBLOCKS to value 0xffff_ffff"]
impl crate::Resettable for SIZERAMBLOCKS_SPEC {
#[inline(always)]
fn reset_value() -> Self::Ux {
0xffff_ffff
}
}