modflipperzero.c 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include <stdio.h>
  2. #include <py/objint.h>
  3. #include <py/obj.h>
  4. #include <py/runtime.h>
  5. #include "modflipperzero.h"
  6. static mp_obj_t flipperzero_light_set(mp_obj_t light_obj, mp_obj_t brightness_obj) {
  7. mp_int_t light = mp_obj_get_int(light_obj);
  8. mp_int_t brightness = mp_obj_get_int(brightness_obj);
  9. mp_flipper_light_set(light, brightness);
  10. return mp_const_none;
  11. }
  12. static MP_DEFINE_CONST_FUN_OBJ_2(flipperzero_light_set_obj, flipperzero_light_set);
  13. static mp_obj_t flipperzero_light_blink_start(size_t n_args, const mp_obj_t* args) {
  14. if(n_args != 4) {
  15. return mp_const_none;
  16. }
  17. mp_int_t light = mp_obj_get_int(args[0]);
  18. mp_int_t brightness = mp_obj_get_int(args[1]);
  19. mp_int_t on_time = mp_obj_get_int(args[2]);
  20. mp_int_t period = mp_obj_get_int(args[3]);
  21. mp_flipper_light_blink_start(light, brightness, on_time, period);
  22. return mp_const_none;
  23. }
  24. static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(flipperzero_light_blink_start_obj, 4, 4, flipperzero_light_blink_start);
  25. static mp_obj_t flipperzero_light_blink_stop() {
  26. mp_flipper_light_blink_stop();
  27. return mp_const_none;
  28. }
  29. static MP_DEFINE_CONST_FUN_OBJ_0(flipperzero_light_blink_stop_obj, flipperzero_light_blink_stop);
  30. static mp_obj_t flipperzero_light_blink_set_color(mp_obj_t light_obj) {
  31. mp_int_t light = mp_obj_get_int(light_obj);
  32. mp_flipper_light_blink_set_color(light);
  33. return mp_const_none;
  34. }
  35. static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_light_blink_set_color_obj, flipperzero_light_blink_set_color);
  36. static mp_obj_t flipperzero_vibro_set(mp_obj_t state) {
  37. bool state_bool = mp_obj_is_true(state);
  38. mp_flipper_vibro(state_bool);
  39. return state_bool ? mp_const_true : mp_const_false;
  40. }
  41. static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_vibro_set_obj, flipperzero_vibro_set);
  42. static mp_obj_t flipperzero_speaker_start(mp_obj_t frequency_obj, mp_obj_t volume_obj) {
  43. mp_float_t frequency = mp_obj_get_float(frequency_obj);
  44. mp_float_t volume = mp_obj_get_float(volume_obj);
  45. return mp_flipper_speaker_start(frequency, volume) ? mp_const_true : mp_const_false;
  46. }
  47. static MP_DEFINE_CONST_FUN_OBJ_2(flipperzero_speaker_start_obj, flipperzero_speaker_start);
  48. static mp_obj_t flipperzero_speaker_set_volume(mp_obj_t volume_obj) {
  49. mp_float_t volume = mp_obj_get_float(volume_obj);
  50. return mp_flipper_speaker_set_volume(volume) ? mp_const_true : mp_const_false;
  51. }
  52. static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_speaker_set_volume_obj, flipperzero_speaker_set_volume);
  53. static mp_obj_t flipperzero_speaker_stop() {
  54. mp_flipper_speaker_stop();
  55. return mp_flipper_speaker_stop() ? mp_const_true : mp_const_false;
  56. }
  57. static MP_DEFINE_CONST_FUN_OBJ_0(flipperzero_speaker_stop_obj, flipperzero_speaker_stop);
  58. static mp_obj_t flipperzero_canvas_draw_dot(mp_obj_t x_obj, mp_obj_t y_obj, mp_obj_t color_obj) {
  59. mp_int_t x = mp_obj_get_int(x_obj);
  60. mp_int_t y = mp_obj_get_int(y_obj);
  61. bool color = mp_obj_is_true(color_obj);
  62. mp_flipper_canvas_draw_dot(x, y, color);
  63. return mp_const_none;
  64. }
  65. static MP_DEFINE_CONST_FUN_OBJ_3(flipperzero_canvas_draw_dot_obj, flipperzero_canvas_draw_dot);
  66. static mp_obj_t flipperzero_canvas_update() {
  67. mp_flipper_canvas_update();
  68. return mp_const_none;
  69. }
  70. static MP_DEFINE_CONST_FUN_OBJ_0(flipperzero_canvas_update_obj, flipperzero_canvas_update);
  71. static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  72. {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
  73. {MP_ROM_QSTR(MP_QSTR_LIGHT_RED), MP_ROM_INT(MP_FLIPPER_LED_RED)},
  74. {MP_ROM_QSTR(MP_QSTR_LIGHT_GREEN), MP_ROM_INT(MP_FLIPPER_LED_GREEN)},
  75. {MP_ROM_QSTR(MP_QSTR_LIGHT_BLUE), MP_ROM_INT(MP_FLIPPER_LED_BLUE)},
  76. {MP_ROM_QSTR(MP_QSTR_LIGHT_BACKLIGHT), MP_ROM_INT(MP_FLIPPER_LED_BACKLIGHT)},
  77. {MP_ROM_QSTR(MP_QSTR_light_set), MP_ROM_PTR(&flipperzero_light_set_obj)},
  78. {MP_ROM_QSTR(MP_QSTR_light_blink_start), MP_ROM_PTR(&flipperzero_light_blink_start_obj)},
  79. {MP_ROM_QSTR(MP_QSTR_light_blink_set_color), MP_ROM_PTR(&flipperzero_light_blink_set_color_obj)},
  80. {MP_ROM_QSTR(MP_QSTR_light_blink_stop), MP_ROM_PTR(&flipperzero_light_blink_stop_obj)},
  81. {MP_ROM_QSTR(MP_QSTR_vibro_set), MP_ROM_PTR(&flipperzero_vibro_set_obj)},
  82. {MP_ROM_QSTR(MP_QSTR_speaker_start), MP_ROM_PTR(&flipperzero_speaker_start_obj)},
  83. {MP_ROM_QSTR(MP_QSTR_speaker_set_volume), MP_ROM_PTR(&flipperzero_speaker_set_volume_obj)},
  84. {MP_ROM_QSTR(MP_QSTR_speaker_stop), MP_ROM_PTR(&flipperzero_speaker_stop_obj)},
  85. {MP_ROM_QSTR(MP_QSTR_canvas_draw_dot), MP_ROM_PTR(&flipperzero_canvas_draw_dot_obj)},
  86. {MP_ROM_QSTR(MP_QSTR_canvas_update), MP_ROM_PTR(&flipperzero_canvas_update_obj)},
  87. };
  88. static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
  89. const mp_obj_module_t flipperzero_module = {
  90. .base = {&mp_type_module},
  91. .globals = (mp_obj_dict_t*)&flipperzero_module_globals,
  92. };
  93. MP_REGISTER_MODULE(MP_QSTR_flipperzero, flipperzero_module);