DerSkythe пре 3 година
родитељ
комит
7d68c9ac56

+ 4 - 1
helpers/subbrute_worker.c

@@ -185,8 +185,11 @@ bool subbrute_worker_start(SubBruteWorker* instance) {
 void subbrute_worker_stop(SubBruteWorker* instance) {
     furi_assert(instance);
 
-    instance->worker_running = false;
+    if (!instance->worker_running) {
+        return;
+    }
 
+    instance->worker_running = false;
     furi_thread_join(instance->thread);
 
     furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate);

+ 2 - 4
scenes/subbrute_scene_run_attack.c

@@ -28,9 +28,8 @@ void subbrute_scene_run_attack_on_exit(void* context) {
     furi_assert(context);
     SubBruteState* instance = (SubBruteState*)context;
 
-    subbrute_worker_stop(instance->worker);
-
     notification_message(instance->notifications, &sequence_blink_stop);
+    subbrute_worker_stop(instance->worker);
 }
 
 void subbrute_scene_run_attack_on_enter(void* context) {
@@ -72,12 +71,11 @@ bool subbrute_scene_run_attack_on_event(void* context, SceneManagerEvent event)
             notification_message(instance->notifications, &sequence_display_backlight_on);
             notification_message(instance->notifications, &sequence_double_vibro);
 
-
             scene_manager_next_scene(instance->scene_manager, SubBruteSceneSetupAttack);
         } else if(
             event.event == SubBruteCustomEventTypeTransmitNotStarted ||
             event.event == SubBruteCustomEventTypeBackPressed) {
-            if (subbrute_worker_is_running(instance->worker)) {
+            if(subbrute_worker_is_running(instance->worker)) {
                 // Notify
                 notification_message(instance->notifications, &sequence_single_vibro);
             }

+ 5 - 3
scenes/subbrute_scene_setup_attack.c

@@ -27,16 +27,17 @@ void subbrute_scene_setup_attack_on_enter(void* context) {
     SubBruteState* instance = (SubBruteState*)context;
     SubBruteAttackView* view = instance->view_attack;
 
+    notification_message(instance->notifications, &sequence_reset_vibro);
+
 #ifdef FURI_DEBUG
-    FURI_LOG_D(TAG, "Enter Attack: %d", instance->device->attack);
+    FURI_LOG_D(TAG, "Enter Attack: %s", subbrute_protocol_name(instance->device->attack));
 #endif
 
     subbrute_worker_set_callback(
         instance->worker, subbrute_scene_setup_attack_device_state_changed, context);
-
     if(subbrute_worker_is_running(instance->worker)) {
-        instance->device->key_index = subbrute_worker_get_step(instance->worker);
         subbrute_worker_stop(instance->worker);
+        instance->device->key_index = subbrute_worker_get_step(instance->worker);
     }
 
     subbrute_attack_view_init_values(
@@ -59,6 +60,7 @@ void subbrute_scene_setup_attack_on_exit(void* context) {
     SubBruteState* instance = (SubBruteState*)context;
     subbrute_worker_stop(instance->worker);
     notification_message(instance->notifications, &sequence_blink_stop);
+    notification_message(instance->notifications, &sequence_reset_vibro);
 }
 
 bool subbrute_scene_setup_attack_on_event(void* context, SceneManagerEvent event) {