From 9b14e7745a25a778c7068453f619ce05b0b770d5 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 19 Oct 2023 12:53:05 +0100 Subject: [PATCH] BLE Spam SwiftPair display name menu --- .../external/ble_spam/protocols/swiftpair.c | 63 +++++++++++++++++++ .../ble_spam/protocols/swiftpair_scenes.h | 1 + 2 files changed, 64 insertions(+) diff --git a/applications/external/ble_spam/protocols/swiftpair.c b/applications/external/ble_spam/protocols/swiftpair.c index 2728f2887..4f7bc82bf 100644 --- a/applications/external/ble_spam/protocols/swiftpair.c +++ b/applications/external/ble_spam/protocols/swiftpair.c @@ -47,8 +47,71 @@ static void swiftpair_make_packet(uint8_t* _size, uint8_t** _packet, const Proto *_packet = packet; } +enum { + ConfigDisplayName, +}; + +static void config_callback(void* _ctx, uint32_t index) { + Ctx* ctx = _ctx; + scene_manager_set_scene_state(ctx->scene_manager, SceneConfig, index); + switch(index) { + case ConfigDisplayName: + scene_manager_next_scene(ctx->scene_manager, SceneSwiftpairDisplayName); + default: + break; + } +} + +static uint8_t swiftpair_config_list(Ctx* ctx) { + SwiftpairCfg* cfg = &ctx->attack->payload.cfg.swiftpair; + VariableItemList* list = ctx->variable_item_list; + uint8_t item_count = 0; + VariableItem* item; + + item_count++; + item = variable_item_list_add(list, "Display Name", 0, NULL, NULL); + variable_item_set_current_value_text( + item, cfg->display_name[0] != '\0' ? cfg->display_name : "Random"); + + variable_item_list_set_enter_callback(list, config_callback, ctx); + + return item_count; +} + const Protocol protocol_swiftpair = { .icon = &I_windows, .get_name = swiftpair_get_name, .make_packet = swiftpair_make_packet, + .config_list = swiftpair_config_list, }; + +static void display_name_callback(void* _ctx) { + Ctx* ctx = _ctx; + scene_manager_previous_scene(ctx->scene_manager); +} + +void scene_swiftpair_display_name_on_enter(void* _ctx) { + Ctx* ctx = _ctx; + SwiftpairCfg* cfg = &ctx->attack->payload.cfg.swiftpair; + TextInput* text_input = ctx->text_input; + text_input_reset(text_input); + + text_input_set_header_text(text_input, "Leave empty for random"); + + text_input_set_result_callback( + text_input, display_name_callback, ctx, cfg->display_name, sizeof(cfg->display_name), true); + + text_input_set_minimum_length(text_input, 0); + + view_dispatcher_switch_to_view(ctx->view_dispatcher, ViewTextInput); +} + +bool scene_swiftpair_display_name_on_event(void* _ctx, SceneManagerEvent event) { + UNUSED(_ctx); + UNUSED(event); + return false; +} + +void scene_swiftpair_display_name_on_exit(void* _ctx) { + UNUSED(_ctx); +} diff --git a/applications/external/ble_spam/protocols/swiftpair_scenes.h b/applications/external/ble_spam/protocols/swiftpair_scenes.h index e69de29bb..a31058ca4 100644 --- a/applications/external/ble_spam/protocols/swiftpair_scenes.h +++ b/applications/external/ble_spam/protocols/swiftpair_scenes.h @@ -0,0 +1 @@ +ADD_SCENE(swiftpair_display_name, SwiftpairDisplayName)