implement card model

This commit is contained in:
2026-08-18 20:51:19 +00:00
parent b55b444db4
commit 68250b2924
5 changed files with 82 additions and 29 deletions
+30 -7
View File
@@ -1,5 +1,7 @@
use alloc::string::{String, ToString};
use core::fmt::Display;
use crate::card::model::NfcPayload;
use alloc::string::{String, ToString};
pub fn split_nfc_hex(payload: &[u8]) -> Option<NfcPayload<'_>> {
if payload.len() < 0x35A {
@@ -18,13 +20,34 @@ pub fn split_nfc_hex(payload: &[u8]) -> Option<NfcPayload<'_>> {
})
}
pub fn decode_known_event(event_encoding: &[u8]) -> Option<&'static str> {
#[derive(Debug, Clone)]
pub enum Events {
CCC39,
CCC40,
GPN24,
GPN25,
Unknown,
}
impl Display for Events {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match *self {
Events::CCC39 => write!(f, "39C3"),
Events::CCC40 => write!(f, "40C3"),
Events::GPN24 => write!(f, "GPN24"),
Events::GPN25 => write!(f, "GPN25"),
Events::Unknown => write!(f, "Unknown"),
}
}
}
pub fn decode_known_event(event_encoding: &[u8]) -> Events {
match event_encoding {
[0x39, 0xC3] => Some("39C3"),
[0x40, 0xC3] => Some("40C3"), // future proofing :)
[0xE9, 0x24] => Some("GPN 24"),
[0xE9, 0x25] => Some("GPN 25"), // future proofing :)
_ => None,
[0x39, 0xC3] => Events::CCC39,
[0x40, 0xC3] => Events::CCC40, // future proofing :)
[0xE9, 0x24] => Events::GPN24,
[0xE9, 0x25] => Events::GPN25, // future proofing :)
_ => Events::Unknown,
}
}