| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #include "../uhf_app_i.h"
- FuriString* temp_str;
- void uhf_scene_module_info_callback_event(UHFWorkerEvent event, void* ctx) {
- UNUSED(ctx);
- UHFApp* uhf_app = ctx;
- if(event == UHFWorkerEventSuccess) uhf_app->device_verified = true;
- view_dispatcher_send_custom_event(uhf_app->view_dispatcher, UHFCustomEventVerifyDone);
- }
- void uhf_scene_module_info_widget_callback(GuiButtonType result, InputType type, void* ctx) {
- furi_assert(ctx);
- UHFApp* uhf_app = ctx;
- if(type == InputTypeShort) {
- view_dispatcher_send_custom_event(uhf_app->view_dispatcher, result);
- }
- }
- 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_module_info_callback_event, uhf_app);
- temp_str = furi_string_alloc();
- view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewWidget);
- }
- 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_search_and_switch_to_another_scene(
- uhf_app->scene_manager, UHFSceneStart);
- } else if(event.event == GuiButtonTypeLeft) {
- if(!uhf_app->device_verified) {
- widget_reset(uhf_app->widget);
- furi_string_reset(temp_str);
- uhf_worker_stop(uhf_app->worker);
- // furi_hal_gpio_write(&gpio_ext, false);
- // furi_delay_ms(50);
- // furi_hal_gpio_write(&gpio_ext_pa7, true);
- // furi_delay_ms(50);
- uhf_worker_start(
- uhf_app->worker,
- UHFWorkerStateVerify,
- uhf_scene_module_info_callback_event,
- uhf_app);
- }
- } else if(event.event == UHFCustomEventVerifyDone) {
- if(uhf_app->device_verified) {
- widget_reset(uhf_app->widget);
- furi_string_reset(temp_str);
- M100Module* module = uhf_app->worker->module;
- widget_add_string_element(
- uhf_app->widget, 64, 5, AlignCenter, AlignCenter, FontPrimary, "Module Info");
- // hardware info
- furi_string_cat_str(temp_str, "HW Version: ");
- furi_string_cat_str(temp_str, module->info->hw_version);
- widget_add_string_element(
- uhf_app->widget,
- 1,
- 15,
- AlignLeft,
- AlignTop,
- FontSecondary,
- furi_string_get_cstr(temp_str));
- furi_string_reset(temp_str);
- // software info
- furi_string_cat_str(temp_str, "SW Version: ");
- furi_string_cat_str(temp_str, module->info->sw_version);
- widget_add_string_element(
- uhf_app->widget,
- 1,
- 27,
- AlignLeft,
- AlignTop,
- FontSecondary,
- furi_string_get_cstr(temp_str));
- furi_string_reset(temp_str);
- // manufacturer info
- furi_string_cat_str(temp_str, "Manufacturer: ");
- furi_string_cat_str(temp_str, module->info->manufacturer);
- widget_add_string_element(
- uhf_app->widget,
- 1,
- 39,
- AlignLeft,
- AlignTop,
- FontSecondary,
- furi_string_get_cstr(temp_str));
- widget_add_button_element(
- uhf_app->widget,
- GuiButtonTypeRight,
- "Continue",
- uhf_scene_module_info_widget_callback,
- uhf_app);
- } else {
- widget_add_string_element(
- uhf_app->widget,
- 64,
- 5,
- AlignCenter,
- AlignCenter,
- FontPrimary,
- "No UHF Module found");
- widget_add_string_multiline_element(
- uhf_app->widget,
- 64,
- 30,
- AlignCenter,
- AlignCenter,
- FontSecondary,
- "Please refer to the git@frux-c/uhf_rfid for help.");
- widget_add_button_element(
- uhf_app->widget,
- GuiButtonTypeLeft,
- "Retry",
- uhf_scene_module_info_widget_callback,
- uhf_app);
- widget_add_button_element(
- uhf_app->widget,
- GuiButtonTypeRight,
- "Skip",
- uhf_scene_module_info_widget_callback,
- uhf_app);
- }
- }
- }
- return consumed;
- }
- void uhf_scene_module_info_on_exit(void* ctx) {
- UHFApp* uhf_app = ctx;
- // Clear string
- furi_string_free(temp_str);
- // Stop worker
- uhf_worker_stop(uhf_app->worker);
- // clear widget
- widget_reset(uhf_app->widget);
- }
|