uv_meter_wiring.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "uv_meter_wiring.hpp"
  2. #include <gui/elements.h>
  3. #include "uv_meter_as7331_icons.h"
  4. #include <locale/locale.h>
  5. #include <math.h>
  6. #define UV_METER_MAX_RAW_VALUE 65535.0
  7. struct UVMeterWiring {
  8. View* view;
  9. UVMeterWiringEnterSettingsCallback callback;
  10. void* context;
  11. //IconAnimation* icon;
  12. };
  13. typedef struct {
  14. IconAnimation* icon;
  15. } UVMeterWiringModel;
  16. static void uv_meter_wiring_draw_callback(Canvas* canvas, void* model) {
  17. UNUSED(model);
  18. //auto* m = static_cast<UVMeterWiringModel*>(model);
  19. FURI_LOG_D("UV_Meter Wiring", "Redrawing");
  20. canvas_draw_icon(canvas, 0, 0, &I_Wiring_128x64);
  21. }
  22. static bool uv_meter_wiring_input_callback(InputEvent* event, void* context) {
  23. auto* instance = static_cast<UVMeterWiring*>(context);
  24. bool consumed = false;
  25. if(event->key == InputKeyOk && event->type == InputTypeShort && instance->callback) {
  26. instance->callback(instance->context);
  27. consumed = true;
  28. }
  29. return consumed;
  30. }
  31. UVMeterWiring* uv_meter_wiring_alloc(void) {
  32. UVMeterWiring* instance = new UVMeterWiring();
  33. instance->view = view_alloc();
  34. view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(UVMeterWiringModel));
  35. view_set_draw_callback(instance->view, uv_meter_wiring_draw_callback);
  36. view_set_input_callback(instance->view, uv_meter_wiring_input_callback);
  37. view_set_context(instance->view, instance);
  38. return instance;
  39. }
  40. void uv_meter_wiring_free(UVMeterWiring* instance) {
  41. furi_assert(instance);
  42. view_free(instance->view);
  43. delete instance;
  44. }
  45. View* uv_meter_wiring_get_view(UVMeterWiring* instance) {
  46. furi_assert(instance);
  47. return instance->view;
  48. }
  49. void uv_meter_wiring_set_enter_settings_callback(
  50. UVMeterWiring* instance,
  51. UVMeterWiringEnterSettingsCallback callback,
  52. void* context) {
  53. furi_assert(instance);
  54. furi_assert(callback);
  55. with_view_model_cpp(
  56. instance->view,
  57. UVMeterWiringModel*,
  58. model,
  59. {
  60. UNUSED(model);
  61. instance->callback = callback;
  62. instance->context = context;
  63. },
  64. false);
  65. }