flip_wifi_alloc.c 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #include <alloc/flip_wifi_alloc.h>
  2. // Function to allocate resources for the FlipWiFiApp
  3. FlipWiFiApp *flip_wifi_app_alloc()
  4. {
  5. FlipWiFiApp *app = (FlipWiFiApp *)malloc(sizeof(FlipWiFiApp));
  6. Gui *gui = furi_record_open(RECORD_GUI);
  7. // initialize uart
  8. if (!flipper_http_init(flipper_http_rx_callback, app))
  9. {
  10. FURI_LOG_E(TAG, "Failed to initialize flipper http");
  11. return NULL;
  12. }
  13. // Allocate the text input buffer
  14. app->uart_text_input_buffer_size_password_scan = 64;
  15. app->uart_text_input_buffer_size_password_saved = 64;
  16. app->uart_text_input_buffer_size_add_ssid = 64;
  17. app->uart_text_input_buffer_size_add_password = 64;
  18. if (!easy_flipper_set_buffer(&app->uart_text_input_buffer_password_scan, app->uart_text_input_buffer_size_password_scan))
  19. {
  20. return NULL;
  21. }
  22. if (!easy_flipper_set_buffer(&app->uart_text_input_temp_buffer_password_scan, app->uart_text_input_buffer_size_password_scan))
  23. {
  24. return NULL;
  25. }
  26. if (!easy_flipper_set_buffer(&app->uart_text_input_buffer_password_saved, app->uart_text_input_buffer_size_password_saved))
  27. {
  28. return NULL;
  29. }
  30. if (!easy_flipper_set_buffer(&app->uart_text_input_temp_buffer_password_saved, app->uart_text_input_buffer_size_password_saved))
  31. {
  32. return NULL;
  33. }
  34. if (!easy_flipper_set_buffer(&app->uart_text_input_buffer_add_ssid, app->uart_text_input_buffer_size_add_ssid))
  35. {
  36. return NULL;
  37. }
  38. if (!easy_flipper_set_buffer(&app->uart_text_input_temp_buffer_add_ssid, app->uart_text_input_buffer_size_add_ssid))
  39. {
  40. return NULL;
  41. }
  42. if (!easy_flipper_set_buffer(&app->uart_text_input_buffer_add_password, app->uart_text_input_buffer_size_add_password))
  43. {
  44. return NULL;
  45. }
  46. if (!easy_flipper_set_buffer(&app->uart_text_input_temp_buffer_add_password, app->uart_text_input_buffer_size_add_password))
  47. {
  48. return NULL;
  49. }
  50. // Allocate ViewDispatcher
  51. if (!easy_flipper_set_view_dispatcher(&app->view_dispatcher, gui, app))
  52. {
  53. return NULL;
  54. }
  55. // View(s)
  56. if (!easy_flipper_set_view(&app->view_wifi_scan, FlipWiFiViewWiFiScan, flip_wifi_view_draw_callback_scan, flip_wifi_view_input_callback_scan, callback_to_submenu_scan, &app->view_dispatcher, app))
  57. {
  58. return NULL;
  59. }
  60. if (!easy_flipper_set_view(&app->view_wifi_saved, FlipWiFiViewWiFiSaved, flip_wifi_view_draw_callback_saved, flip_wifi_view_input_callback_saved, callback_to_submenu_saved, &app->view_dispatcher, app))
  61. {
  62. return NULL;
  63. }
  64. // Widget
  65. if (!easy_flipper_set_widget(&app->widget_info, FlipWiFiViewAbout, "FlipWiFi v1.1\n-----\nFlipperHTTP companion app.\nScan and save WiFi networks.\n-----\nwww.github.com/jblanked", callback_to_submenu_main, &app->view_dispatcher))
  66. {
  67. return NULL;
  68. }
  69. // Text Input
  70. if (!easy_flipper_set_uart_text_input(&app->uart_text_input_password_scan, FlipWiFiViewTextInputScan, "Enter WiFi Password", app->uart_text_input_temp_buffer_password_scan, app->uart_text_input_buffer_size_password_scan, flip_wifi_text_updated_password_scan, callback_to_submenu_scan, &app->view_dispatcher, app))
  71. {
  72. return NULL;
  73. }
  74. if (!easy_flipper_set_uart_text_input(&app->uart_text_input_password_saved, FlipWiFiViewTextInputSaved, "Enter WiFi Password", app->uart_text_input_temp_buffer_password_saved, app->uart_text_input_buffer_size_password_saved, flip_wifi_text_updated_password_saved, callback_to_submenu_saved, &app->view_dispatcher, app))
  75. {
  76. return NULL;
  77. }
  78. if (!easy_flipper_set_uart_text_input(&app->uart_text_input_add_ssid, FlipWiFiViewTextInputSavedAddSSID, "Enter SSID", app->uart_text_input_temp_buffer_add_ssid, app->uart_text_input_buffer_size_add_ssid, flip_wifi_text_updated_add_ssid, callback_to_submenu_saved, &app->view_dispatcher, app))
  79. {
  80. return NULL;
  81. }
  82. if (!easy_flipper_set_uart_text_input(&app->uart_text_input_add_password, FlipWiFiViewTextInputSavedAddPassword, "Enter Password", app->uart_text_input_temp_buffer_add_password, app->uart_text_input_buffer_size_add_password, flip_wifi_text_updated_add_password, callback_to_submenu_saved, &app->view_dispatcher, app))
  83. {
  84. return NULL;
  85. }
  86. // Submenu
  87. if (!easy_flipper_set_submenu(&app->submenu_main, FlipWiFiViewSubmenuMain, "FlipWiFi v1.1", easy_flipper_callback_exit_app, &app->view_dispatcher))
  88. {
  89. return NULL;
  90. }
  91. if (!easy_flipper_set_submenu(&app->submenu_wifi_scan, FlipWiFiViewSubmenuScan, "WiFi Scan", callback_to_submenu_main, &app->view_dispatcher))
  92. {
  93. return NULL;
  94. }
  95. if (!easy_flipper_set_submenu(&app->submenu_wifi_saved, FlipWiFiViewSubmenuSaved, "Saved APs", callback_to_submenu_main, &app->view_dispatcher))
  96. {
  97. return NULL;
  98. }
  99. submenu_add_item(app->submenu_main, "Scan", FlipWiFiSubmenuIndexWiFiScan, callback_submenu_choices, app);
  100. submenu_add_item(app->submenu_main, "Saved APs", FlipWiFiSubmenuIndexWiFiSaved, callback_submenu_choices, app);
  101. submenu_add_item(app->submenu_main, "Info", FlipWiFiSubmenuIndexAbout, callback_submenu_choices, app);
  102. // Popup
  103. if (!easy_flipper_set_popup(&app->popup, FlipWiFiViewPopup, "Success", 0, 0, "The WiFi setting has been set.", 0, 10, popup_callback_saved, callback_to_submenu_saved, &app->view_dispatcher, app))
  104. {
  105. return false;
  106. }
  107. // Load the playlist from storage
  108. if (!load_playlist(&app->wifi_playlist))
  109. {
  110. FURI_LOG_E(TAG, "Failed to load playlist");
  111. // playlist is empty?
  112. submenu_reset(app->submenu_wifi_saved);
  113. submenu_set_header(app->submenu_wifi_saved, "Saved APs");
  114. submenu_add_item(app->submenu_wifi_saved, "[Add Network]", FlipWiFiSubmenuIndexWiFiSavedAddSSID, callback_submenu_choices, app);
  115. }
  116. else
  117. {
  118. // Update the submenu
  119. flip_wifi_redraw_submenu_saved(app);
  120. }
  121. // Switch to the main view
  122. view_dispatcher_switch_to_view(app->view_dispatcher, FlipWiFiViewSubmenuMain);
  123. return app;
  124. }