mirror of
https://github.com/bettse/seader.git
synced 2026-03-29 16:39:57 +00:00
Reduce probe memory use and format SAM status refresh
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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) {
|
||||
|
||||
2
t_1.c
2
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;
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user