update parsing logic and add tests

This commit is contained in:
ppc
2026-01-09 20:09:44 +00:00
parent 6630496280
commit 59d1a8bd3e
4 changed files with 339 additions and 73 deletions
+9 -14
View File
@@ -67,26 +67,21 @@ pub extern "C" fn aime_io_nfc_poll(unit_no: u8) -> i32 {
}
};
if aime_code.is_empty() || !utils::is_valid_access_code(&aime_code) {
warn!("Access code file is either empty or contains invalid data");
if aime_code.is_empty() {
warn!("Access code file is empty");
return 1;
}
debug!("Access code read from file");
let presenter_result = CardPresenter::instance().present_card(
&aime_code,
None,
std::time::Duration::from_secs(5),
);
let Some(access_code) = utils::parse_access_code(&aime_code) else {
warn!("Invalid access code read from file");
return 1;
};
match presenter_result {
crate::card::CardPresentResult::Accepted => {
match CardPresenter::instance().present_card(access_code, None, std::time::Duration::from_secs(5)) {
card::CardPresentResult::Accepted => {
return 0;
},
crate::card::CardPresentResult::Rejected(reason) => {
warn!("Read access code was rejected: {}", reason);
}
crate::card::CardPresentResult::SlotUnavailable(release_time) => {
card::CardPresentResult::SlotUnavailable(release_time) => {
warn!("Access code was not accepted as there is already a card in the active slot until {:?}", release_time);
}
}