summaryrefslogtreecommitdiff
path: root/shared-bindings
diff options
context:
space:
mode:
authorLucian Copeland <hierophect@gmail.com>2020-08-14 16:33:24 -0400
committerLucian Copeland <hierophect@gmail.com>2020-08-14 16:36:02 -0400
commit0fc730bc5aeab1187a0b175aa4d390c0e7da7e1b (patch)
treee0bc8d2e5034223c31375dc697befbe884ccb15f /shared-bindings
parent88fcc19e24597140fb3e5f45ab8d87705fb4f5ed (diff)
Expand PulseOut API, debug cleanup
Diffstat (limited to 'shared-bindings')
-rw-r--r--shared-bindings/pulseio/PulseOut.c39
-rw-r--r--shared-bindings/pulseio/PulseOut.h10
2 files changed, 21 insertions, 28 deletions
diff --git a/shared-bindings/pulseio/PulseOut.c b/shared-bindings/pulseio/PulseOut.c
index 10524f51b..2adbc3cf6 100644
--- a/shared-bindings/pulseio/PulseOut.c
+++ b/shared-bindings/pulseio/PulseOut.c
@@ -69,29 +69,24 @@ STATIC mp_obj_t pulseio_pulseout_make_new(const mp_obj_type_t *type, size_t n_ar
pulseio_pulseout_obj_t *self = m_new_obj(pulseio_pulseout_obj_t);
self->base.type = &pulseio_pulseout_type;
- #ifndef CPY_PULSEOUT_USES_DIGITALIO
- // Most ports pass a PWMOut
- mp_arg_check_num(n_args, kw_args, 1, 1, false);
- mp_obj_t carrier_obj = args[0];
- if (!MP_OBJ_IS_TYPE(carrier_obj, &pulseio_pwmout_type)) {
- mp_raise_TypeError_varg(translate("Expected a %q"), pulseio_pwmout_type.name);
+ mp_obj_t carrier_obj = pos_args[0];
+ if (MP_OBJ_IS_TYPE(carrier_obj, &pulseio_pwmout_type)) {
+ // PWM Carrier
+ mp_arg_check_num(n_args, kw_args, 1, 1, false);
+ common_hal_pulseio_pulseout_construct(self, (pulseio_pwmout_obj_t *)MP_OBJ_TO_PTR(carrier_obj), NULL, 0, 0);
+ } else {
+ // Pin and Frequency
+ enum { ARG_pin, ARG_frequency};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
+ { MP_QSTR_frequency, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 38000} },
+ { MP_QSTR_duty_cycle, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1<<15} },
+ };
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ const mcu_pin_obj_t* pin = validate_obj_is_free_pin(args[ARG_pin].u_obj);
+ common_hal_pulseio_pulseout_construct(self, NULL, pin, args[ARG_frequency].u_int, args[ARG_frequency].u_int);
}
- common_hal_pulseio_pulseout_construct(self, (pulseio_pwmout_obj_t *)MP_OBJ_TO_PTR(carrier_obj));
- #else
- // ESP32-S2 Special Case
- enum { ARG_pin, ARG_frequency};
- static const mp_arg_t allowed_args[] = {
- { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
- { MP_QSTR_frequency, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 38000} },
- };
- mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
- mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
-
- const mcu_pin_obj_t* pin = validate_obj_is_free_pin(args[ARG_pin].u_obj);
-
- common_hal_pulseio_pulseout_construct(self, pin, args[ARG_frequency].u_int);
- #endif
-
return MP_OBJ_FROM_PTR(self);
}
diff --git a/shared-bindings/pulseio/PulseOut.h b/shared-bindings/pulseio/PulseOut.h
index 090f6d15c..9d4778e93 100644
--- a/shared-bindings/pulseio/PulseOut.h
+++ b/shared-bindings/pulseio/PulseOut.h
@@ -33,13 +33,11 @@
extern const mp_obj_type_t pulseio_pulseout_type;
-#ifndef CPY_PULSEOUT_USES_DIGITALIO
extern void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
- const pulseio_pwmout_obj_t* carrier);
-#else
-extern void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
- const mcu_pin_obj_t* pin, uint32_t frequency);
-#endif
+ const pulseio_pwmout_obj_t* carrier,
+ const mcu_pin_obj_t* pin,
+ uint32_t frequency,
+ uint16_t duty_cycle);
extern void common_hal_pulseio_pulseout_deinit(pulseio_pulseout_obj_t* self);
extern bool common_hal_pulseio_pulseout_deinited(pulseio_pulseout_obj_t* self);