HW LED blink integration (#1310)
This commit is contained in:
		| @@ -6,16 +6,47 @@ | |||||||
| #include <toolbox/path.h> | #include <toolbox/path.h> | ||||||
| #include <flipper_format/flipper_format.h> | #include <flipper_format/flipper_format.h> | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_start_cyan = { | ||||||
|  |     &message_blink_start_10, | ||||||
|  |     &message_blink_set_color_cyan, | ||||||
|  |     &message_do_not_reset, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_start_magenta = { | ||||||
|  |     &message_blink_start_10, | ||||||
|  |     &message_blink_set_color_magenta, | ||||||
|  |     &message_do_not_reset, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_set_yellow = { | ||||||
|  |     &message_blink_set_color_yellow, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_set_magenta = { | ||||||
|  |     &message_blink_set_color_magenta, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_stop = { | ||||||
|  |     &message_blink_stop, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
| static const NotificationSequence* ibutton_notification_sequences[] = { | static const NotificationSequence* ibutton_notification_sequences[] = { | ||||||
|     &sequence_error, |     &sequence_error, | ||||||
|     &sequence_success, |     &sequence_success, | ||||||
|     &sequence_blink_cyan_10, |     &sequence_blink_start_cyan, | ||||||
|     &sequence_blink_magenta_10, |     &sequence_blink_start_magenta, | ||||||
|     &sequence_blink_yellow_10, |     &sequence_blink_set_yellow, | ||||||
|  |     &sequence_blink_set_magenta, | ||||||
|     &sequence_set_red_255, |     &sequence_set_red_255, | ||||||
|     &sequence_reset_red, |     &sequence_reset_red, | ||||||
|     &sequence_set_green_255, |     &sequence_set_green_255, | ||||||
|     &sequence_reset_green, |     &sequence_reset_green, | ||||||
|  |     &sequence_blink_stop, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| static void ibutton_make_app_folder(iButton* ibutton) { | static void ibutton_make_app_folder(iButton* ibutton) { | ||||||
|   | |||||||
| @@ -64,13 +64,15 @@ typedef enum { | |||||||
| typedef enum { | typedef enum { | ||||||
|     iButtonNotificationMessageError, |     iButtonNotificationMessageError, | ||||||
|     iButtonNotificationMessageSuccess, |     iButtonNotificationMessageSuccess, | ||||||
|     iButtonNotificationMessageRead, |     iButtonNotificationMessageReadStart, | ||||||
|     iButtonNotificationMessageEmulate, |     iButtonNotificationMessageEmulateStart, | ||||||
|     iButtonNotificationMessageYellowBlink, |     iButtonNotificationMessageYellowBlink, | ||||||
|  |     iButtonNotificationMessageEmulateBlink, | ||||||
|     iButtonNotificationMessageRedOn, |     iButtonNotificationMessageRedOn, | ||||||
|     iButtonNotificationMessageRedOff, |     iButtonNotificationMessageRedOff, | ||||||
|     iButtonNotificationMessageGreenOn, |     iButtonNotificationMessageGreenOn, | ||||||
|     iButtonNotificationMessageGreenOff, |     iButtonNotificationMessageGreenOff, | ||||||
|  |     iButtonNotificationMessageBlinkStop, | ||||||
| } iButtonNotificationMessage; | } iButtonNotificationMessage; | ||||||
|  |  | ||||||
| bool ibutton_file_select(iButton* ibutton); | bool ibutton_file_select(iButton* ibutton); | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| #include "../ibutton_i.h" | #include "../ibutton_i.h" | ||||||
|  | #include "furi/log.h" | ||||||
| #include <dolphin/dolphin.h> | #include <dolphin/dolphin.h> | ||||||
| #include <toolbox/path.h> | #include <toolbox/path.h> | ||||||
|  |  | ||||||
| @@ -85,6 +86,8 @@ void ibutton_scene_emulate_on_enter(void* context) { | |||||||
|     ibutton_worker_emulate_start(ibutton->key_worker, key); |     ibutton_worker_emulate_start(ibutton->key_worker, key); | ||||||
|  |  | ||||||
|     string_clear(key_name); |     string_clear(key_name); | ||||||
|  |  | ||||||
|  |     ibutton_notification_message(ibutton, iButtonNotificationMessageEmulateStart); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool ibutton_scene_emulate_on_event(void* context, SceneManagerEvent event) { | bool ibutton_scene_emulate_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -93,7 +96,6 @@ bool ibutton_scene_emulate_on_event(void* context, SceneManagerEvent event) { | |||||||
|  |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |     if(event.type == SceneManagerEventTypeTick) { | ||||||
|         consumed = true; |         consumed = true; | ||||||
|         ibutton_notification_message(ibutton, iButtonNotificationMessageEmulate); |  | ||||||
|     } else if(event.type == SceneManagerEventTypeCustom) { |     } else if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         consumed = true; |         consumed = true; | ||||||
|         if(event.event == iButtonCustomEventWorkerEmulated) { |         if(event.event == iButtonCustomEventWorkerEmulated) { | ||||||
| @@ -111,4 +113,5 @@ void ibutton_scene_emulate_on_exit(void* context) { | |||||||
|     popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); |     popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); | ||||||
|     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); |     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); | ||||||
|     popup_set_icon(popup, 0, 0, NULL); |     popup_set_icon(popup, 0, 0, NULL); | ||||||
|  |     ibutton_notification_message(ibutton, iButtonNotificationMessageBlinkStop); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -22,6 +22,8 @@ void ibutton_scene_read_on_enter(void* context) { | |||||||
|  |  | ||||||
|     ibutton_worker_read_set_callback(worker, ibutton_scene_read_callback, ibutton); |     ibutton_worker_read_set_callback(worker, ibutton_scene_read_callback, ibutton); | ||||||
|     ibutton_worker_read_start(worker, key); |     ibutton_worker_read_start(worker, key); | ||||||
|  |  | ||||||
|  |     ibutton_notification_message(ibutton, iButtonNotificationMessageReadStart); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool ibutton_scene_read_on_event(void* context, SceneManagerEvent event) { | bool ibutton_scene_read_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -31,7 +33,6 @@ bool ibutton_scene_read_on_event(void* context, SceneManagerEvent event) { | |||||||
|  |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |     if(event.type == SceneManagerEventTypeTick) { | ||||||
|         consumed = true; |         consumed = true; | ||||||
|         ibutton_notification_message(ibutton, iButtonNotificationMessageRead); |  | ||||||
|     } else if(event.type == SceneManagerEventTypeCustom) { |     } else if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         consumed = true; |         consumed = true; | ||||||
|         if(event.event == iButtonCustomEventWorkerRead) { |         if(event.event == iButtonCustomEventWorkerRead) { | ||||||
| @@ -69,4 +70,6 @@ void ibutton_scene_read_on_exit(void* context) { | |||||||
|     popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); |     popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); | ||||||
|     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); |     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); | ||||||
|     popup_set_icon(popup, 0, 0, NULL); |     popup_set_icon(popup, 0, 0, NULL); | ||||||
|  |  | ||||||
|  |     ibutton_notification_message(ibutton, iButtonNotificationMessageBlinkStop); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -80,14 +80,14 @@ void ibutton_scene_write_on_enter(void* context) { | |||||||
|  |  | ||||||
|     popup_set_icon(popup, 2, 10, &I_iButtonKey_49x44); |     popup_set_icon(popup, 2, 10, &I_iButtonKey_49x44); | ||||||
|  |  | ||||||
|     scene_manager_set_scene_state( |  | ||||||
|         ibutton->scene_manager, iButtonSceneWrite, iButtonSceneWriteStateDefault); |  | ||||||
|     view_dispatcher_switch_to_view(ibutton->view_dispatcher, iButtonViewPopup); |     view_dispatcher_switch_to_view(ibutton->view_dispatcher, iButtonViewPopup); | ||||||
|  |  | ||||||
|     ibutton_worker_write_set_callback(worker, ibutton_scene_write_callback, ibutton); |     ibutton_worker_write_set_callback(worker, ibutton_scene_write_callback, ibutton); | ||||||
|     ibutton_worker_write_start(worker, key); |     ibutton_worker_write_start(worker, key); | ||||||
|  |  | ||||||
|     string_clear(key_name); |     string_clear(key_name); | ||||||
|  |  | ||||||
|  |     ibutton_notification_message(ibutton, iButtonNotificationMessageEmulateStart); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool ibutton_scene_write_on_event(void* context, SceneManagerEvent event) { | bool ibutton_scene_write_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -100,21 +100,13 @@ bool ibutton_scene_write_on_event(void* context, SceneManagerEvent event) { | |||||||
|         if((event.event == iButtonWorkerWriteOK) || (event.event == iButtonWorkerWriteSameKey)) { |         if((event.event == iButtonWorkerWriteOK) || (event.event == iButtonWorkerWriteSameKey)) { | ||||||
|             scene_manager_next_scene(scene_manager, iButtonSceneWriteSuccess); |             scene_manager_next_scene(scene_manager, iButtonSceneWriteSuccess); | ||||||
|         } else if(event.event == iButtonWorkerWriteNoDetect) { |         } else if(event.event == iButtonWorkerWriteNoDetect) { | ||||||
|             scene_manager_set_scene_state( |             ibutton_notification_message(ibutton, iButtonNotificationMessageEmulateBlink); | ||||||
|                 scene_manager, iButtonSceneWrite, iButtonSceneWriteStateDefault); |  | ||||||
|         } else if(event.event == iButtonWorkerWriteCannotWrite) { |         } else if(event.event == iButtonWorkerWriteCannotWrite) { | ||||||
|             scene_manager_set_scene_state( |             ibutton_notification_message(ibutton, iButtonNotificationMessageYellowBlink); | ||||||
|                 scene_manager, iButtonSceneWrite, iButtonSceneWriteStateBlinkYellow); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     } else if(event.type == SceneManagerEventTypeTick) { |     } else if(event.type == SceneManagerEventTypeTick) { | ||||||
|         consumed = true; |         consumed = true; | ||||||
|         if(scene_manager_get_scene_state(scene_manager, iButtonSceneWrite) == |  | ||||||
|            iButtonSceneWriteStateBlinkYellow) { |  | ||||||
|             ibutton_notification_message(ibutton, iButtonNotificationMessageYellowBlink); |  | ||||||
|         } else { |  | ||||||
|             ibutton_notification_message(ibutton, iButtonNotificationMessageEmulate); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return consumed; |     return consumed; | ||||||
| @@ -127,4 +119,6 @@ void ibutton_scene_write_on_exit(void* context) { | |||||||
|     popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); |     popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); | ||||||
|     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); |     popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); | ||||||
|     popup_set_icon(popup, 0, 0, NULL); |     popup_set_icon(popup, 0, 0, NULL); | ||||||
|  |  | ||||||
|  |     ibutton_notification_message(ibutton, iButtonNotificationMessageBlinkStop); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,6 +1,19 @@ | |||||||
| #include "lfrfid_app_scene_emulate.h" | #include "lfrfid_app_scene_emulate.h" | ||||||
|  | #include "furi/common_defines.h" | ||||||
| #include <dolphin/dolphin.h> | #include <dolphin/dolphin.h> | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_start_magenta = { | ||||||
|  |     &message_blink_start_10, | ||||||
|  |     &message_blink_set_color_magenta, | ||||||
|  |     &message_do_not_reset, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_stop = { | ||||||
|  |     &message_blink_stop, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
| void LfRfidAppSceneEmulate::on_enter(LfRfidApp* app, bool /* need_restore */) { | void LfRfidAppSceneEmulate::on_enter(LfRfidApp* app, bool /* need_restore */) { | ||||||
|     string_init(data_string); |     string_init(data_string); | ||||||
|  |  | ||||||
| @@ -23,15 +36,14 @@ void LfRfidAppSceneEmulate::on_enter(LfRfidApp* app, bool /* need_restore */) { | |||||||
|  |  | ||||||
|     app->view_controller.switch_to<PopupVM>(); |     app->view_controller.switch_to<PopupVM>(); | ||||||
|     app->worker.start_emulate(); |     app->worker.start_emulate(); | ||||||
|  |  | ||||||
|  |     notification_message(app->notification, &sequence_blink_start_magenta); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool LfRfidAppSceneEmulate::on_event(LfRfidApp* app, LfRfidApp::Event* event) { | bool LfRfidAppSceneEmulate::on_event(LfRfidApp* app, LfRfidApp::Event* event) { | ||||||
|  |     UNUSED(app); | ||||||
|  |     UNUSED(event); | ||||||
|     bool consumed = false; |     bool consumed = false; | ||||||
|  |  | ||||||
|     if(event->type == LfRfidApp::EventType::Tick) { |  | ||||||
|         notification_message(app->notification, &sequence_blink_magenta_10); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return consumed; |     return consumed; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -39,4 +51,5 @@ void LfRfidAppSceneEmulate::on_exit(LfRfidApp* app) { | |||||||
|     app->view_controller.get<PopupVM>()->clean(); |     app->view_controller.get<PopupVM>()->clean(); | ||||||
|     app->worker.stop_emulate(); |     app->worker.stop_emulate(); | ||||||
|     string_clear(data_string); |     string_clear(data_string); | ||||||
|  |     notification_message(app->notification, &sequence_blink_stop); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -164,6 +164,26 @@ void nfc_text_store_clear(Nfc* nfc) { | |||||||
|     memset(nfc->text_store, 0, sizeof(nfc->text_store)); |     memset(nfc->text_store, 0, sizeof(nfc->text_store)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_start_blue = { | ||||||
|  |     &message_blink_start_10, | ||||||
|  |     &message_blink_set_color_blue, | ||||||
|  |     &message_do_not_reset, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const NotificationSequence sequence_blink_stop = { | ||||||
|  |     &message_blink_stop, | ||||||
|  |     NULL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | void nfc_blink_start(Nfc* nfc) { | ||||||
|  |     notification_message(nfc->notifications, &sequence_blink_start_blue); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void nfc_blink_stop(Nfc* nfc) { | ||||||
|  |     notification_message(nfc->notifications, &sequence_blink_stop); | ||||||
|  | } | ||||||
|  |  | ||||||
| int32_t nfc_app(void* p) { | int32_t nfc_app(void* p) { | ||||||
|     Nfc* nfc = nfc_alloc(); |     Nfc* nfc = nfc_alloc(); | ||||||
|     char* args = p; |     char* args = p; | ||||||
|   | |||||||
| @@ -76,3 +76,7 @@ int32_t nfc_task(void* p); | |||||||
| void nfc_text_store_set(Nfc* nfc, const char* text, ...); | void nfc_text_store_set(Nfc* nfc, const char* text, ...); | ||||||
|  |  | ||||||
| void nfc_text_store_clear(Nfc* nfc); | void nfc_text_store_clear(Nfc* nfc); | ||||||
|  |  | ||||||
|  | void nfc_blink_start(Nfc* nfc); | ||||||
|  |  | ||||||
|  | void nfc_blink_stop(Nfc* nfc); | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| #include "../nfc_i.h" | #include "../nfc_i.h" | ||||||
|  | #include "furi/common_defines.h" | ||||||
|  |  | ||||||
| void nfc_scene_emulate_apdu_sequence_on_enter(void* context) { | void nfc_scene_emulate_apdu_sequence_on_enter(void* context) { | ||||||
|     Nfc* nfc = context; |     Nfc* nfc = context; | ||||||
| @@ -10,17 +11,14 @@ void nfc_scene_emulate_apdu_sequence_on_enter(void* context) { | |||||||
|     // Setup and start worker |     // Setup and start worker | ||||||
|     view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewPopup); |     view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewPopup); | ||||||
|     nfc_worker_start(nfc->worker, NfcWorkerStateEmulateApdu, &nfc->dev->dev_data, NULL, nfc); |     nfc_worker_start(nfc->worker, NfcWorkerStateEmulateApdu, &nfc->dev->dev_data, NULL, nfc); | ||||||
|  |  | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_emulate_apdu_sequence_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_emulate_apdu_sequence_on_event(void* context, SceneManagerEvent event) { | ||||||
|     Nfc* nfc = context; |     UNUSED(context); | ||||||
|  |     UNUSED(event); | ||||||
|     bool consumed = false; |     bool consumed = false; | ||||||
|  |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |  | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return consumed; |     return consumed; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -31,4 +29,6 @@ void nfc_scene_emulate_apdu_sequence_on_exit(void* context) { | |||||||
|     nfc_worker_stop(nfc->worker); |     nfc_worker_stop(nfc->worker); | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,6 +32,7 @@ void nfc_scene_emulate_mifare_classic_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_emulate_mifare_classic_worker_callback, |         nfc_emulate_mifare_classic_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_emulate_mifare_classic_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_emulate_mifare_classic_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -39,7 +40,6 @@ bool nfc_scene_emulate_mifare_classic_on_event(void* context, SceneManagerEvent | |||||||
|     bool consumed = false; |     bool consumed = false; | ||||||
|  |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |     if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } else if(event.type == SceneManagerEventTypeBack) { |     } else if(event.type == SceneManagerEventTypeBack) { | ||||||
|         // Stop worker |         // Stop worker | ||||||
| @@ -61,4 +61,6 @@ void nfc_scene_emulate_mifare_classic_on_exit(void* context) { | |||||||
|  |  | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,6 +32,7 @@ void nfc_scene_emulate_mifare_ul_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_emulate_mifare_ul_worker_callback, |         nfc_emulate_mifare_ul_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_emulate_mifare_ul_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_emulate_mifare_ul_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -39,7 +40,6 @@ bool nfc_scene_emulate_mifare_ul_on_event(void* context, SceneManagerEvent event | |||||||
|     bool consumed = false; |     bool consumed = false; | ||||||
|  |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |     if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } else if(event.type == SceneManagerEventTypeBack) { |     } else if(event.type == SceneManagerEventTypeBack) { | ||||||
|         // Stop worker |         // Stop worker | ||||||
| @@ -61,4 +61,6 @@ void nfc_scene_emulate_mifare_ul_on_exit(void* context) { | |||||||
|  |  | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -80,6 +80,8 @@ void nfc_scene_emulate_uid_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_emulate_uid_worker_callback, |         nfc_emulate_uid_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |  | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_emulate_uid_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_emulate_uid_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -89,7 +91,6 @@ bool nfc_scene_emulate_uid_on_event(void* context, SceneManagerEvent event) { | |||||||
|     bool consumed = false; |     bool consumed = false; | ||||||
|  |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |     if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } else if(event.type == SceneManagerEventTypeCustom) { |     } else if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         if(event.event == NfcCustomEventWorkerExit) { |         if(event.event == NfcCustomEventWorkerExit) { | ||||||
| @@ -141,4 +142,6 @@ void nfc_scene_emulate_uid_on_exit(void* context) { | |||||||
|     widget_reset(nfc->widget); |     widget_reset(nfc->widget); | ||||||
|     text_box_reset(nfc->text_box); |     text_box_reset(nfc->text_box); | ||||||
|     string_reset(nfc->text_box_store); |     string_reset(nfc->text_box_store); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -20,6 +20,8 @@ void nfc_scene_read_card_on_enter(void* context) { | |||||||
|     view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewPopup); |     view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewPopup); | ||||||
|     nfc_worker_start( |     nfc_worker_start( | ||||||
|         nfc->worker, NfcWorkerStateDetect, &nfc->dev->dev_data, nfc_read_card_worker_callback, nfc); |         nfc->worker, NfcWorkerStateDetect, &nfc->dev->dev_data, nfc_read_card_worker_callback, nfc); | ||||||
|  |  | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_read_card_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_read_card_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -32,7 +34,6 @@ bool nfc_scene_read_card_on_event(void* context, SceneManagerEvent event) { | |||||||
|             consumed = true; |             consumed = true; | ||||||
|         } |         } | ||||||
|     } else if(event.type == SceneManagerEventTypeTick) { |     } else if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } |     } | ||||||
|     return consumed; |     return consumed; | ||||||
| @@ -45,4 +46,6 @@ void nfc_scene_read_card_on_exit(void* context) { | |||||||
|     nfc_worker_stop(nfc->worker); |     nfc_worker_stop(nfc->worker); | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ void nfc_scene_read_emv_app_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_read_emv_app_worker_callback, |         nfc_read_emv_app_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_read_emv_app_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_read_emv_app_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -38,7 +39,6 @@ bool nfc_scene_read_emv_app_on_event(void* context, SceneManagerEvent event) { | |||||||
|             consumed = true; |             consumed = true; | ||||||
|         } |         } | ||||||
|     } else if(event.type == SceneManagerEventTypeTick) { |     } else if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -53,4 +53,6 @@ void nfc_scene_read_emv_app_on_exit(void* context) { | |||||||
|  |  | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,6 +26,8 @@ void nfc_scene_read_emv_data_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_read_emv_data_worker_callback, |         nfc_read_emv_data_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |  | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_read_emv_data_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_read_emv_data_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -40,7 +42,6 @@ bool nfc_scene_read_emv_data_on_event(void* context, SceneManagerEvent event) { | |||||||
|             consumed = true; |             consumed = true; | ||||||
|         } |         } | ||||||
|     } else if(event.type == SceneManagerEventTypeTick) { |     } else if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } |     } | ||||||
|     return consumed; |     return consumed; | ||||||
| @@ -53,4 +54,6 @@ void nfc_scene_read_emv_data_on_exit(void* context) { | |||||||
|     nfc_worker_stop(nfc->worker); |     nfc_worker_stop(nfc->worker); | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -33,17 +33,15 @@ void nfc_scene_read_mifare_classic_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_read_mifare_classic_worker_callback, |         nfc_read_mifare_classic_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |  | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_read_mifare_classic_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_read_mifare_classic_on_event(void* context, SceneManagerEvent event) { | ||||||
|     Nfc* nfc = context; |     Nfc* nfc = context; | ||||||
|     bool consumed = false; |     bool consumed = false; | ||||||
|  |  | ||||||
|     uint32_t state = scene_manager_get_scene_state(nfc->scene_manager, NfcSceneReadMifareClassic); |  | ||||||
|     if(event.type == SceneManagerEventTypeTick) { |     if(event.type == SceneManagerEventTypeTick) { | ||||||
|         if(state == NfcSceneReadMifareClassicStateInProgress) { |  | ||||||
|             notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         } |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } else if(event.type == SceneManagerEventTypeCustom) { |     } else if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         if(event.event == NfcCustomEventDictAttackDone) { |         if(event.event == NfcCustomEventDictAttackDone) { | ||||||
| @@ -70,12 +68,14 @@ bool nfc_scene_read_mifare_classic_on_event(void* context, SceneManagerEvent eve | |||||||
|         } else if(event.event == NfcWorkerEventSuccess) { |         } else if(event.event == NfcWorkerEventSuccess) { | ||||||
|             scene_manager_set_scene_state( |             scene_manager_set_scene_state( | ||||||
|                 nfc->scene_manager, NfcSceneReadMifareClassic, NfcSceneReadMifareClassicStateDone); |                 nfc->scene_manager, NfcSceneReadMifareClassic, NfcSceneReadMifareClassicStateDone); | ||||||
|  |             nfc_blink_stop(nfc); | ||||||
|             notification_message(nfc->notifications, &sequence_success); |             notification_message(nfc->notifications, &sequence_success); | ||||||
|             dict_attack_set_result(nfc->dict_attack, true); |             dict_attack_set_result(nfc->dict_attack, true); | ||||||
|             consumed = true; |             consumed = true; | ||||||
|         } else if(event.event == NfcWorkerEventFail) { |         } else if(event.event == NfcWorkerEventFail) { | ||||||
|             scene_manager_set_scene_state( |             scene_manager_set_scene_state( | ||||||
|                 nfc->scene_manager, NfcSceneReadMifareClassic, NfcSceneReadMifareClassicStateDone); |                 nfc->scene_manager, NfcSceneReadMifareClassic, NfcSceneReadMifareClassicStateDone); | ||||||
|  |             nfc_blink_stop(nfc); | ||||||
|             dict_attack_set_result(nfc->dict_attack, false); |             dict_attack_set_result(nfc->dict_attack, false); | ||||||
|             consumed = true; |             consumed = true; | ||||||
|         } else if(event.event == NfcWorkerEventNoDictFound) { |         } else if(event.event == NfcWorkerEventNoDictFound) { | ||||||
| @@ -91,4 +91,6 @@ void nfc_scene_read_mifare_classic_on_exit(void* context) { | |||||||
|     // Stop worker |     // Stop worker | ||||||
|     nfc_worker_stop(nfc->worker); |     nfc_worker_stop(nfc->worker); | ||||||
|     dict_attack_reset(nfc->dict_attack); |     dict_attack_reset(nfc->dict_attack); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ void nfc_scene_read_mifare_desfire_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_read_mifare_desfire_worker_callback, |         nfc_read_mifare_desfire_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_read_mifare_desfire_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_read_mifare_desfire_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -33,12 +34,11 @@ bool nfc_scene_read_mifare_desfire_on_event(void* context, SceneManagerEvent eve | |||||||
|     if(event.type == SceneManagerEventTypeCustom) { |     if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         if(event.event == NfcCustomEventWorkerExit) { |         if(event.event == NfcCustomEventWorkerExit) { | ||||||
|             notification_message(nfc->notifications, &sequence_success); |             notification_message(nfc->notifications, &sequence_success); | ||||||
|  |             DOLPHIN_DEED(DolphinDeedNfcReadSuccess); | ||||||
|             scene_manager_next_scene(nfc->scene_manager, NfcSceneReadMifareDesfireSuccess); |             scene_manager_next_scene(nfc->scene_manager, NfcSceneReadMifareDesfireSuccess); | ||||||
|             consumed = true; |             consumed = true; | ||||||
|         } |         } | ||||||
|     } else if(event.type == SceneManagerEventTypeTick) { |     } else if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         DOLPHIN_DEED(DolphinDeedNfcReadSuccess); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } |     } | ||||||
|     return consumed; |     return consumed; | ||||||
| @@ -51,4 +51,6 @@ void nfc_scene_read_mifare_desfire_on_exit(void* context) { | |||||||
|     nfc_worker_stop(nfc->worker); |     nfc_worker_stop(nfc->worker); | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ void nfc_scene_read_mifare_ul_on_enter(void* context) { | |||||||
|         &nfc->dev->dev_data, |         &nfc->dev->dev_data, | ||||||
|         nfc_read_mifare_ul_worker_callback, |         nfc_read_mifare_ul_worker_callback, | ||||||
|         nfc); |         nfc); | ||||||
|  |     nfc_blink_start(nfc); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool nfc_scene_read_mifare_ul_on_event(void* context, SceneManagerEvent event) { | bool nfc_scene_read_mifare_ul_on_event(void* context, SceneManagerEvent event) { | ||||||
| @@ -36,7 +37,6 @@ bool nfc_scene_read_mifare_ul_on_event(void* context, SceneManagerEvent event) { | |||||||
|             consumed = true; |             consumed = true; | ||||||
|         } |         } | ||||||
|     } else if(event.type == SceneManagerEventTypeTick) { |     } else if(event.type == SceneManagerEventTypeTick) { | ||||||
|         notification_message(nfc->notifications, &sequence_blink_blue_10); |  | ||||||
|         consumed = true; |         consumed = true; | ||||||
|     } |     } | ||||||
|     return consumed; |     return consumed; | ||||||
| @@ -49,4 +49,6 @@ void nfc_scene_read_mifare_ul_on_exit(void* context) { | |||||||
|     nfc_worker_stop(nfc->worker); |     nfc_worker_stop(nfc->worker); | ||||||
|     // Clear view |     // Clear view | ||||||
|     popup_reset(nfc->popup); |     popup_reset(nfc->popup); | ||||||
|  |  | ||||||
|  |     nfc_blink_stop(nfc); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user