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 (1) 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 (1) 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 (1) 61 #define MICROPY_USE_INTERNAL_PRINTF (0) // HaaS use its own printf 62 #define MICROPY_ENABLE_SCHEDULER (1) 63 #define MICROPY_SCHEDULER_DEPTH (8) 64 #define MICROPY_VFS (1) 65 #define MICROPY_VFS_POSIX (1) 66 #define MICROPY_VFS_POSIX_FILE (1) 67 #define USE_STATFS MICROPY_VFS_POSIX 68 69 #define MICROPY_ENABLE_GC (1) 70 #define MICROPY_GC_HEAP_SIZE (1024 * 512) 71 #define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1) 72 #define MICROPY_MEM_STATS (0) 73 74 // control over Python builtins 75 #define MICROPY_PY_FUNCTION_ATTRS (1) 76 #define MICROPY_PY_DESCRIPTORS (1) 77 #define MICROPY_PY_DELATTR_SETATTR (1) 78 #define MICROPY_PY_STR_BYTES_CMP_WARN (1) 79 #define MICROPY_PY_BUILTINS_STR_UNICODE (1) 80 #define MICROPY_PY_BUILTINS_STR_CENTER (1) 81 #define MICROPY_PY_BUILTINS_STR_PARTITION (1) 82 #define MICROPY_PY_BUILTINS_STR_SPLITLINES (1) 83 #define MICROPY_PY_BUILTINS_BYTEARRAY (1) 84 #define MICROPY_PY_BUILTINS_MEMORYVIEW (1) 85 #define MICROPY_PY_BUILTINS_SET (1) 86 #define MICROPY_PY_BUILTINS_SLICE (1) 87 #define MICROPY_PY_BUILTINS_SLICE_ATTRS (1) 88 #define MICROPY_PY_BUILTINS_SLICE_INDICES (1) 89 #define MICROPY_PY_BUILTINS_FROZENSET (1) 90 #define MICROPY_PY_BUILTINS_PROPERTY (1) 91 #define MICROPY_PY_BUILTINS_RANGE_ATTRS (1) 92 #define MICROPY_PY_BUILTINS_ROUND_INT (1) 93 #define MICROPY_PY_ALL_SPECIAL_METHODS (1) 94 #define MICROPY_PY_BUILTINS_COMPILE (1) 95 #define MICROPY_PY_BUILTINS_ENUMERATE (1) 96 #define MICROPY_PY_BUILTINS_EXECFILE (1) 97 #define MICROPY_PY_BUILTINS_FILTER (1) 98 #define MICROPY_PY_BUILTINS_REVERSED (1) 99 #define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1) 100 #define MICROPY_PY_BUILTINS_INPUT (1) 101 #define MICROPY_PY_BUILTINS_MIN_MAX (1) 102 #define MICROPY_PY_BUILTINS_POW3 (1) 103 #define MICROPY_PY_BUILTINS_HELP (1) 104 #define MICROPY_PY_BUILTINS_HELP_TEXT haas_help_text 105 #define MICROPY_PY_BUILTINS_HELP_MODULES (1) 106 #define MICROPY_PY___FILE__ (1) 107 #define MICROPY_PY_MICROPYTHON_MEM_INFO (1) 108 #define MICROPY_PY_ARRAY (1) 109 #define MICROPY_PY_ARRAY_SLICE_ASSIGN (1) 110 #define MICROPY_PY_ATTRTUPLE (1) 111 #define MICROPY_PY_COLLECTIONS (1) 112 #define MICROPY_PY_COLLECTIONS_DEQUE (1) 113 #define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1) 114 #define MICROPY_PY_MATH (1) 115 #define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) 116 #define MICROPY_PY_MATH_ISCLOSE (1) 117 #define MICROPY_PY_CMATH (1) 118 #define MICROPY_PY_GC (1) 119 #define MICROPY_PY_IO (1) 120 #define MICROPY_PY_IO_IOBASE (1) 121 #define MICROPY_PY_IO_FILEIO (1) 122 #define MICROPY_PY_IO_BYTESIO (1) 123 #define MICROPY_PY_IO_BUFFEREDWRITER (1) 124 #define MICROPY_PY_STRUCT (1) 125 #define MICROPY_PY_SYS (1) 126 #define MICROPY_PY_SYS_MAXSIZE (1) 127 #define MICROPY_PY_SYS_MODULES (1) 128 #define MICROPY_PY_SYS_EXIT (1) 129 #define MICROPY_PY_SYS_ATEXIT (1) 130 #define MICROPY_PY_SYS_STDFILES (1) 131 #define MICROPY_PY_SYS_STDIO_BUFFER (1) 132 #define MICROPY_PY_UERRNO (1) 133 #define MICROPY_PY_USELECT (1) 134 #define MICROPY_PY_UTIME_MP_HAL (1) 135 #define MICROPY_PY_UTIME (1) 136 #define MICROPY_PY_THREAD (1) 137 #define MICROPY_PY_THREAD_GIL (1) 138 #define MICROPY_PY_THREAD_GIL_VM_DIVISOR (32) 139 140 #define MICROPY_DEBUG_VERBOSE (0) 141 142 // extended modules 143 #define MICROPY_PY_BLUETOOTH (0) 144 #ifndef MICROPY_PY_BLUETOOTH 145 #define MICROPY_PY_BLUETOOTH (1) 146 #define MICROPY_PY_BLUETOOTH_ENABLE_CENTRAL_MODE (1) 147 #define MICROPY_BLUETOOTH_NIMBLE (1) 148 #define MICROPY_BLUETOOTH_NIMBLE_BINDINGS_ONLY (1) 149 #endif 150 #define MICROPY_EPOCH_IS_1970 (1) 151 #define MICROPY_PY_UASYNCIO (1) 152 #define MICROPY_PY_UCTYPES (1) 153 #define MICROPY_PY_UZLIB (1) 154 #define MICROPY_PY_UJSON (1) 155 #define MICROPY_PY_URE (1) 156 #define MICROPY_PY_URE_SUB (1) 157 #define MICROPY_PY_UHEAPQ (1) 158 #define MICROPY_PY_UTIMEQ (1) 159 #define MICROPY_PY_UHASHLIB (1) 160 #define MICROPY_PY_UHASHLIB_SHA1 (1) 161 #define MICROPY_PY_UHASHLIB_SHA256 (1) 162 #define MICROPY_PY_UHASHLIB_MD5 (1) 163 #define MICROPY_PY_UCRYPTOLIB (1) 164 #define MICROPY_PY_UBINASCII (1) 165 #define MICROPY_PY_UBINASCII_CRC32 (1) 166 #define MICROPY_PY_URANDOM (1) 167 #define MICROPY_PY_URANDOM_EXTRA_FUNCS (1) 168 #define MICROPY_PY_URANDOM_SEED_INIT_FUNC (rand()) 169 #define MICROPY_PY_OS_DUPTERM (1) 170 #define MICROPY_PY_MACHINE (1) 171 #define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new 172 #define MICROPY_PY_MACHINE_PULSE (1) 173 #define MICROPY_PY_MACHINE_I2C (1) 174 #define MICROPY_PY_MACHINE_SPI (1) 175 #define MICROPY_PY_MACHINE_SPI_MSB (0) 176 #define MICROPY_PY_MACHINE_SPI_LSB (1) 177 #define MICROPY_PY_MACHINE_ADC (1) 178 #define MICROPY_PY_MACHINE_DAC (0) 179 #ifndef MICROPY_HW_ENABLE_SDCARD 180 #define MICROPY_HW_ENABLE_SDCARD (1) 181 #endif 182 #define MICROPY_HW_SOFTSPI_MIN_DELAY (0) 183 #define MICROPY_HW_SOFTSPI_MAX_BAUDRATE (200 * 1000000 / 200) // roughly, ets_get_cpu_frequency() 184 #define MICROPY_PY_USSL (1) 185 #define MICROPY_SSL_MBEDTLS (1) 186 #define MICROPY_PY_USSL_FINALISER (1) 187 #define MICROPY_PY_UWEBSOCKET (1) 188 #define MICROPY_PY_WEBREPL (1) 189 #define MICROPY_PY_FRAMEBUF (1) 190 #define MICROPY_PY_BTREE (0) // fatal error: btree/btree.h: No such file or directory 191 #define MICROPY_PY_USOCKET_EVENTS (MICROPY_PY_WEBREPL) 192 #define MICROPY_PY_BLUETOOTH_RANDOM_ADDR (1) 193 #define MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME ("HaaS") 194 195 // fatfs configuration 196 #define MICROPY_FATFS_ENABLE_LFN (1) 197 #define MICROPY_FATFS_LFN_CODE_PAGE 437 /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */ 198 #define MICROPY_FATFS_USE_LABEL (1) 199 #define MICROPY_FATFS_RPATH (2) 200 #define MICROPY_FATFS_MULTI_PARTITION (1) 201 202 #if MICROPY_VFS_POSIX 203 #define mp_type_fileio mp_type_vfs_posix_fileio 204 #define mp_type_textio mp_type_vfs_posix_textio 205 #elif MICROPY_VFS_FAT 206 #define mp_type_fileio mp_type_vfs_fat_fileio 207 #define mp_type_textio mp_type_vfs_fat_textio 208 #elif MICROPY_VFS_LFS1 209 #define mp_type_fileio mp_type_vfs_lfs1_fileio 210 #define mp_type_textio mp_type_vfs_lfs1_textio 211 #elif MICROPY_VFS_LFS2 212 #define mp_type_fileio mp_type_vfs_lfs2_fileio 213 #define mp_type_textio mp_type_vfs_lfs2_textio 214 #endif 215 216 // use vfs's functions for import stat and builtin open 217 #define mp_import_stat mp_vfs_import_stat 218 #define mp_builtin_open mp_vfs_open 219 #define mp_builtin_open_obj mp_vfs_open_obj 220 221 // extended modules by HaaS 222 #define MICROPY_PY_HAAS_SPECIFIC (1) 223 #define MICROPY_QSTR_BYTES_IN_HASH (1) 224 #define MICROPY_ALLOC_PARSE_CHUNK_INIT (16) 225 #define MICROPY_ENABLE_EXTERNAL_IMPORT (1) 226 #define MICROPY_ENABLE_DYNAMIC_TRIADIC (0) 227 228 #define MICROPY_PORT_ROOT_POINTERS const char *readline_hist[8]; 229 230 // type definitions for the specific machine 231 232 #define MICROPY_MAKE_POINTER_CALLABLE(p) ((void *)((mp_uint_t)(p) | 1)) 233 #define MP_SSIZE_MAX (0x7fffffff) 234 235 // This port is intended to be 32-bit, but unfortunately, int32_t for 236 // different targets may be defined in different ways - either as int 237 // or as long. This requires different printf formatting specifiers 238 // to print such value. So, we avoid int32_t and use int directly. 239 #define UINT_FMT "%u" 240 #define INT_FMT "%d" 241 242 typedef int32_t mp_int_t; // must be pointer size 243 typedef uint32_t mp_uint_t; // must be pointer size 244 typedef long mp_off_t; 245 // ssize_t, off_t as required by POSIX-signatured functions in stream.h 246 #include <sys/types.h> 247 248 // board specifics 249 #define MICROPY_PY_SYS_PLATFORM "AliOS-Things" 250 #define MICROPY_PY_SYS_NODE "V3.3" 251 #define MICROPY_HW_BOARD_NAME SYSINFO_BOARD 252 #define MICROPY_HW_MCU_NAME SYSINFO_MCU 253 254 #define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len) 255 256 // clang-format off 257 // extra built in names to add to the global namespace 258 #define MICROPY_PORT_BUILTINS \ 259 { MP_OBJ_NEW_QSTR(MP_QSTR_input), (mp_obj_t)&mp_builtin_input_obj }, \ 260 { MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj }, \ 261 { MP_OBJ_NEW_QSTR(MP_QSTR_reboot), (mp_obj_t)&machine_reset_obj }, 262 // clang-format on 263 264 // We need to provide a declaration/definition of alloca() 265 #include <alloca.h> 266 267 #ifdef __thumb__ 268 #define MICROPY_MIN_USE_CORTEX_CPU (1) 269 #define MICROPY_MIN_USE_STM32_MCU (1) 270 #define MICROPY_MIN_USE_XM510_MCU (1) 271 #endif 272 273 // #define MICROPY_BEGIN_ATOMIC_SECTION() portENTER_CRITICAL_NESTED() 274 // #define MICROPY_END_ATOMIC_SECTION(state) portEXIT_CRITICAL_NESTED(state) 275 276 #if MICROPY_PY_USOCKET_EVENTS 277 #define MICROPY_PY_USOCKET_EVENTS_HANDLER extern void usocket_events_handler(void); 278 #else 279 #define MICROPY_PY_USOCKET_EVENTS_HANDLER 280 #endif 281 282 #if MICROPY_PY_THREAD 283 #define MICROPY_EVENT_POLL_HOOK \ 284 do { \ 285 extern void mp_handle_pending(bool); \ 286 mp_handle_pending(true); \ 287 MICROPY_PY_USOCKET_EVENTS_HANDLER \ 288 MP_THREAD_GIL_EXIT(); \ 289 MP_THREAD_GIL_ENTER(); \ 290 } while (0); 291 #else 292 #define MICROPY_EVENT_POLL_HOOK \ 293 do { \ 294 extern void mp_handle_pending(bool); \ 295 mp_handle_pending(true); \ 296 MICROPY_PY_USOCKET_EVENTS_HANDLER \ 297 aos_msleep(1); \ 298 } while (0); 299 300 #define MICROPY_THREAD_YIELD() 301 #endif 302 303 #define MP_STATE_PORT MP_STATE_VM 304 305 #ifdef MICROPY_PY_UTIME 306 #define MICROPY_PY_UTIME_DEF 307 #define MICROPY_PY_UTIME_DEF_WEAK_LINKS 308 #else 309 #define MICROPY_PY_UTIME_DEF 310 #define MICROPY_PY_UTIME_DEF_WEAK_LINKS 311 #endif 312 313 #define MICROPY_COMPONENTS_AUDIO 1 314 #define MICROPY_COMPONENTS_BLE 1 315 #define MICROPY_COMPONENTS_DRIVER 1 316 #define MICROPY_COMPONENTS_LINKSDK 1 317 #define MICROPY_COMPONENTS_MINICV 0 318 #define MICROPY_COMPONENTS_MODBUS 1 319 #define MICROPY_COMPONENTS_MQTT 1 320 #define MICROPY_COMPONENTS_NETMGR 1 321 #define MICROPY_COMPONENTS_NETWORK 1 322 #define MICROPY_COMPONENTS_OSS 1 323 #define MICROPY_COMPONENTS_OTA 1 324 #define MICROPY_COMPONENTS_SNTP 1 325 #define MICROPY_COMPONENTS_UCAMERA 0 326 #define MICROPY_COMPONENTS_ULOG 1 327 328 extern const struct _mp_obj_module_t utime_module; 329 extern const struct _mp_obj_module_t driver_module; 330 331 #if PY_BUILD_AI 332 extern const struct _mp_obj_module_t minicv_module; 333 #define MICROPY_PY_MINICV_DEF { MP_ROM_QSTR(MP_QSTR_minicv), MP_ROM_PTR(&minicv_module) }, 334 #else 335 #define MICROPY_PY_MINICV_DEF 336 #endif 337 338 #if PY_BUILD_OSS 339 extern const struct _mp_obj_module_t oss_module; 340 #define MICROPY_PY_OSS_DEF { MP_ROM_QSTR(MP_QSTR_OSS), MP_ROM_PTR(&oss_module) }, 341 #else 342 #define MICROPY_PY_OSS_DEF 343 #endif 344 345 #if PY_BUILD_UCLOUD_AI 346 extern const struct _mp_obj_module_t ucloud_ai_module; 347 #define MICROPY_PY_UCLOUD_AI_DEF { MP_ROM_QSTR(MP_QSTR_ucloud_ai), MP_ROM_PTR(&ucloud_ai_module) }, 348 #else 349 #define MICROPY_PY_UCLOUD_AI_DEF 350 #endif 351 352 #if PY_BUILD_AIAGENT 353 extern const struct _mp_obj_module_t aiagent_module; 354 #define MICROPY_PY_AIAGENT_DEF { MP_ROM_QSTR(MP_QSTR_aiagent), MP_ROM_PTR(&aiagent_module) }, 355 #else 356 #define MICROPY_PY_AIAGENT_DEF 357 #endif 358 359 #if PY_BUILD_UCAMERA 360 extern const struct _mp_obj_module_t ucamera_module; 361 #define MICROPY_PY_UCAMERA_DEF { MP_ROM_QSTR(MP_QSTR_UCamera), MP_ROM_PTR(&ucamera_module) }, 362 #else 363 #define MICROPY_PY_UCAMERA_DEF 364 #endif 365 #if PY_BUILD_HTTP 366 extern const struct _mp_obj_module_t http_module; 367 #define MICROPY_PY_HTTP_DEF { MP_ROM_QSTR(MP_QSTR_http), MP_ROM_PTR(&http_module) }, 368 #else 369 #define MICROPY_PY_HTTP_DEF 370 #endif 371 372 #if PY_BUILD_TCP 373 extern const struct _mp_obj_module_t tcp_module; 374 #define MICROPY_PY_TCP_DEF { MP_ROM_QSTR(MP_QSTR_tcp), MP_ROM_PTR(&tcp_module) }, 375 #else 376 #define MICROPY_PY_TCP_DEF 377 #endif 378 379 #if PY_BUILD_UDP 380 extern const struct _mp_obj_module_t udp_module; 381 #define MICROPY_PY_UDP_DEF { MP_ROM_QSTR(MP_QSTR_udp), MP_ROM_PTR(&udp_module) }, 382 #else 383 #define MICROPY_PY_UDP_DEF 384 #endif 385 386 #if PY_BUILD_NETMGR 387 extern const struct _mp_obj_module_t netmgr_module; 388 #define MICROPY_PY_NETMGR_DEF { MP_ROM_QSTR(MP_QSTR_netmgr), MP_ROM_PTR(&netmgr_module) }, 389 #else 390 #define MICROPY_PY_NETMGR_DEF 391 #endif 392 393 #if PY_BUILD_MQTT 394 extern const struct _mp_obj_module_t mqtt_module; 395 #define MICROPY_PY_MQTT_DEF { MP_ROM_QSTR(MP_QSTR_mqtt), MP_ROM_PTR(&mqtt_module) }, 396 #else 397 #define MICROPY_PY_MQTT_DEF 398 #endif 399 400 // #if PY_BUILD_LINKSDK 401 // extern const struct _mp_obj_module_t linkkit_module; 402 // #define MICROPY_PY_LINKSDK_DEF { MP_ROM_QSTR(MP_QSTR__linkkit), MP_ROM_PTR(&linkkit_module) }, 403 // #else 404 // #define MICROPY_PY_LINKSDK_DEF 405 // #endif 406 407 #if PY_BUILD_ALIYUNIOT 408 extern const struct _mp_obj_module_t aliyunIoT_module; 409 #define MICROPY_PY_ALIYUNIOT_DEF { MP_ROM_QSTR(MP_QSTR_aliyunIoT), MP_ROM_PTR(&aliyunIoT_module) }, 410 #else 411 #define MICROPY_PY_ALIYUNIOT_DEF 412 #endif 413 414 #if PY_BUILD_USOCKET 415 extern const struct _mp_obj_module_t mp_module_usocket; 416 #define MICROPY_PY_USOCKET_DEF { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) }, 417 #else 418 #define MICROPY_PY_USOCKET_DEF 419 #endif 420 421 #if PY_BUILD_UOS 422 extern const struct _mp_obj_module_t uos_module; 423 #define MICROPY_PY_UOS_DEF { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&uos_module) }, 424 #else 425 #define MICROPY_PY_UOS_DEF 426 #endif 427 428 #if PY_BUILD_AUDIO 429 extern const struct _mp_obj_module_t audio_module; 430 #define MICROPY_PY_AUDIO_DEF { MP_ROM_QSTR(MP_QSTR_audio), MP_ROM_PTR(&audio_module) }, 431 #else 432 #define MICROPY_PY_AUDIO_DEF 433 #endif 434 435 #if PY_BUILD_SNTP 436 extern const struct _mp_obj_module_t sntp_module; 437 #define MICROPY_PY_SNTP_DEF { MP_ROM_QSTR(MP_QSTR_sntp), MP_ROM_PTR(&sntp_module) }, 438 #else 439 #define MICROPY_PY_SNTP_DEF 440 #endif 441 442 #if PY_BUILD_MODBUS 443 extern const struct _mp_obj_module_t modbus_module; 444 #define MICROPY_PY_MODBUS_DEF { MP_ROM_QSTR(MP_QSTR_modbus), MP_ROM_PTR(&modbus_module) }, 445 #else 446 #define MICROPY_PY_MODBUS_DEF 447 #endif 448 449 #if PY_BUILD_UGRAPHICS 450 extern const struct _mp_obj_module_t ugraphics_module; 451 #define MICROPY_PY_UGRAPHICS_DEF { MP_ROM_QSTR(MP_QSTR_ugraphics), MP_ROM_PTR(&ugraphics_module) }, 452 #else 453 #define MICROPY_PY_UGRAPHICS_DEF 454 #endif 455 456 #if PY_BUILD_ULOG 457 extern const struct _mp_obj_module_t ulog_module; 458 #define MICROPY_PY_ULOG_DEF { MP_ROM_QSTR(MP_QSTR_ulog), MP_ROM_PTR(&ulog_module) }, 459 #else 460 #define MICROPY_PY_ULOG_DEF 461 #endif 462 463 #if PY_BUILD_KV 464 extern const struct _mp_obj_module_t kv_module; 465 #define MICROPY_PY_KV_DEF { MP_ROM_QSTR(MP_QSTR_kv), MP_ROM_PTR(&kv_module) }, 466 #else 467 #define MICROPY_PY_KV_DEF 468 #endif 469 470 #if PY_BUILD_SYSTEM 471 extern const struct _mp_obj_module_t system_module; 472 #define MICROPY_PY_SYSTEM_DEF { MP_ROM_QSTR(MP_QSTR_system), MP_ROM_PTR(&system_module) }, 473 #else 474 #define MICROPY_PY_SYSTEM_DEF 475 #endif 476 477 #if PY_BUILD_OTA 478 extern const struct _mp_obj_module_t ota_module; 479 #define MICROPY_PY_OTA_DEF { MP_ROM_QSTR(MP_QSTR_ota), MP_ROM_PTR(&ota_module) }, 480 #else 481 #define MICROPY_PY_OTA_DEF 482 #endif 483 484 #ifdef AOS_BOARD_HAAS700 485 486 #if PY_BUILD_VIDEO 487 extern const struct _mp_obj_module_t video_module; 488 #define MICROPY_PY_VIDEO_DEF { MP_ROM_QSTR(MP_QSTR_video), MP_ROM_PTR(&video_module) }, 489 #else 490 #define MICROPY_PY_VIDEO_DEF 491 #endif 492 493 #if PY_BUILD_NETWORK 494 extern const struct _mp_obj_module_t network_module; 495 #define MICROPY_PY_NETWORK_DEF { MP_ROM_QSTR(MP_QSTR_network), MP_ROM_PTR(&network_module) }, 496 #else 497 #define MICROPY_PY_NETWORK_DEF 498 #endif 499 500 #endif 501 502 // clang-format off 503 #ifndef AOS_BOARD_HAAS700 504 #define MICROPY_PORT_BUILTIN_MODULES \ 505 { MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&utime_module) }, \ 506 { MP_ROM_QSTR(MP_QSTR_driver), MP_ROM_PTR(&driver_module) }, \ 507 MICROPY_PY_UTIME_DEF \ 508 MICROPY_PY_MINICV_DEF \ 509 MICROPY_PY_ALIYUNIOT_DEF \ 510 MICROPY_PY_HTTP_DEF \ 511 MICROPY_PY_UDP_DEF \ 512 MICROPY_PY_TCP_DEF \ 513 MICROPY_PY_NETMGR_DEF \ 514 MICROPY_PY_MQTT_DEF \ 515 MICROPY_PY_USOCKET_DEF \ 516 MICROPY_PY_AUDIO_DEF \ 517 MICROPY_PY_UOS_DEF \ 518 MICROPY_PY_OSS_DEF \ 519 MICROPY_PY_UCAMERA_DEF \ 520 MICROPY_PY_SNTP_DEF \ 521 MICROPY_PY_MODBUS_DEF \ 522 MICROPY_PY_UGRAPHICS_DEF \ 523 MICROPY_PY_ULOG_DEF \ 524 MICROPY_PY_KV_DEF \ 525 MICROPY_PY_SYSTEM_DEF \ 526 MICROPY_PY_OTA_DEF \ 527 MICROPY_PY_UCLOUD_AI_DEF \ 528 MICROPY_PY_AIAGENT_DEF 529 #else 530 #define MICROPY_PORT_BUILTIN_MODULES \ 531 { MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&utime_module) }, \ 532 { MP_ROM_QSTR(MP_QSTR_driver), MP_ROM_PTR(&driver_module) }, \ 533 MICROPY_PY_UDP_DEF \ 534 MICROPY_PY_TCP_DEF \ 535 MICROPY_PY_VIDEO_DEF \ 536 MICROPY_PY_NETWORK_DEF 537 #endif 538 // clang-format on 539 540 #define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS MICROPY_PY_UTIME_DEF_WEAK_LINKS 541