1 #include <stdint.h> 2 #include <stdlib.h> 3 4 extern const char haas_help_text[]; 5 6 // Options to control how MicroPython is built for this port, 7 // overriding defaults in py/mpconfig.h. 8 9 // system endianness 10 #define MP_ENDIANNESS_LITTLE (1) 11 12 // You can disable the built-in MicroPython compiler by setting the following 13 // config option to 0. If you do this then you won't get a REPL prompt, but you 14 // will still be able to execute pre-compiled scripts, compiled with mpy-cross. 15 #define MICROPY_ENABLE_COMPILER (1) 16 17 // object representation and NLR handling 18 #define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_A) 19 #define MICROPY_NLR_SETJMP (1) 20 21 // memory allocation policies 22 #define MICROPY_ALLOC_PATH_MAX (256) 23 24 // emitters 25 #define MICROPY_PERSISTENT_CODE_LOAD (1) 26 #define MICROPY_EMIT_XTENSAWIN (1) 27 28 // compiler configuration 29 #define MICROPY_COMP_MODULE_CONST (1) 30 #define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (1) 31 32 // optimisations 33 #define MICROPY_OPT_COMPUTED_GOTO (1) 34 #define MICROPY_OPT_MPZ_BITWISE (1) 35 36 // Python internal features 37 #define MICROPY_READER_VFS (0) 38 #define MICROPY_READER_POSIX (1) 39 #define MICROPY_ENABLE_FINALISER (0) 40 #define MICROPY_STACK_CHECK (1) 41 #define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1) 42 #define MICROPY_KBD_EXCEPTION (1) 43 #define MICROPY_HELPER_REPL (1) 44 #define MICROPY_REPL_EMACS_KEYS (1) 45 #define MICROPY_REPL_AUTO_INDENT (1) 46 #define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) 47 #define MICROPY_ENABLE_SOURCE_LINE (1) 48 #define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_NORMAL) 49 #define MICROPY_WARNINGS (1) 50 #define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_FLOAT) 51 #define MICROPY_CPYTHON_COMPAT (0) 52 #define MICROPY_STREAMS_NON_BLOCK (1) 53 #define MICROPY_STREAMS_POSIX_API (1) 54 #define MICROPY_MODULE_BUILTIN_INIT (1) 55 #define MICROPY_MODULE_WEAK_LINKS (1) 56 #define MICROPY_MODULE_FROZEN_STR (0) 57 #define MICROPY_MODULE_FROZEN_MPY (1) 58 #define MICROPY_QSTR_EXTRA_POOL mp_qstr_frozen_const_pool 59 #define MICROPY_CAN_OVERRIDE_BUILTINS (1) 60 #define MICROPY_USE_INTERNAL_ERRNO (0) // errno.h from xtensa-esp32-elf/sys-include/sys 61 #define MICROPY_USE_INTERNAL_PRINTF (0) // ESP32 SDK requires its own printf 62 #define MICROPY_ENABLE_SCHEDULER (1) 63 #define MICROPY_SCHEDULER_DEPTH (8) 64 #define MICROPY_VFS (1) 65 #define MICROPY_VFS_FAT (0) 66 #define MICROPY_VFS_POSIX (0) 67 #define USE_STATFS (MICROPY_VFS_POSIX) 68 69 #define MICROPY_ENABLE_GC (1) 70 #define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1) 71 #define MICROPY_MEM_STATS (0) 72 73 // control over Python builtins 74 #define MICROPY_PY_FUNCTION_ATTRS (1) 75 #define MICROPY_PY_DESCRIPTORS (1) 76 #define MICROPY_PY_DELATTR_SETATTR (1) 77 #define MICROPY_PY_STR_BYTES_CMP_WARN (1) 78 #define MICROPY_PY_BUILTINS_STR_UNICODE (1) 79 #define MICROPY_PY_BUILTINS_STR_CENTER (1) 80 #define MICROPY_PY_BUILTINS_STR_PARTITION (1) 81 #define MICROPY_PY_BUILTINS_STR_SPLITLINES (1) 82 #define MICROPY_PY_BUILTINS_BYTEARRAY (1) 83 #define MICROPY_PY_BUILTINS_MEMORYVIEW (1) 84 #define MICROPY_PY_BUILTINS_SET (1) 85 #define MICROPY_PY_BUILTINS_SLICE (1) 86 #define MICROPY_PY_BUILTINS_SLICE_ATTRS (1) 87 #define MICROPY_PY_BUILTINS_SLICE_INDICES (1) 88 #define MICROPY_PY_BUILTINS_FROZENSET (1) 89 #define MICROPY_PY_BUILTINS_PROPERTY (1) 90 #define MICROPY_PY_BUILTINS_RANGE_ATTRS (1) 91 #define MICROPY_PY_BUILTINS_ROUND_INT (1) 92 #define MICROPY_PY_ALL_SPECIAL_METHODS (1) 93 #define MICROPY_PY_BUILTINS_COMPILE (1) 94 #define MICROPY_PY_BUILTINS_ENUMERATE (1) 95 #define MICROPY_PY_BUILTINS_EXECFILE (1) 96 #define MICROPY_PY_BUILTINS_FILTER (1) 97 #define MICROPY_PY_BUILTINS_REVERSED (1) 98 #define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1) 99 #define MICROPY_PY_BUILTINS_INPUT (1) 100 #define MICROPY_PY_BUILTINS_MIN_MAX (1) 101 #define MICROPY_PY_BUILTINS_POW3 (1) 102 #define MICROPY_PY_BUILTINS_HELP (1) 103 #define MICROPY_PY_BUILTINS_HELP_TEXT haas_help_text 104 #define MICROPY_PY_BUILTINS_HELP_MODULES (1) 105 #define MICROPY_PY___FILE__ (1) 106 #define MICROPY_PY_MICROPYTHON_MEM_INFO (1) 107 #define MICROPY_PY_ARRAY (1) 108 #define MICROPY_PY_ARRAY_SLICE_ASSIGN (1) 109 #define MICROPY_PY_ATTRTUPLE (1) 110 #define MICROPY_PY_COLLECTIONS (1) 111 #define MICROPY_PY_COLLECTIONS_DEQUE (1) 112 #define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1) 113 #define MICROPY_PY_MATH (1) 114 #define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) 115 #define MICROPY_PY_MATH_ISCLOSE (1) 116 #define MICROPY_PY_CMATH (1) 117 #define MICROPY_PY_GC (1) 118 #define MICROPY_PY_IO (1) 119 #define MICROPY_PY_IO_IOBASE (1) 120 #define MICROPY_PY_IO_FILEIO (0) 121 #define MICROPY_PY_IO_BYTESIO (1) 122 #define MICROPY_PY_IO_BUFFEREDWRITER (1) 123 #define MICROPY_PY_STRUCT (1) 124 #define MICROPY_PY_SYS (1) 125 #define MICROPY_PY_SYS_MAXSIZE (1) 126 #define MICROPY_PY_SYS_MODULES (1) 127 #define MICROPY_PY_SYS_EXIT (1) 128 #define MICROPY_PY_SYS_ATEXIT (1) 129 #define MICROPY_PY_SYS_STDFILES (0) 130 #define MICROPY_PY_SYS_STDIO_BUFFER (1) 131 #define MICROPY_PY_UERRNO (1) 132 #define MICROPY_PY_USELECT (1) 133 #define MICROPY_PY_UTIME_MP_HAL (1) 134 #define MICROPY_PY_UTIME (1) 135 #define MICROPY_PY_THREAD (1) 136 #define MICROPY_PY_THREAD_GIL (1) 137 #define MICROPY_PY_THREAD_GIL_VM_DIVISOR (32) 138 139 #define MICROPY_DEBUG_VERBOSE (0) 140 141 // extended modules 142 #define MICROPY_PY_BLUETOOTH (0) 143 #ifndef MICROPY_PY_BLUETOOTH 144 #define MICROPY_PY_BLUETOOTH (1) 145 #define MICROPY_PY_BLUETOOTH_ENABLE_CENTRAL_MODE (1) 146 #define MICROPY_BLUETOOTH_NIMBLE (1) 147 #define MICROPY_BLUETOOTH_NIMBLE_BINDINGS_ONLY (1) 148 #endif 149 #define MICROPY_EPOCH_IS_1970 (1) 150 #define MICROPY_PY_UASYNCIO (1) 151 #define MICROPY_PY_UCTYPES (1) 152 #define MICROPY_PY_UZLIB (1) 153 #define MICROPY_PY_UJSON (1) 154 #define MICROPY_PY_URE (1) 155 #define MICROPY_PY_URE_SUB (1) 156 #define MICROPY_PY_UHEAPQ (1) 157 #define MICROPY_PY_UTIMEQ (1) 158 #define MICROPY_PY_UHASHLIB (1) 159 #define MICROPY_PY_UHASHLIB_SHA1 (1) 160 #define MICROPY_PY_UHASHLIB_SHA256 (1) 161 #define MICROPY_PY_UHASHLIB_MD5 (1) 162 #define MICROPY_PY_UCRYPTOLIB (1) 163 #define MICROPY_PY_UBINASCII (1) 164 #define MICROPY_PY_UBINASCII_CRC32 (1) 165 #define MICROPY_PY_URANDOM (1) 166 #define MICROPY_PY_URANDOM_EXTRA_FUNCS (1) 167 #define MICROPY_PY_URANDOM_SEED_INIT_FUNC (rand()) 168 #define MICROPY_PY_OS_DUPTERM (1) 169 #define MICROPY_PY_MACHINE (1) 170 #define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new 171 #define MICROPY_PY_MACHINE_PULSE (1) 172 #define MICROPY_PY_MACHINE_I2C (1) 173 #define MICROPY_PY_MACHINE_SPI (1) 174 #define MICROPY_PY_MACHINE_SPI_MSB (0) 175 #define MICROPY_PY_MACHINE_SPI_LSB (1) 176 #define MICROPY_PY_MACHINE_HW_PWM (0) 177 #ifndef MICROPY_HW_ENABLE_SDCARD 178 #define MICROPY_HW_ENABLE_SDCARD (1) 179 #endif 180 #define MICROPY_HW_SOFTSPI_MIN_DELAY (0) 181 #define MICROPY_HW_SOFTSPI_MAX_BAUDRATE (200 * 1000000 / 200) // roughly, ets_get_cpu_frequency() 182 #define MICROPY_PY_USSL (1) 183 #define MICROPY_SSL_MBEDTLS (1) 184 #define MICROPY_PY_USSL_FINALISER (1) 185 #define MICROPY_PY_UWEBSOCKET (1) 186 #define MICROPY_PY_WEBREPL (1) 187 #define MICROPY_PY_FRAMEBUF (1) // fatal error: ports/stm32/font_petme128_8x8.h: No such file or directory 188 #define MICROPY_PY_BTREE (0) // fatal error: btree/btree.h: No such file or directory 189 #define MICROPY_PY_USOCKET_EVENTS (MICROPY_PY_WEBREPL) 190 #define MICROPY_PY_BLUETOOTH_RANDOM_ADDR (1) 191 #define MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME ("HAAS") 192 193 // fatfs configuration 194 #define MICROPY_FATFS_ENABLE_LFN (1) 195 #define MICROPY_FATFS_LFN_CODE_PAGE 437 /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */ 196 #define MICROPY_FATFS_USE_LABEL (1) 197 #define MICROPY_FATFS_RPATH (2) 198 #define MICROPY_FATFS_MULTI_PARTITION (1) 199 #if MICROPY_VFS_FAT 200 #define mp_type_fileio mp_type_vfs_fat_fileio 201 #define mp_type_textio mp_type_vfs_fat_textio 202 #elif MICROPY_VFS_LFS1 203 #define mp_type_fileio mp_type_vfs_lfs1_fileio 204 #define mp_type_textio mp_type_vfs_lfs1_textio 205 #elif MICROPY_VFS_LFS2 206 #define mp_type_fileio mp_type_vfs_lfs2_fileio 207 #define mp_type_textio mp_type_vfs_lfs2_textio 208 #endif 209 210 // extended modules by aiot 211 #define MICROPY_QSTR_BYTES_IN_HASH (1) 212 #define MICROPY_ALLOC_PARSE_CHUNK_INIT (16) 213 #define MICROPY_ENABLE_EXTERNAL_IMPORT (1) 214 215 // type definitions for the specific machine 216 217 #define MICROPY_MAKE_POINTER_CALLABLE(p) ((void *)((mp_uint_t)(p) | 1)) 218 #define MP_SSIZE_MAX (0x7fffffff) 219 220 // This port is intended to be 32-bit, but unfortunately, int32_t for 221 // different targets may be defined in different ways - either as int 222 // or as long. This requires different printf formatting specifiers 223 // to print such value. So, we avoid int32_t and use int directly. 224 #define UINT_FMT "%u" 225 #define INT_FMT "%d" 226 227 typedef int32_t mp_int_t; // must be pointer size 228 typedef uint32_t mp_uint_t; // must be pointer size 229 typedef long mp_off_t; 230 // ssize_t, off_t as required by POSIX-signatured functions in stream.h 231 #include <sys/types.h> 232 233 // board specifics 234 #define MICROPY_PY_SYS_PLATFORM "AliOS Things" 235 236 #define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len) 237 238 // extra built in names to add to the global namespace 239 #define MICROPY_PORT_BUILTINS \ 240 { MP_OBJ_NEW_QSTR(MP_QSTR_input), (mp_obj_t)&mp_builtin_input_obj }, \ 241 { MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj }, 242 243 // We need to provide a declaration/definition of alloca() 244 #include <alloca.h> 245 246 #ifndef MICROPY_HW_BOARD_NAME 247 #define MICROPY_HW_BOARD_NAME "HaaS" 248 #endif 249 250 #ifndef MICROPY_HW_MCU_NAME 251 #define MICROPY_HW_MCU_NAME "AliOS" 252 #endif 253 254 #ifdef __thumb__ 255 #define MICROPY_MIN_USE_CORTEX_CPU (1) 256 #define MICROPY_MIN_USE_STM32_MCU (1) 257 #define MICROPY_MIN_USE_XM510_MCU (1) 258 #endif 259 260 261 // #define MICROPY_BEGIN_ATOMIC_SECTION() portENTER_CRITICAL_NESTED() 262 // #define MICROPY_END_ATOMIC_SECTION(state) portEXIT_CRITICAL_NESTED(state) 263 264 #if MICROPY_PY_USOCKET_EVENTS 265 #define MICROPY_PY_USOCKET_EVENTS_HANDLER extern void usocket_events_handler(void); 266 #else 267 #define MICROPY_PY_USOCKET_EVENTS_HANDLER 268 #endif 269 270 #if MICROPY_PY_THREAD 271 #define MICROPY_EVENT_POLL_HOOK \ 272 do { \ 273 extern void mp_handle_pending(bool); \ 274 mp_handle_pending(true); \ 275 MICROPY_PY_USOCKET_EVENTS_HANDLER \ 276 MP_THREAD_GIL_EXIT(); \ 277 MP_THREAD_GIL_ENTER(); \ 278 } while (0); 279 #else 280 #define MICROPY_EVENT_POLL_HOOK \ 281 do { \ 282 extern void mp_handle_pending(bool); \ 283 mp_handle_pending(true); \ 284 MICROPY_PY_USOCKET_EVENTS_HANDLER \ 285 aos_msleep(1); \ 286 } while (0); 287 288 #define MICROPY_THREAD_YIELD() 289 #endif 290 291 292 #define MP_STATE_PORT MP_STATE_VM 293 294 #define MICROPY_PORT_ROOT_POINTERS \ 295 const char *readline_hist[8]; 296 297 298 #ifdef MICROPY_PY_UTIME 299 #define MICROPY_PY_UTIME_DEF 300 #define MICROPY_PY_UTIME_DEF_WEAK_LINKS 301 #else 302 #define MICROPY_PY_UTIME_DEF 303 #define MICROPY_PY_UTIME_DEF_WEAK_LINKS 304 #endif 305 306 307 #define MICROPY_COMPONENTS_AUDIO 1 308 #define MICROPY_COMPONENTS_BLE 1 309 #define MICROPY_COMPONENTS_DRIVER 1 310 #define MICROPY_COMPONENTS_LINKSDK 1 311 #define MICROPY_COMPONENTS_MINICV 0 312 #define MICROPY_COMPONENTS_MODBUS 1 313 #define MICROPY_COMPONENTS_MQTT 1 314 #define MICROPY_COMPONENTS_NETMGR 1 315 #define MICROPY_COMPONENTS_NETWORK 1 316 #define MICROPY_COMPONENTS_OSS 1 317 #define MICROPY_COMPONENTS_OTA 1 318 #define MICROPY_COMPONENTS_SNTP 1 319 #define MICROPY_COMPONENTS_UCAMERA 0 320 #define MICROPY_COMPONENTS_ULOG 1 321 322 323 #define MICROPY_GC_HEAP_SIZE (1024 * 64) 324 325 extern const struct _mp_obj_module_t utime_module; 326 extern const struct _mp_obj_module_t driver_module; 327 328 #if MICROPY_COMPONENTS_MINICV 329 extern const struct _mp_obj_module_t minicv_module; 330 #define MICROPY_PY_MINICV_DEF { MP_ROM_QSTR(MP_QSTR_minicv), MP_ROM_PTR(&minicv_module) }, 331 #else 332 #define MICROPY_PY_MINICV_DEF 333 #endif 334 335 #if PY_BUILD_OSS 336 extern const struct _mp_obj_module_t oss_module; 337 #define MICROPY_PY_OSS_DEF { MP_ROM_QSTR(MP_QSTR_OSS), MP_ROM_PTR(&oss_module) }, 338 #else 339 #define MICROPY_PY_OSS_DEF 340 #endif 341 342 #if PY_BUILD_UCAMERA 343 extern const struct _mp_obj_module_t ucamera_module; 344 #define MICROPY_PY_UCAMERA_DEF { MP_ROM_QSTR(MP_QSTR_UCamera), MP_ROM_PTR(&ucamera_module) }, 345 #else 346 #define MICROPY_PY_UCAMERA_DEF 347 #endif 348 #if PY_BUILD_HTTP 349 extern const struct _mp_obj_module_t http_module; 350 #define MICROPY_PY_HTTP_DEF { MP_ROM_QSTR(MP_QSTR_http), MP_ROM_PTR(&http_module) }, 351 #else 352 #define MICROPY_PY_HTTP_DEF 353 #endif 354 355 #if PY_BUILD_TCP 356 extern const struct _mp_obj_module_t tcp_module; 357 #define MICROPY_PY_TCP_DEF { MP_ROM_QSTR(MP_QSTR_tcp), MP_ROM_PTR(&tcp_module) }, 358 #else 359 #define MICROPY_PY_TCP_DEF 360 #endif 361 362 #if PY_BUILD_UDP 363 extern const struct _mp_obj_module_t udp_module; 364 #define MICROPY_PY_UDP_DEF { MP_ROM_QSTR(MP_QSTR_udp), MP_ROM_PTR(&udp_module) }, 365 #else 366 #define MICROPY_PY_UDP_DEF 367 #endif 368 369 370 #if PY_BUILD_NETMGR 371 extern const struct _mp_obj_module_t netmgr_module; 372 #define MICROPY_PY_NETMGR_DEF { MP_ROM_QSTR(MP_QSTR_netmgr), MP_ROM_PTR(&netmgr_module) }, 373 #else 374 #define MICROPY_PY_NETMGR_DEF 375 #endif 376 377 #if PY_BUILD_BLENETCONFIG 378 extern const struct _mp_obj_module_t blenetconfig_module; 379 #define MICROPY_PY_BLE_NETCONFIG_DEF { MP_ROM_QSTR(MP_QSTR_ble_netconfig), MP_ROM_PTR(&blenetconfig_module) }, 380 #else 381 #define MICROPY_PY_BLE_NETCONFIG_DEF 382 #endif 383 384 #if PY_BUILD_MQTT 385 extern const struct _mp_obj_module_t mqtt_module; 386 #define MICROPY_PY_MQTT_DEF { MP_ROM_QSTR(MP_QSTR_mqtt), MP_ROM_PTR(&mqtt_module) }, 387 #else 388 #define MICROPY_PY_MQTT_DEF 389 #endif 390 391 #if PY_BUILD_LINKSDK 392 extern const struct _mp_obj_module_t linkkit_module; 393 #define MICROPY_PY_LINKSDK_DEF { MP_ROM_QSTR(MP_QSTR__linkkit), MP_ROM_PTR(&linkkit_module) }, 394 #else 395 #define MICROPY_PY_LINKSDK_DEF 396 #endif 397 398 #if PY_BUILD_LINKSDK 399 extern const struct _mp_obj_module_t linksdk_module; 400 #define MICROPY_PY_LINKSDK2_DEF { MP_ROM_QSTR(MP_QSTR_linksdk), MP_ROM_PTR(&linksdk_module) }, 401 #else 402 #define MICROPY_PY_LINKSDK2_DEF 403 #endif 404 405 406 #if PY_BUILD_USOCKET 407 extern const struct _mp_obj_module_t mp_module_usocket; 408 #define MICROPY_PY_USOCKET_DEF { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) }, 409 #else 410 #define MICROPY_PY_USOCKET_DEF 411 #endif 412 413 414 #if PY_BUILD_UOS 415 extern const struct _mp_obj_module_t mp_module_uos; 416 #define MICROPY_PY_UOS_DEF { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_uos) }, 417 #else 418 #define MICROPY_PY_UOS_DEF 419 #endif 420 421 422 #if PY_BUILD_AUDIO 423 extern const struct _mp_obj_module_t audio_module; 424 #define MICROPY_PY_AUDIO_DEF {MP_ROM_QSTR(MP_QSTR_audio), MP_ROM_PTR(&audio_module)}, 425 #else 426 #define MICROPY_PY_AUDIO_DEF 427 #endif 428 429 #if PY_BUILD_SNTP 430 extern const struct _mp_obj_module_t sntp_module; 431 #define MICROPY_PY_SNTP_DEF { MP_ROM_QSTR(MP_QSTR_sntp), MP_ROM_PTR(&sntp_module) }, 432 #else 433 #define MICROPY_PY_SNTP_DEF 434 #endif 435 436 #if PY_BUILD_MODBUS 437 extern const struct _mp_obj_module_t modbus_module; 438 #define MICROPY_PY_MODBUS_DEF { MP_ROM_QSTR(MP_QSTR_modbus), MP_ROM_PTR(&modbus_module) }, 439 #else 440 #define MICROPY_PY_MODBUS_DEF 441 #endif 442 443 444 #if PY_BUILD_ULOG 445 extern const struct _mp_obj_module_t ulog_module; 446 #define MICROPY_PY_ULOG_DEF { MP_ROM_QSTR(MP_QSTR_ulog), MP_ROM_PTR(&ulog_module) }, 447 #else 448 #define MICROPY_PY_ULOG_DEF 449 #endif 450 451 #if PY_BUILD_OTA 452 extern const struct _mp_obj_module_t ota_module; 453 #define MICROPY_PY_OTA_DEF { MP_ROM_QSTR(MP_QSTR_ota), MP_ROM_PTR(&ota_module) }, 454 #else 455 #define MICROPY_PY_OTA_DEF 456 #endif 457 458 #define MICROPY_PORT_BUILTIN_MODULES \ 459 {MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&utime_module)}, \ 460 {MP_ROM_QSTR(MP_QSTR_driver), MP_ROM_PTR(&driver_module)}, \ 461 MICROPY_PY_UTIME_DEF \ 462 MICROPY_PY_MINICV_DEF \ 463 MICROPY_PY_LINKSDK_DEF \ 464 MICROPY_PY_LINKSDK2_DEF \ 465 MICROPY_PY_HTTP_DEF \ 466 MICROPY_PY_UDP_DEF \ 467 MICROPY_PY_TCP_DEF \ 468 MICROPY_PY_NETMGR_DEF \ 469 MICROPY_PY_BLE_NETCONFIG_DEF \ 470 MICROPY_PY_MQTT_DEF \ 471 MICROPY_PY_USOCKET_DEF \ 472 MICROPY_PY_AUDIO_DEF \ 473 MICROPY_PY_UOS_DEF \ 474 MICROPY_PY_OSS_DEF \ 475 MICROPY_PY_UCAMERA_DEF \ 476 MICROPY_PY_SNTP_DEF \ 477 MICROPY_PY_MODBUS_DEF \ 478 MICROPY_PY_ULOG_DEF \ 479 MICROPY_PY_OTA_DEF \ 480 481 #define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \ 482 MICROPY_PY_UTIME_DEF_WEAK_LINKS \ 483 484 485