micropython 273 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. commit c6af690a1490b4945f370433ee182631762c8fa1
  2. Author: Oliver Fabel <28701799+ofabel@users.noreply.github.com>
  3. Date: Sat Sep 7 20:00:34 2024 +0200
  4. library update
  5. diff --git a/genhdr/qstrdefs.generated.h b/genhdr/qstrdefs.generated.h
  6. index e48c33345..a6645415c 100644
  7. --- a/genhdr/qstrdefs.generated.h
  8. +++ b/genhdr/qstrdefs.generated.h
  9. @@ -393,6 +393,7 @@ QDEF1(MP_QSTR_gpio_get_pin, 85, 12, "gpio_get_pin")
  10. QDEF1(MP_QSTR_gpio_init_pin, 185, 13, "gpio_init_pin")
  11. QDEF1(MP_QSTR_gpio_set_pin, 65, 12, "gpio_set_pin")
  12. QDEF1(MP_QSTR_hex, 112, 3, "hex")
  13. +QDEF1(MP_QSTR_infrared_receive, 112, 16, "infrared_receive")
  14. QDEF1(MP_QSTR_intersection, 40, 12, "intersection")
  15. QDEF1(MP_QSTR_intersection_update, 6, 19, "intersection_update")
  16. QDEF1(MP_QSTR_isdisjoint, 247, 10, "isdisjoint")
  17. diff --git a/mp_flipper_modflipperzero.c b/mp_flipper_modflipperzero.c
  18. index 343fd31b0..cb7de86e2 100644
  19. --- a/mp_flipper_modflipperzero.c
  20. +++ b/mp_flipper_modflipperzero.c
  21. @@ -575,6 +575,23 @@ static mp_obj_t flipperzero_pwm_is_running(mp_obj_t pin_obj) {
  22. }
  23. static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_pwm_is_running_obj, flipperzero_pwm_is_running);
  24. +static mp_obj_t flipperzero_infrared_receive(size_t n_args, const mp_obj_t* args) {
  25. + mp_int_t timeout = n_args > 0 ? mp_obj_get_int(args[0]) : MP_FLIPPER_INFRARED_RX_DEFAULT_TIMEOUT;
  26. +
  27. + size_t length = 0;
  28. + uint32_t* buffer = mp_flipper_infrared_receive(timeout, &length);
  29. + mp_obj_t* signal = malloc(length * sizeof(mp_obj_t));
  30. +
  31. + for(uint16_t i = 0; i < length; i++) {
  32. + signal[i] = mp_obj_new_int(buffer[i]);
  33. + }
  34. +
  35. + free(buffer);
  36. +
  37. + return mp_obj_new_list(length, signal);
  38. +}
  39. +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(flipperzero_infrared_receive_obj, 0, 1, flipperzero_infrared_receive);
  40. +
  41. static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  42. // light
  43. {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
  44. @@ -800,6 +817,8 @@ for octave in range(9):
  45. {MP_ROM_QSTR(MP_QSTR_pwm_start), MP_ROM_PTR(&flipperzero_pwm_start_obj)},
  46. {MP_ROM_QSTR(MP_QSTR_pwm_stop), MP_ROM_PTR(&flipperzero_pwm_stop_obj)},
  47. {MP_ROM_QSTR(MP_QSTR_pwm_is_running), MP_ROM_PTR(&flipperzero_pwm_is_running_obj)},
  48. + // infrared - functions
  49. + {MP_ROM_QSTR(MP_QSTR_infrared_receive), MP_ROM_PTR(&flipperzero_infrared_receive_obj)},
  50. };
  51. static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
  52. diff --git a/mp_flipper_modflipperzero.h b/mp_flipper_modflipperzero.h
  53. index 598d1c185..98d7b9ae9 100644
  54. --- a/mp_flipper_modflipperzero.h
  55. +++ b/mp_flipper_modflipperzero.h
  56. @@ -1,5 +1,6 @@
  57. #pragma once
  58. +#include <stddef.h>
  59. #include <stdint.h>
  60. #include <stdbool.h>
  61. @@ -239,3 +240,8 @@ float mp_flipper_adc_convert_to_voltage(uint16_t value);
  62. bool mp_flipper_pwm_start(uint8_t raw_pin, uint32_t frequency, uint8_t duty);
  63. void mp_flipper_pwm_stop(uint8_t raw_pin);
  64. bool mp_flipper_pwm_is_running(uint8_t raw_pin);
  65. +
  66. +#define MP_FLIPPER_INFRARED_RX_DEFAULT_TIMEOUT (1000000)
  67. +#define MP_FLIPPER_INFRARED_RX_BUFFER_SIZE (1024)
  68. +
  69. +uint32_t* mp_flipper_infrared_receive(uint32_t timeout, size_t* length);