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

more work on variable item lists to add config

frux-c 2 лет назад
Родитель
Сommit
d66d8e4216
8 измененных файлов с 55 добавлено и 72 удалено
  1. 1 1
      scenes/uhf_scene_config.h
  2. 38 39
      scenes/uhf_scene_settings.c
  3. 5 13
      scenes/uhf_scene_start.c
  4. 6 0
      uhf_app.c
  5. 3 0
      uhf_app_i.h
  6. 1 1
      uhf_buffer.h
  7. 0 2
      uhf_data_i.h
  8. 1 16
      uhf_module.h

+ 1 - 1
scenes/uhf_scene_config.h

@@ -12,7 +12,7 @@ ADD_SCENE(uhf, delete, Delete)
 ADD_SCENE(uhf, delete_success, DeleteSuccess)
 ADD_SCENE(uhf, delete_success, DeleteSuccess)
 ADD_SCENE(uhf, write_tag, WriteTag)
 ADD_SCENE(uhf, write_tag, WriteTag)
 ADD_SCENE(uhf, write_tag_success, WriteTagSuccess)
 ADD_SCENE(uhf, write_tag_success, WriteTagSuccess)
-// ADD_SCENE(uhf, settings, Settings)
+ADD_SCENE(uhf, settings, Settings)
 // ADD_SCENE(uhf, read_factory_success, ReadFactorySuccess)
 // ADD_SCENE(uhf, read_factory_success, ReadFactorySuccess)
 // ADD_SCENE(uhf, write_key, WriteKey)
 // ADD_SCENE(uhf, write_key, WriteKey)
 // ADD_SCENE(uhf, key_menu, KeyMenu)
 // ADD_SCENE(uhf, key_menu, KeyMenu)

+ 38 - 39
scenes/uhf_scene_settings.c

@@ -1,44 +1,43 @@
-// #include "../uhf_app_i.h"
+#include "../uhf_app_i.h"
+#include "../uhf_module.h"
 
 
-// void uhf_settings_set_module_baudrate(VariableItem* item) {
-//     uint32_t baudrate =
-// }
+void uhf_settings_set_module_baudrate(VariableItem* item) {
+    UNUSED(item);
+}
 
 
-// void uhf_scene_on_enter(void* ctx) {
-//     UHFApp* uhf_app = ctx;
-//     view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewMenu);
-// }
+void uhf_scene_settings_on_enter(void* ctx) {
+    UHFApp* uhf_app = ctx;
+    VariableItem* item;
+    uint8_t value_index = 0;
+    M100Module* uhf_module = uhf_app->worker->module;
 
 
-// bool uhf_scene_on_event(void* ctx, SceneManagerEvent event) {
-//     UHFApp* uhf_app = ctx;
-//     bool consumed = false;
-//     VariableItem* item;
-//     uint8_t value_index;
-//     // SubGhzSetting* setting = subghz_txrx_get_setting(subghz->txrx);
-//     // SubGhzRadioPreset preset = subghz_txrx_get_preset(subghz->txrx);
+    item = variable_item_list_add(
+        uhf_app->variable_item_list,
+        "Baud Rate:",
+        sizeof(BAUD_RATES),
+        uhf_settings_set_module_baudrate,
+        uhf_module);
+    scene_manager_set_scene_state(uhf_app->scene_manager, UHFSceneSettings, (uint32_t)item);
+    variable_item_set_current_value_index(item, value_index);
+    char text_buf[10] = {0};
+    snprintf(text_buf, sizeof(text_buf), "%d", uhf_module->baudrate);
+    variable_item_set_current_value_text(item, text_buf);
+    view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewMenu);
+}
 
 
-//     item = variable_item_list_add(
-//         subghz->variable_item_list,
-//         "Baud Rate:",
-//         subghz_setting_get_frequency_count(setting),
-//         subghz_scene_receiver_config_set_frequency,
-//         subghz);
-//     value_index = subghz_scene_receiver_config_next_frequency(preset.frequency, subghz);
-//     scene_manager_set_scene_state(
-//         subghz->scene_manager, SubGhzSceneReceiverConfig, (uint32_t)item);
-//     variable_item_set_current_value_index(item, value_index);
-//     char text_buf[10] = {0};
-//     uint32_t frequency = subghz_setting_get_frequency(setting, value_index);
-//     snprintf(
-//         text_buf,
-//         sizeof(text_buf),
-//         "%lu.%02lu",
-//         frequency / 1000000,
-//         (frequency % 1000000) / 10000);
-//     variable_item_set_current_value_text(item, text_buf);
-// }
+bool uhf_scene_settings_on_event(void* ctx, SceneManagerEvent event) {
+    UHFApp* uhf_app = ctx;
+    bool consumed = false;
+    if(event.type == SceneManagerEventTypeCustom) {
+        if(event.event == UHFCustomEventSceneSettingLock) {
+            scene_manager_previous_scene(uhf_app->scene_manager);
+            consumed = true;
+        }
+    }
+    return consumed;
+}
 
 
-// void uhf_scene_on_exit(void* ctx) {
-//     UHFApp* uhf_app = ctx;
-//     submenu_reset(uhf_app->submenu);
-// }
+void uhf_scene_settings_on_exit(void* ctx) {
+    UHFApp* uhf_app = ctx;
+    submenu_reset(uhf_app->submenu);
+}

