flip_wifi_alloc.c 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. #include <alloc/flip_wifi_alloc.h>
  2. // Function to allocate resources for the FlipWiFiApp
  3. FlipWiFiApp* flip_wifi_app_alloc() {
  4. FlipWiFiApp* app = (FlipWiFiApp*)malloc(sizeof(FlipWiFiApp));
  5. Gui* gui = furi_record_open(RECORD_GUI);
  6. // initialize uart
  7. if(!flipper_http_init(flipper_http_rx_callback, app)) {
  8. FURI_LOG_E(TAG, "Failed to initialize flipper http");
  9. return NULL;
  10. }
  11. // Allocate the text input buffer
  12. app->uart_text_input_buffer_size_password_scan = 64;
  13. app->uart_text_input_buffer_size_password_saved = 64;
  14. app->uart_text_input_buffer_size_add_ssid = 64;
  15. app->uart_text_input_buffer_size_add_password = 64;
  16. if(!easy_flipper_set_buffer(
  17. &app->uart_text_input_buffer_password_scan,
  18. app->uart_text_input_buffer_size_password_scan)) {
  19. return NULL;
  20. }
  21. if(!easy_flipper_set_buffer(
  22. &app->uart_text_input_temp_buffer_password_scan,
  23. app->uart_text_input_buffer_size_password_scan)) {
  24. return NULL;
  25. }
  26. if(!easy_flipper_set_buffer(
  27. &app->uart_text_input_buffer_password_saved,
  28. app->uart_text_input_buffer_size_password_saved)) {
  29. return NULL;
  30. }
  31. if(!easy_flipper_set_buffer(
  32. &app->uart_text_input_temp_buffer_password_saved,
  33. app->uart_text_input_buffer_size_password_saved)) {
  34. return NULL;
  35. }
  36. if(!easy_flipper_set_buffer(
  37. &app->uart_text_input_buffer_add_ssid, app->uart_text_input_buffer_size_add_ssid)) {
  38. return NULL;
  39. }
  40. if(!easy_flipper_set_buffer(
  41. &app->uart_text_input_temp_buffer_add_ssid,
  42. app->uart_text_input_buffer_size_add_ssid)) {
  43. return NULL;
  44. }
  45. if(!easy_flipper_set_buffer(
  46. &app->uart_text_input_buffer_add_password,
  47. app->uart_text_input_buffer_size_add_password)) {
  48. return NULL;
  49. }
  50. if(!easy_flipper_set_buffer(
  51. &app->uart_text_input_temp_buffer_add_password,
  52. app->uart_text_input_buffer_size_add_password)) {
  53. return NULL;
  54. }
  55. // Allocate ViewDispatcher
  56. if(!easy_flipper_set_view_dispatcher(&app->view_dispatcher, gui, app)) {
  57. return NULL;
  58. }
  59. // View(s)
  60. if(!easy_flipper_set_view(
  61. &app->view_wifi_scan,
  62. FlipWiFiViewWiFiScan,
  63. flip_wifi_view_draw_callback_scan,
  64. flip_wifi_view_input_callback_scan,
  65. callback_to_submenu_scan,
  66. &app->view_dispatcher,
  67. app)) {
  68. return NULL;
  69. }
  70. if(!easy_flipper_set_view(
  71. &app->view_wifi_saved,
  72. FlipWiFiViewWiFiSaved,
  73. flip_wifi_view_draw_callback_saved,
  74. flip_wifi_view_input_callback_saved,
  75. callback_to_submenu_saved,
  76. &app->view_dispatcher,
  77. app)) {
  78. return NULL;
  79. }
  80. // Widget
  81. if(!easy_flipper_set_widget(
  82. &app->widget_info,
  83. FlipWiFiViewAbout,
  84. "FlipWiFi v1.1\n-----\nFlipperHTTP companion app.\nScan and save WiFi networks.\n-----\nwww.github.com/jblanked",
  85. callback_to_submenu_main,
  86. &app->view_dispatcher)) {
  87. return NULL;
  88. }
  89. // Text Input
  90. if(!easy_flipper_set_uart_text_input(
  91. &app->uart_text_input_password_scan,
  92. FlipWiFiViewTextInputScan,
  93. "Enter WiFi Password",
  94. app->uart_text_input_temp_buffer_password_scan,
  95. app->uart_text_input_buffer_size_password_scan,
  96. flip_wifi_text_updated_password_scan,
  97. callback_to_submenu_scan,
  98. &app->view_dispatcher,
  99. app)) {
  100. return NULL;
  101. }
  102. if(!easy_flipper_set_uart_text_input(
  103. &app->uart_text_input_password_saved,
  104. FlipWiFiViewTextInputSaved,
  105. "Enter WiFi Password",
  106. app->uart_text_input_temp_buffer_password_saved,
  107. app->uart_text_input_buffer_size_password_saved,
  108. flip_wifi_text_updated_password_saved,
  109. callback_to_submenu_saved,
  110. &app->view_dispatcher,
  111. app)) {
  112. return NULL;
  113. }
  114. if(!easy_flipper_set_uart_text_input(
  115. &app->uart_text_input_add_ssid,
  116. FlipWiFiViewTextInputSavedAddSSID,
  117. "Enter SSID",
  118. app->uart_text_input_temp_buffer_add_ssid,
  119. app->uart_text_input_buffer_size_add_ssid,
  120. flip_wifi_text_updated_add_ssid,
  121. callback_to_submenu_saved,
  122. &app->view_dispatcher,
  123. app)) {
  124. return NULL;
  125. }
  126. if(!easy_flipper_set_uart_text_input(
  127. &app->uart_text_input_add_password,
  128. FlipWiFiViewTextInputSavedAddPassword,
  129. "Enter Password",
  130. app->uart_text_input_temp_buffer_add_password,
  131. app->uart_text_input_buffer_size_add_password,
  132. flip_wifi_text_updated_add_password,
  133. callback_to_submenu_saved,
  134. &app->view_dispatcher,
  135. app)) {
  136. return NULL;
  137. }
  138. // Submenu
  139. if(!easy_flipper_set_submenu(
  140. &app->submenu_main,
  141. FlipWiFiViewSubmenuMain,
  142. "FlipWiFi v1.1",
  143. easy_flipper_callback_exit_app,
  144. &app->view_dispatcher)) {
  145. return NULL;
  146. }
  147. if(!easy_flipper_set_submenu(
  148. &app->submenu_wifi_scan,
  149. FlipWiFiViewSubmenuScan,
  150. "WiFi Scan",
  151. callback_to_submenu_main,
  152. &app->view_dispatcher)) {
  153. return NULL;
  154. }
  155. if(!easy_flipper_set_submenu(
  156. &app->submenu_wifi_saved,
  157. FlipWiFiViewSubmenuSaved,
  158. "Saved APs",
  159. callback_to_submenu_main,
  160. &app->view_dispatcher)) {
  161. return NULL;
  162. }
  163. submenu_add_item(
  164. app->submenu_main, "Scan", FlipWiFiSubmenuIndexWiFiScan, callback_submenu_choices, app);
  165. submenu_add_item(
  166. app->submenu_main,
  167. "Saved APs",
  168. FlipWiFiSubmenuIndexWiFiSaved,
  169. callback_submenu_choices,
  170. app);
  171. submenu_add_item(
  172. app->submenu_main, "Info", FlipWiFiSubmenuIndexAbout, callback_submenu_choices, app);
  173. // Popup
  174. if(!easy_flipper_set_popup(
  175. &app->popup,
  176. FlipWiFiViewPopup,
  177. "Success",
  178. 0,
  179. 0,
  180. "The WiFi setting has been set.",
  181. 0,
  182. 10,
  183. popup_callback_saved,
  184. callback_to_submenu_saved,
  185. &app->view_dispatcher,
  186. app)) {
  187. return NULL;
  188. }
  189. // Load the playlist from storage
  190. if(!load_playlist(&app->wifi_playlist)) {
  191. FURI_LOG_E(TAG, "Failed to load playlist");
  192. // playlist is empty?
  193. submenu_reset(app->submenu_wifi_saved);
  194. submenu_set_header(app->submenu_wifi_saved, "Saved APs");
  195. submenu_add_item(
  196. app->submenu_wifi_saved,
  197. "[Add Network]",
  198. FlipWiFiSubmenuIndexWiFiSavedAddSSID,
  199. callback_submenu_choices,
  200. app);
  201. } else {
  202. // Update the submenu
  203. flip_wifi_redraw_submenu_saved(app);
  204. }
  205. // Switch to the main view
  206. view_dispatcher_switch_to_view(app->view_dispatcher, FlipWiFiViewSubmenuMain);
  207. return app;
  208. }