| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- #include "callback/alloc.h"
- #include <callback/callback.h>
- #include <flip_storage/flip_wifi_storage.h>
- bool alloc_playlist(void *context)
- {
- FlipWiFiApp *app = (FlipWiFiApp *)context;
- furi_check(app);
- if (!wifi_playlist)
- {
- wifi_playlist = (WiFiPlaylist *)malloc(sizeof(WiFiPlaylist));
- if (!wifi_playlist)
- {
- FURI_LOG_E(TAG, "Failed to allocate playlist");
- return false;
- }
- wifi_playlist->count = 0;
- }
- // Load the playlist from storage
- if (!load_playlist(wifi_playlist))
- {
- FURI_LOG_E(TAG, "Failed to load playlist");
- // playlist is empty?
- submenu_reset(app->submenu_wifi);
- submenu_set_header(app->submenu_wifi, "Saved APs");
- submenu_add_item(app->submenu_wifi, "[Add Network]", FlipWiFiSubmenuIndexWiFiSavedAddSSID, callback_submenu_choices, app);
- }
- else
- {
- // Update the submenu
- callback_redraw_submenu_saved(app);
- }
- return true;
- }
- bool alloc_submenus(void *context, uint32_t view)
- {
- FlipWiFiApp *app = (FlipWiFiApp *)context;
- furi_check(app);
- switch (view)
- {
- case FlipWiFiViewSubmenuScan:
- if (!app->submenu_wifi)
- {
- if (!easy_flipper_set_submenu(&app->submenu_wifi, FlipWiFiViewSubmenu, "WiFi Nearby", callback_to_submenu_main, &app->view_dispatcher))
- {
- return false;
- }
- if (!app->submenu_wifi)
- {
- FURI_LOG_E(TAG, "Failed to allocate submenu for WiFi Scan");
- return false;
- }
- }
- return true;
- case FlipWiFiViewSubmenuSaved:
- if (!app->submenu_wifi)
- {
- if (!easy_flipper_set_submenu(&app->submenu_wifi, FlipWiFiViewSubmenu, "Saved APs", callback_to_submenu_main, &app->view_dispatcher))
- {
- return false;
- }
- if (!app->submenu_wifi)
- {
- FURI_LOG_E(TAG, "Failed to allocate submenu for WiFi Saved");
- return false;
- }
- if (!alloc_playlist(app))
- {
- FURI_LOG_E(TAG, "Failed to allocate playlist");
- return false;
- }
- }
- return true;
- case FlipWiFiViewSubmenuCommands:
- if (!app->submenu_wifi)
- {
- if (!easy_flipper_set_submenu(&app->submenu_wifi, FlipWiFiViewSubmenu, "Fast Commands", callback_to_submenu_main, &app->view_dispatcher))
- {
- return false;
- }
- if (!app->submenu_wifi)
- {
- FURI_LOG_E(TAG, "Failed to allocate submenu for Commands");
- return false;
- }
- // PING, LIST, WIFI/LIST, IP/ADDRESS, and WIFI/IP.
- submenu_add_item(app->submenu_wifi, "[CUSTOM]", FlipWiFiSubmenuIndexFastCommandStart + 0, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "PING", FlipWiFiSubmenuIndexFastCommandStart + 1, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "LIST", FlipWiFiSubmenuIndexFastCommandStart + 2, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "IP/ADDRESS", FlipWiFiSubmenuIndexFastCommandStart + 3, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "WIFI/IP", FlipWiFiSubmenuIndexFastCommandStart + 4, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "WIFI/AP", FlipWiFiSubmenuIndexFastCommandStart + 5, callback_submenu_choices, app);
- }
- return true;
- case FlipWiFiViewSubmenuAP:
- if (!app->submenu_wifi)
- {
- if (!easy_flipper_set_submenu(&app->submenu_wifi, FlipWiFiViewSubmenu, "AP Mode", callback_to_submenu_main, &app->view_dispatcher))
- {
- return false;
- }
- if (!app->submenu_wifi)
- {
- FURI_LOG_E(TAG, "Failed to allocate submenu for AP Mode");
- return false;
- }
- // start, set SSID, set HTML
- submenu_add_item(app->submenu_wifi, "Start AP", FlipWiFiSubmenuIndexWiFiAPStart, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "Set SSID", FlipWiFiSubmenuIndexWiFiAPSetSSID, callback_submenu_choices, app);
- submenu_add_item(app->submenu_wifi, "Change HTML", FlipWiFiSubmenuIndexWiFiAPSetHTML, callback_submenu_choices, app);
- }
- return true;
- }
- return false;
- }
- bool alloc_text_box(FlipWiFiApp *app)
- {
- furi_check(app, "FlipWiFiApp is NULL");
- if (app->textbox)
- {
- FURI_LOG_E(TAG, "Text box already allocated");
- return false;
- }
- if (!easy_flipper_set_text_box(
- &app->textbox,
- FlipWiFiViewWiFiAP,
- app->fhttp->last_response_str && furi_string_size(app->fhttp->last_response_str) > 0 ? (char *)furi_string_get_cstr(app->fhttp->last_response_str) : "AP Connected... please wait",
- false,
- callback_submenu_ap,
- &app->view_dispatcher))
- {
- FURI_LOG_E(TAG, "Failed to allocate text box");
- return false;
- }
- if (app->timer == NULL)
- {
- app->timer = furi_timer_alloc(callback_timer_callback, FuriTimerTypePeriodic, app);
- }
- furi_timer_start(app->timer, 250);
- return app->textbox != NULL;
- }
- bool alloc_text_inputs(void *context, uint32_t view)
- {
- FlipWiFiApp *app = (FlipWiFiApp *)context;
- furi_check(app);
- app->uart_text_input_buffer_size = MAX_SSID_LENGTH;
- if (!app->uart_text_input_buffer)
- {
- if (!easy_flipper_set_buffer(&app->uart_text_input_buffer, app->uart_text_input_buffer_size))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input buffer");
- return false;
- }
- if (!app->uart_text_input_buffer)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input buffer");
- return false;
- }
- }
- if (!app->uart_text_input_temp_buffer)
- {
- if (!easy_flipper_set_buffer(&app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input temp buffer");
- return false;
- }
- if (!app->uart_text_input_temp_buffer)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input temp buffer");
- return false;
- }
- }
- switch (view)
- {
- case FlipWiFiViewTextInputScan:
- if (!app->uart_text_input)
- {
- if (!easy_flipper_set_uart_text_input(&app->uart_text_input, FlipWiFiViewTextInput, "Enter WiFi Password", app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size, callback_text_updated_password_scan, callback_to_submenu_scan, &app->view_dispatcher, app))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Scan");
- return false;
- }
- if (!app->uart_text_input)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Scan");
- return false;
- }
- }
- return true;
- case FlipWiFiViewTextInputSaved:
- if (!app->uart_text_input)
- {
- if (!easy_flipper_set_uart_text_input(&app->uart_text_input, FlipWiFiViewTextInput, "Enter WiFi Password", app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size, callback_text_updated_password_saved, callback_to_submenu_saved, &app->view_dispatcher, app))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Saved");
- return false;
- }
- if (!app->uart_text_input)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Saved");
- return false;
- }
- }
- return true;
- case FlipWiFiViewTextInputSavedAddSSID:
- if (!app->uart_text_input)
- {
- if (!easy_flipper_set_uart_text_input(&app->uart_text_input, FlipWiFiViewTextInput, "Enter SSID", app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size, callback_text_updated_add_ssid, callback_to_submenu_saved, &app->view_dispatcher, app))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Saved Add SSID");
- return false;
- }
- if (!app->uart_text_input)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Saved Add SSID");
- return false;
- }
- }
- return true;
- case FlipWiFiViewTextInputSavedAddPassword:
- if (!app->uart_text_input)
- {
- if (!easy_flipper_set_uart_text_input(&app->uart_text_input, FlipWiFiViewTextInput, "Enter Password", app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size, callback_text_updated_add_password, callback_to_submenu_saved, &app->view_dispatcher, app))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Saved Add Password");
- return false;
- }
- if (!app->uart_text_input)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for WiFi Saved Add Password");
- return false;
- }
- }
- return true;
- case FlipWiFiSubmenuIndexFastCommandStart:
- if (!app->uart_text_input)
- {
- if (!easy_flipper_set_uart_text_input(&app->uart_text_input, FlipWiFiViewTextInput, "Enter Command", app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size, callback_custom_command_updated, callback_to_submenu_saved, &app->view_dispatcher, app))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for Fast Command");
- return false;
- }
- if (!app->uart_text_input)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for Fast Command");
- return false;
- }
- }
- return true;
- case FlipWiFiSubmenuIndexWiFiAPSetSSID:
- if (!app->uart_text_input)
- {
- if (!easy_flipper_set_uart_text_input(&app->uart_text_input, FlipWiFiViewTextInput, "Enter AP SSID", app->uart_text_input_temp_buffer, app->uart_text_input_buffer_size, callback_ap_ssid_updated, callback_to_submenu_saved, &app->view_dispatcher, app))
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for Fast Command");
- return false;
- }
- if (!app->uart_text_input)
- {
- FURI_LOG_E(TAG, "Failed to allocate text input for Fast Command");
- return false;
- }
- }
- return true;
- }
- return false;
- }
- bool alloc_views(void *context, uint32_t view)
- {
- FlipWiFiApp *app = (FlipWiFiApp *)context;
- furi_check(app);
- switch (view)
- {
- case FlipWiFiViewWiFiScan:
- if (!app->view_wifi)
- {
- if (!easy_flipper_set_view(&app->view_wifi, FlipWiFiViewGeneric, callback_view_draw_callback_scan, callback_view_input_callback_scan, callback_to_submenu_scan, &app->view_dispatcher, app))
- {
- return false;
- }
- if (!app->view_wifi)
- {
- FURI_LOG_E(TAG, "Failed to allocate view for WiFi Scan");
- return false;
- }
- }
- return true;
- case FlipWiFiViewWiFiSaved:
- if (!app->view_wifi)
- {
- if (!easy_flipper_set_view(&app->view_wifi, FlipWiFiViewGeneric, callback_view_draw_callback_saved, callback_view_input_callback_saved, callback_to_submenu_saved, &app->view_dispatcher, app))
- {
- return false;
- }
- if (!app->view_wifi)
- {
- FURI_LOG_E(TAG, "Failed to allocate view for WiFi Scan");
- return false;
- }
- }
- return true;
- default:
- return false;
- }
- }
- bool alloc_widgets(void *context, uint32_t widget)
- {
- FlipWiFiApp *app = (FlipWiFiApp *)context;
- furi_check(app);
- switch (widget)
- {
- case FlipWiFiViewAbout:
- if (!app->widget_info)
- {
- char about_text[128];
- snprintf(about_text, sizeof(about_text), "FlipWiFi v%s\n-----\nFlipperHTTP companion app.\nScan and save WiFi networks.\n-----\nwww.github.com/jblanked", VERSION);
- if (!easy_flipper_set_widget(&app->widget_info, FlipWiFiViewAbout, about_text, callback_to_submenu_main, &app->view_dispatcher))
- {
- return false;
- }
- if (!app->widget_info)
- {
- FURI_LOG_E(TAG, "Failed to allocate widget for About");
- return false;
- }
- }
- return true;
- default:
- return false;
- }
- }
|