@@ -433,13 +433,22 @@ STATIC mp_obj_t pb_lwp3device_name(size_t n_args, const mp_obj_t *args) {
433433}
434434STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (pb_lwp3device_name_obj , 1 , 2 , pb_lwp3device_name );
435435
436+ STATIC mp_obj_t pb_lwp3device_disconnect (mp_obj_t self_in ) {
437+ pb_lwp3device_t * lwp3device = & pb_lwp3device_singleton ;
438+ pb_lwp3device_assert_connected ();
439+ pbdrv_bluetooth_peripheral_disconnect (& lwp3device -> task );
440+ return pb_module_tools_pbio_task_wait_or_await (& lwp3device -> task );
441+ }
442+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (pb_lwp3device_disconnect_obj , pb_lwp3device_disconnect );
443+
436444STATIC const pb_attr_dict_entry_t pb_type_pupdevices_Remote_attr_dict [] = {
437445 PB_DEFINE_CONST_ATTR_RO (MP_QSTR_buttons , pb_type_pupdevices_Remote_obj_t , buttons ),
438446 PB_DEFINE_CONST_ATTR_RO (MP_QSTR_light , pb_type_pupdevices_Remote_obj_t , light ),
439447 PB_ATTR_DICT_SENTINEL
440448};
441449
442450STATIC const mp_rom_map_elem_t pb_type_pupdevices_Remote_locals_dict_table [] = {
451+ { MP_ROM_QSTR (MP_QSTR_disconnect ), MP_ROM_PTR (& pb_lwp3device_disconnect_obj ) },
443452 { MP_ROM_QSTR (MP_QSTR_name ), MP_ROM_PTR (& pb_lwp3device_name_obj ) },
444453};
445454STATIC MP_DEFINE_CONST_DICT (pb_type_pupdevices_Remote_locals_dict , pb_type_pupdevices_Remote_locals_dict_table );
@@ -525,6 +534,7 @@ STATIC mp_obj_t lwp3device_read(mp_obj_t self_in) {
525534STATIC MP_DEFINE_CONST_FUN_OBJ_1 (lwp3device_read_obj , lwp3device_read );
526535
527536STATIC const mp_rom_map_elem_t pb_type_iodevices_LWP3Device_locals_dict_table [] = {
537+ { MP_ROM_QSTR (MP_QSTR_disconnect ), MP_ROM_PTR (& pb_lwp3device_disconnect_obj ) },
528538 { MP_ROM_QSTR (MP_QSTR_name ), MP_ROM_PTR (& pb_lwp3device_name_obj ) },
529539 { MP_ROM_QSTR (MP_QSTR_write ), MP_ROM_PTR (& lwp3device_write_obj ) },
530540 { MP_ROM_QSTR (MP_QSTR_read ), MP_ROM_PTR (& lwp3device_read_obj ) },
0 commit comments