uv_meter_data.hpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <gui/view.h>
  3. #include "AS7331.hpp"
  4. #include "uv_meter_app.hpp"
  5. typedef struct UVMeterData UVMeterData;
  6. typedef void (*UVMeterDataEnterSettingsCallback)(void* context);
  7. /** @brief Struct to hold effective irradiance and daily exposure time */
  8. typedef struct {
  9. double uv_a_eff; /**< Effective UV-A Irradiance in µW/cm² */
  10. double uv_b_eff; /**< Effective UV-B Irradiance in µW/cm² */
  11. double uv_c_eff; /**< Effective UV-C Irradiance in µW/cm² */
  12. double uv_total_eff; /**< Effective total UV Irradiance in µW/cm² */
  13. double t_max; /**< Maximum Daily Exposure Time in seconds*/
  14. } UVMeterEffectiveResults;
  15. UVMeterData* uv_meter_data_alloc(void);
  16. void uv_meter_data_free(UVMeterData* instance);
  17. void uv_meter_data_reset(UVMeterData* instance, bool update = false);
  18. View* uv_meter_data_get_view(UVMeterData* instance);
  19. void uv_meter_data_set_enter_settings_callback(
  20. UVMeterData* instance,
  21. UVMeterDataEnterSettingsCallback callback,
  22. void* context);
  23. // AS7331 Sensor
  24. void uv_meter_data_set_sensor(UVMeterData* instance, AS7331* sensor, FuriMutex* sensor_mutex);
  25. void uv_meter_update_from_sensor(UVMeterData* instance);
  26. // General getter and setter
  27. void uv_meter_data_set_results(
  28. UVMeterData* instance,
  29. const AS7331::Results* results,
  30. const AS7331::RawResults* raw_results);
  31. UVMeterEffectiveResults uv_meter_data_get_effective_results(UVMeterData* instance);
  32. void uv_meter_data_set_eyes_protected(UVMeterData* instance, bool eyes_protected);
  33. bool uv_meter_data_get_eyes_protected(UVMeterData* instance);
  34. void uv_meter_data_set_unit(UVMeterData* instance, UVMeterUnit unit);
  35. // Helper
  36. UVMeterEffectiveResults
  37. uv_meter_data_calculate_effective_results(const AS7331::Results* results, bool eyes_protected);