Просмотр исходного кода

Try 3 times to show FW version on menu

Eric Betts 2 лет назад
Родитель
Сommit
74aca1fa39
1 измененных файлов с 29 добавлено и 4 удалено
  1. 29 4
      scenes/seader_scene_sam_present.c

+ 29 - 4
scenes/seader_scene_sam_present.c

@@ -4,17 +4,22 @@ enum SubmenuIndex {
     SubmenuIndexRead14a,
     SubmenuIndexSaved,
     SubmenuIndexSamInfo,
+    SubmenuIndexFwVersion,
 };
 
+static uint8_t fwChecks = 3;
+
 void seader_scene_sam_present_submenu_callback(void* context, uint32_t index) {
     Seader* seader = context;
     view_dispatcher_send_custom_event(seader->view_dispatcher, index);
 }
 
-void seader_scene_sam_present_on_enter(void* context) {
+void seader_scene_sam_present_on_update(void* context) {
     Seader* seader = context;
+    SeaderWorker* seader_worker = seader->worker;
 
     Submenu* submenu = seader->submenu;
+    submenu_reset(submenu);
 
     submenu_add_item(
         submenu,
@@ -30,20 +35,32 @@ void seader_scene_sam_present_on_enter(void* context) {
         seader);
     submenu_add_item(
         submenu, "Load", SubmenuIndexSaved, seader_scene_sam_present_submenu_callback, seader);
-    if(seader->is_debug_enabled) {
+
+    if(seader_worker->sam_version[0] != 0 && seader_worker->sam_version[1] != 0) {
+        FuriString* fw_str = furi_string_alloc();
+        furi_string_cat_printf(
+            fw_str, "FW %d.%d", seader_worker->sam_version[0], seader_worker->sam_version[1]);
         submenu_add_item(
             submenu,
-            "SAM Info",
-            SubmenuIndexSamInfo,
+            furi_string_get_cstr(fw_str),
+            SubmenuIndexFwVersion,
             seader_scene_sam_present_submenu_callback,
             seader);
+        furi_string_free(fw_str);
+        fwChecks = 0;
     }
+
     submenu_set_selected_item(
         submenu, scene_manager_get_scene_state(seader->scene_manager, SeaderSceneSamPresent));
 
     view_dispatcher_switch_to_view(seader->view_dispatcher, SeaderViewMenu);
 }
 
+
+void seader_scene_sam_present_on_enter(void* context) {
+  seader_scene_sam_present_on_update(context);
+}
+
 bool seader_scene_sam_present_on_event(void* context, SceneManagerEvent event) {
     Seader* seader = context;
     bool consumed = false;
@@ -67,11 +84,19 @@ 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.type == SceneManagerEventTypeBack) {
         scene_manager_stop(seader->scene_manager);
         view_dispatcher_stop(seader->view_dispatcher);
         consumed = true;
+    } else if(event.type == SceneManagerEventTypeTick) {
+      SeaderWorker* seader_worker = seader->worker;
+      if(fwChecks > 0 && seader_worker->sam_version[0] != 0 && seader_worker->sam_version[1] != 0) {
+        fwChecks--;
+        seader_scene_sam_present_on_update(context);
+      }
     }
 
     return consumed;