mirror of
https://github.com/bettse/seader.git
synced 2026-08-29 01:08:36 +00:00
Update SAM scenes for SNMP status
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user