flip_wifi_i.h 6.7 KB

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