flip_weather.c 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "flip_weather.h"
  2. char lat_data[32];
  3. char lon_data[32];
  4. char* total_data = NULL;
  5. char* weather_data = NULL;
  6. FlipWeatherApp* app_instance = NULL;
  7. void flip_weather_loader_free_model(View* view);
  8. // Function to free the resources used by FlipWeatherApp
  9. void flip_weather_app_free(FlipWeatherApp* app) {
  10. if(!app) {
  11. FURI_LOG_E(TAG, "FlipWeatherApp is NULL");
  12. return;
  13. }
  14. // Free View(s)
  15. if(app->view_loader) {
  16. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewLoader);
  17. flip_weather_loader_free_model(app->view_loader);
  18. view_free(app->view_loader);
  19. }
  20. // Free Submenu(s)
  21. if(app->submenu) {
  22. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewSubmenu);
  23. submenu_free(app->submenu);
  24. }
  25. // Free Widget(s)
  26. if(app->widget) {
  27. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewAbout);
  28. widget_free(app->widget);
  29. }
  30. if(app->widget_result) {
  31. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewWidgetResult);
  32. widget_free(app->widget_result);
  33. }
  34. // Free Variable Item List(s)
  35. if(app->variable_item_list) {
  36. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewSettings);
  37. variable_item_list_free(app->variable_item_list);
  38. }
  39. // Free Text Input(s)
  40. if(app->uart_text_input_ssid) {
  41. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewTextInputSSID);
  42. text_input_free(app->uart_text_input_ssid);
  43. }
  44. if(app->uart_text_input_password) {
  45. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewTextInputPassword);
  46. text_input_free(app->uart_text_input_password);
  47. }
  48. // Free the text input buffer
  49. if(app->uart_text_input_buffer_ssid) free(app->uart_text_input_buffer_ssid);
  50. if(app->uart_text_input_temp_buffer_ssid) free(app->uart_text_input_temp_buffer_ssid);
  51. if(app->uart_text_input_buffer_password) free(app->uart_text_input_buffer_password);
  52. if(app->uart_text_input_temp_buffer_password) free(app->uart_text_input_temp_buffer_password);
  53. // deinitalize flipper http
  54. flipper_http_deinit();
  55. // free the view dispatcher
  56. if(app->view_dispatcher) view_dispatcher_free(app->view_dispatcher);
  57. // close the gui
  58. furi_record_close(RECORD_GUI);
  59. if(total_data) free(total_data);
  60. // free the app
  61. if(app) free(app);
  62. }