web_crawler_free.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Function to free allocated buffers
  2. static void free_buffers(WebCrawlerApp *app)
  3. {
  4. free(app->path);
  5. free(app->temp_buffer_path);
  6. free(app->ssid);
  7. free(app->temp_buffer_ssid);
  8. free(app->password);
  9. free(app->temp_buffer_password);
  10. }
  11. static void free_resources(WebCrawlerApp *app)
  12. {
  13. free_buffers(app);
  14. free(app);
  15. }
  16. static void free_inputs(WebCrawlerApp *app)
  17. {
  18. free(app->temp_buffer_path);
  19. free(app->temp_buffer_ssid);
  20. free(app->temp_buffer_password);
  21. }
  22. static void free_all(WebCrawlerApp *app, char *reason)
  23. {
  24. FURI_LOG_E(TAG, reason);
  25. view_free(app->view_main);
  26. submenu_free(app->submenu);
  27. variable_item_list_free(app->variable_item_list_config);
  28. free_inputs(app);
  29. view_dispatcher_free(app->view_dispatcher);
  30. furi_record_close(RECORD_GUI);
  31. free_resources(app);
  32. }
  33. /**
  34. * @brief Function to free the resources used by WebCrawlerApp.
  35. * @param app The WebCrawlerApp object to free.
  36. */
  37. static void web_crawler_app_free(WebCrawlerApp *app)
  38. {
  39. if (!app)
  40. return;
  41. // Remove and free Main view
  42. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewMain);
  43. view_free(app->view_main);
  44. // Remove and free Submenu
  45. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewSubmenu);
  46. submenu_free(app->submenu);
  47. // Remove and free Configuration screen
  48. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewConfigure);
  49. variable_item_list_free(app->variable_item_list_config);
  50. // Remove and free Text Input views
  51. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInput);
  52. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputSSID);
  53. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputPassword);
  54. free_inputs(app);
  55. // Remove and free About view
  56. view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewAbout);
  57. widget_free(app->widget_about);
  58. // Free the ViewDispatcher and close GUI
  59. view_dispatcher_free(app->view_dispatcher);
  60. furi_record_close(RECORD_GUI);
  61. // deinit uart
  62. uart_deinit();
  63. // Free the application structure
  64. free_buffers(app);
  65. free(app);
  66. }