uv_meter_app_i.hpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "uv_meter_app.hpp"
  3. #include <gui/gui.h>
  4. #include <gui/view_dispatcher.h>
  5. #include <gui/scene_manager.h>
  6. #include <gui/modules/widget.h>
  7. #include <gui/modules/variable_item_list.h>
  8. #include <furi.h>
  9. #include <furi_hal.h>
  10. #include <furi_hal_gpio.h>
  11. #include <furi_hal_resources.h>
  12. #include "uv_meter_as7331_icons.h"
  13. #include "scenes/uv_meter_scene.hpp"
  14. #include "views/uv_meter_wiring.hpp"
  15. #include "views/uv_meter_data.hpp"
  16. #include "AS7331.hpp"
  17. // Prevent compiler optimization for debugging (remove in production).
  18. // #pragma GCC optimize("O0")
  19. typedef struct {
  20. AS7331::Results results; /**< Processed measurement results */
  21. AS7331::RawResults raw_results; /**< Raw measurement results */
  22. AS7331 as7331; /**< AS7331 sensor object */
  23. bool as7331_initialized; /**< Flag indicating if sensor is initialized */
  24. FuriMutex* as7331_mutex; /**< Mutex for thread-safe data access */
  25. uint32_t last_sensor_check_timestamp; /**< Last time sensor availability was checked */
  26. // Settings
  27. UVMeterI2CAddress i2c_address;
  28. UVMeterUnit unit;
  29. } UVMeterAppState;
  30. struct UVMeterApp {
  31. Gui* gui;
  32. SceneManager* scene_manager;
  33. ViewDispatcher* view_dispatcher;
  34. // Views
  35. UVMeterWiring* uv_meter_wiring_view;
  36. VariableItemList* variable_item_list;
  37. UVMeterData* uv_meter_data_view;
  38. Widget* widget;
  39. UVMeterAppState* app_state; /**< Shared app_state */
  40. };
  41. typedef enum {
  42. UVMeterViewWiring,
  43. UVMeterViewVariableItemList,
  44. UVMeterViewData,
  45. UVMeterViewWidget,
  46. } UVMeterView;