@@ -53,7 +53,7 @@ void driver_mch22_init() {
53
53
rp2040 .pin_interrupt = GPIO_INT_RP2040 ;
54
54
rp2040 .queue = xQueueCreate (15 , sizeof (rp2040_input_message_t ));
55
55
rp2040_init (& rp2040 );
56
-
56
+
57
57
ice40 .spi_bus = SPI_BUS ;
58
58
ice40 .pin_cs = GPIO_SPI_CS_FPGA ;
59
59
ice40 .pin_done = -1 ;
@@ -91,6 +91,38 @@ static mp_obj_t buttons() {
91
91
}
92
92
static MP_DEFINE_CONST_FUN_OBJ_0 (buttons_obj , buttons ) ;
93
93
94
+ static mp_obj_t get_gpio_dir (mp_obj_t gpio ) {
95
+ uint8_t value_gpio = mp_obj_get_int (gpio );
96
+ uint8_t value_direction ;
97
+ rp2040_get_gpio_dir (& rp2040 , value_gpio , & value_direction );
98
+ return mp_obj_new_int (value_direction );
99
+ }
100
+ static MP_DEFINE_CONST_FUN_OBJ_1 (get_gpio_dir_obj , get_gpio_dir ) ;
101
+
102
+ static mp_obj_t set_gpio_dir (mp_obj_t gpio , mp_obj_t value ) {
103
+ uint8_t value_gpio = mp_obj_get_int (gpio );
104
+ bool value_value = (bool ) mp_obj_get_int (value );
105
+ rp2040_set_gpio_dir (& rp2040 , value_gpio , value_value );
106
+ return mp_const_none ;
107
+ }
108
+ static MP_DEFINE_CONST_FUN_OBJ_2 (set_gpio_dir_obj , set_gpio_dir ) ;
109
+
110
+ static mp_obj_t get_gpio_value (mp_obj_t gpio ) {
111
+ uint8_t value_gpio = mp_obj_get_int (gpio );
112
+ uint8_t value_value ;
113
+ rp2040_get_gpio_value (& rp2040 , value_gpio , & value_value );
114
+ return mp_obj_new_int (value_value );
115
+ }
116
+ static MP_DEFINE_CONST_FUN_OBJ_1 (get_gpio_value_obj , get_gpio_value ) ;
117
+
118
+ static mp_obj_t set_gpio_value (mp_obj_t gpio , mp_obj_t value ) {
119
+ uint8_t value_gpio = mp_obj_get_int (gpio );
120
+ bool value_value = (bool ) mp_obj_get_int (value );
121
+ rp2040_set_gpio_value (& rp2040 , value_gpio , value_value );
122
+ return mp_const_none ;
123
+ }
124
+ static MP_DEFINE_CONST_FUN_OBJ_2 (set_gpio_value_obj , set_gpio_value ) ;
125
+
94
126
static mp_obj_t set_handler (mp_obj_t handler ) {
95
127
touch_callback = handler ;
96
128
return mp_const_none ;
@@ -275,9 +307,14 @@ static mp_obj_t read_vusb() {
275
307
}
276
308
static MP_DEFINE_CONST_FUN_OBJ_0 (read_vusb_obj , read_vusb ) ;
277
309
310
+ typedef enum {SAO_IO0_PIN , SAO_IO1_PIN , PROTO_0_PIN , PROTO_1_PIN } gpio_name_t ;
278
311
279
312
STATIC const mp_rom_map_elem_t mch22_module_globals_table [] = {
280
313
{MP_ROM_QSTR (MP_QSTR_buttons ), MP_ROM_PTR (& buttons_obj )},
314
+ {MP_ROM_QSTR (MP_QSTR_get_gpio_dir ), MP_ROM_PTR (& get_gpio_dir_obj )},
315
+ {MP_ROM_QSTR (MP_QSTR_set_gpio_dir ), MP_ROM_PTR (& set_gpio_dir_obj )},
316
+ {MP_ROM_QSTR (MP_QSTR_get_gpio_value ), MP_ROM_PTR (& get_gpio_value_obj )},
317
+ {MP_ROM_QSTR (MP_QSTR_set_gpio_value ), MP_ROM_PTR (& set_gpio_value_obj )},
281
318
{MP_ROM_QSTR (MP_QSTR_get_brightness ), MP_ROM_PTR (& get_brightness_obj )},
282
319
{MP_ROM_QSTR (MP_QSTR_set_brightness ), MP_ROM_PTR (& set_brightness_obj )},
283
320
{MP_ROM_QSTR (MP_QSTR_set_handler ), MP_ROM_PTR (& set_handler_obj )},
@@ -293,6 +330,11 @@ STATIC const mp_rom_map_elem_t mch22_module_globals_table[] = {
293
330
{MP_ROM_QSTR (MP_QSTR_exit_python ), MP_ROM_PTR (& mch22_return_to_launcher_obj )},
294
331
{MP_ROM_QSTR (MP_QSTR_read_vbat ), MP_ROM_PTR (& read_vbat_obj )},
295
332
{MP_ROM_QSTR (MP_QSTR_read_vusb ), MP_ROM_PTR (& read_vusb_obj )},
333
+
334
+ { MP_ROM_QSTR (MP_QSTR_SAO_IO0_PIN ), MP_ROM_INT (SAO_IO0_PIN ) },
335
+ { MP_ROM_QSTR (MP_QSTR_SAO_IO1_PIN ), MP_ROM_INT (SAO_IO1_PIN ) },
336
+ { MP_ROM_QSTR (MP_QSTR_PROTO_0_PIN ), MP_ROM_INT (PROTO_0_PIN ) },
337
+ { MP_ROM_QSTR (MP_QSTR_PROTO_1_PIN ), MP_ROM_INT (PROTO_1_PIN ) },
296
338
};
297
339
298
340
STATIC MP_DEFINE_CONST_DICT (mch22_module_globals , mch22_module_globals_table );
0 commit comments