From 4eab44a1ec19f71e01b2c4f0747b95da0d34da77 Mon Sep 17 00:00:00 2001 From: Jim Mussared Date: Wed, 20 Apr 2022 16:06:22 +1000 Subject: [PATCH] extmod: Make extmod modules use MP_REGISTER_MODULE. Signed-off-by: Jim Mussared --- extmod/modbluetooth.c | 2 + extmod/modbtree.c | 2 + extmod/modframebuf.c | 2 + extmod/modlwip.c | 2 + extmod/moduasyncio.c | 2 + extmod/modubinascii.c | 2 + extmod/moducryptolib.c | 2 + extmod/moductypes.c | 2 + extmod/moduhashlib.c | 2 + extmod/moduheapq.c | 2 + extmod/modujson.c | 2 + extmod/moduos.c | 2 + extmod/moduplatform.c | 2 + extmod/modurandom.c | 2 + extmod/modure.c | 2 + extmod/moduselect.c | 2 + extmod/modussl_axtls.c | 4 +- extmod/modussl_mbedtls.c | 4 +- extmod/modutimeq.c | 1 + extmod/moduwebsocket.c | 2 + extmod/moduzlib.c | 3 ++ extmod/modwebrepl.c | 2 + ports/cc3200/mods/modmachine.c | 2 + ports/esp32/modmachine.c | 2 + ports/esp8266/modmachine.c | 2 + ports/mimxrt/modmachine.c | 2 + ports/nrf/modules/machine/modmachine.c | 1 + ports/qemu-arm/modmachine.c | 2 + ports/rp2/modmachine.c | 2 + ports/samd/modmachine.c | 2 + ports/stm32/modmachine.c | 2 + ports/unix/modmachine.c | 2 + ports/zephyr/modmachine.c | 2 + py/moduerrno.c | 2 + py/objmodule.c | 72 -------------------------- 35 files changed, 69 insertions(+), 74 deletions(-) diff --git a/extmod/modbluetooth.c b/extmod/modbluetooth.c index 68656551c7..aecf48fd41 100644 --- a/extmod/modbluetooth.c +++ b/extmod/modbluetooth.c @@ -1004,6 +1004,8 @@ const mp_obj_module_t mp_module_ubluetooth = { .globals = (mp_obj_dict_t *)&mp_module_bluetooth_globals, }; +MP_REGISTER_MODULE(MP_QSTR_ubluetooth, mp_module_ubluetooth, MICROPY_PY_BLUETOOTH); + // Helpers #if !MICROPY_PY_BLUETOOTH_USE_SYNC_EVENTS diff --git a/extmod/modbtree.c b/extmod/modbtree.c index 467b68e1dc..df33d765e0 100644 --- a/extmod/modbtree.c +++ b/extmod/modbtree.c @@ -379,6 +379,8 @@ const mp_obj_module_t mp_module_btree = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&mp_module_btree_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_btree, mp_module_btree, MICROPY_PY_BTREE); #endif #endif // MICROPY_PY_BTREE diff --git a/extmod/modframebuf.c b/extmod/modframebuf.c index fb231362e6..4dfdb7eea5 100644 --- a/extmod/modframebuf.c +++ b/extmod/modframebuf.c @@ -667,6 +667,8 @@ const mp_obj_module_t mp_module_framebuf = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&framebuf_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_framebuf, mp_module_framebuf, MICROPY_PY_FRAMEBUF); #endif #endif // MICROPY_PY_FRAMEBUF diff --git a/extmod/modlwip.c b/extmod/modlwip.c index 4d4ffc1e07..53bead2a32 100644 --- a/extmod/modlwip.c +++ b/extmod/modlwip.c @@ -1778,4 +1778,6 @@ const mp_obj_module_t mp_module_lwip = { .globals = (mp_obj_dict_t *)&mp_module_lwip_globals, }; +MP_REGISTER_MODULE(MP_QSTR_lwip, mp_module_lwip, MICROPY_PY_LWIP); + #endif // MICROPY_PY_LWIP diff --git a/extmod/moduasyncio.c b/extmod/moduasyncio.c index c4ee897c2e..b09b8d67b0 100644 --- a/extmod/moduasyncio.c +++ b/extmod/moduasyncio.c @@ -310,4 +310,6 @@ const mp_obj_module_t mp_module_uasyncio = { .globals = (mp_obj_dict_t *)&mp_module_uasyncio_globals, }; +MP_REGISTER_MODULE(MP_QSTR__uasyncio, mp_module_uasyncio, MICROPY_PY_UASYNCIO); + #endif // MICROPY_PY_UASYNCIO diff --git a/extmod/modubinascii.c b/extmod/modubinascii.c index b34f232c62..a362a2d6eb 100644 --- a/extmod/modubinascii.c +++ b/extmod/modubinascii.c @@ -258,4 +258,6 @@ const mp_obj_module_t mp_module_ubinascii = { .globals = (mp_obj_dict_t *)&mp_module_binascii_globals, }; +MP_REGISTER_MODULE(MP_QSTR_ubinascii, mp_module_ubinascii, MICROPY_PY_UBINASCII); + #endif // MICROPY_PY_UBINASCII diff --git a/extmod/moducryptolib.c b/extmod/moducryptolib.c index 50cdbfa72e..ba04a7bde3 100644 --- a/extmod/moducryptolib.c +++ b/extmod/moducryptolib.c @@ -374,4 +374,6 @@ const mp_obj_module_t mp_module_ucryptolib = { .globals = (mp_obj_dict_t *)&mp_module_ucryptolib_globals, }; +MP_REGISTER_MODULE(MP_QSTR_ucryptolib, mp_module_ucryptolib, MICROPY_PY_UCRYPTOLIB); + #endif // MICROPY_PY_UCRYPTOLIB diff --git a/extmod/moductypes.c b/extmod/moductypes.c index 7a0cbc39b4..a6ebd92ebc 100644 --- a/extmod/moductypes.c +++ b/extmod/moductypes.c @@ -717,4 +717,6 @@ const mp_obj_module_t mp_module_uctypes = { .globals = (mp_obj_dict_t *)&mp_module_uctypes_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uctypes, mp_module_uctypes, MICROPY_PY_UCTYPES); + #endif diff --git a/extmod/moduhashlib.c b/extmod/moduhashlib.c index 765dd29c1e..ded9972ca2 100644 --- a/extmod/moduhashlib.c +++ b/extmod/moduhashlib.c @@ -371,4 +371,6 @@ const mp_obj_module_t mp_module_uhashlib = { .globals = (mp_obj_dict_t *)&mp_module_uhashlib_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uhashlib, mp_module_uhashlib, MICROPY_PY_UHASHLIB); + #endif // MICROPY_PY_UHASHLIB diff --git a/extmod/moduheapq.c b/extmod/moduheapq.c index 073ce516b9..42871f2c06 100644 --- a/extmod/moduheapq.c +++ b/extmod/moduheapq.c @@ -117,6 +117,8 @@ const mp_obj_module_t mp_module_uheapq = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&mp_module_uheapq_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_uheapq, mp_module_uheapq, MICROPY_PY_UHEAPQ); #endif #endif // MICROPY_PY_UHEAPQ diff --git a/extmod/modujson.c b/extmod/modujson.c index e5bfb0d966..befa351f1c 100644 --- a/extmod/modujson.c +++ b/extmod/modujson.c @@ -381,4 +381,6 @@ const mp_obj_module_t mp_module_ujson = { .globals = (mp_obj_dict_t *)&mp_module_ujson_globals, }; +MP_REGISTER_MODULE(MP_QSTR_ujson, mp_module_ujson, MICROPY_PY_UJSON); + #endif // MICROPY_PY_UJSON diff --git a/extmod/moduos.c b/extmod/moduos.c index ed278dd545..2b902eb214 100644 --- a/extmod/moduos.c +++ b/extmod/moduos.c @@ -176,4 +176,6 @@ const mp_obj_module_t mp_module_uos = { .globals = (mp_obj_dict_t *)&os_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uos, mp_module_uos, MICROPY_PY_UOS); + #endif // MICROPY_PY_UOS diff --git a/extmod/moduplatform.c b/extmod/moduplatform.c index fa59c9227d..16e45078f3 100644 --- a/extmod/moduplatform.c +++ b/extmod/moduplatform.c @@ -75,4 +75,6 @@ const mp_obj_module_t mp_module_uplatform = { .globals = (mp_obj_dict_t *)&modplatform_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uplatform, mp_module_uplatform, MICROPY_PY_UPLATFORM); + #endif // MICROPY_PY_UPLATFORM diff --git a/extmod/modurandom.c b/extmod/modurandom.c index 21fbac6942..6e5f99de76 100644 --- a/extmod/modurandom.c +++ b/extmod/modurandom.c @@ -254,6 +254,8 @@ const mp_obj_module_t mp_module_urandom = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&mp_module_urandom_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_urandom, mp_module_urandom, MICROPY_PY_URANDOM); #endif #endif // MICROPY_PY_URANDOM diff --git a/extmod/modure.c b/extmod/modure.c index 70bc02aa4d..1d9d82c7ba 100644 --- a/extmod/modure.c +++ b/extmod/modure.c @@ -447,6 +447,8 @@ const mp_obj_module_t mp_module_ure = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&mp_module_re_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_ure, mp_module_ure, MICROPY_PY_URE); #endif // Source files #include'd here to make sure they're compiled in diff --git a/extmod/moduselect.c b/extmod/moduselect.c index 27dc04604a..296d38a5d4 100644 --- a/extmod/moduselect.c +++ b/extmod/moduselect.c @@ -373,4 +373,6 @@ const mp_obj_module_t mp_module_uselect = { .globals = (mp_obj_dict_t *)&mp_module_select_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uselect, mp_module_uselect, MICROPY_PY_USELECT); + #endif // MICROPY_PY_USELECT diff --git a/extmod/modussl_axtls.c b/extmod/modussl_axtls.c index 9d59342067..c9ce629b61 100644 --- a/extmod/modussl_axtls.c +++ b/extmod/modussl_axtls.c @@ -358,4 +358,6 @@ const mp_obj_module_t mp_module_ussl = { .globals = (mp_obj_dict_t *)&mp_module_ssl_globals, }; -#endif // MICROPY_PY_USSL +MP_REGISTER_MODULE(MP_QSTR_ussl, mp_module_ussl, MICROPY_PY_USSL && MICROPY_SSL_AXTLS); + +#endif // MICROPY_PY_USSL && MICROPY_SSL_AXTLS diff --git a/extmod/modussl_mbedtls.c b/extmod/modussl_mbedtls.c index 277af37c7c..8496642d02 100644 --- a/extmod/modussl_mbedtls.c +++ b/extmod/modussl_mbedtls.c @@ -418,4 +418,6 @@ const mp_obj_module_t mp_module_ussl = { .globals = (mp_obj_dict_t *)&mp_module_ssl_globals, }; -#endif // MICROPY_PY_USSL +MP_REGISTER_MODULE(MP_QSTR_ussl, mp_module_ussl, MICROPY_PY_USSL && MICROPY_SSL_MBEDTLS); + +#endif // MICROPY_PY_USSL && MICROPY_SSL_MBEDTLS diff --git a/extmod/modutimeq.c b/extmod/modutimeq.c index e92f4d9032..93a9d09b04 100644 --- a/extmod/modutimeq.c +++ b/extmod/modutimeq.c @@ -229,4 +229,5 @@ const mp_obj_module_t mp_module_utimeq = { .globals = (mp_obj_dict_t *)&mp_module_utimeq_globals, }; +MP_REGISTER_MODULE(MP_QSTR_utimeq, mp_module_utimeq, MICROPY_PY_UTIMEQ); #endif // MICROPY_PY_UTIMEQ diff --git a/extmod/moduwebsocket.c b/extmod/moduwebsocket.c index 44e77da567..48f4cc78ef 100644 --- a/extmod/moduwebsocket.c +++ b/extmod/moduwebsocket.c @@ -310,4 +310,6 @@ const mp_obj_module_t mp_module_uwebsocket = { .globals = (mp_obj_dict_t *)&uwebsocket_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uwebsocket, mp_module_uwebsocket, MICROPY_PY_UWEBSOCKET); + #endif // MICROPY_PY_UWEBSOCKET diff --git a/extmod/moduzlib.c b/extmod/moduzlib.c index d02404f1cd..b74c6b7b1a 100644 --- a/extmod/moduzlib.c +++ b/extmod/moduzlib.c @@ -221,6 +221,9 @@ const mp_obj_module_t mp_module_uzlib = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&mp_module_uzlib_globals, }; + + +MP_REGISTER_MODULE(MP_QSTR_uzlib, mp_module_uzlib, MICROPY_PY_UZLIB); #endif // Source files #include'd here to make sure they're compiled in diff --git a/extmod/modwebrepl.c b/extmod/modwebrepl.c index 63810447fa..e5fa5128c9 100644 --- a/extmod/modwebrepl.c +++ b/extmod/modwebrepl.c @@ -363,4 +363,6 @@ const mp_obj_module_t mp_module_webrepl = { .globals = (mp_obj_dict_t *)&webrepl_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR__webrepl, mp_module_webrepl, MICROPY_PY_WEBREPL); + #endif // MICROPY_PY_WEBREPL diff --git a/ports/cc3200/mods/modmachine.c b/ports/cc3200/mods/modmachine.c index ee76d6e516..be8b7d6b52 100644 --- a/ports/cc3200/mods/modmachine.c +++ b/ports/cc3200/mods/modmachine.c @@ -213,3 +213,5 @@ const mp_obj_module_t mp_module_machine = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t*)&machine_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/esp32/modmachine.c b/ports/esp32/modmachine.c index dfe2435ec2..f1e261634d 100644 --- a/ports/esp32/modmachine.c +++ b/ports/esp32/modmachine.c @@ -337,4 +337,6 @@ const mp_obj_module_t mp_module_machine = { .globals = (mp_obj_dict_t *)&machine_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); + #endif // MICROPY_PY_MACHINE diff --git a/ports/esp8266/modmachine.c b/ports/esp8266/modmachine.c index 966f12749f..ef1b50f638 100644 --- a/ports/esp8266/modmachine.c +++ b/ports/esp8266/modmachine.c @@ -453,4 +453,6 @@ const mp_obj_module_t mp_module_machine = { .globals = (mp_obj_dict_t *)&machine_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); + #endif // MICROPY_PY_MACHINE diff --git a/ports/mimxrt/modmachine.c b/ports/mimxrt/modmachine.c index d2358c5069..fd83ebaad4 100644 --- a/ports/mimxrt/modmachine.c +++ b/ports/mimxrt/modmachine.c @@ -159,3 +159,5 @@ const mp_obj_module_t mp_module_machine = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&machine_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/nrf/modules/machine/modmachine.c b/ports/nrf/modules/machine/modmachine.c index 3d4cda8e45..65297548a4 100644 --- a/ports/nrf/modules/machine/modmachine.c +++ b/ports/nrf/modules/machine/modmachine.c @@ -249,3 +249,4 @@ const mp_obj_module_t mp_module_machine = { .globals = (mp_obj_dict_t*)&machine_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/qemu-arm/modmachine.c b/ports/qemu-arm/modmachine.c index 728fd4fa31..1168e74a13 100644 --- a/ports/qemu-arm/modmachine.c +++ b/ports/qemu-arm/modmachine.c @@ -45,3 +45,5 @@ const mp_obj_module_t mp_module_machine = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&machine_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/rp2/modmachine.c b/ports/rp2/modmachine.c index 9d6178a0f2..d6941bcfe4 100644 --- a/ports/rp2/modmachine.c +++ b/ports/rp2/modmachine.c @@ -187,3 +187,5 @@ const mp_obj_module_t mp_module_machine = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&machine_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/samd/modmachine.c b/ports/samd/modmachine.c index 0ebb5581cd..8da83b7d2b 100644 --- a/ports/samd/modmachine.c +++ b/ports/samd/modmachine.c @@ -128,3 +128,5 @@ const mp_obj_module_t mp_module_machine = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&machine_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/stm32/modmachine.c b/ports/stm32/modmachine.c index 3a24e08f48..20140ed101 100644 --- a/ports/stm32/modmachine.c +++ b/ports/stm32/modmachine.c @@ -480,3 +480,5 @@ const mp_obj_module_t mp_module_machine = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&machine_module_globals, }; + +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); diff --git a/ports/unix/modmachine.c b/ports/unix/modmachine.c index 5b462a3b15..3d4d9eebca 100644 --- a/ports/unix/modmachine.c +++ b/ports/unix/modmachine.c @@ -110,4 +110,6 @@ const mp_obj_module_t mp_module_machine = { .globals = (mp_obj_dict_t *)&machine_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); + #endif // MICROPY_PY_MACHINE diff --git a/ports/zephyr/modmachine.c b/ports/zephyr/modmachine.c index bc984d1b63..c8b07c023b 100644 --- a/ports/zephyr/modmachine.c +++ b/ports/zephyr/modmachine.c @@ -89,4 +89,6 @@ const mp_obj_module_t mp_module_machine = { .globals = (mp_obj_dict_t *)&machine_module_globals, }; +MP_REGISTER_MODULE(MP_QSTR_umachine, mp_module_machine, MICROPY_PY_MACHINE); + #endif // MICROPY_PY_MACHINE diff --git a/py/moduerrno.c b/py/moduerrno.c index d9affd9b20..4b61e0bda2 100644 --- a/py/moduerrno.c +++ b/py/moduerrno.c @@ -99,6 +99,8 @@ const mp_obj_module_t mp_module_uerrno = { .globals = (mp_obj_dict_t *)&mp_module_uerrno_globals, }; +MP_REGISTER_MODULE(MP_QSTR_uerrno, mp_module_uerrno, MICROPY_PY_UERRNO); + qstr mp_errno_to_str(mp_obj_t errno_val) { #if MICROPY_PY_UERRNO_ERRORCODE // We have the errorcode dict so can do a lookup using the hash map diff --git a/py/objmodule.c b/py/objmodule.c index b109d723a5..d550e77556 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -193,78 +193,6 @@ STATIC const mp_rom_map_elem_t mp_builtin_module_table[] = { { MP_ROM_QSTR(MP_QSTR__thread), MP_ROM_PTR(&mp_module_thread) }, #endif - // extmod modules - - #if MICROPY_PY_UASYNCIO - { MP_ROM_QSTR(MP_QSTR__uasyncio), MP_ROM_PTR(&mp_module_uasyncio) }, - #endif - #if MICROPY_PY_UERRNO - { MP_ROM_QSTR(MP_QSTR_uerrno), MP_ROM_PTR(&mp_module_uerrno) }, - #endif - #if MICROPY_PY_UCTYPES - { MP_ROM_QSTR(MP_QSTR_uctypes), MP_ROM_PTR(&mp_module_uctypes) }, - #endif - #if MICROPY_PY_UZLIB - { MP_ROM_QSTR(MP_QSTR_uzlib), MP_ROM_PTR(&mp_module_uzlib) }, - #endif - #if MICROPY_PY_UJSON - { MP_ROM_QSTR(MP_QSTR_ujson), MP_ROM_PTR(&mp_module_ujson) }, - #endif - #if MICROPY_PY_UOS - { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_uos) }, - #endif - #if MICROPY_PY_URE - { MP_ROM_QSTR(MP_QSTR_ure), MP_ROM_PTR(&mp_module_ure) }, - #endif - #if MICROPY_PY_UHEAPQ - { MP_ROM_QSTR(MP_QSTR_uheapq), MP_ROM_PTR(&mp_module_uheapq) }, - #endif - #if MICROPY_PY_UTIMEQ - { MP_ROM_QSTR(MP_QSTR_utimeq), MP_ROM_PTR(&mp_module_utimeq) }, - #endif - #if MICROPY_PY_UHASHLIB - { MP_ROM_QSTR(MP_QSTR_uhashlib), MP_ROM_PTR(&mp_module_uhashlib) }, - #endif - #if MICROPY_PY_UCRYPTOLIB - { MP_ROM_QSTR(MP_QSTR_ucryptolib), MP_ROM_PTR(&mp_module_ucryptolib) }, - #endif - #if MICROPY_PY_UBINASCII - { MP_ROM_QSTR(MP_QSTR_ubinascii), MP_ROM_PTR(&mp_module_ubinascii) }, - #endif - #if MICROPY_PY_URANDOM - { MP_ROM_QSTR(MP_QSTR_urandom), MP_ROM_PTR(&mp_module_urandom) }, - #endif - #if MICROPY_PY_USELECT - { MP_ROM_QSTR(MP_QSTR_uselect), MP_ROM_PTR(&mp_module_uselect) }, - #endif - #if MICROPY_PY_USSL - { MP_ROM_QSTR(MP_QSTR_ussl), MP_ROM_PTR(&mp_module_ussl) }, - #endif - #if MICROPY_PY_LWIP - { MP_ROM_QSTR(MP_QSTR_lwip), MP_ROM_PTR(&mp_module_lwip) }, - #endif - #if MICROPY_PY_MACHINE - { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&mp_module_machine) }, - #endif - #if MICROPY_PY_UWEBSOCKET - { MP_ROM_QSTR(MP_QSTR_uwebsocket), MP_ROM_PTR(&mp_module_uwebsocket) }, - #endif - #if MICROPY_PY_WEBREPL - { MP_ROM_QSTR(MP_QSTR__webrepl), MP_ROM_PTR(&mp_module_webrepl) }, - #endif - #if MICROPY_PY_FRAMEBUF - { MP_ROM_QSTR(MP_QSTR_framebuf), MP_ROM_PTR(&mp_module_framebuf) }, - #endif - #if MICROPY_PY_BTREE - { MP_ROM_QSTR(MP_QSTR_btree), MP_ROM_PTR(&mp_module_btree) }, - #endif - #if MICROPY_PY_BLUETOOTH - { MP_ROM_QSTR(MP_QSTR_ubluetooth), MP_ROM_PTR(&mp_module_ubluetooth) }, - #endif - #if MICROPY_PY_UPLATFORM - { MP_ROM_QSTR(MP_QSTR_uplatform), MP_ROM_PTR(&mp_module_uplatform) }, - #endif - // extra builtin modules as defined by a port MICROPY_PORT_BUILTIN_MODULES