calibration.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "calibration.h"
  2. #include "../tracking/main_loop.h"
  3. #include "../air_mouse.h"
  4. #include <furi.h>
  5. #include <gui/elements.h>
  6. struct Calibration {
  7. View* view;
  8. ViewDispatcher* view_dispatcher;
  9. };
  10. static void calibration_draw_callback(Canvas* canvas, void* context) {
  11. UNUSED(context);
  12. canvas_clear(canvas);
  13. canvas_set_font(canvas, FontPrimary);
  14. canvas_draw_str(canvas, 0, 10, "Calibrating...");
  15. canvas_set_font(canvas, FontSecondary);
  16. canvas_draw_str(canvas, 0, 63, "Please wait");
  17. }
  18. void calibration_enter_callback(void* context) {
  19. furi_assert(context);
  20. Calibration* calibration = context;
  21. calibration_begin();
  22. view_dispatcher_send_custom_event(calibration->view_dispatcher, 0);
  23. }
  24. bool calibration_custom_callback(uint32_t event, void* context) {
  25. UNUSED(event);
  26. furi_assert(context);
  27. Calibration* calibration = context;
  28. if(calibration_step()) {
  29. view_dispatcher_switch_to_view(calibration->view_dispatcher, AirMouseViewSubmenu);
  30. } else {
  31. view_dispatcher_send_custom_event(calibration->view_dispatcher, 0);
  32. }
  33. return true;
  34. }
  35. void calibration_exit_callback(void* context) {
  36. furi_assert(context);
  37. calibration_end();
  38. }
  39. Calibration* calibration_alloc(ViewDispatcher* view_dispatcher) {
  40. Calibration* calibration = malloc(sizeof(Calibration));
  41. calibration->view = view_alloc();
  42. calibration->view_dispatcher = view_dispatcher;
  43. view_set_context(calibration->view, calibration);
  44. view_set_draw_callback(calibration->view, calibration_draw_callback);
  45. view_set_enter_callback(calibration->view, calibration_enter_callback);
  46. view_set_custom_callback(calibration->view, calibration_custom_callback);
  47. view_set_exit_callback(calibration->view, calibration_exit_callback);
  48. return calibration;
  49. }
  50. void calibration_free(Calibration* calibration) {
  51. furi_assert(calibration);
  52. view_free(calibration->view);
  53. free(calibration);
  54. }
  55. View* calibration_get_view(Calibration* calibration) {
  56. furi_assert(calibration);
  57. return calibration->view;
  58. }