Przeglądaj źródła

reworking module info and tag view scenes'

frux-c 2 lat temu
rodzic
commit
97ce3f1586
6 zmienionych plików z 67 dodań i 23 usunięć
  1. 42 0
      assets/img/intro.svg
  2. 1 1
      scenes/uhf_scene_config.h
  3. 16 16
      scenes/uhf_scene_module_info.c
  4. 3 5
      uhf_app.c
  5. 3 0
      uhf_app_i.h
  6. 2 1
      uhf_module.h

+ 42 - 0
assets/img/intro.svg

@@ -0,0 +1,42 @@
+<svg fill="none" viewBox="0 0 600 300" width="600" height="300" xmlns="http://www.w3.org/2000/svg">
+  <foreignObject width="100%" height="100%">
+    <div xmlns="http://www.w3.org/1999/xhtml">
+      <style>
+      @keyframes hi  {
+            0% { transform: rotate( 0.0deg) }
+           10% { transform: rotate(14.0deg) }
+           20% { transform: rotate(-8.0deg) }
+           30% { transform: rotate(14.0deg) }
+           40% { transform: rotate(-4.0deg) }
+           50% { transform: rotate(10.0deg) }
+           60% { transform: rotate( 0.0deg) }
+          100% { transform: rotate( 0.0deg) }
+        }
+        .container {
+          display: flex;
+          width: 100%;
+          height: 300px;
+          background-color: black;
+          color: white;
+          font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+          align-items: center;
+          justify-content: center;
+        }
+        .hi {
+          animation: hi 1.5s linear -0.5s infinite;
+          display: inline-block;
+          transform-origin: 70% 70%;
+        }
+        @media (prefers-reduced-motion) {
+          .hi {
+            animation: none;
+          }
+        }
+      </style>
+
+      <div class="container">
+        <h1>Hi there, my name is Nikola <div class="hi">👋</div></h1>
+      </div>
+    </div>
+  </foreignObject>
+</svg>

+ 1 - 1
scenes/uhf_scene_config.h

@@ -1,4 +1,4 @@
-ADD_SCENE(uhf, verify, Verify)
+ADD_SCENE(uhf, module_info, ModuleInfo)
 ADD_SCENE(uhf, start, Start)
 ADD_SCENE(uhf, read_tag, ReadTag)
 ADD_SCENE(uhf, read_tag_success, ReadTagSuccess)

+ 16 - 16
scenes/uhf_scene_verify.c → scenes/uhf_scene_module_info.c

@@ -1,17 +1,16 @@
 #include "../uhf_app_i.h"
 
-bool verify_success = false;
 FuriString* temp_str;
 
