Browse Source

library update

Oliver Fabel 1 year ago
parent
commit
bcdb22c8be
3 changed files with 41 additions and 3 deletions
  1. 3 0
      genhdr/qstrdefs.generated.h
  2. 33 2
      mp_flipper_modflipperzero.c
  3. 5 1
      mp_flipper_modflipperzero.h

+ 3 - 0
genhdr/qstrdefs.generated.h

@@ -410,6 +410,9 @@ QDEF1(MP_QSTR_module, 191, 6, "module")
 QDEF1(MP_QSTR_oct, 253, 3, "oct")
 QDEF1(MP_QSTR_on_gpio, 106, 7, "on_gpio")
 QDEF1(MP_QSTR_on_input, 141, 8, "on_input")
+QDEF1(MP_QSTR_pwm_is_running, 82, 14, "pwm_is_running")
+QDEF1(MP_QSTR_pwm_start, 240, 9, "pwm_start")
+QDEF1(MP_QSTR_pwm_stop, 200, 8, "pwm_stop")
 QDEF1(MP_QSTR_random, 190, 6, "random")
 QDEF1(MP_QSTR_rb, 213, 2, "rb")
 QDEF1(MP_QSTR_reversed, 161, 8, "reversed")

+ 33 - 2
mp_flipper_modflipperzero.c

@@ -479,9 +479,9 @@ static mp_obj_t flipperzero_gpio_init_pin(size_t n_args, const mp_obj_t* args) {
     mp_int_t pull = n_args > 2 ? mp_obj_get_int(args[2]) : MP_FLIPPER_GPIO_PULL_NO;
     mp_int_t speed = n_args > 3 ? mp_obj_get_int(args[3]) : MP_FLIPPER_GPIO_SPEED_LOW;
 
-    mp_flipper_gpio_init_pin(pin, mode, pull, speed);
+    bool success = mp_flipper_gpio_init_pin(pin, mode, pull, speed);
 
-    return mp_const_true;
+    return success ? mp_const_true : mp_const_false;
 }
 static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(flipperzero_gpio_init_pin_obj, 2, 4, flipperzero_gpio_init_pin);
 
@@ -548,6 +548,33 @@ static mp_obj_t flipperzero_adc_read_pin_voltage(mp_obj_t pin_obj) {
 }
 static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_adc_read_pin_voltage_obj, flipperzero_adc_read_pin_voltage);
 
+static mp_obj_t flipperzero_pwm_start(mp_obj_t pin_obj, mp_obj_t frequency_obj, mp_obj_t duty_obj) {
+    mp_int_t pin = mp_obj_get_int(pin_obj);
+    mp_int_t frequency = mp_obj_get_int(frequency_obj);
+    mp_int_t duty = mp_obj_get_int(duty_obj);
+
+    bool success = mp_flipper_pwm_start(pin, frequency, duty);
+
+    return success ? mp_const_true : mp_const_false;
+}
+static MP_DEFINE_CONST_FUN_OBJ_3(flipperzero_pwm_start_obj, flipperzero_pwm_start);
+
+static mp_obj_t flipperzero_pwm_stop(mp_obj_t pin_obj) {
+    mp_int_t pin = mp_obj_get_int(pin_obj);
+
+    mp_flipper_pwm_stop(pin);
+
+    return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_pwm_stop_obj, flipperzero_pwm_stop);
+
+static mp_obj_t flipperzero_pwm_is_running(mp_obj_t pin_obj) {
+    mp_int_t pin = mp_obj_get_int(pin_obj);
+
+    return mp_flipper_pwm_is_running(pin) ? mp_const_true : mp_const_false;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_pwm_is_running_obj, flipperzero_pwm_is_running);
+
 static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
     // light
     {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
@@ -769,6 +796,10 @@ for octave in range(9):
     // adc - functions
     {MP_ROM_QSTR(MP_QSTR_adc_read_pin_value), MP_ROM_PTR(&flipperzero_adc_read_pin_value_obj)},
     {MP_ROM_QSTR(MP_QSTR_adc_read_pin_voltage), MP_ROM_PTR(&flipperzero_adc_read_pin_voltage_obj)},
+    // pwm - functions
+    {MP_ROM_QSTR(MP_QSTR_pwm_start), MP_ROM_PTR(&flipperzero_pwm_start_obj)},
+    {MP_ROM_QSTR(MP_QSTR_pwm_stop), MP_ROM_PTR(&flipperzero_pwm_stop_obj)},
+    {MP_ROM_QSTR(MP_QSTR_pwm_is_running), MP_ROM_PTR(&flipperzero_pwm_is_running_obj)},
 };
 static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
 

+ 5 - 1
mp_flipper_modflipperzero.h

@@ -227,7 +227,7 @@ void mp_flipper_dialog_message_clear();
 #define MP_FLIPPER_GPIO_SPEED_HIGH (2)
 #define MP_FLIPPER_GPIO_SPEED_VERY_HIGH (3)
 
-void mp_flipper_gpio_init_pin(uint8_t raw_pin, uint8_t raw_mode, uint8_t raw_pull, uint8_t raw_speed);
+bool mp_flipper_gpio_init_pin(uint8_t raw_pin, uint8_t raw_mode, uint8_t raw_pull, uint8_t raw_speed);
 void mp_flipper_gpio_deinit_pin(uint8_t raw_pin);
 void mp_flipper_gpio_set_pin(uint8_t raw_pin, bool state);
 bool mp_flipper_gpio_get_pin(uint8_t raw_pin);
@@ -235,3 +235,7 @@ void mp_flipper_on_gpio(void* ctx);
 
 uint16_t mp_flipper_adc_read_pin(uint8_t raw_pin);
 float mp_flipper_adc_convert_to_voltage(uint16_t value);
+
+bool mp_flipper_pwm_start(uint8_t raw_pin, uint32_t frequency, uint8_t duty);
+void mp_flipper_pwm_stop(uint8_t raw_pin);
+bool mp_flipper_pwm_is_running(uint8_t raw_pin);