From a84f515ff269391a364be9b8167b602c2cad287c Mon Sep 17 00:00:00 2001 From: CinderSocket Date: Mon, 9 Mar 2026 11:27:38 -0700 Subject: [PATCH] Reduce probe memory use and format SAM status refresh --- lib/host_tests/test_snmp.c | 1 - scenes/seader_scene_sam_present.c | 12 ++++++++---- t_1.c | 2 +- uhf_snmp_probe.c | 7 ------- uhf_snmp_probe.h | 5 ----- 5 files changed, 9 insertions(+), 18 deletions(-) diff --git a/lib/host_tests/test_snmp.c b/lib/host_tests/test_snmp.c index f09c275..9f3414a 100644 --- a/lib/host_tests/test_snmp.c +++ b/lib/host_tests/test_snmp.c @@ -185,7 +185,6 @@ static MunitResult test_probe_stages(const MunitParameter params[], void* fixtur munit_assert_true(probe.has_monza4qt); munit_assert_true(probe.has_higgs3); munit_assert_int(probe.stage, ==, SeaderUhfSnmpProbeStageReadMonza4QtKey); - munit_assert_size(probe.tag_config_value.len, >, 80); munit_assert_true(seader_uhf_snmp_probe_consume_error( &probe, 0x06U, (const uint8_t*)"\x69\x82", 2U)); diff --git a/scenes/seader_scene_sam_present.c b/scenes/seader_scene_sam_present.c index 0d7cfe0..c9c3f74 100644 --- a/scenes/seader_scene_sam_present.c +++ b/scenes/seader_scene_sam_present.c @@ -76,7 +76,8 @@ bool seader_scene_sam_present_on_event(void* context, SceneManagerEvent event) { if(event.type == SceneManagerEventTypeCustom) { if(event.event == SubmenuIndexRead) { - scene_manager_set_scene_state(seader->scene_manager, SeaderSceneSamPresent, event.event); + scene_manager_set_scene_state( + seader->scene_manager, SeaderSceneSamPresent, event.event); scene_manager_next_scene(seader->scene_manager, SeaderSceneRead); consumed = true; } else if(event.event == SubmenuIndexReadConfigCard) { @@ -85,18 +86,21 @@ bool seader_scene_sam_present_on_event(void* context, SceneManagerEvent event) { scene_manager_next_scene(seader->scene_manager, SeaderSceneReadConfigCard); consumed = true; } else if(event.event == SubmenuIndexSamInfo) { - scene_manager_set_scene_state(seader->scene_manager, SeaderSceneSamPresent, event.event); + scene_manager_set_scene_state( + seader->scene_manager, SeaderSceneSamPresent, event.event); scene_manager_next_scene(seader->scene_manager, SeaderSceneSamInfo); consumed = true; } else if(event.event == SubmenuIndexSaved) { - scene_manager_set_scene_state(seader->scene_manager, SeaderSceneSamPresent, event.event); + scene_manager_set_scene_state( + seader->scene_manager, SeaderSceneSamPresent, event.event); scene_manager_next_scene(seader->scene_manager, SeaderSceneFileSelect); consumed = true; } else if(event.event == SeaderWorkerEventSamMissing) { scene_manager_next_scene(seader->scene_manager, SeaderSceneSamMissing); consumed = true; } else if(event.event == SubmenuIndexAPDURunner) { - scene_manager_set_scene_state(seader->scene_manager, SeaderSceneSamPresent, event.event); + scene_manager_set_scene_state( + seader->scene_manager, SeaderSceneSamPresent, event.event); scene_manager_next_scene(seader->scene_manager, SeaderSceneAPDURunner); consumed = true; } else if(event.event == SeaderCustomEventSamStatusUpdated) { diff --git a/t_1.c b/t_1.c index 7dcbe6e..df92fd7 100644 --- a/t_1.c +++ b/t_1.c @@ -188,7 +188,7 @@ void seader_send_t1(SeaderUartBridge* seader_uart, uint8_t* apdu, size_t len) { return; } - t1->tx_buffer = bit_buffer_alloc(768); + t1->tx_buffer = bit_buffer_alloc(len); bit_buffer_copy_bytes(t1->tx_buffer, apdu, len); t1->tx_buffer_offset = 0; } diff --git a/uhf_snmp_probe.c b/uhf_snmp_probe.c index f8fc90e..f2e23a0 100644 --- a/uhf_snmp_probe.c +++ b/uhf_snmp_probe.c @@ -162,15 +162,12 @@ bool seader_uhf_snmp_probe_consume_response( switch(probe->stage) { case SeaderUhfSnmpProbeStageDiscovery: - probe->engine_id = view.context_engine_id; probe->usm_engine_id_len = view.usm_engine_id.len; if(probe->usm_engine_id_len > sizeof(probe->usm_engine_id_storage)) { probe->stage = SeaderUhfSnmpProbeStageFailed; return false; } memcpy(probe->usm_engine_id_storage, view.usm_engine_id.ptr, probe->usm_engine_id_len); - probe->usm_engine_id = - (SeaderBytesView){probe->usm_engine_id_storage, probe->usm_engine_id_len}; probe->usm_username_len = view.usm_username.len; if(probe->usm_username_len > sizeof(probe->usm_username_storage)) { @@ -178,8 +175,6 @@ bool seader_uhf_snmp_probe_consume_response( return false; } memcpy(probe->usm_username_storage, view.usm_username.ptr, probe->usm_username_len); - probe->usm_username = - (SeaderBytesView){probe->usm_username_storage, probe->usm_username_len}; probe->usm_engine_boots = view.usm_engine_boots; probe->usm_engine_time = view.usm_engine_time; probe->stage = SeaderUhfSnmpProbeStageReadIce; @@ -198,7 +193,6 @@ bool seader_uhf_snmp_probe_consume_response( return false; } memcpy(probe->ice_value_storage, value.ptr, probe->ice_value_len); - probe->ice_value = value; probe->stage = SeaderUhfSnmpProbeStageReadTagConfig; return true; case SeaderUhfSnmpProbeStageReadTagConfig: @@ -209,7 +203,6 @@ bool seader_uhf_snmp_probe_consume_response( probe->stage = SeaderUhfSnmpProbeStageFailed; return false; } - probe->tag_config_value = value; { SeaderUhfTagConfigView tag_config = {0}; if(!seader_uhf_tag_config_parse(value, &tag_config)) { diff --git a/uhf_snmp_probe.h b/uhf_snmp_probe.h index 7aaa69c..f7cc56b 100644 --- a/uhf_snmp_probe.h +++ b/uhf_snmp_probe.h @@ -20,11 +20,6 @@ typedef enum { typedef struct { SeaderUhfSnmpProbeStage stage; - SeaderBytesView engine_id; - SeaderBytesView usm_engine_id; - SeaderBytesView usm_username; - SeaderBytesView ice_value; - SeaderBytesView tag_config_value; uint32_t usm_engine_boots; uint32_t usm_engine_time; bool has_monza4qt;