modflipperzero.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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 const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  59. {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
  60. {MP_ROM_QSTR(MP_QSTR_LIGHT_RED), MP_ROM_INT(MP_FLIPPER_LED_RED)},
  61. {MP_ROM_QSTR(MP_QSTR_LIGHT_GREEN), MP_ROM_INT(MP_FLIPPER_LED_GREEN)},
  62. {MP_ROM_QSTR(MP_QSTR_LIGHT_BLUE), MP_ROM_INT(MP_FLIPPER_LED_BLUE)},
  63. {MP_ROM_QSTR(MP_QSTR_LIGHT_BACKLIGHT), MP_ROM_INT(MP_FLIPPER_LED_BACKLIGHT)},
  64. {MP_ROM_QSTR(MP_QSTR_light_set), MP_ROM_PTR(&flipperzero_light_set_obj)},
  65. {MP_ROM_QSTR(MP_QSTR_light_blink_start), MP_ROM_PTR(&flipperzero_light_blink_start_obj)},
  66. {MP_ROM_QSTR(MP_QSTR_light_blink_set_color), MP_ROM_PTR(&flipperzero_light_blink_set_color_obj)},
  67. {MP_ROM_QSTR(MP_QSTR_light_blink_stop), MP_ROM_PTR(&flipperzero_light_blink_stop_obj)},
  68. {MP_ROM_QSTR(MP_QSTR_vibro_set), MP_ROM_PTR(&flipperzero_vibro_set_obj)},
  69. {MP_ROM_QSTR(MP_QSTR_speaker_start), MP_ROM_PTR(&flipperzero_speaker_start_obj)},
  70. {MP_ROM_QSTR(MP_QSTR_speaker_set_volume), MP_ROM_PTR(&flipperzero_speaker_set_volume_obj)},
  71. {MP_ROM_QSTR(MP_QSTR_speaker_stop), MP_ROM_PTR(&flipperzero_speaker_stop_obj)},
  72. };
  73. static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
  74. const mp_obj_module_t flipperzero_module = {
  75. .base = {&mp_type_module},
  76. .globals = (mp_obj_dict_t*)&flipperzero_module_globals,
  77. };
  78. MP_REGISTER_MODULE(MP_QSTR_flipperzero, flipperzero_module);