modflipperzero.c 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  43. {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
  44. {MP_ROM_QSTR(MP_QSTR_LIGHT_RED), MP_ROM_INT(MP_FLIPPER_LED_RED)},
  45. {MP_ROM_QSTR(MP_QSTR_LIGHT_GREEN), MP_ROM_INT(MP_FLIPPER_LED_GREEN)},
  46. {MP_ROM_QSTR(MP_QSTR_LIGHT_BLUE), MP_ROM_INT(MP_FLIPPER_LED_BLUE)},
  47. {MP_ROM_QSTR(MP_QSTR_LIGHT_BACKLIGHT), MP_ROM_INT(MP_FLIPPER_LED_BACKLIGHT)},
  48. {MP_ROM_QSTR(MP_QSTR_light_set), MP_ROM_PTR(&flipperzero_light_set_obj)},
  49. {MP_ROM_QSTR(MP_QSTR_light_blink_start), MP_ROM_PTR(&flipperzero_light_blink_start_obj)},
  50. {MP_ROM_QSTR(MP_QSTR_light_blink_set_color), MP_ROM_PTR(&flipperzero_light_blink_set_color_obj)},
  51. {MP_ROM_QSTR(MP_QSTR_light_blink_stop), MP_ROM_PTR(&flipperzero_light_blink_stop_obj)},
  52. {MP_ROM_QSTR(MP_QSTR_vibro_set), MP_ROM_PTR(&flipperzero_vibro_set_obj)},
  53. };
  54. static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
  55. const mp_obj_module_t flipperzero_module = {
  56. .base = {&mp_type_module},
  57. .globals = (mp_obj_dict_t*)&flipperzero_module_globals,
  58. };
  59. MP_REGISTER_MODULE(MP_QSTR_flipperzero, flipperzero_module);