+ 5 - 13
scenes/uhf_scene_start.c

@@ -38,20 +38,12 @@ bool uhf_scene_start_on_event(void* ctx, SceneManagerEvent event) {
                 uhf_app->scene_manager, UHFSceneStart, SubmenuIndexSaved);
                 uhf_app->scene_manager, UHFSceneStart, SubmenuIndexSaved);
             scene_manager_next_scene(uhf_app->scene_manager, UHFSceneFileSelect);
             scene_manager_next_scene(uhf_app->scene_manager, UHFSceneFileSelect);
             consumed = true;
             consumed = true;
+        } else if(event.event == SubmenuIndexSettings) {
+            scene_manager_set_scene_state(
+                uhf_app->scene_manager, UHFSceneStart, SubmenuIndexSettings);
+            scene_manager_next_scene(uhf_app->scene_manager, UHFSceneSettings);
+            consumed = true;
         }
         }
-        // else if(event.event == SubmenuIndexSettings) {
-        //     scene_manager_set_scene_state(
-        //         uhf_app->scene_manager, UHFSceneStart, SubmenuIndexSettings);
-        //     scene_manager_next_scene(uhf_app->scene_manager, UHFSceneSettings);
-        //     consumed = true;
-        // }
-        // } else if(event.event == SubmenuIndexEliteDictAttack) {
-        //     scene_manager_set_scene_state(
-        //         uhf_app->scene_manager, UHFSceneStart, SubmenuIndexEliteDictAttack);
-        //     scene_manager_next_scene(uhf_app->scene_manager, UHFSceneEliteDictAttack);
-        //     consumed = true;
-        // }
-        // consumed = true;
     }
     }
     return consumed;
     return consumed;
 }
 }

+ 6 - 0
uhf_app.c

