Update SAM scenes for SNMP status

This commit is contained in:
CinderSocket
2026-03-09 20:13:56 -07:00
committed by Eric Betts
parent 2675c6e3be
commit f7830b8db7
4 changed files with 42 additions and 18 deletions
+17 -1
View File
@@ -17,15 +17,27 @@ void seader_scene_sam_info_on_enter(void* context) {
// Use reusable string instead of allocating new one
FuriString* fw_str = seader->temp_string1;
FuriString* info_str = seader->temp_string2;
FuriString* uhf_str = seader->temp_string3;
furi_string_reset(fw_str);
furi_string_reset(info_str);
furi_string_reset(uhf_str);
furi_string_cat_printf(
fw_str, "FW %d.%d", seader_worker->sam_version[0], seader_worker->sam_version[1]);
furi_string_set_str(info_str, seader->sam_key_label);
furi_string_set_str(uhf_str, seader->uhf_status_label);
widget_add_button_element(
seader->widget, GuiButtonTypeLeft, "Back", seader_scene_sam_info_widget_callback, seader);
widget_add_string_element(
widget, 64, 5, AlignCenter, AlignCenter, FontSecondary, furi_string_get_cstr(fw_str));
widget, 64, 14, AlignCenter, AlignCenter, FontPrimary, furi_string_get_cstr(info_str));
widget_add_text_box_element(
widget, 5, 22, 118, 20, AlignCenter, AlignTop, furi_string_get_cstr(uhf_str), false);
widget_add_string_element(
widget, 64, 50, AlignCenter, AlignCenter, FontSecondary, furi_string_get_cstr(fw_str));
// No need to free fw_str as it's reused from seader struct
@@ -39,6 +51,10 @@ bool seader_scene_sam_info_on_event(void* context, SceneManagerEvent event) {
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == GuiButtonTypeLeft) {
consumed = scene_manager_previous_scene(seader->scene_manager);
} else if(event.event == SeaderCustomEventSamStatusUpdated) {
seader_scene_sam_info_on_exit(context);
seader_scene_sam_info_on_enter(context);
consumed = true;
}
} else if(event.type == SceneManagerEventTypeBack) {
consumed = scene_manager_search_and_switch_to_previous_scene(
+6 -5
View File
@@ -1,5 +1,6 @@
#include "../seader_i.h"
enum SubmenuIndex {
SubmenuIndexNoSam,
SubmenuIndexDetectSam,
SubmenuIndexSaved,
};
@@ -15,11 +16,9 @@ void seader_scene_sam_missing_on_enter(void* context) {
Submenu* submenu = seader->submenu;
submenu_add_item(
submenu,
"No SAM: Retry",
SubmenuIndexDetectSam,
seader_scene_sam_missing_submenu_callback,
seader);
submenu, "NO SAM", SubmenuIndexNoSam, seader_scene_sam_missing_submenu_callback, seader);
submenu_add_item(
submenu, "Retry", SubmenuIndexDetectSam, seader_scene_sam_missing_submenu_callback, seader);
submenu_add_item(
submenu, "Saved", SubmenuIndexSaved, seader_scene_sam_missing_submenu_callback, seader);
@@ -37,6 +36,8 @@ bool seader_scene_sam_missing_on_event(void* context, SceneManagerEvent event) {
if(event.event == SubmenuIndexDetectSam) {
scene_manager_next_scene(seader->scene_manager, SeaderSceneStart);
consumed = true;
} else if(event.event == SubmenuIndexNoSam) {
consumed = true;
} else if(event.event == SubmenuIndexSaved) {
scene_manager_next_scene(seader->scene_manager, SeaderSceneFileSelect);
consumed = true;
+13 -12
View File
@@ -1,10 +1,9 @@
#include "../seader_i.h"
enum SubmenuIndex {
SubmenuIndexSamInfo,
SubmenuIndexRead,
SubmenuIndexSaved,
SubmenuIndexAPDURunner,
SubmenuIndexSamInfo,
SubmenuIndexFwVersion,
SubmenuIndexReadConfigCard,
};
@@ -45,19 +44,20 @@ void seader_scene_sam_present_on_update(void* context) {
seader);
}
if(seader_worker->sam_version[0] != 0 && seader_worker->sam_version[1] != 0) {
// Use reusable string instead of allocating new one
FuriString* fw_str = seader->temp_string1;
furi_string_reset(fw_str);
furi_string_cat_printf(
fw_str, "FW %d.%d", seader_worker->sam_version[0], seader_worker->sam_version[1]);
submenu_add_item(
submenu,
furi_string_get_cstr(fw_str),
SubmenuIndexFwVersion,
seader->sam_key_label,
SubmenuIndexSamInfo,
seader_scene_sam_present_submenu_callback,
seader);
// No need to free fw_str as it's reused from seader struct
fwChecks = 0;
} else {
submenu_add_item(
submenu,
seader->sam_key_label,
SubmenuIndexSamInfo,
seader_scene_sam_present_submenu_callback,
seader);
}
submenu_set_selected_item(
@@ -91,14 +91,15 @@ bool seader_scene_sam_present_on_event(void* context, SceneManagerEvent event) {
} else if(event.event == SubmenuIndexSaved) {
scene_manager_next_scene(seader->scene_manager, SeaderSceneFileSelect);
consumed = true;
} else if(event.event == SubmenuIndexFwVersion) {
consumed = true;
} else if(event.event == SeaderWorkerEventSamMissing) {
scene_manager_next_scene(seader->scene_manager, SeaderSceneSamMissing);
consumed = true;
} else if(event.event == SubmenuIndexAPDURunner) {
scene_manager_next_scene(seader->scene_manager, SeaderSceneAPDURunner);
consumed = true;
} else if(event.event == SeaderCustomEventSamStatusUpdated) {
seader_scene_sam_present_on_update(context);
consumed = true;
}
} else if(event.type == SceneManagerEventTypeBack) {
scene_manager_stop(seader->scene_manager);
+6
View File
@@ -46,9 +46,15 @@ bool seader_scene_start_on_event(void* context, SceneManagerEvent event) {
scene_manager_next_scene(seader->scene_manager, SeaderSceneSamPresent);
consumed = true;
} else if(event.event == SeaderWorkerEventSamMissing) {
seader->sam_present = false;
seader_sam_key_label_format(
false, NULL, 0U, seader->sam_key_label, sizeof(seader->sam_key_label));
scene_manager_next_scene(seader->scene_manager, SeaderSceneSamMissing);
consumed = true;
} else if(event.event == SeaderWorkerEventSamWrong) {
seader->sam_present = false;
seader_sam_key_label_format(
false, NULL, 0U, seader->sam_key_label, sizeof(seader->sam_key_label));
scene_manager_next_scene(seader->scene_manager, SeaderSceneSamWrong);
consumed = true;
}