-void uhf_scene_verify_callback_event(UHFWorkerEvent event, void* ctx) {
+void uhf_scene_module_info_callback_event(UHFWorkerEvent event, void* ctx) {
     UNUSED(ctx);
     UHFApp* uhf_app = ctx;
-    if(event == UHFWorkerEventSuccess) verify_success = true;
+    if(event == UHFWorkerEventSuccess) uhf_app->device_verified = true;
 
     view_dispatcher_send_custom_event(uhf_app->view_dispatcher, UHFCustomEventVerifyDone);
 }
 
-void uhf_scene_verify_widget_callback(GuiButtonType result, InputType type, void* ctx) {
+void uhf_scene_module_info_widget_callback(GuiButtonType result, InputType type, void* ctx) {
     furi_assert(ctx);
     UHFApp* uhf_app = ctx;
 
@@ -20,25 +19,26 @@ void uhf_scene_verify_widget_callback(GuiButtonType result, InputType type, void
     }
 }
 
-void uhf_scene_verify_on_enter(void* ctx) {
+void uhf_scene_module_info_on_enter(void* ctx) {
     UHFApp* uhf_app = ctx;
+    uhf_app->device_verified = false; // reset device verified
     uhf_worker_start(
-        uhf_app->worker, UHFWorkerStateVerify, uhf_scene_verify_callback_event, uhf_app);
+        uhf_app->worker, UHFWorkerStateVerify, uhf_scene_module_info_callback_event, uhf_app);
     temp_str = furi_string_alloc();
     view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewWidget);
 }
 
-bool uhf_scene_verify_on_event(void* ctx, SceneManagerEvent event) {
+bool uhf_scene_module_info_on_event(void* ctx, SceneManagerEvent event) {
     UHFApp* uhf_app = ctx;
     bool consumed = false;
     if(event.event == SceneManagerEventTypeBack) {
         uhf_app->worker->state = UHFWorkerStateStop;
     } else if(event.type == SceneManagerEventTypeCustom) {
         if(event.event == GuiButtonTypeRight) {
-            scene_manager_next_scene(uhf_app->scene_manager, UHFSceneStart);
-            consumed = true;
+            scene_manager_search_and_switch_to_another_scene(
+                uhf_app->scene_manager, UHFSceneStart);
         } else if(event.event == GuiButtonTypeLeft) {
-            if(!verify_success) {
+            if(!uhf_app->device_verified) {
                 widget_reset(uhf_app->widget);
                 furi_string_reset(temp_str);
                 uhf_worker_stop(uhf_app->worker);
@@ -49,11 +49,11 @@ bool uhf_scene_verify_on_event(void* ctx, SceneManagerEvent event) {
                 uhf_worker_start(
                     uhf_app->worker,
                     UHFWorkerStateVerify,
-                    uhf_scene_verify_callback_event,
+                    uhf_scene_module_info_callback_event,
                     uhf_app);
             }
         } else if(event.event == UHFCustomEventVerifyDone) {
-            if(verify_success) {
+            if(uhf_app->device_verified) {
                 widget_reset(uhf_app->widget);
                 furi_string_reset(temp_str);
                 M100Module* module = uhf_app->worker->module;
@@ -99,7 +99,7 @@ bool uhf_scene_verify_on_event(void* ctx, SceneManagerEvent event) {
                     uhf_app->widget,
                     GuiButtonTypeRight,
                     "Continue",
-                    uhf_scene_verify_widget_callback,
+                    uhf_scene_module_info_widget_callback,
                     uhf_app);
             } else {
                 widget_add_string_element(
@@ -122,13 +122,13 @@ bool uhf_scene_verify_on_event(void* ctx, SceneManagerEvent event) {
                     uhf_app->widget,
                     GuiButtonTypeLeft,
                     "Retry",
-                    uhf_scene_verify_widget_callback,
+                    uhf_scene_module_info_widget_callback,
                     uhf_app);
                 widget_add_button_element(
                     uhf_app->widget,
                     GuiButtonTypeRight,
                     "Skip",
-                    uhf_scene_verify_widget_callback,
+                    uhf_scene_module_info_widget_callback,
                     uhf_app);
             }
         }
@@ -136,7 +136,7 @@ bool uhf_scene_verify_on_event(void* ctx, SceneManagerEvent event) {
     return consumed;
 }
 
-void uhf_scene_verify_on_exit(void* ctx) {
+void uhf_scene_module_info_on_exit(void* ctx) {
     UHFApp* uhf_app = ctx;
     // Clear string
     furi_string_free(temp_str);

+ 3 - 5
uhf_app.c

@@ -182,15 +182,13 @@ void uhf_blink_stop(UHFApp* uhf_app) {
 
 void uhf_show_loading_popup(void* ctx, bool show) {
     UHFApp* uhf_app = ctx;
-    TaskHandle_t timer_task = xTaskGetHandle(configTIMER_SERVICE_TASK_NAME);
-
     if(show) {
         // Raise timer priority so that animations can play
-        vTaskPrioritySet(timer_task, configMAX_PRIORITIES - 1);
+        furi_timer_set_thread_priority(FuriTimerThreadPriorityElevated);
         view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewLoading);
     } else {
         // Restore default timer priority
-        vTaskPrioritySet(timer_task, configTIMER_TASK_PRIORITY);
+        furi_timer_set_thread_priority(FuriTimerThreadPriorityNormal);
     }
 }
 
@@ -203,7 +201,7 @@ int32_t uhf_app_main(void* ctx) {
     // init pin a2
     // furi_hal_gpio_init_simple(&gpio_ext_pa7, GpioModeOutputPushPull);
     furi_hal_uart_set_br(FuriHalUartIdUSART1, DEFAULT_BAUDRATE);
-    scene_manager_next_scene(uhf_app->scene_manager, UHFSceneVerify);
+    scene_manager_next_scene(uhf_app->scene_manager, UHFSceneModuleInfo);
     view_dispatcher_run(uhf_app->view_dispatcher);
 
     // disable 5v pin

+ 3 - 0
uhf_app_i.h

@@ -68,6 +68,9 @@ struct UHFApp {
     Loading* loading;
     TextInput* text_input;
     Widget* widget;
+    // view setting
+    bool device_verified;
+    bool view_device_info;
 };
 
 typedef enum {

+ 2 - 1
uhf_module.h

@@ -33,10 +33,11 @@ typedef enum {
 
 typedef struct {
     M100ModuleInfo* info;
-    uint32_t baudrate;
     WorkingRegion region;
+    uint32_t baudrate;
     uint16_t region_frequency;
     uint16_t transmitting_power;
+    uint16_t max_transmitting_power;
     bool freq_hopping;
     Buffer* buf;
 } M100Module;