@@ -69,6 +69,9 @@ UHFApp* uhf_alloc() {
     // Open Notification record
     // Open Notification record
     uhf_app->notifications = furi_record_open(RECORD_NOTIFICATION);
     uhf_app->notifications = furi_record_open(RECORD_NOTIFICATION);
 
 
+    // Variable Item List
+    uhf_app->variable_item_list = variable_item_list_alloc();
+
     // Submenu
     // Submenu
     uhf_app->submenu = submenu_alloc();
     uhf_app->submenu = submenu_alloc();
     view_dispatcher_add_view(
     view_dispatcher_add_view(
@@ -140,6 +143,9 @@ void uhf_free(UHFApp* uhf_app) {
     furi_record_close(RECORD_GUI);
     furi_record_close(RECORD_GUI);
     uhf_app->gui = NULL;
     uhf_app->gui = NULL;
 
 
+    // Variable Item List
+    variable_item_list_free(uhf_app->variable_item_list);
+
     // Notifications
     // Notifications
     furi_record_close(RECORD_NOTIFICATION);
     furi_record_close(RECORD_NOTIFICATION);
     uhf_app->notifications = NULL;
     uhf_app->notifications = NULL;

+ 3 - 0
uhf_app_i.h

@@ -11,6 +11,7 @@
 #include <gui/modules/loading.h>
 #include <gui/modules/loading.h>
 #include <gui/modules/text_input.h>
 #include <gui/modules/text_input.h>
 #include <gui/modules/widget.h>
 #include <gui/modules/widget.h>
+#include <gui/modules/variable_item_list.h>
 
 
 #include <input/input.h>
 #include <input/input.h>
 
 
@@ -42,6 +43,7 @@ enum UHFCustomEvent {
     UHFCustomEventWorkerExit,
     UHFCustomEventWorkerExit,
     UHFCustomEventByteInputDone,
     UHFCustomEventByteInputDone,
     UHFCustomEventTextInputDone,
     UHFCustomEventTextInputDone,
+    UHFCustomEventSceneSettingLock,
 };
 };
 
 
 typedef enum {
 typedef enum {
@@ -55,6 +57,7 @@ struct UHFApp {
     Gui* gui;
     Gui* gui;
     NotificationApp* notifications;
     NotificationApp* notifications;
     SceneManager* scene_manager;
     SceneManager* scene_manager;
+    VariableItemList* variable_item_list;
     // Storage* storage;
     // Storage* storage;
     UHFDevice* uhf_device;
     UHFDevice* uhf_device;
     char text_store[UHF_TEXT_STORE_SIZE + 1];
     char text_store[UHF_TEXT_STORE_SIZE + 1];

+ 1 - 1
uhf_buffer.h

@@ -3,7 +3,7 @@
 #include <stdbool.h>
 #include <stdbool.h>
 #include <stddef.h>
 #include <stddef.h>
 
 
-#define MAX_BUFFER_SIZE 256
+#define MAX_BUFFER_SIZE 128
 
 
 typedef struct Buffer {
 typedef struct Buffer {
     uint8_t* data;
     uint8_t* data;

+ 0 - 2
uhf_data_i.h

@@ -1,2 +0,0 @@
-// todo : probably will move some of the uhf_data functions to internal only
-// once i figure out how to structure the method calls

+ 1 - 16
uhf_module.h

@@ -6,6 +6,7 @@
 #include "uhf_buffer.h"
 #include "uhf_buffer.h"
 #include "uhf_tag.h"
 #include "uhf_tag.h"
 #include <furi_hal.h>
 #include <furi_hal.h>
+#include "uhf_module_settings.h"
 
 
 #define FRAME_END 0x7E
 #define FRAME_END 0x7E
 #define DEFAULT_BAUDRATE 115200
 #define DEFAULT_BAUDRATE 115200
@@ -16,22 +17,6 @@ typedef struct {
     char* manufacturer;
     char* manufacturer;
 } M100ModuleInfo;
 } M100ModuleInfo;
 
 
-typedef enum {
-    WA_CHINA_900 = 1,   // Freq_CH-920.125M
-    WA_US,              // Freq_CH-902.25M
-    WA_EU,              // Freq_CH-865.1M
-    WA_CHINA_800,       // Freq_CH-840.125M
-    WA_KOREA = 6        // Freq_CH-917.1M
-} WorkingArea;
-
-typedef enum {
-    WC_CHINA_900 = 1,   // CH_Index(CN,900MHz) = (Freq_CH-920.125M)/0.25M
-    WC_US,              // CH_Index(US) = (Freq_CH-902.25M)/0.5M
-    WC_EU,              // CH_Index(EU) = (Freq_CH-865.1M)/0.2M
-    WC_CHINA_800,       // CH_Index(CN,800MHz) = (Freq_CH-840.125M)/0.25M
-    WC_KOREA = 6        // CH_Index(Korea) = (Freq_CH-917.1M)/0.2M
-} WorkingChannel;
-
 typedef enum {
 typedef enum {
     M100Success,
     M100Success,
     M100ValidationFail,
     M100ValidationFail,