|
28 | 28 | #include "py/mphal.h" |
29 | 29 | #include "shared-module/gamepad/GamePad.h" |
30 | 30 | #include "shared-bindings/digitalio/DigitalInOut.h" |
| 31 | +#include "shared-bindings/util.h" |
31 | 32 | #include "GamePad.h" |
32 | 33 |
|
33 | 34 |
|
@@ -93,15 +94,17 @@ gamepad_obj_t* volatile gamepad_singleton = NULL; |
93 | 94 | //| |
94 | 95 | STATIC mp_obj_t gamepad_make_new(const mp_obj_type_t *type, size_t n_args, |
95 | 96 | size_t n_kw, const mp_obj_t *args) { |
96 | | - if (!gamepad_singleton) { |
97 | | - gamepad_singleton = m_new_obj(gamepad_obj_t); |
98 | | - gamepad_singleton->base.type = &gamepad_type; |
99 | | - } |
100 | 97 | for (size_t i = 0; i < n_args; ++i) { |
101 | 98 | if (!MP_OBJ_IS_TYPE(args[i], &digitalio_digitalinout_type)) { |
102 | | - nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError, |
103 | | - "Expected a %q", digitalio_digitalinout_type.name)); |
| 99 | + mp_raise_TypeError("Expected a DigitalInOut"); |
104 | 100 | } |
| 101 | + digitalio_digitalinout_obj_t *pin = MP_OBJ_TO_PTR(args[i]); |
| 102 | + raise_error_if_deinited( |
| 103 | + common_hal_digitalio_digitalinout_deinited(pin)); |
| 104 | + } |
| 105 | + if (!gamepad_singleton) { |
| 106 | + gamepad_singleton = m_new_obj(gamepad_obj_t); |
| 107 | + gamepad_singleton->base.type = &gamepad_type; |
105 | 108 | } |
106 | 109 | gamepad_init(n_args, args); |
107 | 110 | return MP_OBJ_FROM_PTR(gamepad_singleton); |
|
0 commit comments