Full Code of pfalcon/pycopy for AI

master d590892d235c cached
4102 files
19.9 MB
5.4M tokens
14561 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (21,600K chars total). Download the full file to get everything.
Repository: pfalcon/pycopy
Branch: master
Commit: d590892d235c
Files: 4102
Total size: 19.9 MB

Directory structure:
gitextract_srqy4qsq/

├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   └── workflows/
│       ├── code_formatting.yml
│       ├── code_size.yml
│       ├── commit_formatting.yml
│       ├── docs.yml
│       ├── ports_cc3200.yml
│       ├── ports_esp32.yml
│       ├── ports_esp8266.yml
│       ├── ports_mimxrt.yml
│       ├── ports_nrf.yml
│       ├── ports_powerpc.yml
│       ├── ports_qemu-arm.yml
│       ├── ports_rp2.yml
│       ├── ports_samd.yml
│       ├── ports_stm32.yml
│       ├── ports_teensy.yml
│       ├── ports_unix.yml
│       ├── ports_windows.yml
│       ├── ports_zephyr.yml
│       ├── release.yml
│       └── travis-ci.yml
├── .gitignore
├── .gitmodules
├── ACKNOWLEDGEMENTS
├── CODECONVENTIONS.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│   ├── Makefile
│   ├── README.md
│   ├── conf.py
│   ├── develop/
│   │   ├── cmodules.rst
│   │   ├── compiler.rst
│   │   ├── extendingmicropython.rst
│   │   ├── gettingstarted.rst
│   │   ├── index.rst
│   │   ├── library.rst
│   │   ├── maps.rst
│   │   ├── memorymgt.rst
│   │   ├── natmod.rst
│   │   ├── optimizations.rst
│   │   ├── porting.rst
│   │   ├── publiccapi.rst
│   │   ├── qstr.rst
│   │   └── writingtests.rst
│   ├── differences/
│   │   ├── builtin_types.rst
│   │   ├── core_language.rst
│   │   ├── index.rst
│   │   ├── index_template.txt
│   │   ├── modules.rst
│   │   └── syntax.rst
│   ├── esp32/
│   │   ├── general.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       └── intro.rst
│   ├── esp8266/
│   │   ├── general.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       ├── adc.rst
│   │       ├── apa102.rst
│   │       ├── dht.rst
│   │       ├── filesystem.rst
│   │       ├── index.rst
│   │       ├── intro.rst
│   │       ├── neopixel.rst
│   │       ├── network_basics.rst
│   │       ├── network_tcp.rst
│   │       ├── nextsteps.rst
│   │       ├── onewire.rst
│   │       ├── pins.rst
│   │       ├── powerctrl.rst
│   │       ├── pwm.rst
│   │       ├── repl.rst
│   │       └── ssd1306.rst
│   ├── index.rst
│   ├── library/
│   │   ├── _thread.rst
│   │   ├── btree.rst
│   │   ├── builtins.rst
│   │   ├── cmath.rst
│   │   ├── esp.rst
│   │   ├── esp32.rst
│   │   ├── ffi.rst
│   │   ├── framebuf.rst
│   │   ├── gc.rst
│   │   ├── index.rst
│   │   ├── lcd160cr.rst
│   │   ├── machine.ADC.rst
│   │   ├── machine.ADCWiPy.rst
│   │   ├── machine.I2C.rst
│   │   ├── machine.PWM.rst
│   │   ├── machine.Pin.rst
│   │   ├── machine.RTC.rst
│   │   ├── machine.SD.rst
│   │   ├── machine.SDCard.rst
│   │   ├── machine.SPI.rst
│   │   ├── machine.Signal.rst
│   │   ├── machine.Timer.rst
│   │   ├── machine.TimerWiPy.rst
│   │   ├── machine.UART.rst
│   │   ├── machine.WDT.rst
│   │   ├── machine.rst
│   │   ├── math.rst
│   │   ├── micropython.rst
│   │   ├── network.CC3K.rst
│   │   ├── network.WIZNET5K.rst
│   │   ├── network.WLAN.rst
│   │   ├── network.WLANWiPy.rst
│   │   ├── network.rst
│   │   ├── pyb.ADC.rst
│   │   ├── pyb.Accel.rst
│   │   ├── pyb.CAN.rst
│   │   ├── pyb.DAC.rst
│   │   ├── pyb.ExtInt.rst
│   │   ├── pyb.Flash.rst
│   │   ├── pyb.I2C.rst
│   │   ├── pyb.LCD.rst
│   │   ├── pyb.LED.rst
│   │   ├── pyb.Pin.rst
│   │   ├── pyb.RTC.rst
│   │   ├── pyb.SPI.rst
│   │   ├── pyb.Servo.rst
│   │   ├── pyb.Switch.rst
│   │   ├── pyb.Timer.rst
│   │   ├── pyb.UART.rst
│   │   ├── pyb.USB_HID.rst
│   │   ├── pyb.USB_VCP.rst
│   │   ├── pyb.rst
│   │   ├── rp2.Flash.rst
│   │   ├── rp2.PIO.rst
│   │   ├── rp2.StateMachine.rst
│   │   ├── rp2.rst
│   │   ├── sys.rst
│   │   ├── uarray.rst
│   │   ├── uasyncio.rst
│   │   ├── ubinascii.rst
│   │   ├── ubluetooth.rst
│   │   ├── ucollections.rst
│   │   ├── ucryptolib.rst
│   │   ├── uctypes.rst
│   │   ├── uerrno.rst
│   │   ├── uhashlib.rst
│   │   ├── uheapq.rst
│   │   ├── uio.rst
│   │   ├── ujson.rst
│   │   ├── uos.rst
│   │   ├── urandom.rst
│   │   ├── ure.rst
│   │   ├── uselect.rst
│   │   ├── usocket.rst
│   │   ├── ussl.rst
│   │   ├── ustruct.rst
│   │   ├── utime.rst
│   │   ├── uzlib.rst
│   │   └── wipy.rst
│   ├── license.rst
│   ├── make.bat
│   ├── pyboard/
│   │   ├── general.rst
│   │   ├── hardware/
│   │   │   └── index.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       ├── accel.rst
│   │       ├── amp_skin.rst
│   │       ├── assembler.rst
│   │       ├── debounce.rst
│   │       ├── fading_led.rst
│   │       ├── index.rst
│   │       ├── intro.rst
│   │       ├── lcd160cr_skin.rst
│   │       ├── lcd_skin.rst
│   │       ├── leds.rst
│   │       ├── pass_through.rst
│   │       ├── power_ctrl.rst
│   │       ├── repl.rst
│   │       ├── reset.rst
│   │       ├── script.rst
│   │       ├── servo.rst
│   │       ├── switch.rst
│   │       ├── timer.rst
│   │       └── usb_mouse.rst
│   ├── readthedocs/
│   │   └── settings/
│   │       └── local_settings.py
│   ├── reference/
│   │   ├── asm_thumb2_arith.rst
│   │   ├── asm_thumb2_compare.rst
│   │   ├── asm_thumb2_directives.rst
│   │   ├── asm_thumb2_float.rst
│   │   ├── asm_thumb2_hints_tips.rst
│   │   ├── asm_thumb2_index.rst
│   │   ├── asm_thumb2_label_branch.rst
│   │   ├── asm_thumb2_ldr.rst
│   │   ├── asm_thumb2_logical_bit.rst
│   │   ├── asm_thumb2_misc.rst
│   │   ├── asm_thumb2_mov.rst
│   │   ├── asm_thumb2_stack.rst
│   │   ├── asm_thumb2_str.rst
│   │   ├── constrained.rst
│   │   ├── filesystem.rst
│   │   ├── glossary.rst
│   │   ├── index.rst
│   │   ├── isr_rules.rst
│   │   ├── mpyfiles.rst
│   │   ├── packages.rst
│   │   ├── pyboard.py.rst
│   │   ├── repl.rst
│   │   └── speed_python.rst
│   ├── rp2/
│   │   ├── general.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       └── intro.rst
│   ├── static/
│   │   └── customstyle.css
│   ├── templates/
│   │   ├── layout.html
│   │   ├── replace.inc
│   │   ├── topindex.html
│   │   └── versions.html
│   ├── unix/
│   │   └── quickref.rst
│   └── wipy/
│       ├── general.rst
│       ├── quickref.rst
│       └── tutorial/
│           ├── blynk.rst
│           ├── index.rst
│           ├── intro.rst
│           ├── repl.rst
│           ├── reset.rst
│           ├── timer.rst
│           └── wlan.rst
├── drivers/
│   ├── README.md
│   ├── bus/
│   │   ├── qspi.h
│   │   ├── softqspi.c
│   │   ├── softspi.c
│   │   └── spi.h
│   ├── cc3000/
│   │   ├── inc/
│   │   │   ├── cc3000_common.h
│   │   │   ├── ccspi.h
│   │   │   ├── data_types.h
│   │   │   ├── evnt_handler.h
│   │   │   ├── hci.h
│   │   │   ├── host_driver_version.h
│   │   │   ├── inet_ntop.h
│   │   │   ├── inet_pton.h
│   │   │   ├── netapp.h
│   │   │   ├── nvmem.h
│   │   │   ├── patch_prog.h
│   │   │   ├── security.h
│   │   │   ├── socket.h
│   │   │   └── wlan.h
│   │   └── src/
│   │       ├── cc3000_common.c
│   │       ├── ccspi.c
│   │       ├── evnt_handler.c
│   │       ├── hci.c
│   │       ├── inet_ntop.c
│   │       ├── inet_pton.c
│   │       ├── netapp.c
│   │       ├── nvmem.c
│   │       ├── patch.c
│   │       ├── patch_prog.c
│   │       ├── security.c
│   │       ├── socket.c
│   │       └── wlan.c
│   ├── cc3100/
│   │   ├── inc/
│   │   │   ├── device.h
│   │   │   ├── driver.h
│   │   │   ├── flowcont.h
│   │   │   ├── fs.h
│   │   │   ├── netapp.h
│   │   │   ├── netcfg.h
│   │   │   ├── nonos.h
│   │   │   ├── objInclusion.h
│   │   │   ├── protocol.h
│   │   │   ├── simplelink.h
│   │   │   ├── socket.h
│   │   │   ├── spawn.h
│   │   │   ├── trace.h
│   │   │   ├── wlan.h
│   │   │   └── wlan_rx_filters.h
│   │   └── src/
│   │       ├── device.c
│   │       ├── driver.c
│   │       ├── flowcont.c
│   │       ├── fs.c
│   │       ├── netapp.c
│   │       ├── netcfg.c
│   │       ├── nonos.c
│   │       ├── socket.c
│   │       ├── spawn.c
│   │       └── wlan.c
│   ├── cyw43/
│   │   ├── README.md
│   │   ├── cyw43.h
│   │   ├── cyw43_ctrl.c
│   │   ├── cyw43_ll.h
│   │   ├── cyw43_lwip.c
│   │   └── cywbt.c
│   ├── dht/
│   │   ├── dht.c
│   │   ├── dht.h
│   │   └── dht.py
│   ├── display/
│   │   ├── lcd160cr.py
│   │   ├── lcd160cr_test.py
│   │   └── ssd1306.py
│   ├── memory/
│   │   ├── spiflash.c
│   │   └── spiflash.h
│   ├── nrf24l01/
│   │   ├── nrf24l01.py
│   │   └── nrf24l01test.py
│   ├── onewire/
│   │   ├── ds18x20.py
│   │   └── onewire.py
│   ├── sdcard/
│   │   ├── sdcard.py
│   │   └── sdtest.py
│   └── wiznet5k/
│       ├── README.md
│       ├── ethernet/
│       │   ├── socket.c
│       │   ├── socket.h
│       │   ├── w5200/
│       │   │   ├── w5200.c
│       │   │   └── w5200.h
│       │   ├── w5500/
│       │   │   ├── w5500.c
│       │   │   └── w5500.h
│       │   ├── wizchip_conf.c
│       │   └── wizchip_conf.h
│       └── internet/
│           ├── dhcp/
│           │   ├── dhcp.c
│           │   └── dhcp.h
│           └── dns/
│               ├── dns.c
│               └── dns.h
├── examples/
│   ├── SDdatalogger/
│   │   ├── README.md
│   │   ├── boot.py
│   │   ├── cardreader.py
│   │   └── datalogger.py
│   ├── accel_i2c.py
│   ├── accellog.py
│   ├── asmled.py
│   ├── asmsum.py
│   ├── bluetooth/
│   │   ├── ble_advertising.py
│   │   ├── ble_bonding_peripheral.py
│   │   ├── ble_simple_central.py
│   │   ├── ble_simple_peripheral.py
│   │   ├── ble_temperature.py
│   │   ├── ble_temperature_central.py
│   │   ├── ble_uart_peripheral.py
│   │   └── ble_uart_repl.py
│   ├── conwaylife.py
│   ├── embedding/
│   │   ├── Makefile
│   │   ├── Makefile.upylib
│   │   ├── README.md
│   │   ├── hello-embed.c
│   │   ├── mpconfigport.h
│   │   └── mpconfigport_minimal.h
│   ├── hwapi/
│   │   ├── README.md
│   │   ├── button_led.py
│   │   ├── button_reaction.py
│   │   ├── hwconfig_console.py
│   │   ├── hwconfig_dragonboard410c.py
│   │   ├── hwconfig_esp8266_esp12.py
│   │   ├── hwconfig_pyboard.py
│   │   ├── hwconfig_z_96b_carbon.py
│   │   ├── hwconfig_z_frdm_k64f.py
│   │   ├── soft_pwm.py
│   │   ├── soft_pwm2_uasyncio.py
│   │   └── soft_pwm_uasyncio.py
│   ├── ledangle.py
│   ├── mandel.py
│   ├── micropython.py
│   ├── natmod/
│   │   ├── .gitignore
│   │   ├── btree/
│   │   │   ├── Makefile
│   │   │   ├── btree_c.c
│   │   │   └── btree_py.py
│   │   ├── features0/
│   │   │   ├── Makefile
│   │   │   └── features0.c
│   │   ├── features1/
│   │   │   ├── Makefile
│   │   │   └── features1.c
│   │   ├── features2/
│   │   │   ├── Makefile
│   │   │   ├── main.c
│   │   │   ├── prod.c
│   │   │   ├── prod.h
│   │   │   └── test.py
│   │   ├── framebuf/
│   │   │   ├── Makefile
│   │   │   └── framebuf.c
│   │   ├── uheapq/
│   │   │   ├── Makefile
│   │   │   └── uheapq.c
│   │   ├── urandom/
│   │   │   ├── Makefile
│   │   │   └── urandom.c
│   │   ├── ure/
│   │   │   ├── Makefile
│   │   │   └── ure.c
│   │   └── uzlib/
│   │       ├── Makefile
│   │       └── uzlib.c
│   ├── network/
│   │   ├── http_client.py
│   │   ├── http_client_ssl.py
│   │   ├── http_client_ssl_nonblock.py
│   │   ├── http_server.py
│   │   ├── http_server_simplistic.py
│   │   ├── http_server_simplistic_commented.py
│   │   └── http_server_ssl.py
│   ├── pins.py
│   ├── pyb.py
│   ├── rp2/
│   │   ├── pio_1hz.py
│   │   ├── pio_exec.py
│   │   ├── pio_pinchange.py
│   │   ├── pio_pwm.py
│   │   ├── pio_uart_rx.py
│   │   ├── pio_uart_tx.py
│   │   ├── pio_ws2812.py
│   │   └── pwm_fade.py
│   ├── switch.py
│   ├── unix/
│   │   ├── ffi_example.py
│   │   └── machine_bios.py
│   └── usercmodule/
│       ├── cexample/
│       │   ├── examplemodule.c
│       │   ├── micropython.cmake
│       │   └── micropython.mk
│       ├── cppexample/
│       │   ├── example.cpp
│       │   ├── examplemodule.c
│       │   ├── examplemodule.h
│       │   ├── micropython.cmake
│       │   └── micropython.mk
│       └── micropython.cmake
├── extmod/
│   ├── axtls-include/
│   │   ├── config.h
│   │   └── version.h
│   ├── btstack/
│   │   ├── btstack.mk
│   │   ├── btstack_config.h
│   │   ├── btstack_hci_uart.c
│   │   ├── btstack_hci_uart.h
│   │   ├── modbluetooth_btstack.c
│   │   └── modbluetooth_btstack.h
│   ├── crypto-algorithms/
│   │   ├── sha256.c
│   │   └── sha256.h
│   ├── extmod.cmake
│   ├── extmod.mk
│   ├── lwip-include/
│   │   ├── arch/
│   │   │   ├── cc.h
│   │   │   └── perf.h
│   │   └── lwipopts.h
│   ├── machine_i2c.c
│   ├── machine_i2c.h
│   ├── machine_mem.c
│   ├── machine_mem.h
│   ├── machine_pinbase.c
│   ├── machine_pinbase.h
│   ├── machine_pulse.c
│   ├── machine_pulse.h
│   ├── machine_signal.c
│   ├── machine_signal.h
│   ├── machine_spi.c
│   ├── machine_spi.h
│   ├── misc.h
│   ├── modbluetooth.c
│   ├── modbluetooth.h
│   ├── modbtree.c
│   ├── modframebuf.c
│   ├── modlwip.c
│   ├── modonewire.c
│   ├── moduasyncio.c
│   ├── modubinascii.c
│   ├── moducryptolib.c
│   ├── moductypes.c
│   ├── moduhashlib.c
│   ├── moduheapq.c
│   ├── modujson.c
│   ├── modurandom.c
│   ├── modure.c
│   ├── moduselect.c
│   ├── modussl_axtls.c
│   ├── modussl_mbedtls.c
│   ├── modutimeq.c
│   ├── moduwebsocket.c
│   ├── moduwebsocket.h
│   ├── moduzlib.c
│   ├── modwebrepl.c
│   ├── mpbthci.c
│   ├── mpbthci.h
│   ├── network_cyw43.c
│   ├── network_cyw43.h
│   ├── nimble/
│   │   ├── bsp/
│   │   │   └── bsp.h
│   │   ├── hal/
│   │   │   ├── hal_gpio.h
│   │   │   ├── hal_uart.c
│   │   │   └── hal_uart.h
│   │   ├── logcfg/
│   │   │   └── logcfg.h
│   │   ├── modbluetooth_nimble.c
│   │   ├── modbluetooth_nimble.h
│   │   ├── nimble/
│   │   │   ├── nimble_npl_os.c
│   │   │   └── nimble_npl_os.h
│   │   ├── nimble.mk
│   │   └── syscfg/
│   │       └── syscfg.h
│   ├── re1.5/
│   │   ├── charclass.c
│   │   ├── compilecode.c
│   │   ├── dumpcode.c
│   │   ├── re1.5.h
│   │   └── recursiveloop.c
│   ├── uasyncio/
│   │   ├── __init__.py
│   │   ├── core.py
│   │   ├── event.py
│   │   ├── funcs.py
│   │   ├── lock.py
│   │   ├── manifest.py
│   │   ├── stream.py
│   │   └── task.py
│   ├── uos_dupterm.c
│   ├── utime_mphal.c
│   ├── utime_mphal.h
│   ├── uzlib/
│   │   ├── adler32.c
│   │   ├── crc32.c
│   │   ├── defl_static.h
│   │   ├── tinf.h
│   │   ├── tinf_compat.h
│   │   ├── tinfgzip.c
│   │   ├── tinflate.c
│   │   ├── tinfzlib.c
│   │   ├── uzlib.h
│   │   └── uzlib_conf.h
│   ├── vfs.c
│   ├── vfs.h
│   ├── vfs_blockdev.c
│   ├── vfs_fat.c
│   ├── vfs_fat.h
│   ├── vfs_fat_diskio.c
│   ├── vfs_fat_file.c
│   ├── vfs_lfs.c
│   ├── vfs_lfs.h
│   ├── vfs_lfsx.c
│   ├── vfs_lfsx_file.c
│   ├── vfs_posix.c
│   ├── vfs_posix.h
│   ├── vfs_posix_file.c
│   ├── vfs_reader.c
│   ├── virtpin.c
│   ├── virtpin.h
│   └── webrepl/
│       ├── manifest.py
│       ├── webrepl.py
│       ├── webrepl_setup.py
│       └── websocket_helper.py
├── lib/
│   ├── README.md
│   ├── cmsis/
│   │   └── inc/
│   │       ├── cmsis_armcc.h
│   │       ├── cmsis_armclang.h
│   │       ├── cmsis_armclang_ltm.h
│   │       ├── cmsis_compiler.h
│   │       ├── cmsis_gcc.h
│   │       ├── cmsis_iccarm.h
│   │       ├── cmsis_version.h
│   │       ├── core_armv81mml.h
│   │       ├── core_armv8mbl.h
│   │       ├── core_armv8mml.h
│   │       ├── core_cm0.h
│   │       ├── core_cm0plus.h
│   │       ├── core_cm1.h
│   │       ├── core_cm23.h
│   │       ├── core_cm3.h
│   │       ├── core_cm33.h
│   │       ├── core_cm35p.h
│   │       ├── core_cm4.h
│   │       ├── core_cm7.h
│   │       ├── core_sc000.h
│   │       ├── core_sc300.h
│   │       ├── mpu_armv7.h
│   │       ├── mpu_armv8.h
│   │       └── tz_context.h
│   ├── embed/
│   │   ├── __errno.c
│   │   └── abort_.c
│   ├── libc/
│   │   └── string0.c
│   ├── libm/
│   │   ├── acoshf.c
│   │   ├── asinfacosf.c
│   │   ├── asinhf.c
│   │   ├── atan2f.c
│   │   ├── atanf.c
│   │   ├── atanhf.c
│   │   ├── ef_rem_pio2.c
│   │   ├── ef_sqrt.c
│   │   ├── erf_lgamma.c
│   │   ├── fdlibm.h
│   │   ├── fmodf.c
│   │   ├── kf_cos.c
│   │   ├── kf_rem_pio2.c
│   │   ├── kf_sin.c
│   │   ├── kf_tan.c
│   │   ├── libm.h
│   │   ├── log1pf.c
│   │   ├── math.c
│   │   ├── nearbyintf.c
│   │   ├── roundf.c
│   │   ├── sf_cos.c
│   │   ├── sf_erf.c
│   │   ├── sf_frexp.c
│   │   ├── sf_ldexp.c
│   │   ├── sf_modf.c
│   │   ├── sf_sin.c
│   │   ├── sf_tan.c
│   │   ├── thumb_vfp_sqrtf.c
│   │   ├── wf_lgamma.c
│   │   └── wf_tgamma.c
│   ├── libm_dbl/
│   │   ├── README
│   │   ├── __cos.c
│   │   ├── __expo2.c
│   │   ├── __fpclassify.c
│   │   ├── __rem_pio2.c
│   │   ├── __rem_pio2_large.c
│   │   ├── __signbit.c
│   │   ├── __sin.c
│   │   ├── __tan.c
│   │   ├── acos.c
│   │   ├── acosh.c
│   │   ├── asin.c
│   │   ├── asinh.c
│   │   ├── atan.c
│   │   ├── atan2.c
│   │   ├── atanh.c
│   │   ├── ceil.c
│   │   ├── copysign.c
│   │   ├── cos.c
│   │   ├── cosh.c
│   │   ├── erf.c
│   │   ├── exp.c
│   │   ├── expm1.c
│   │   ├── floor.c
│   │   ├── fmod.c
│   │   ├── frexp.c
│   │   ├── ldexp.c
│   │   ├── lgamma.c
│   │   ├── libm.h
│   │   ├── log.c
│   │   ├── log10.c
│   │   ├── log1p.c
│   │   ├── modf.c
│   │   ├── nearbyint.c
│   │   ├── pow.c
│   │   ├── rint.c
│   │   ├── round.c
│   │   ├── scalbn.c
│   │   ├── sin.c
│   │   ├── sinh.c
│   │   ├── sqrt.c
│   │   ├── tan.c
│   │   ├── tanh.c
│   │   ├── tgamma.c
│   │   ├── thumb_vfp_sqrt.c
│   │   └── trunc.c
│   ├── littlefs/
│   │   ├── README.md
│   │   ├── lfs1.c
│   │   ├── lfs1.h
│   │   ├── lfs1_util.c
│   │   ├── lfs1_util.h
│   │   ├── lfs2.c
│   │   ├── lfs2.h
│   │   ├── lfs2_util.c
│   │   └── lfs2_util.h
│   ├── memzip/
│   │   ├── README.md
│   │   ├── import.c
│   │   ├── lexermemzip.c
│   │   ├── make-memzip.py
│   │   ├── memzip.c
│   │   └── memzip.h
│   ├── mp-readline/
│   │   ├── readline.c
│   │   └── readline.h
│   ├── netutils/
│   │   ├── dhcpserver.c
│   │   ├── dhcpserver.h
│   │   ├── netutils.c
│   │   ├── netutils.h
│   │   └── trace.c
│   ├── oofatfs/
│   │   ├── diskio.h
│   │   ├── ff.c
│   │   ├── ff.h
│   │   ├── ffconf.h
│   │   └── ffunicode.c
│   ├── timeutils/
│   │   ├── timeutils.c
│   │   └── timeutils.h
│   ├── tinytest/
│   │   ├── README
│   │   ├── tinytest.c
│   │   ├── tinytest.h
│   │   └── tinytest_macros.h
│   ├── upytesthelper/
│   │   ├── upytesthelper.c
│   │   └── upytesthelper.h
│   └── utils/
│       ├── gchelper.h
│       ├── gchelper_generic.c
│       ├── gchelper_m0.s
│       ├── gchelper_m3.s
│       ├── gchelper_native.c
│       ├── interrupt_char.c
│       ├── interrupt_char.h
│       ├── mpirq.c
│       ├── mpirq.h
│       ├── printf.c
│       ├── pyexec.c
│       ├── pyexec.h
│       ├── semihosting.c
│       ├── semihosting.h
│       ├── stdout_helpers.c
│       └── sys_stdio_mphal.c
├── logo/
│   ├── FONT-LICENSE.txt
│   ├── vector-logo-R2000.dxf
│   └── vector-text-R2000.dxf
├── ports/
│   ├── bare-arm/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── lib.c
│   │   ├── main.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── stm32f405.ld
│   │   └── system.c
│   ├── cc3200/
│   │   ├── FreeRTOS/
│   │   │   ├── FreeRTOSConfig.h
│   │   │   ├── License/
│   │   │   │   └── license.txt
│   │   │   └── Source/
│   │   │       ├── croutine.c
│   │   │       ├── event_groups.c
│   │   │       ├── include/
│   │   │       │   ├── FreeRTOS.h
│   │   │       │   ├── StackMacros.h
│   │   │       │   ├── croutine.h
│   │   │       │   ├── deprecated_definitions.h
│   │   │       │   ├── event_groups.h
│   │   │       │   ├── list.h
│   │   │       │   ├── mpu_prototypes.h
│   │   │       │   ├── mpu_wrappers.h
│   │   │       │   ├── portable.h
│   │   │       │   ├── projdefs.h
│   │   │       │   ├── queue.h
│   │   │       │   ├── semphr.h
│   │   │       │   ├── task.h
│   │   │       │   └── timers.h
│   │   │       ├── list.c
│   │   │       ├── portable/
│   │   │       │   ├── GCC/
│   │   │       │   │   └── ARM_CM3/
│   │   │       │   │       ├── port.c
│   │   │       │   │       └── portmacro.h
│   │   │       │   └── MemMang/
│   │   │       │       └── heap_4.c
│   │   │       ├── queue.c
│   │   │       ├── tasks.c
│   │   │       └── timers.c
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── application.lds
│   │   ├── application.mk
│   │   ├── appsign.sh
│   │   ├── boards/
│   │   │   ├── LAUNCHXL/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── pins.csv
│   │   │   ├── WIPY/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── pins.csv
│   │   │   ├── cc3200_af.csv
│   │   │   ├── cc3200_prefix.c
│   │   │   └── make-pins.py
│   │   ├── bootmgr/
│   │   │   ├── bootgen.sh
│   │   │   ├── bootloader.mk
│   │   │   ├── bootmgr.h
│   │   │   ├── bootmgr.lds
│   │   │   ├── flc.h
│   │   │   ├── main.c
│   │   │   ├── runapp.s
│   │   │   └── sl/
│   │   │       └── user.h
│   │   ├── fatfs/
│   │   │   └── src/
│   │   │       └── drivers/
│   │   │           ├── sd_diskio.c
│   │   │           ├── sd_diskio.h
│   │   │           ├── sflash_diskio.c
│   │   │           ├── sflash_diskio.h
│   │   │           └── stdcmd.h
│   │   ├── fatfs_port.c
│   │   ├── ftp/
│   │   │   ├── ftp.c
│   │   │   ├── ftp.h
│   │   │   ├── updater.c
│   │   │   └── updater.h
│   │   ├── hal/
│   │   │   ├── adc.c
│   │   │   ├── adc.h
│   │   │   ├── aes.c
│   │   │   ├── aes.h
│   │   │   ├── cc3200_asm.h
│   │   │   ├── cc3200_hal.c
│   │   │   ├── cc3200_hal.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── crc.c
│   │   │   ├── crc.h
│   │   │   ├── debug.h
│   │   │   ├── des.c
│   │   │   ├── des.h
│   │   │   ├── fault_registers.h
│   │   │   ├── gpio.c
│   │   │   ├── gpio.h
│   │   │   ├── i2c.c
│   │   │   ├── i2c.h
│   │   │   ├── i2s.c
│   │   │   ├── i2s.h
│   │   │   ├── inc/
│   │   │   │   ├── asmdefs.h
│   │   │   │   ├── hw_adc.h
│   │   │   │   ├── hw_aes.h
│   │   │   │   ├── hw_apps_config.h
│   │   │   │   ├── hw_apps_rcm.h
│   │   │   │   ├── hw_camera.h
│   │   │   │   ├── hw_common_reg.h
│   │   │   │   ├── hw_des.h
│   │   │   │   ├── hw_dthe.h
│   │   │   │   ├── hw_flash_ctrl.h
│   │   │   │   ├── hw_gpio.h
│   │   │   │   ├── hw_gprcm.h
│   │   │   │   ├── hw_hib1p2.h
│   │   │   │   ├── hw_hib3p3.h
│   │   │   │   ├── hw_i2c.h
│   │   │   │   ├── hw_ints.h
│   │   │   │   ├── hw_mcasp.h
│   │   │   │   ├── hw_mcspi.h
│   │   │   │   ├── hw_memmap.h
│   │   │   │   ├── hw_mmchs.h
│   │   │   │   ├── hw_nvic.h
│   │   │   │   ├── hw_ocp_shared.h
│   │   │   │   ├── hw_shamd5.h
│   │   │   │   ├── hw_stack_die_ctrl.h
│   │   │   │   ├── hw_timer.h
│   │   │   │   ├── hw_types.h
│   │   │   │   ├── hw_uart.h
│   │   │   │   ├── hw_udma.h
│   │   │   │   └── hw_wdt.h
│   │   │   ├── interrupt.c
│   │   │   ├── interrupt.h
│   │   │   ├── pin.c
│   │   │   ├── pin.h
│   │   │   ├── prcm.c
│   │   │   ├── prcm.h
│   │   │   ├── rom.h
│   │   │   ├── rom_map.h
│   │   │   ├── rom_patch.h
│   │   │   ├── sdhost.c
│   │   │   ├── sdhost.h
│   │   │   ├── shamd5.c
│   │   │   ├── shamd5.h
│   │   │   ├── spi.c
│   │   │   ├── spi.h
│   │   │   ├── startup_gcc.c
│   │   │   ├── systick.c
│   │   │   ├── systick.h
│   │   │   ├── timer.c
│   │   │   ├── timer.h
│   │   │   ├── uart.c
│   │   │   ├── uart.h
│   │   │   ├── utils.c
│   │   │   ├── utils.h
│   │   │   ├── wdt.c
│   │   │   └── wdt.h
│   │   ├── main.c
│   │   ├── misc/
│   │   │   ├── FreeRTOSHooks.c
│   │   │   ├── antenna.c
│   │   │   ├── antenna.h
│   │   │   ├── help.c
│   │   │   ├── mperror.c
│   │   │   ├── mperror.h
│   │   │   ├── mpirq.c
│   │   │   └── mpirq.h
│   │   ├── mods/
│   │   │   ├── modmachine.c
│   │   │   ├── modnetwork.c
│   │   │   ├── modnetwork.h
│   │   │   ├── moduhashlib.c
│   │   │   ├── moduos.c
│   │   │   ├── moduos.h
│   │   │   ├── modusocket.c
│   │   │   ├── modusocket.h
│   │   │   ├── modussl.c
│   │   │   ├── modutime.c
│   │   │   ├── modwipy.c
│   │   │   ├── modwlan.c
│   │   │   ├── modwlan.h
│   │   │   ├── pybadc.c
│   │   │   ├── pybadc.h
│   │   │   ├── pybflash.c
│   │   │   ├── pybflash.h
│   │   │   ├── pybi2c.c
│   │   │   ├── pybi2c.h
│   │   │   ├── pybpin.c
│   │   │   ├── pybpin.h
│   │   │   ├── pybrtc.c
│   │   │   ├── pybrtc.h
│   │   │   ├── pybsd.c
│   │   │   ├── pybsd.h
│   │   │   ├── pybsleep.c
│   │   │   ├── pybsleep.h
│   │   │   ├── pybspi.c
│   │   │   ├── pybspi.h
│   │   │   ├── pybtimer.c
│   │   │   ├── pybtimer.h
│   │   │   ├── pybuart.c
│   │   │   ├── pybuart.h
│   │   │   ├── pybwdt.c
│   │   │   └── pybwdt.h
│   │   ├── mpconfigport.h
│   │   ├── mptask.c
│   │   ├── mptask.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── qstrdefsport.h
│   │   ├── serverstask.c
│   │   ├── serverstask.h
│   │   ├── simplelink/
│   │   │   ├── cc_pal.c
│   │   │   ├── cc_pal.h
│   │   │   ├── oslib/
│   │   │   │   ├── osi.h
│   │   │   │   └── osi_freertos.c
│   │   │   └── user.h
│   │   ├── telnet/
│   │   │   ├── telnet.c
│   │   │   └── telnet.h
│   │   ├── tools/
│   │   │   ├── smoke.py
│   │   │   ├── smoke.py.exp
│   │   │   ├── uniflash.py
│   │   │   └── update-wipy.py
│   │   ├── util/
│   │   │   ├── cortex_m3_get_sp.s
│   │   │   ├── cryptohash.c
│   │   │   ├── cryptohash.h
│   │   │   ├── fifo.c
│   │   │   ├── fifo.h
│   │   │   ├── gccollect.c
│   │   │   ├── gccollect.h
│   │   │   ├── random.c
│   │   │   ├── random.h
│   │   │   ├── sleeprestore.h
│   │   │   ├── sleeprestore.s
│   │   │   ├── socketfifo.c
│   │   │   └── socketfifo.h
│   │   └── version.h
│   ├── esp32/
│   │   ├── CMakeLists.txt
│   │   ├── Makefile
│   │   ├── Makefile.real
│   │   ├── README.md
│   │   ├── README.ulp.md
│   │   ├── boards/
│   │   │   ├── GENERIC/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── GENERIC_D2WD/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── GENERIC_OTA/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── GENERIC_S2/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── GENERIC_SPIRAM/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── M5STACK_ATOM/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   └── atom.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── UM_FEATHERS2/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   └── feathers2.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── UM_TINYPICO/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   ├── dotstar.py
│   │   │   │   │   └── tinypico.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── UM_TINYS2/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   └── tinys2.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── manifest.py
│   │   │   ├── manifest_release.py
│   │   │   ├── sdkconfig.240mhz
│   │   │   ├── sdkconfig.base
│   │   │   ├── sdkconfig.ble
│   │   │   ├── sdkconfig.spiram
│   │   │   ├── sdkconfig.spiram_sx
│   │   │   └── sdkconfig.usb
│   │   ├── esp32_nvs.c
│   │   ├── esp32_partition.c
│   │   ├── esp32_rmt.c
│   │   ├── esp32_ulp.c
│   │   ├── espneopixel.c
│   │   ├── fatfs_port.c
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── help.c
│   │   ├── machine_adc.c
│   │   ├── machine_dac.c
│   │   ├── machine_hw_spi.c
│   │   ├── machine_i2c.c
│   │   ├── machine_pin.c
│   │   ├── machine_pwm.c
│   │   ├── machine_rtc.c
│   │   ├── machine_rtc.h
│   │   ├── machine_sdcard.c
│   │   ├── machine_timer.c
│   │   ├── machine_touchpad.c
│   │   ├── machine_uart.c
│   │   ├── machine_wdt.c
│   │   ├── main/
│   │   │   └── CMakeLists.txt
│   │   ├── main.c
│   │   ├── makeimg.py
│   │   ├── memory.h
│   │   ├── modesp.c
│   │   ├── modesp.h
│   │   ├── modesp32.c
│   │   ├── modesp32.h
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modnetwork.c
│   │   ├── modnetwork.h
│   │   ├── modsocket.c
│   │   ├── modules/
│   │   │   ├── _boot.py
│   │   │   ├── apa106.py
│   │   │   ├── flashbdev.py
│   │   │   ├── inisetup.py
│   │   │   └── neopixel.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── mpnimbleport.c
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── network_lan.c
│   │   ├── network_ppp.c
│   │   ├── partitions-16MiB.csv
│   │   ├── partitions-2MiB.csv
│   │   ├── partitions-ota.csv
│   │   ├── partitions.csv
│   │   ├── qstrdefsport.h
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── usb.c
│   │   └── usb.h
│   ├── esp8266/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── boards/
│   │   │   ├── GENERIC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── GENERIC_1M/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── GENERIC_512K/
│   │   │   │   ├── _boot.py
│   │   │   │   ├── manifest.py
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── eagle.rom.addr.v6.ld
│   │   │   ├── esp8266_1m.ld
│   │   │   ├── esp8266_2m.ld
│   │   │   ├── esp8266_512k.ld
│   │   │   ├── esp8266_common.ld
│   │   │   ├── esp8266_ota.ld
│   │   │   └── manifest.py
│   │   ├── esp_init_data.c
│   │   ├── esp_mphal.c
│   │   ├── esp_mphal.h
│   │   ├── espapa102.c
│   │   ├── espapa102.h
│   │   ├── espneopixel.c
│   │   ├── espneopixel.h
│   │   ├── esppwm.c
│   │   ├── esppwm.h
│   │   ├── ets_alt_task.c
│   │   ├── ets_alt_task.h
│   │   ├── etshal.h
│   │   ├── fatfs_port.c
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── gchelper.s
│   │   ├── help.c
│   │   ├── hspi.c
│   │   ├── hspi.h
│   │   ├── hspi_register.h
│   │   ├── lexerstr32.c
│   │   ├── machine_adc.c
│   │   ├── machine_hspi.c
│   │   ├── machine_pin.c
│   │   ├── machine_pwm.c
│   │   ├── machine_rtc.c
│   │   ├── machine_uart.c
│   │   ├── machine_wdt.c
│   │   ├── main.c
│   │   ├── makeimg.py
│   │   ├── modesp.c
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modnetwork.c
│   │   ├── modpyb.c
│   │   ├── modules/
│   │   │   ├── _boot.py
│   │   │   ├── apa102.py
│   │   │   ├── flashbdev.py
│   │   │   ├── inisetup.py
│   │   │   ├── neopixel.py
│   │   │   ├── ntptime.py
│   │   │   └── port_diag.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── posix_helpers.c
│   │   ├── qstrdefsport.h
│   │   ├── strtoll.c
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── uart_register.h
│   │   ├── user_config.h
│   │   └── xtirq.h
│   ├── javascript/
│   │   ├── JSBackend.patch
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── library.h
│   │   ├── library.js
│   │   ├── main.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── node_run.sh
│   │   ├── qstrdefsport.h
│   │   └── wrapper.js
│   ├── mimxrt/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── board_init.c
│   │   ├── boards/
│   │   │   ├── MIMXRT1010_EVK/
│   │   │   │   ├── MIMXRT1010_EVK.ld
│   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1011.ld
│   │   │   ├── MIMXRT1011_af.csv
│   │   │   ├── MIMXRT1020_EVK/
│   │   │   │   ├── MIMXRT1020_EVK.ld
│   │   │   │   ├── evkmimxrt1020_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1021.ld
│   │   │   ├── MIMXRT1021_af.csv
│   │   │   ├── MIMXRT1050_EVK/
│   │   │   │   ├── MIMXRT1050_EVK.ld
│   │   │   │   ├── evkmimxrt1050_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1052.ld
│   │   │   ├── MIMXRT1052_af.csv
│   │   │   ├── MIMXRT1060_EVK/
│   │   │   │   ├── MIMXRT1060_EVK.ld
│   │   │   │   ├── evkmimxrt1060_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1062.ld
│   │   │   ├── MIMXRT1062_af.csv
│   │   │   ├── MIMXRT1064.ld
│   │   │   ├── MIMXRT1064_EVK/
│   │   │   │   ├── MIMXRT1064_EVK.ld
│   │   │   │   ├── evkmimxrt1064_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1064_af.csv
│   │   │   ├── TEENSY40/
│   │   │   │   ├── TEENSY40.ld
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── format.py
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── teensy40_flexspi_nor_config.h
│   │   │   ├── TEENSY41/
│   │   │   │   ├── TEENSY41.ld
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── teensy41_flexspi_nor_config.h
│   │   │   ├── common.ld
│   │   │   ├── make-pins.py
│   │   │   ├── manifest.py
│   │   │   └── mimxrt_prefix.c
│   │   ├── hal/
│   │   │   ├── flexspi_nor_flash.c
│   │   │   └── flexspi_nor_flash.h
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── machine_adc.c
│   │   ├── machine_led.c
│   │   ├── machine_pin.c
│   │   ├── machine_rtc.c
│   │   ├── machine_timer.c
│   │   ├── machine_uart.c
│   │   ├── main.c
│   │   ├── mimxrt_flash.c
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modmimxrt.c
│   │   ├── modmimxrt.h
│   │   ├── modules/
│   │   │   └── _boot.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── pin.c
│   │   ├── pin.h
│   │   ├── qstrdefsport.h
│   │   ├── ticks.c
│   │   ├── ticks.h
│   │   ├── tusb_config.h
│   │   └── tusb_port.c
│   ├── minimal/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── frozentest.py
│   │   ├── main.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── qstrdefsport.h
│   │   ├── stm32f405.ld
│   │   └── uart_core.c
│   ├── nrf/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── bluetooth_conf.h
│   │   ├── boards/
│   │   │   ├── actinius_icarus/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── arduino_primo/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── blueio_tag_evim/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── common.ld
│   │   │   ├── dvk_bl652/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── evk_nina_b1/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── evk_nina_b3/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── feather52/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── ibk_blyst_nano/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── idk_blyst_nano/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── make-pins.py
│   │   │   ├── memory.ld
│   │   │   ├── microbit/
│   │   │   │   ├── custom_nrf51822_s110_microbit.ld
│   │   │   │   ├── modules/
│   │   │   │   │   ├── AUTHORS
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── boardmodules.h
│   │   │   │   │   ├── boardmodules.mk
│   │   │   │   │   ├── iters.c
│   │   │   │   │   ├── iters.h
│   │   │   │   │   ├── microbitconstimage.c
│   │   │   │   │   ├── microbitconstimage.h
│   │   │   │   │   ├── microbitconstimagetuples.c
│   │   │   │   │   ├── microbitdisplay.c
│   │   │   │   │   ├── microbitdisplay.h
│   │   │   │   │   ├── microbitfont.h
│   │   │   │   │   ├── microbitimage.c
│   │   │   │   │   ├── microbitimage.h
│   │   │   │   │   ├── modmicrobit.c
│   │   │   │   │   └── modmicrobit.h
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── nrf51_prefix.c
│   │   │   ├── nrf51x22_256k_16k.ld
│   │   │   ├── nrf51x22_256k_32k.ld
│   │   │   ├── nrf52832_512k_64k.ld
│   │   │   ├── nrf52840-mdk-usb-dongle/
│   │   │   │   ├── README.md
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── nrf52840_1M_256k.ld
│   │   │   ├── nrf52840_open_bootloader_1.2.x.ld
│   │   │   ├── nrf52_prefix.c
│   │   │   ├── nrf9160_1M_256k.ld
│   │   │   ├── nrf9160_1M_256k_secure.ld
│   │   │   ├── nrf91_prefix.c
│   │   │   ├── particle_xenon/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10000/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10001/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10028/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10031/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10040/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10056/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10059/
│   │   │   │   ├── modules/
│   │   │   │   │   ├── boardmodules.h
│   │   │   │   │   ├── boardmodules.mk
│   │   │   │   │   └── recover_uicr_regout0.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10090/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── s110_8.0.0.ld
│   │   │   ├── s132_6.1.1.ld
│   │   │   ├── s140_6.1.1.ld
│   │   │   └── wt51822_s4at/
│   │   │       ├── mpconfigboard.h
│   │   │       ├── mpconfigboard.mk
│   │   │       └── pins.csv
│   │   ├── device/
│   │   │   ├── startup_nrf51822.c
│   │   │   ├── startup_nrf52832.c
│   │   │   ├── startup_nrf52840.c
│   │   │   └── startup_nrf9160.c
│   │   ├── drivers/
│   │   │   ├── bluetooth/
│   │   │   │   ├── ble_drv.c
│   │   │   │   ├── ble_drv.h
│   │   │   │   ├── ble_uart.c
│   │   │   │   ├── ble_uart.h
│   │   │   │   ├── bluetooth_common.mk
│   │   │   │   ├── download_ble_stack.sh
│   │   │   │   └── ringbuffer.h
│   │   │   ├── flash.c
│   │   │   ├── flash.h
│   │   │   ├── rng.c
│   │   │   ├── rng.h
│   │   │   ├── secureboot/
│   │   │   │   ├── secureboot.mk
│   │   │   │   └── secureboot_main.c
│   │   │   ├── softpwm.c
│   │   │   ├── softpwm.h
│   │   │   ├── ticker.c
│   │   │   ├── ticker.h
│   │   │   └── usb/
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_cdc.c
│   │   │       ├── usb_cdc.h
│   │   │       └── usb_descriptors.c
│   │   ├── examples/
│   │   │   ├── mountsd.py
│   │   │   ├── musictest.py
│   │   │   ├── nrf52_pwm.py
│   │   │   ├── nrf52_servo.py
│   │   │   ├── powerup.py
│   │   │   ├── seeed_tft.py
│   │   │   ├── ssd1306_mod.py
│   │   │   ├── ubluepy_eddystone.py
│   │   │   ├── ubluepy_scan.py
│   │   │   └── ubluepy_temp.py
│   │   ├── fatfs_port.c
│   │   ├── freeze/
│   │   │   └── test.py
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── help.c
│   │   ├── main.c
│   │   ├── modules/
│   │   │   ├── ble/
│   │   │   │   ├── help_sd.h
│   │   │   │   └── modble.c
│   │   │   ├── board/
│   │   │   │   ├── led.c
│   │   │   │   ├── led.h
│   │   │   │   └── modboard.c
│   │   │   ├── machine/
│   │   │   │   ├── adc.c
│   │   │   │   ├── adc.h
│   │   │   │   ├── i2c.c
│   │   │   │   ├── i2c.h
│   │   │   │   ├── modmachine.c
│   │   │   │   ├── modmachine.h
│   │   │   │   ├── pin.c
│   │   │   │   ├── pin.h
│   │   │   │   ├── pwm.c
│   │   │   │   ├── pwm.h
│   │   │   │   ├── rtcounter.c
│   │   │   │   ├── rtcounter.h
│   │   │   │   ├── spi.c
│   │   │   │   ├── spi.h
│   │   │   │   ├── temp.c
│   │   │   │   ├── temp.h
│   │   │   │   ├── timer.c
│   │   │   │   ├── timer.h
│   │   │   │   ├── uart.c
│   │   │   │   └── uart.h
│   │   │   ├── music/
│   │   │   │   ├── modmusic.c
│   │   │   │   ├── modmusic.h
│   │   │   │   ├── musictunes.c
│   │   │   │   └── musictunes.h
│   │   │   ├── ubluepy/
│   │   │   │   ├── modubluepy.c
│   │   │   │   ├── modubluepy.h
│   │   │   │   ├── ubluepy_characteristic.c
│   │   │   │   ├── ubluepy_constants.c
│   │   │   │   ├── ubluepy_delegate.c
│   │   │   │   ├── ubluepy_descriptor.c
│   │   │   │   ├── ubluepy_peripheral.c
│   │   │   │   ├── ubluepy_scan_entry.c
│   │   │   │   ├── ubluepy_scanner.c
│   │   │   │   ├── ubluepy_service.c
│   │   │   │   └── ubluepy_uuid.c
│   │   │   ├── uos/
│   │   │   │   ├── microbitfs.c
│   │   │   │   ├── microbitfs.h
│   │   │   │   └── moduos.c
│   │   │   └── utime/
│   │   │       └── modutime.c
│   │   ├── mpconfigdevice_nrf51822.h
│   │   ├── mpconfigdevice_nrf52832.h
│   │   ├── mpconfigdevice_nrf52840.h
│   │   ├── mpconfigdevice_nrf9160.h
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── nrf51_af.csv
│   │   ├── nrf52_af.csv
│   │   ├── nrf91_af.csv
│   │   ├── nrfx_config.h
│   │   ├── nrfx_glue.h
│   │   ├── nrfx_log.h
│   │   ├── pin_defs_nrf5.h
│   │   ├── pin_named_pins.c
│   │   └── qstrdefsport.h
│   ├── pic16bit/
│   │   ├── Makefile
│   │   ├── board.c
│   │   ├── board.h
│   │   ├── main.c
│   │   ├── modpyb.c
│   │   ├── modpyb.h
│   │   ├── modpybled.c
│   │   ├── modpybswitch.c
│   │   ├── mpconfigport.h
│   │   ├── pic16bit_mphal.c
│   │   ├── pic16bit_mphal.h
│   │   ├── qstrdefsport.h
│   │   └── unistd.h
│   ├── powerpc/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── frozentest.py
│   │   ├── head.S
│   │   ├── main.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── powerpc.lds
│   │   ├── qstrdefsport.h
│   │   ├── uart_lpc_serial.c
│   │   ├── uart_lpc_serial.h
│   │   ├── uart_potato.c
│   │   ├── uart_potato.h
│   │   └── unistd.h
│   ├── qemu-arm/
│   │   ├── Makefile
│   │   ├── Makefile.test
│   │   ├── README.md
│   │   ├── imx6.ld
│   │   ├── main.c
│   │   ├── modmachine.c
│   │   ├── moduos.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── mps2.ld
│   │   ├── nrf51.ld
│   │   ├── qstrdefsport.h
│   │   ├── startup.c
│   │   ├── stm32.ld
│   │   ├── test-frzmpy/
│   │   │   └── native_frozen_align.py
│   │   ├── test_main.c
│   │   ├── uart.c
│   │   └── uart.h
│   ├── rp2/
│   │   ├── CMakeLists.txt
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── boards/
│   │   │   ├── ADAFRUIT_FEATHER_RP2040/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── PICO/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── SPARKFUN_PROMICRO/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── SPARKFUN_THINGPLUS/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   └── manifest.py
│   │   ├── fatfs_port.c
│   │   ├── machine_adc.c
│   │   ├── machine_i2c.c
│   │   ├── machine_pin.c
│   │   ├── machine_pwm.c
│   │   ├── machine_rtc.c
│   │   ├── machine_spi.c
│   │   ├── machine_timer.c
│   │   ├── machine_uart.c
│   │   ├── machine_wdt.c
│   │   ├── main.c
│   │   ├── memmap_mp.ld
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modrp2.c
│   │   ├── modrp2.h
│   │   ├── modules/
│   │   │   ├── _boot.py
│   │   │   └── rp2.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── qstrdefsport.h
│   │   ├── rp2_flash.c
│   │   ├── rp2_pio.c
│   │   ├── tusb_config.h
│   │   ├── tusb_port.c
│   │   ├── uart.c
│   │   └── uart.h
│   ├── samd/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── boards/
│   │   │   ├── ADAFRUIT_FEATHER_M0_EXPRESS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── ADAFRUIT_ITSYBITSY_M4_EXPRESS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── ADAFRUIT_TRINKET_M0/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── MINISAM_M4/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── SAMD21_XPLAINED_PRO/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── samd21x18a.ld
│   │   │   └── samd51g19a.ld
│   │   ├── main.c
│   │   ├── modmachine.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── qstrdefsport.h
│   │   ├── samd_isr.c
│   │   ├── samd_soc.c
│   │   ├── samd_soc.h
│   │   ├── sections.ld
│   │   ├── tusb_config.h
│   │   └── tusb_port.c
│   ├── stm32/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── accel.c
│   │   ├── accel.h
│   │   ├── adc.c
│   │   ├── adc.h
│   │   ├── autoflash
│   │   ├── boardctrl.c
│   │   ├── boardctrl.h
│   │   ├── boards/
│   │   │   ├── ADAFRUIT_F405_EXPRESS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── B_L072Z_LRWAN1/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l0xx_hal_conf.h
│   │   │   ├── B_L475E_IOT01A/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── CERB40/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── ESPRUINO_PICO/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── HYDRABUS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── LIMIFROG/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── MIKROE_CLICKER2_STM32/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NADHAT_PYBF405/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NETDUINO_PLUS_2/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F091RC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f0xx_hal_conf.h
│   │   │   ├── NUCLEO_F401RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F411RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F412ZG/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F413ZH/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F429ZI/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F446RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F722ZE/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── NUCLEO_F746ZG/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── NUCLEO_F767ZI/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── NUCLEO_H743ZI/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32h7xx_hal_conf.h
│   │   │   ├── NUCLEO_L073RZ/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l0xx_hal_conf.h
│   │   │   ├── NUCLEO_L432KC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── NUCLEO_L452RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── NUCLEO_L476RG/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── NUCLEO_WB55/
│   │   │   │   ├── mboot_keys.h
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   ├── rfcore_debug.py
│   │   │   │   ├── rfcore_firmware.py
│   │   │   │   ├── rfcore_makefirmware.py
│   │   │   │   └── stm32wbxx_hal_conf.h
│   │   │   ├── OLIMEX_E407/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBD_SF2/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── f722_qspi.ld
│   │   │   │   ├── manifest.py
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── PYBD_SF3/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── PYBD_SF6/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── f767.ld
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── PYBLITEV10/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV10/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV11/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV3/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV4/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F411DISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F429DISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F439/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F4DISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   ├── staccel.py
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F769DISC/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── f769_qspi.ld
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── STM32F7DISC/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── STM32L476DISC/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── STM32L496GDISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── USBDONGLE_WB55/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32wbxx_hal_conf.h
│   │   │   ├── VCC_GND_F407VE/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── VCC_GND_F407ZG/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── common_basic.ld
│   │   │   ├── common_bl.ld
│   │   │   ├── common_blifs.ld
│   │   │   ├── common_bss_heap_stack.ld
│   │   │   ├── common_extratext_data_in_flash.ld
│   │   │   ├── common_extratext_data_in_flash_app.ld
│   │   │   ├── common_extratext_data_in_flash_text.ld
│   │   │   ├── common_ifs.ld
│   │   │   ├── make-pins.py
│   │   │   ├── manifest.py
│   │   │   ├── openocd_stm32f4.cfg
│   │   │   ├── openocd_stm32f7.cfg
│   │   │   ├── openocd_stm32l4.cfg
│   │   │   ├── pllvalues.py
│   │   │   ├── stm32f091_af.csv
│   │   │   ├── stm32f091xc.ld
│   │   │   ├── stm32f0xx_hal_conf_base.h
│   │   │   ├── stm32f401_af.csv
│   │   │   ├── stm32f401xd.ld
│   │   │   ├── stm32f401xe.ld
│   │   │   ├── stm32f405.ld
│   │   │   ├── stm32f405_af.csv
│   │   │   ├── stm32f411.ld
│   │   │   ├── stm32f411_af.csv
│   │   │   ├── stm32f412_af.csv
│   │   │   ├── stm32f412zx.ld
│   │   │   ├── stm32f413_af.csv
│   │   │   ├── stm32f413xg.ld
│   │   │   ├── stm32f413xh.ld
│   │   │   ├── stm32f429.ld
│   │   │   ├── stm32f429_af.csv
│   │   │   ├── stm32f439.ld
│   │   │   ├── stm32f439_af.csv
│   │   │   ├── stm32f4xx_hal_conf_base.h
│   │   │   ├── stm32f4xx_prefix.c
│   │   │   ├── stm32f722.ld
│   │   │   ├── stm32f722_af.csv
│   │   │   ├── stm32f746.ld
│   │   │   ├── stm32f746_af.csv
│   │   │   ├── stm32f767.ld
│   │   │   ├── stm32f767_af.csv
│   │   │   ├── stm32f769.ld
│   │   │   ├── stm32f7xx_hal_conf_base.h
│   │   │   ├── stm32h743.ld
│   │   │   ├── stm32h743_af.csv
│   │   │   ├── stm32h7xx_hal_conf_base.h
│   │   │   ├── stm32l072_af.csv
│   │   │   ├── stm32l072xz.ld
│   │   │   ├── stm32l0xx_hal_conf_base.h
│   │   │   ├── stm32l432.ld
│   │   │   ├── stm32l432_af.csv
│   │   │   ├── stm32l452_af.csv
│   │   │   ├── stm32l452xe.ld
│   │   │   ├── stm32l476_af.csv
│   │   │   ├── stm32l476xe.ld
│   │   │   ├── stm32l476xg.ld
│   │   │   ├── stm32l496_af.csv
│   │   │   ├── stm32l496xg.ld
│   │   │   ├── stm32l4xx_hal_conf_base.h
│   │   │   ├── stm32wb55_af.csv
│   │   │   ├── stm32wb55xg.ld
│   │   │   └── stm32wbxx_hal_conf_base.h
│   │   ├── bufhelper.c
│   │   ├── bufhelper.h
│   │   ├── can.c
│   │   ├── can.h
│   │   ├── dac.c
│   │   ├── dac.h
│   │   ├── dma.c
│   │   ├── dma.h
│   │   ├── eth.c
│   │   ├── eth.h
│   │   ├── extint.c
│   │   ├── extint.h
│   │   ├── factoryreset.c
│   │   ├── factoryreset.h
│   │   ├── fatfs_port.c
│   │   ├── fdcan.c
│   │   ├── flash.c
│   │   ├── flash.h
│   │   ├── flashbdev.c
│   │   ├── font_petme128_8x8.h
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── help.c
│   │   ├── i2c.c
│   │   ├── i2c.h
│   │   ├── i2cslave.c
│   │   ├── i2cslave.h
│   │   ├── irq.c
│   │   ├── irq.h
│   │   ├── lcd.c
│   │   ├── lcd.h
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── lwip_inc/
│   │   │   ├── arch/
│   │   │   │   ├── cc.h
│   │   │   │   └── sys_arch.h
│   │   │   └── lwipopts.h
│   │   ├── machine_adc.c
│   │   ├── machine_i2c.c
│   │   ├── machine_spi.c
│   │   ├── machine_timer.c
│   │   ├── machine_uart.c
│   │   ├── main.c
│   │   ├── make-stmconst.py
│   │   ├── mbedtls/
│   │   │   ├── mbedtls_config.h
│   │   │   └── mbedtls_port.c
│   │   ├── mboot/
│   │   │   ├── Makefile
│   │   │   ├── Particle.h
│   │   │   ├── README.md
│   │   │   ├── dfu.h
│   │   │   ├── elem.c
│   │   │   ├── ffconf.h
│   │   │   ├── fsload.c
│   │   │   ├── fwupdate.py
│   │   │   ├── gzstream.c
│   │   │   ├── gzstream.h
│   │   │   ├── main.c
│   │   │   ├── mboot.h
│   │   │   ├── mboot.py
│   │   │   ├── mboot_pack_dfu.py
│   │   │   ├── mphalport.h
│   │   │   ├── pack.c
│   │   │   ├── pack.h
│   │   │   ├── stm32_memory.ld
│   │   │   ├── stm32_sections.ld
│   │   │   ├── vfs.h
│   │   │   ├── vfs_fat.c
│   │   │   └── vfs_lfs.c
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modnetwork.c
│   │   ├── modnetwork.h
│   │   ├── modnwcc3k.c
│   │   ├── modnwwiznet5k.c
│   │   ├── modpyb.c
│   │   ├── modstm.c
│   │   ├── moduos.c
│   │   ├── modusocket.c
│   │   ├── modutime.c
│   │   ├── mpbthciport.c
│   │   ├── mpbtstackport.c
│   │   ├── mpbtstackport.h
│   │   ├── mpconfigboard_common.h
│   │   ├── mpconfigport.h
│   │   ├── mpconfigport.mk
│   │   ├── mpconfigport_nanbox.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── mpnimbleport.c
│   │   ├── mpnimbleport.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── mpu.h
│   │   ├── network_lan.c
│   │   ├── network_wiznet5k.c
│   │   ├── pendsv.c
│   │   ├── pendsv.h
│   │   ├── pin.c
│   │   ├── pin.h
│   │   ├── pin_defs_stm32.c
│   │   ├── pin_defs_stm32.h
│   │   ├── pin_named_pins.c
│   │   ├── pin_static_af.h
│   │   ├── portmodules.h
│   │   ├── powerctrl.c
│   │   ├── powerctrl.h
│   │   ├── powerctrlboot.c
│   │   ├── pyb_can.c
│   │   ├── pyb_i2c.c
│   │   ├── pyb_spi.c
│   │   ├── pybcdc.inf_template
│   │   ├── pybthread.c
│   │   ├── pybthread.h
│   │   ├── qspi.c
│   │   ├── qspi.h
│   │   ├── qstrdefsport.h
│   │   ├── resethandler.s
│   │   ├── resethandler_m0.s
│   │   ├── rfcore.c
│   │   ├── rfcore.h
│   │   ├── rng.c
│   │   ├── rng.h
│   │   ├── rtc.c
│   │   ├── rtc.h
│   │   ├── sdcard.c
│   │   ├── sdcard.h
│   │   ├── sdio.c
│   │   ├── sdio.h
│   │   ├── sdram.c
│   │   ├── sdram.h
│   │   ├── servo.c
│   │   ├── servo.h
│   │   ├── softtimer.c
│   │   ├── softtimer.h
│   │   ├── spi.c
│   │   ├── spi.h
│   │   ├── spibdev.c
│   │   ├── stm32_it.c
│   │   ├── stm32_it.h
│   │   ├── storage.c
│   │   ├── storage.h
│   │   ├── system_stm32.c
│   │   ├── systick.c
│   │   ├── systick.h
│   │   ├── timer.c
│   │   ├── timer.h
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── usb.c
│   │   ├── usb.h
│   │   ├── usbd_cdc_interface.c
│   │   ├── usbd_cdc_interface.h
│   │   ├── usbd_conf.c
│   │   ├── usbd_conf.h
│   │   ├── usbd_desc.c
│   │   ├── usbd_desc.h
│   │   ├── usbd_hid_interface.c
│   │   ├── usbd_hid_interface.h
│   │   ├── usbd_msc_interface.c
│   │   ├── usbd_msc_interface.h
│   │   ├── usbdev/
│   │   │   ├── class/
│   │   │   │   ├── inc/
│   │   │   │   │   ├── usbd_cdc_msc_hid.h
│   │   │   │   │   ├── usbd_cdc_msc_hid0.h
│   │   │   │   │   ├── usbd_msc_bot.h
│   │   │   │   │   └── usbd_msc_scsi.h
│   │   │   │   └── src/
│   │   │   │       ├── usbd_cdc_msc_hid.c
│   │   │   │       ├── usbd_msc_bot.c
│   │   │   │       └── usbd_msc_scsi.c
│   │   │   └── core/
│   │   │       ├── inc/
│   │   │       │   ├── usbd_core.h
│   │   │       │   ├── usbd_ctlreq.h
│   │   │       │   ├── usbd_def.h
│   │   │       │   └── usbd_ioreq.h
│   │   │       └── src/
│   │   │           ├── usbd_core.c
│   │   │           ├── usbd_ctlreq.c
│   │   │           └── usbd_ioreq.c
│   │   ├── usbhost/
│   │   │   ├── Class/
│   │   │   │   ├── AUDIO/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   └── usbh_audio.h
│   │   │   │   │   └── Src/
│   │   │   │   │       └── usbh_audio.c
│   │   │   │   ├── CDC/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   └── usbh_cdc.h
│   │   │   │   │   └── Src/
│   │   │   │   │       └── usbh_cdc.c
│   │   │   │   ├── HID/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   ├── usbh_hid.h
│   │   │   │   │   │   ├── usbh_hid_keybd.h
│   │   │   │   │   │   ├── usbh_hid_mouse.h
│   │   │   │   │   │   ├── usbh_hid_parser.h
│   │   │   │   │   │   └── usbh_hid_usage.h
│   │   │   │   │   └── Src/
│   │   │   │   │       ├── usbh_hid.c
│   │   │   │   │       ├── usbh_hid_keybd.c
│   │   │   │   │       ├── usbh_hid_mouse.c
│   │   │   │   │       └── usbh_hid_parser.c
│   │   │   │   ├── MSC/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   ├── usbh_msc.h
│   │   │   │   │   │   ├── usbh_msc_bot.h
│   │   │   │   │   │   └── usbh_msc_scsi.h
│   │   │   │   │   └── Src/
│   │   │   │   │       ├── usbh_msc.c
│   │   │   │   │       ├── usbh_msc_bot.c
│   │   │   │   │       └── usbh_msc_scsi.c
│   │   │   │   ├── MTP/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   ├── usbh_mtp.h
│   │   │   │   │   │   └── usbh_mtp_ptp.h
│   │   │   │   │   └── Src/
│   │   │   │   │       ├── usbh_mtp.c
│   │   │   │   │       └── usbh_mtp_ptp.c
│   │   │   │   └── Template/
│   │   │   │       ├── Inc/
│   │   │   │       │   └── usbh_template.h
│   │   │   │       └── Src/
│   │   │   │           └── usbh_template.c
│   │   │   └── Core/
│   │   │       ├── Inc/
│   │   │       │   ├── usbh_conf_template.h
│   │   │       │   ├── usbh_core.h
│   │   │       │   ├── usbh_ctlreq.h
│   │   │       │   ├── usbh_def.h
│   │   │       │   ├── usbh_ioreq.h
│   │   │       │   └── usbh_pipes.h
│   │   │       └── Src/
│   │   │           ├── usbh_conf_template.c
│   │   │           ├── usbh_core.c
│   │   │           ├── usbh_ctlreq.c
│   │   │           ├── usbh_ioreq.c
│   │   │           └── usbh_pipes.c
│   │   ├── usrsw.c
│   │   ├── usrsw.h
│   │   ├── wdt.c
│   │   └── wdt.h
│   ├── teensy/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── add-memzip.sh
│   │   ├── core/
│   │   │   ├── Arduino.h
│   │   │   ├── HardwareSerial.h
│   │   │   ├── analog.c
│   │   │   ├── avr_functions.h
│   │   │   ├── core_pins.h
│   │   │   ├── mk20dx128.c
│   │   │   ├── mk20dx128.h
│   │   │   ├── pins_arduino.h
│   │   │   ├── pins_teensy.c
│   │   │   ├── usb_desc.c
│   │   │   ├── usb_desc.h
│   │   │   ├── usb_dev.c
│   │   │   ├── usb_dev.h
│   │   │   ├── usb_mem.c
│   │   │   ├── usb_mem.h
│   │   │   ├── usb_names.h
│   │   │   ├── usb_serial.c
│   │   │   ├── usb_serial.h
│   │   │   └── yield.c
│   │   ├── hal_ftm.c
│   │   ├── hal_ftm.h
│   │   ├── hal_gpio.c
│   │   ├── help.c
│   │   ├── lcd.c
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── lexerfrozen.c
│   │   ├── lexermemzip.h
│   │   ├── main.c
│   │   ├── make-pins.py
│   │   ├── memzip_files/
│   │   │   ├── boot.py
│   │   │   └── main.py
│   │   ├── mk20dx256.ld
│   │   ├── mk20dx256_af.csv
│   │   ├── mk20dx256_prefix.c
│   │   ├── modpyb.c
│   │   ├── mpconfigport.h
│   │   ├── pin_defs_teensy.c
│   │   ├── pin_defs_teensy.h
│   │   ├── qstrdefsport.h
│   │   ├── reg.c
│   │   ├── reg.h
│   │   ├── servo.c
│   │   ├── servo.h
│   │   ├── std.h
│   │   ├── teensy_hal.c
│   │   ├── teensy_hal.h
│   │   ├── teensy_pins.csv
│   │   ├── timer.c
│   │   ├── timer.h
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── usb.c
│   │   └── usb.h
│   ├── unix/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── alloc.c
│   │   ├── coverage.c
│   │   ├── coveragecpp.cpp
│   │   ├── fatfs_port.c
│   │   ├── fdfile.h
│   │   ├── file.c
│   │   ├── gccollect.c
│   │   ├── input.c
│   │   ├── input.h
│   │   ├── main.c
│   │   ├── modffi.c
│   │   ├── modjni.c
│   │   ├── modmachine.c
│   │   ├── modos.c
│   │   ├── modtermios.c
│   │   ├── modtime.c
│   │   ├── moduos_vfs.c
│   │   ├── moduselect.c
│   │   ├── modusocket.c
│   │   ├── mpbthciport.c
│   │   ├── mpbtstackport.h
│   │   ├── mpbtstackport_common.c
│   │   ├── mpbtstackport_h4.c
│   │   ├── mpbtstackport_usb.c
│   │   ├── mpconfigport.h
│   │   ├── mpconfigport.mk
│   │   ├── mphalport.h
│   │   ├── mpnimbleport.c
│   │   ├── mpnimbleport.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── qstrdefsport.h
│   │   ├── unix_mphal.c
│   │   └── variants/
│   │       ├── coverage/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── dev/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── fast/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── freedos/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── minimal/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── nanbox/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       └── standard/
│   │           ├── mpconfigvariant.h
│   │           └── mpconfigvariant.mk
│   ├── windows/
│   │   ├── .appveyor.yml
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── fmode.c
│   │   ├── fmode.h
│   │   ├── init.c
│   │   ├── init.h
│   │   ├── micropython.vcxproj
│   │   ├── mpconfigport.h
│   │   ├── mpconfigport.mk
│   │   ├── msvc/
│   │   │   ├── common.props
│   │   │   ├── debug.props
│   │   │   ├── dirent.c
│   │   │   ├── dirent.h
│   │   │   ├── genhdr.targets
│   │   │   ├── gettimeofday.c
│   │   │   ├── paths.props
│   │   │   ├── release.props
│   │   │   ├── sources.props
│   │   │   ├── sys/
│   │   │   │   └── time.h
│   │   │   └── unistd.h
│   │   ├── realpath.c
│   │   ├── realpath.h
│   │   ├── sleep.c
│   │   ├── sleep.h
│   │   ├── windows_mphal.c
│   │   └── windows_mphal.h
│   └── zephyr/
│       ├── .gitignore
│       ├── CMakeLists.txt
│       ├── Kbuild
│       ├── Makefile
│       ├── Makefile.zephyr
│       ├── README.md
│       ├── boards/
│       │   ├── 96b_carbon.conf
│       │   ├── disco_l475_iot1.conf
│       │   ├── frdm_k64f.conf
│       │   ├── frdm_kw41z.conf
│       │   ├── mimxrt1050_evk.conf
│       │   ├── nucleo_h743zi.conf
│       │   ├── nucleo_h743zi.overlay
│       │   ├── nucleo_wb55rg.conf
│       │   ├── qemu_cortex_m3.conf
│       │   ├── qemu_x86.conf
│       │   ├── reel_board.conf
│       │   └── rv32m1_vega_ri5cy.conf
│       ├── help.c
│       ├── machine_i2c.c
│       ├── machine_pin.c
│       ├── machine_uart.c
│       ├── main.c
│       ├── make-bin-testsuite
│       ├── make-minimal
│       ├── modbluetooth_zephyr.c
│       ├── modmachine.c
│       ├── modmachine.h
│       ├── moduos.c
│       ├── modusocket.c
│       ├── modutime.c
│       ├── modzephyr.c
│       ├── modzephyr.h
│       ├── modzsensor.c
│       ├── mpconfigport.h
│       ├── mpconfigport_bin_testsuite.h
│       ├── mpconfigport_minimal.h
│       ├── mphalport.h
│       ├── prj.conf
│       ├── prj_minimal.conf
│       ├── run-builtin-testsuite.sh
│       ├── src/
│       │   ├── Makefile
│       │   ├── zephyr_getchar.c
│       │   ├── zephyr_getchar.h
│       │   └── zephyr_start.c
│       ├── uart_core.c
│       ├── z_config.mk
│       └── zephyr_storage.c
├── py/
│   ├── argcheck.c
│   ├── asmarm.c
│   ├── asmarm.h
│   ├── asmbase.c
│   ├── asmbase.h
│   ├── asmthumb.c
│   ├── asmthumb.h
│   ├── asmx64.c
│   ├── asmx64.h
│   ├── asmx86.c
│   ├── asmx86.h
│   ├── asmxtensa.c
│   ├── asmxtensa.h
│   ├── bc.c
│   ├── bc.h
│   ├── bc0.h
│   ├── binary.c
│   ├── binary.h
│   ├── builtin.h
│   ├── builtinevex.c
│   ├── builtinhelp.c
│   ├── builtinimport.c
│   ├── compile.c
│   ├── compile.h
│   ├── dynruntime.h
│   ├── dynruntime.mk
│   ├── emit.h
│   ├── emitbc.c
│   ├── emitcommon.c
│   ├── emitglue.c
│   ├── emitglue.h
│   ├── emitinlinethumb.c
│   ├── emitinlinextensa.c
│   ├── emitnarm.c
│   ├── emitnative.c
│   ├── emitnthumb.c
│   ├── emitnx64.c
│   ├── emitnx86.c
│   ├── emitnxtensa.c
│   ├── emitnxtensawin.c
│   ├── formatfloat.c
│   ├── formatfloat.h
│   ├── frozenmod.c
│   ├── frozenmod.h
│   ├── gc.c
│   ├── gc.h
│   ├── gc_dumbbump.c
│   ├── grammar.h
│   ├── lexer.c
│   ├── lexer.h
│   ├── makecompresseddata.py
│   ├── makemoduledefs.py
│   ├── makeqstrdata.py
│   ├── makeqstrdefs.py
│   ├── makeversionhdr.py
│   ├── malloc.c
│   ├── map.c
│   ├── misc.h
│   ├── mkenv.mk
│   ├── mkrules.cmake
│   ├── mkrules.mk
│   ├── modarray.c
│   ├── modbuiltins.c
│   ├── modcmath.c
│   ├── modcollections.c
│   ├── modgc.c
│   ├── modio.c
│   ├── modmath.c
│   ├── modmicropython.c
│   ├── modstruct.c
│   ├── modsys.c
│   ├── modthread.c
│   ├── moduerrno.c
│   ├── mpconfig.h
│   ├── mperrno.h
│   ├── mphal.h
│   ├── mpprint.c
│   ├── mpprint.h
│   ├── mpstate.c
│   ├── mpstate.h
│   ├── mpthread.h
│   ├── mpz.c
│   ├── mpz.h
│   ├── nativeglue.c
│   ├── nativeglue.h
│   ├── nlr.c
│   ├── nlr.h
│   ├── nlraarch64.c
│   ├── nlrpowerpc.c
│   ├── nlrsetjmp.c
│   ├── nlrthumb.c
│   ├── nlrx64.c
│   ├── nlrx86.c
│   ├── nlrxtensa.c
│   ├── obj.c
│   ├── obj.h
│   ├── objarray.c
│   ├── objarray.h
│   ├── objattrtuple.c
│   ├── objbool.c
│   ├── objboundmeth.c
│   ├── objbufreader.c
│   ├── objcell.c
│   ├── objclosure.c
│   ├── objcomplex.c
│   ├── objcomplex.h
│   ├── objdeque.c
│   ├── objdict.c
│   ├── objenumerate.c
│   ├── objexcept.c
│   ├── objexcept.h
│   ├── objfilter.c
│   ├── objfloat.c
│   ├── objfun.c
│   ├── objfun.h
│   ├── objgenerator.c
│   ├── objgenerator.h
│   ├── objgetitemiter.c
│   ├── objint.c
│   ├── objint.h
│   ├── objint_longlong.c
│   ├── objint_mpz.c
│   ├── objlist.c
│   ├── objlist.h
│   ├── objmap.c
│   ├── objmodule.c
│   ├── objmodule.h
│   ├── objnamedtuple.c
│   ├── objnamedtuple.h
│   ├── objnone.c
│   ├── objobject.c
│   ├── objpolyiter.c
│   ├── objproperty.c
│   ├── objrange.c
│   ├── objreversed.c
│   ├── objroproxy.c
│   ├── objset.c
│   ├── objsingleton.c
│   ├── objslice.c
│   ├── objstr.c
│   ├── objstr.h
│   ├── objstringio.c
│   ├── objstringio.h
│   ├── objstrunicode.c
│   ├── objtextio.c
│   ├── objtextio.h
│   ├── objtuple.c
│   ├── objtuple.h
│   ├── objtype.c
│   ├── objtype.h
│   ├── objzip.c
│   ├── opmethods.c
│   ├── pairheap.c
│   ├── pairheap.h
│   ├── parse.c
│   ├── parse.h
│   ├── parsenum.c
│   ├── parsenum.h
│   ├── parsenumbase.c
│   ├── parsenumbase.h
│   ├── persistentcode.c
│   ├── persistentcode.h
│   ├── profile.c
│   ├── profile.h
│   ├── py.cmake
│   ├── py.mk
│   ├── pystack.c
│   ├── pystack.h
│   ├── qstr.c
│   ├── qstr.h
│   ├── qstrdefs.h
│   ├── reader.c
│   ├── reader.h
│   ├── repl.c
│   ├── repl.h
│   ├── ringbuf.c
│   ├── ringbuf.h
│   ├── runtime.c
│   ├── runtime.h
│   ├── runtime0.h
│   ├── runtime_utils.c
│   ├── scheduler.c
│   ├── scope.c
│   ├── scope.h
│   ├── sequence.c
│   ├── showbc.c
│   ├── smallint.c
│   ├── smallint.h
│   ├── stackctrl.c
│   ├── stackctrl.h
│   ├── stream.c
│   ├── stream.h
│   ├── strict_mode.c
│   ├── strict_mode.h
│   ├── unicode.c
│   ├── unicode.h
│   ├── usermod.cmake
│   ├── vm.c
│   ├── vmentrytable.h
│   ├── vstr.c
│   └── warning.c
├── tests/
│   ├── README
│   ├── basics/
│   │   ├── 0prelim.py
│   │   ├── andor.py
│   │   ├── annotate_var.py
│   │   ├── annotate_var.py.exp
│   │   ├── array1.py
│   │   ├── array_add.py
│   │   ├── array_construct.py
│   │   ├── array_construct2.py
│   │   ├── array_construct_endian.py
│   │   ├── array_cpython_nonsense.py
│   │   ├── array_intbig.py
│   │   ├── array_micropython.py
│   │   ├── array_micropython.py.exp
│   │   ├── assign1.py
│   │   ├── assign_expr.py
│   │   ├── assign_expr.py.exp
│   │   ├── assign_expr_syntaxerror.py
│   │   ├── assign_expr_syntaxerror.py.exp
│   │   ├── async_await.py
│   │   ├── async_await.py.exp
│   │   ├── async_await2.py
│   │   ├── async_await2.py.exp
│   │   ├── async_def.py
│   │   ├── async_def.py.exp
│   │   ├── async_for.py
│   │   ├── async_for.py.exp
│   │   ├── async_for2.py
│   │   ├── async_for2.py.exp
│   │   ├── async_syntaxerror.py
│   │   ├── async_syntaxerror.py.exp
│   │   ├── async_with.py
│   │   ├── async_with.py.exp
│   │   ├── async_with2.py
│   │   ├── async_with2.py.exp
│   │   ├── async_with_break.py
│   │   ├── async_with_break.py.exp
│   │   ├── async_with_return.py
│   │   ├── async_with_return.py.exp
│   │   ├── attrtuple1.py
│   │   ├── bool1.py
│   │   ├── boundmeth1.py
│   │   ├── break.py
│   │   ├── builtin_abs.py
│   │   ├── builtin_abs_intbig.py
│   │   ├── builtin_allany.py
│   │   ├── builtin_bin.py
│   │   ├── builtin_bin_intbig.py
│   │   ├── builtin_callable.py
│   │   ├── builtin_chr.py
│   │   ├── builtin_compile.py
│   │   ├── builtin_delattr.py
│   │   ├── builtin_dir.py
│   │   ├── builtin_divmod.py
│   │   ├── builtin_divmod_intbig.py
│   │   ├── builtin_ellipsis.py
│   │   ├── builtin_enumerate.py
│   │   ├── builtin_eval.py
│   │   ├── builtin_eval_buffer.py
│   │   ├── builtin_eval_error.py
│   │   ├── builtin_exec.py
│   │   ├── builtin_exec_buffer.py
│   │   ├── builtin_filter.py
│   │   ├── builtin_getattr.py
│   │   ├── builtin_hasattr.py
│   │   ├── builtin_hash.py
│   │   ├── builtin_hash_gen.py
│   │   ├── builtin_hash_intbig.py
│   │   ├── builtin_help.py
│   │   ├── builtin_help.py.exp
│   │   ├── builtin_hex.py
│   │   ├── builtin_hex_intbig.py
│   │   ├── builtin_id.py
│   │   ├── builtin_issubclass.py
│   │   ├── builtin_len1.py
│   │   ├── builtin_locals.py
│   │   ├── builtin_map.py
│   │   ├── builtin_minmax.py
│   │   ├── builtin_next_arg2.py
│   │   ├── builtin_oct.py
│   │   ├── builtin_oct_intbig.py
│   │   ├── builtin_ord.py
│   │   ├── builtin_override.py
│   │   ├── builtin_pow.py
│   │   ├── builtin_pow3.py
│   │   ├── builtin_pow3_intbig.py
│   │   ├── builtin_print.py
│   │   ├── builtin_property.py
│   │   ├── builtin_property_inherit.py
│   │   ├── builtin_range.py
│   │   ├── builtin_range_attrs.py
│   │   ├── builtin_range_binop.py
│   │   ├── builtin_reversed.py
│   │   ├── builtin_round.py
│   │   ├── builtin_round_int.py
│   │   ├── builtin_round_intbig.py
│   │   ├── builtin_setattr.py
│   │   ├── builtin_slice.py
│   │   ├── builtin_sorted.py
│   │   ├── builtin_sum.py
│   │   ├── builtin_type.py
│   │   ├── builtin_zip.py
│   │   ├── bytearray1.py
│   │   ├── bytearray_add.py
│   │   ├── bytearray_append.py
│   │   ├── bytearray_construct.py
│   │   ├── bytearray_construct_array.py
│   │   ├── bytearray_construct_endian.py
│   │   ├── bytearray_decode.py
│   │   ├── bytearray_intbig.py
│   │   ├── bytearray_slice_assign.py
│   │   ├── bytes.py
│   │   ├── bytes_add.py
│   │   ├── bytes_add_array.py
│   │   ├── bytes_add_bytearray.py
│   │   ├── bytes_add_endian.py
│   │   ├── bytes_compare.py
│   │   ├── bytes_compare2.py
│   │   ├── bytes_compare3.py
│   │   ├── bytes_compare3.py.exp
│   │   ├── bytes_compare_array.py
│   │   ├── bytes_compare_bytearray.py
│   │   ├── bytes_construct.py
│   │   ├── bytes_construct_array.py
│   │   ├── bytes_construct_bytearray.py
│   │   ├── bytes_construct_endian.py
│   │   ├── bytes_construct_intbig.py
│   │   ├── bytes_count.py
│   │   ├── bytes_find.py
│   │   ├── bytes_format_modulo.py
│   │   ├── bytes_format_modulo.py.exp
│   │   ├── bytes_gen.py
│   │   ├── bytes_large.py
│   │   ├── bytes_mult.py
│   │   ├── bytes_partition.py
│   │   ├── bytes_replace.py
│   │   ├── bytes_split.py
│   │   ├── bytes_strip.py
│   │   ├── bytes_subscr.py
│   │   ├── class1.py
│   │   ├── class2.py
│   │   ├── class3.py
│   │   ├── class_bind_self.py
│   │   ├── class_binop.py
│   │   ├── class_call.py
│   │   ├── class_contains.py
│   │   ├── class_delattr_setattr.py
│   │   ├── class_descriptor.py
│   │   ├── class_dict.py
│   │   ├── class_emptybases.py
│   │   ├── class_enclosed_lookups.py
│   │   ├── class_getattr.py
│   │   ├── class_inherit1.py
│   │   ├── class_inherit_mul.py
│   │   ├── class_inplace_op.py
│   │   ├── class_inplace_op2.py
│   │   ├── class_inplace_op2.py.exp
│   │   ├── class_instance_override.py
│   │   ├── class_item.py
│   │   ├── class_mangle.py
│   │   ├── class_misc.py
│   │   ├── class_new.py
│   │   ├── class_new_init.py
│   │   ├── class_new_singleton.py
│   │   ├── class_notimpl.py
│   │   ├── class_number.py
│   │   ├── class_ordereddict.py
│   │   ├── class_ordereddict.py.exp
│   │   ├── class_reverse_op.py
│   │   ├── class_slots.py
│   │   ├── class_slots_empty.py
│   │   ├── class_slots_negative.py
│   │   ├── class_staticclassmethod.py
│   │   ├── class_store.py
│   │   ├── class_store_class.py
│   │   ├── class_str.py
│   │   ├── class_super.py
│   │   ├── class_super_aslocal.py
│   │   ├── class_super_classmeth.py
│   │   ├── class_super_closure.py
│   │   ├── class_super_multinherit.py
│   │   ├── class_super_object.py
│   │   ├── class_use_other.py
│   │   ├── closure1.py
│   │   ├── closure2.py
│   │   ├── closure_byref.py
│   │   ├── closure_defargs.py
│   │   ├── closure_docstring.py
│   │   ├── closure_manyvars.py
│   │   ├── closure_name.py
│   │   ├── closure_namedarg.py
│   │   ├── compare_multi.py
│   │   ├── comprehension1.py
│   │   ├── containment.py
│   │   ├── continue.py
│   │   ├── decorator.py
│   │   ├── del_attr.py
│   │   ├── del_deref.py
│   │   ├── del_global.py
│   │   ├── del_local.py
│   │   ├── del_name.py
│   │   ├── del_subscr.py
│   │   ├── deque1.py
│   │   ├── deque2.py
│   │   ├── deque2.py.exp
│   │   ├── dict1.py
│   │   ├── dict2.py
│   │   ├── dict_clear.py
│   │   ├── dict_construct.py
│   │   ├── dict_copy.py
│   │   ├── dict_del.py
│   │   ├── dict_fixed.py
│   │   ├── dict_fixed.py.exp
│   │   ├── dict_from_iter.py
│   │   ├── dict_fromkeys.py
│   │   ├── dict_fromkeys2.py
│   │   ├── dict_get.py
│   │   ├── dict_intern.py
│   │   ├── dict_iterator.py
│   │   ├── dict_pop.py
│   │   ├── dict_popitem.py
│   │   ├── dict_setdefault.py
│   │   ├── dict_specialmeth.py
│   │   ├── dict_update.py
│   │   ├── dict_views.py
│   │   ├── equal.py
│   │   ├── equal_class.py
│   │   ├── errno1.py
│   │   ├── errno1.py.exp
│   │   ├── except_match_tuple.py
│   │   ├── exception1.py
│   │   ├── exception_chain.py
│   │   ├── exception_chain.py.exp
│   │   ├── exceptpoly.py
│   │   ├── exceptpoly2.py
│   │   ├── floordivide.py
│   │   ├── floordivide_intbig.py
│   │   ├── for1.py
│   │   ├── for2.py
│   │   ├── for3.py
│   │   ├── for_break.py
│   │   ├── for_else.py
│   │   ├── for_range.py
│   │   ├── for_return.py
│   │   ├── frozenset1.py
│   │   ├── frozenset_add.py
│   │   ├── frozenset_binop.py
│   │   ├── frozenset_copy.py
│   │   ├── frozenset_difference.py
│   │   ├── frozenset_set.py
│   │   ├── fun1.py
│   │   ├── fun2.py
│   │   ├── fun3.py
│   │   ├── fun_annotations.py
│   │   ├── fun_calldblstar.py
│   │   ├── fun_calldblstar2.py
│   │   ├── fun_calldblstar3.py
│   │   ├── fun_callstar.py
│   │   ├── fun_callstardblstar.py
│   │   ├── fun_defargs.py
│   │   ├── fun_defargs2.py
│   │   ├── fun_docstring.py
│   │   ├── fun_error.py
│   │   ├── fun_error2.py
│   │   ├── fun_globals.py
│   │   ├── fun_kwargs.py
│   │   ├── fun_kwonly.py
│   │   ├── fun_kwonlydef.py
│   │   ├── fun_kwvarargs.py
│   │   ├── fun_largestate.py
│   │   ├── fun_name.py
│   │   ├── fun_str.py
│   │   ├── fun_varargs.py
│   │   ├── gc1.py
│   │   ├── gen_yield_from.py
│   │   ├── gen_yield_from_close.py
│   │   ├── gen_yield_from_ducktype.py
│   │   ├── gen_yield_from_exc.py
│   │   ├── gen_yield_from_executing.py
│   │   ├── gen_yield_from_iter.py
│   │   ├── gen_yield_from_pending.py
│   │   ├── gen_yield_from_send.py
│   │   ├── gen_yield_from_stopped.py
│   │   ├── gen_yield_from_throw.py
│   │   ├── gen_yield_from_throw2.py
│   │   ├── gen_yield_from_throw3.py
│   │   ├── generator1.py
│   │   ├── generator2.py
│   │   ├── generator_args.py
│   │   ├── generator_close.py
│   │   ├── generator_closure.py
│   │   ├── generator_exc.py
│   │   ├── generator_lambda.py
│   │   ├── generator_name.py
│   │   ├── generator_pend_throw.py
│   │   ├── generator_pend_throw.py.exp
│   │   ├── generator_pend_throw2.py
│   │   ├── generator_pend_throw2.py.exp
│   │   ├── generator_pep479.py
│   │   ├── generator_pep479.py.exp
│   │   ├── generator_return.py
│   │   ├── generator_send.py
│   │   ├── generator_throw.py
│   │   ├── generator_throw_nested.py
│   │   ├── getattr.py
│   │   ├── getitem.py
│   │   ├── globals_del.py
│   │   ├── ifcond.py
│   │   ├── ifexpr.py
│   │   ├── int1.py
│   │   ├── int2.py
│   │   ├── int_big1.py
│   │   ├── int_big_add.py
│   │   ├── int_big_and.py
│   │   ├── int_big_and2.py
│   │   ├── int_big_and3.py
│   │   ├── int_big_cmp.py
│   │   ├── int_big_div.py
│   │   ├── int_big_error.py
│   │   ├── int_big_lshift.py
│   │   ├── int_big_mod.py
│   │   ├── int_big_mul.py
│   │   ├── int_big_or.py
│   │   ├── int_big_or2.py
│   │   ├── int_big_or3.py
│   │   ├── int_big_pow.py
│   │   ├── int_big_rshift.py
│   │   ├── int_big_unary.py
│   │   ├── int_big_xor.py
│   │   ├── int_big_xor2.py
│   │   ├── int_big_xor3.py
│   │   ├── int_big_zeroone.py
│   │   ├── int_bytes.py
│   │   ├── int_bytes_intbig.py
│   │   ├── int_constfolding.py
│   │   ├── int_constfolding_intbig.py
│   │   ├── int_divmod.py
│   │   ├── int_divmod_intbig.py
│   │   ├── int_divzero.py
│   │   ├── int_intbig.py
│   │   ├── int_small.py
│   │   ├── io_buffered_reader.py
│   │   ├── io_buffered_writer.py
│   │   ├── io_buffered_writer.py.exp
│   │   ├── io_bytesio_cow.py
│   │   ├── io_bytesio_ext.py
│   │   ├── io_bytesio_ext2.py
│   │   ├── io_bytesio_ext2.py.exp
│   │   ├── io_bytesio_readinto_bytesio.py
│   │   ├── io_bytesio_readinto_bytesio.py.exp
│   │   ├── io_bytesio_readline.py
│   │   ├── io_bytesio_readline_ext.py
│   │   ├── io_bytesio_readline_ext.py.exp
│   │   ├── io_bytesio_to_stringio.py
│   │   ├── io_iobase.py
│   │   ├── io_read_writebin.py
│   │   ├── io_read_writebin.py.exp
│   │   ├── io_stringio1.py
│   │   ├── io_stringio_iadd.py
│   │   ├── io_stringio_iadd.py.exp
│   │   ├── io_stringio_truncate.py
│   │   ├── io_stringio_with.py
│   │   ├── io_write_ext.py
│   │   ├── io_write_ext.py.exp
│   │   ├── is_isnot.py
│   │   ├── is_isnot_literal.py
│   │   ├── is_isnot_literal.py.exp
│   │   ├── iter0.py
│   │   ├── iter1.py
│   │   ├── iter2.py
│   │   ├── iter_of_iter.py
│   │   ├── lambda1.py
│   │   ├── lambda_defargs.py
│   │   ├── lexer.py
│   │   ├── list1.py
│   │   ├── list_clear.py
│   │   ├── list_compare.py
│   │   ├── list_compare_instances.py
│   │   ├── list_copy.py
│   │   ├── list_count.py
│   │   ├── list_extend.py
│   │   ├── list_index.py
│   │   ├── list_insert.py
│   │   ├── list_mult.py
│   │   ├── list_pop.py
│   │   ├── list_remove.py
│   │   ├── list_reverse.py
│   │   ├── list_slice.py
│   │   ├── list_slice_3arg.py
│   │   ├── list_slice_assign.py
│   │   ├── list_slice_assign_grow.py
│   │   ├── list_sort.py
│   │   ├── list_sum.py
│   │   ├── logic_constfolding.py
│   │   ├── memoryerror.py
│   │   ├── memoryerror.py.exp
│   │   ├── memoryview1.py
│   │   ├── memoryview2.py
│   │   ├── memoryview_ext_3arg.py
│   │   ├── memoryview_ext_3arg.py.exp
│   │   ├── memoryview_ext_3arg_arr.py
│   │   ├── memoryview_ext_3arg_arr.py.exp
│   │   ├── memoryview_ext_init.py
│   │   ├── memoryview_ext_init.py.exp
│   │   ├── memoryview_ext_init_str.py
│   │   ├── memoryview_ext_init_str.py.exp
│   │   ├── memoryview_ext_str.py
│   │   ├── memoryview_ext_str.py.exp
│   │   ├── memoryview_gc.py
│   │   ├── memoryview_intbig.py
│   │   ├── memoryview_itemsize.py
│   │   ├── memoryview_slice_assign.py
│   │   ├── module1.py
│   │   ├── module2.py
│   │   ├── module2.py.exp
│   │   ├── module_docstring.py
│   │   ├── namedtuple1.py
│   │   ├── namedtuple_asdict.py
│   │   ├── namedtuple_empty.py
│   │   ├── native___init__.py
│   │   ├── object1.py
│   │   ├── object_dict.py
│   │   ├── object_new.py
│   │   ├── object_new2.py
│   │   ├── op_error.py
│   │   ├── op_error_bytearray.py
│   │   ├── op_error_intbig.py
│   │   ├── op_error_literal.py
│   │   ├── op_error_literal.py.exp
│   │   ├── op_error_memoryview.py
│   │   ├── op_precedence.py
│   │   ├── ordereddict1.py
│   │   ├── ordereddict2.py
│   │   ├── ordereddict2.py.exp
│   │   ├── ordereddict_eq.py
│   │   ├── ordereddict_eq.py.exp
│   │   ├── parser.py
│   │   ├── parser.py.exp
│   │   ├── python34.py
│   │   ├── python34.py.exp
│   │   ├── python36.py
│   │   ├── python36.py.exp
│   │   ├── return1.py
│   │   ├── scope.py
│   │   ├── scope_implicit.py
│   │   ├── self_type_check.py
│   │   ├── seq_unpack.py
│   │   ├── set_add.py
│   │   ├── set_basic.py
│   │   ├── set_binop.py
│   │   ├── set_clear.py
│   │   ├── set_comprehension.py
│   │   ├── set_containment.py
│   │   ├── set_copy.py
│   │   ├── set_difference.py
│   │   ├── set_discard.py
│   │   ├── set_intersection.py
│   │   ├── set_isdisjoint.py
│   │   ├── set_isfooset.py
│   │   ├── set_iter.py
│   │   ├── set_iter_of_iter.py
│   │   ├── set_pop.py
│   │   ├── set_remove.py
│   │   ├── set_specialmeth.py
│   │   ├── set_symmetric_difference.py
│   │   ├── set_type.py
│   │   ├── set_union.py
│   │   ├── set_unop.py
│   │   ├── set_update.py
│   │   ├── slice_attrs.py
│   │   ├── slice_indices.py
│   │   ├── slice_intbig.py
│   │   ├── slots_bool_len.py
│   │   ├── special_methods.py
│   │   ├── special_methods2.py
│   │   ├── special_methods2.py.exp
│   │   ├── string1.py
│   │   ├── string_center.py
│   │   ├── string_compare.py
│   │   ├── string_count.py
│   │   ├── string_cr_conversion.py
│   │   ├── string_crlf_conversion.py
│   │   ├── string_endswith.py
│   │   ├── string_endswith_upy.py
│   │   ├── string_endswith_upy.py.exp
│   │   ├── string_escape.py
│   │   ├── string_find.py
│   │   ├── string_format.py
│   │   ├── string_format2.py
│   │   ├── string_format_error.py
│   │   ├── string_format_modulo.py
│   │   ├── string_format_modulo_int.py
│   │   ├── string_index.py
│   │   ├── string_istest.py
│   │   ├── string_join.py
│   │   ├── string_large.py
│   │   ├── string_mult.py
│   │   ├── string_partition.py
│   │   ├── string_replace.py
│   │   ├── string_repr.py
│   │   ├── string_rfind.py
│   │   ├── string_rindex.py
│   │   ├── string_rpartition.py
│   │   ├── string_rsplit.py
│   │   ├── string_slice.py
│   │   ├── string_split.py
│   │   ├── string_splitlines.py
│   │   ├── string_startswith.py
│   │   ├── string_startswith_upy.py
│   │   ├── string_startswith_upy.py.exp
│   │   ├── string_strip.py
│   │   ├── string_upperlow.py
│   │   ├── struct1.py
│   │   ├── struct1_intbig.py
│   │   ├── struct2.py
│   │   ├── struct_micropython.py
│   │   ├── struct_micropython.py.exp
│   │   ├── struct_offset.py
│   │   ├── subclass_classmethod.py
│   │   ├── subclass_exception.py
│   │   ├── subclass_list.py
│   │   ├── subclass_native1.py
│   │   ├── subclass_native2_list.py
│   │   ├── subclass_native2_tuple.py
│   │   ├── subclass_native3.py
│   │   ├── subclass_native4.py
│   │   ├── subclass_native5.py
│   │   ├── subclass_native6.py
│   │   ├── subclass_native_buffer.py
│   │   ├── subclass_native_call.py
│   │   ├── subclass_native_call.py.exp
│   │   ├── subclass_native_cmp.py
│   │   ├── subclass_native_containment.py
│   │   ├── subclass_native_init.py
│   │   ├── subclass_native_iter.py
│   │   ├── subclass_native_specmeth.py
│   │   ├── subclass_tuple.py
│   │   ├── subclass_tuple2.py
│   │   ├── syntaxerror.py
│   │   ├── syntaxerror_return.py
│   │   ├── sys1.py
│   │   ├── sys_exit.py
│   │   ├── sys_getsizeof.py
│   │   ├── sys_intern.py
│   │   ├── true_value.py
│   │   ├── try1.py
│   │   ├── try2.py
│   │   ├── try3.py
│   │   ├── try4.py
│   │   ├── try_as_var.py
│   │   ├── try_continue.py
│   │   ├── try_else.py
│   │   ├── try_else_finally.py
│   │   ├── try_error.py
│   │   ├── try_except_break.py
│   │   ├── try_except_break.py.exp
│   │   ├── try_finally1.py
│   │   ├── try_finally2.py
│   │   ├── try_finally_break.py
│   │   ├── try_finally_break2.py
│   │   ├── try_finally_continue.py
│   │   ├── try_finally_continue.py.exp
│   │   ├── try_finally_loops.py
│   │   ├── try_finally_return.py
│   │   ├── try_finally_return2.py
│   │   ├── try_finally_return3.py
│   │   ├── try_finally_return4.py
│   │   ├── try_finally_return5.py
│   │   ├── try_reraise.py
│   │   ├── try_reraise2.py
│   │   ├── try_return.py
│   │   ├── tuple1.py
│   │   ├── tuple_compare.py
│   │   ├── tuple_count.py
│   │   ├── tuple_index.py
│   │   ├── tuple_mult.py
│   │   ├── tuple_slice.py
│   │   ├── types1.py
│   │   ├── types2.py
│   │   ├── unary_op.py
│   │   ├── unboundlocal.py
│   │   ├── unpack1.py
│   │   ├── while1.py
│   │   ├── while_cond.py
│   │   ├── while_nest_exc.py
│   │   ├── with1.py
│   │   ├── with_break.py
│   │   ├── with_continue.py
│   │   ├── with_raise.py
│   │   └── with_return.py
│   ├── bytecode/
│   │   ├── optimizations.py
│   │   └── optimizations.py.exp
│   ├── cmdline/
│   │   ├── cmd_optimise.py
│   │   ├── cmd_optimise.py.exp
│   │   ├── cmd_parsetree.py
│   │   ├── cmd_parsetree.py.exp
│   │   ├── cmd_showbc.py
│   │   ├── cmd_showbc.py.exp
│   │   ├── cmd_verbose.py
│   │   ├── cmd_verbose.py.exp
│   │   ├── repl_autocomplete.py
│   │   ├── repl_autocomplete.py.exp
│   │   ├── repl_basic.py
│   │   ├── repl_basic.py.exp
│   │   ├── repl_cont.py
│   │   ├── repl_cont.py.exp
│   │   ├── repl_emacs_keys.py
│   │   ├── repl_emacs_keys.py.exp
│   │   ├── repl_inspect.py
│   │   ├── repl_inspect.py.exp
│   │   ├── repl_words_move.py
│   │   └── repl_words_move.py.exp
│   ├── cpydiff/
│   │   ├── builtin_next_arg2.py
│   │   ├── core_class_delnotimpl.py
│   │   ├── core_class_mro.py
│   │   ├── core_class_supermultiple.py
│   │   ├── core_class_superproperty.py
│   │   ├── core_function_argcount.py
│   │   ├── core_function_moduleattr.py
│   │   ├── core_function_userattr.py
│   │   ├── core_generator_noexit.py
│   │   ├── core_import_path.py
│   │   ├── core_import_prereg.py
│   │   ├── core_import_split_ns_pkgs.py
│   │   ├── core_locals.py
│   │   ├── core_locals_eval.py
│   │   ├── module_array_comparison.py
│   │   ├── module_array_constructor.py
│   │   ├── modules/
│   │   │   ├── __init__.py
│   │   │   ├── foo.py
│   │   │   ├── modall.py
│   │   │   └── subpkg/
│   │   │       └── foo.py
│   │   ├── modules2/
│   │   │   └── subpkg/
│   │   │       └── bar.py
│   │   ├── modules_array_containment.py
│   │   ├── modules_array_deletion.py
│   │   ├── modules_array_subscrstep.py
│   │   ├── modules_collections_deque.py
│   │   ├── modules_json_nonserializable.py
│   │   ├── modules_struct_fewargs.py
│   │   ├── modules_struct_manyargs.py
│   │   ├── modules_sys_stdassign.py
│   │   ├── syntax_assign_expr.py
│   │   ├── syntax_spaces.py
│   │   ├── syntax_unicode_nameesc.py
│   │   ├── types_bytearray_sliceassign.py
│   │   ├── types_bytes_format.py
│   │   ├── types_bytes_keywords.py
│   │   ├── types_bytes_subscrstep.py
│   │   ├── types_dict_keys_set.py
│   │   ├── types_exception_chaining.py
│   │   ├── types_exception_instancevar.py
│   │   ├── types_exception_loops.py
│   │   ├── types_float_rounding.py
│   │   ├── types_int_subclassconv.py
│   │   ├── types_list_delete_subscrstep.py
│   │   ├── types_list_store_noniter.py
│   │   ├── types_list_store_subscrstep.py
│   │   ├── types_str_endswith.py
│   │   ├── types_str_formatsubscr.py
│   │   ├── types_str_keywords.py
│   │   ├── types_str_ljust_rjust.py
│   │   ├── types_str_rsplitnone.py
│   │   ├── types_str_subclassequality.py
│   │   ├── types_str_subscrstep.py
│   │   └── types_tuple_subscrstep.py
│   ├── esp32/
│   │   ├── check_err_str.py
│   │   ├── check_err_str.py.exp
│   │   ├── esp32_idf_heap_info.py
│   │   ├── esp32_idf_heap_info.py.exp
│   │   ├── esp32_nvs.py
│   │   ├── esp32_nvs.py.exp
│   │   ├── partition_ota.py
│   │   ├── partition_ota.py.exp
│   │   └── resolve_on_connect.py
│   ├── extmod/
│   │   ├── btree1.py
│   │   ├── btree1.py.exp
│   │   ├── btree_error.py
│   │   ├── btree_error.py.exp
│   │   ├── btree_gc.py
│   │   ├── btree_gc.py.exp
│   │   ├── framebuf1.py
│   │   ├── framebuf1.py.exp
│   │   ├── framebuf16.py
│   │   ├── framebuf16.py.exp
│   │   ├── framebuf2.py
│   │   ├── framebuf2.py.exp
│   │   ├── framebuf4.py
│   │   ├── framebuf4.py.exp
│   │   ├── framebuf8.py
│   │   ├── framebuf8.py.exp
│   │   ├── framebuf_subclass.py
│   │   ├── framebuf_subclass.py.exp
│   │   ├── machine1.py
│   │   ├── machine1.py.exp
│   │   ├── machine_pinbase.py
│   │   ├── machine_pinbase.py.exp
│   │   ├── machine_pulse.py
│   │   ├── machine_pulse.py.exp
│   │   ├── machine_signal.py
│   │   ├── machine_signal.py.exp
│   │   ├── machine_timer.py
│   │   ├── machine_timer.py.exp
│   │   ├── ticks_diff.py
│   │   ├── ticks_diff.py.exp
│   │   ├── time_ms_us.py
│   │   ├── time_ms_us.py.exp
│   │   ├── uasyncio_await_return.py
│   │   ├── uasyncio_await_return.py.exp
│   │   ├── uasyncio_basic.py
│   │   ├── uasyncio_basic.py.exp
│   │   ├── uasyncio_basic2.py
│   │   ├── uasyncio_basic2.py.exp
│   │   ├── uasyncio_cancel_fair.py
│   │   ├── uasyncio_cancel_fair.py.exp
│   │   ├── uasyncio_cancel_fair2.py
│   │   ├── uasyncio_cancel_fair2.py.exp
│   │   ├── uasyncio_cancel_self.py
│   │   ├── uasyncio_cancel_self.py.exp
│   │   ├── uasyncio_cancel_task.py
│   │   ├── uasyncio_cancel_task.py.exp
│   │   ├── uasyncio_cancel_wait_on_finished.py
│   │   ├── uasyncio_cancel_wait_on_finished.py.exp
│   │   ├── uasyncio_current_task.py
│   │   ├── uasyncio_current_task.py.exp
│   │   ├── uasyncio_event.py
│   │   ├── uasyncio_event.py.exp
│   │   ├── uasyncio_event_fair.py
│   │   ├── uasyncio_event_fair.py.exp
│   │   ├── uasyncio_exception.py
│   │   ├── uasyncio_exception.py.exp
│   │   ├── uasyncio_fair.py
│   │   ├── uasyncio_fair.py.exp
│   │   ├── uasyncio_gather.py
│   │   ├── uasyncio_gather.py.exp
│   │   ├── uasyncio_get_event_loop.py
│   │   ├── uasyncio_heaplock.py
│   │   ├── uasyncio_heaplock.py.exp
│   │   ├── uasyncio_lock.py
│   │   ├── uasyncio_lock.py.exp
│   │   ├── uasyncio_lock_cancel.py
│   │   ├── uasyncio_lock_cancel.py.exp
│   │   ├── uasyncio_loop_stop.py
│   │   ├── uasyncio_loop_stop.py.exp
│   │   ├── uasyncio_micropython.py
│   │   ├── uasyncio_micropython.py.exp
│   │   ├── uasyncio_new_event_loop.py
│   │   ├── uasyncio_new_event_loop.py.exp
│   │   ├── uasyncio_set_exception_handler.py
│   │   ├── uasyncio_set_exception_handler.py.exp
│   │   ├── uasyncio_task_done.py
│   │   ├── uasyncio_task_done.py.exp
│   │   ├── uasyncio_threadsafeflag.py
│   │   ├── uasyncio_threadsafeflag.py.exp
│   │   ├── uasyncio_wait_for.py
│   │   ├── uasyncio_wait_for.py.exp
│   │   ├── uasyncio_wait_for_fwd.py
│   │   ├── uasyncio_wait_for_fwd.py.exp
│   │   ├── uasyncio_wait_task.py
│   │   ├── uasyncio_wait_task.py.exp
│   │   ├── ubinascii_a2b_base64.py
│   │   ├── ubinascii_b2a_base64.py
│   │   ├── ubinascii_crc32.py
│   │   ├── ubinascii_hexlify.py
│   │   ├── ubinascii_micropython.py
│   │   ├── ubinascii_micropython.py.exp
│   │   ├── ubinascii_unhexlify.py
│   │   ├── ucryptolib_aes128_cbc.py
│   │   ├── ucryptolib_aes128_cbc.py.exp
│   │   ├── ucryptolib_aes128_ctr.py
│   │   ├── ucryptolib_aes128_ctr.py.exp
│   │   ├── ucryptolib_aes128_ecb.py
│   │   ├── ucryptolib_aes128_ecb.py.exp
│   │   ├── ucryptolib_aes128_ecb_enc.py
│   │   ├── ucryptolib_aes128_ecb_enc.py.exp
│   │   ├── ucryptolib_aes128_ecb_inpl.py
│   │   ├── ucryptolib_aes128_ecb_inpl.py.exp
│   │   ├── ucryptolib_aes128_ecb_into.py
│   │   ├── ucryptolib_aes128_ecb_into.py.exp
│   │   ├── ucryptolib_aes256_cbc.py
│   │   ├── ucryptolib_aes256_cbc.py.exp
│   │   ├── ucryptolib_aes256_ecb.py
│   │   ├── ucryptolib_aes256_ecb.py.exp
│   │   ├── uctypes_32bit_intbig.py
│   │   ├── uctypes_32bit_intbig.py.exp
│   │   ├── uctypes_array_assign_le.py
│   │   ├── uctypes_array_assign_le.py.exp
│   │   ├── uctypes_array_assign_native_le.py
│   │   ├── uctypes_array_assign_native_le.py.exp
│   │   ├── uctypes_array_assign_native_le_intbig.py
│   │   ├── uctypes_array_assign_native_le_intbig.py.exp
│   │   ├── uctypes_array_load_store.py
│   │   ├── uctypes_array_load_store.py.exp
│   │   ├── uctypes_bytearray.py
│   │   ├── uctypes_bytearray.py.exp
│   │   ├── uctypes_byteat.py
│   │   ├── uctypes_byteat.py.exp
│   │   ├── uctypes_calc_offsets.py
│   │   ├── uctypes_calc_offsets.py.exp
│   │   ├── uctypes_error.py
│   │   ├── uctypes_error.py.exp
│   │   ├── uctypes_le.py
│   │   ├── uctypes_le.py.exp
│   │   ├── uctypes_le_addressof_field.py
│   │   ├── uctypes_le_addressof_field.py.exp
│   │   ├── uctypes_le_float.py
│   │   ├── uctypes_le_float.py.exp
│   │   ├── uctypes_native_float.py
│   │   ├── uctypes_native_float.py.exp
│   │   ├── uctypes_native_le.py
│   │   ├── uctypes_native_le.py.exp
│   │   ├── uctypes_print.py
│   │   ├── uctypes_print.py.exp
│   │   ├── uctypes_ptr_le.py
│   │   ├── uctypes_ptr_le.py.exp
│   │   ├── uctypes_ptr_native_le.py
│   │   ├── uctypes_ptr_native_le.py.exp
│   │   ├── uctypes_sizeof.py
│   │   ├── uctypes_sizeof.py.exp
│   │   ├── uctypes_sizeof_float.py
│   │   ├── uctypes_sizeof_float.py.exp
│   │   ├── uctypes_sizeof_layout.py
│   │   ├── uctypes_sizeof_layout.py.exp
│   │   ├── uctypes_sizeof_native.py
│   │   ├── uctypes_sizeof_native.py.exp
│   │   ├── uctypes_sizeof_od.py
│   │   ├── uctypes_sizeof_od.py.exp
│   │   ├── uctypes_union.py
│   │   ├── uctypes_union.py.exp
│   │   ├── uhashlib_md5.py
│   │   ├── uhashlib_sha1.py
│   │   ├── uhashlib_sha256.py
│   │   ├── uheapq1.py
│   │   ├── ujson_dump.py
│   │   ├── ujson_dump_iobase.py
│   │   ├── ujson_dumps.py
│   │   ├── ujson_dumps_extra.py
│   │   ├── ujson_dumps_extra.py.exp
│   │   ├── ujson_dumps_float.py
│   │   ├── ujson_dumps_ordereddict.py
│   │   ├── ujson_load.py
│   │   ├── ujson_loads.py
│   │   ├── ujson_loads_bytes.py
│   │   ├── ujson_loads_bytes.py.exp
│   │   ├── ujson_loads_float.py
│   │   ├── urandom_basic.py
│   │   ├── urandom_extra.py
│   │   ├── urandom_extra_float.py
│   │   ├── ure1.py
│   │   ├── ure_debug.py
│   │   ├── ure_debug.py.exp
│   │   ├── ure_error.py
│   │   ├── ure_group.py
│   │   ├── ure_groups.py
│   │   ├── ure_limit.py
│   │   ├── ure_limit.py.exp
│   │   ├── ure_namedclass.py
│   │   ├── ure_span.py
│   │   ├── ure_split.py
│   │   ├── ure_split_empty.py
│   │   ├── ure_split_empty.py.exp
│   │   ├── ure_split_notimpl.py
│   │   ├── ure_split_notimpl.py.exp
│   │   ├── ure_stack_overflow.py
│   │   ├── ure_stack_overflow.py.exp
│   │   ├── ure_sub.py
│   │   ├── ure_sub_unmatched.py
│   │   ├── ure_sub_unmatched.py.exp
│   │   ├── ure_unsupported.py
│   │   ├── ure_unsupported.py.exp
│   │   ├── uselect_poll_basic.py
│   │   ├── uselect_poll_udp.py
│   │   ├── uselect_poll_unreg.py
│   │   ├── uselect_poll_unreg.py.exp
│   │   ├── usocket_tcp_basic.py
│   │   ├── usocket_udp_nonblock.py
│   │   ├── ussl_basic.py
│   │   ├── ussl_basic.py.exp
│   │   ├── ussl_keycert.py
│   │   ├── ussl_keycert.py.exp
│   │   ├── utime_res.py
│   │   ├── utime_res.py.exp
│   │   ├── utimeq1.py
│   │   ├── utimeq1.py.exp
│   │   ├── utimeq_handle.py
│   │   ├── utimeq_handle.py.exp
│   │   ├── utimeq_remove.py
│   │   ├── utimeq_remove.py.exp
│   │   ├── utimeq_stable.py
│   │   ├── utimeq_stable.py.exp
│   │   ├── uzlib_decompio.py
│   │   ├── uzlib_decompio.py.exp
│   │   ├── uzlib_decompio_dictbuf.py
│   │   ├── uzlib_decompio_dictbuf.py.exp
│   │   ├── uzlib_decompio_gz.py
│   │   ├── uzlib_decompio_gz.py.exp
│   │   ├── uzlib_decompio_init.py
│   │   ├── uzlib_decompio_init.py.exp
│   │   ├── uzlib_decompress.py
│   │   ├── vfs_basic.py
│   │   ├── vfs_basic.py.exp
│   │   ├── vfs_blockdev.py
│   │   ├── vfs_blockdev.py.exp
│   │   ├── vfs_fat_fileio1.py
│   │   ├── vfs_fat_fileio1.py.exp
│   │   ├── vfs_fat_fileio2.py
│   │   ├── vfs_fat_fileio2.py.exp
│   │   ├── vfs_fat_finaliser.py
│   │   ├── vfs_fat_finaliser.py.exp
│   │   ├── vfs_fat_more.py
│   │   ├── vfs_fat_more.py.exp
│   │   ├── vfs_fat_mtime.py
│   │   ├── vfs_fat_mtime.py.exp
│   │   ├── vfs_fat_oldproto.py
│   │   ├── vfs_fat_oldproto.py.exp
│   │   ├── vfs_fat_ramdisk.py
│   │   ├── vfs_fat_ramdisk.py.exp
│   │   ├── vfs_fat_ramdisklarge.py
│   │   ├── vfs_fat_ramdisklarge.py.exp
│   │   ├── vfs_lfs.py
│   │   ├── vfs_lfs.py.exp
│   │   ├── vfs_lfs_corrupt.py
│   │   ├── vfs_lfs_corrupt.py.exp
│   │   ├── vfs_lfs_error.py
│   │   ├── vfs_lfs_error.py.exp
│   │   ├── vfs_lfs_file.py
│   │   ├── vfs_lfs_file.py.exp
│   │   ├── vfs_lfs_mount.py
│   │   ├── vfs_lfs_mount.py.exp
│   │   ├── vfs_lfs_mtime.py
│   │   ├── vfs_lfs_mtime.py.exp
│   │   ├── vfs_lfs_superblock.py
│   │   ├── vfs_lfs_superblock.py.exp
│   │   ├── vfs_posix.py
│   │   ├── vfs_posix.py.exp
│   │   ├── vfs_userfs.py
│   │   ├── vfs_userfs.py.exp
│   │   ├── websocket_basic.py
│   │   └── websocket_basic.py.exp
│   ├── feature_check/
│   │   ├── README
│   │   ├── async_check.py
│   │   ├── async_check.py.exp
│   │   ├── bytearray.py
│   │   ├── bytearray.py.exp
│   │   ├── byteorder.py
│   │   ├── byteorder.py.exp
│   │   ├── complex.py
│   │   ├── complex.py.exp
│   │   ├── const.py
│   │   ├── const.py.exp
│   │   ├── coverage.py
│   │   ├── coverage.py.exp
│   │   ├── float.py
│   │   ├── float.py.exp
│   │   ├── int_big.py
│   │   ├── int_big.py.exp
│   │   ├── native_check.py
│   │   ├── native_check.py.exp
│   │   ├── repl_emacs_check.py
│   │   ├── repl_emacs_check.py.exp
│   │   ├── repl_words_move_check.py
│   │   ├── repl_words_move_check.py.exp
│   │   ├── reverse_ops.py
│   │   ├── reverse_ops.py.exp
│   │   ├── set_check.py
│   │   ├── set_check.py.exp
│   │   ├── slice.py
│   │   ├── slice.py.exp
│   │   ├── uio_module.py
│   │   └── uio_module.py.exp
│   ├── float/
│   │   ├── array_construct.py
│   │   ├── builtin_float_abs.py
│   │   ├── builtin_float_hash.py
│   │   ├── builtin_float_minmax.py
│   │   ├── builtin_float_pow.py
│   │   ├── builtin_float_round.py
│   │   ├── builtin_float_round_intbig.py
│   │   ├── bytearray_construct_endian.py
│   │   ├── bytes_construct_endian.py
│   │   ├── cmath_fun.py
│   │   ├── cmath_fun_special.py
│   │   ├── complex1.py
│   │   ├── complex1_intbig.py
│   │   ├── complex_attr.py
│   │   ├── complex_reverse_op.py
│   │   ├── complex_special_methods.py
│   │   ├── float1.py
│   │   ├── float2int_doubleprec_intbig.py
│   │   ├── float2int_fp30_intbig.py
│   │   ├── float2int_intbig.py
│   │   ├── float_array.py
│   │   ├── float_attr.py
│   │   ├── float_compare.py
│   │   ├── float_divmod.py
│   │   ├── float_divmod_relaxed.py
│   │   ├── float_format.py
│   │   ├── float_parse.py
│   │   ├── float_parse_doubleprec.py
│   │   ├── float_struct.py
│   │   ├── inf_nan_arith.py
│   │   ├── int_big_float.py
│   │   ├── int_divzero.py
│   │   ├── int_power.py
│   │   ├── lexer.py
│   │   ├── list_index.py
│   │   ├── math_domain.py
│   │   ├── math_domain_special.py
│   │   ├── math_factorial_intbig.py
│   │   ├── math_fun.py
│   │   ├── math_fun_bool.py
│   │   ├── math_fun_int.py
│   │   ├── math_fun_intbig.py
│   │   ├── math_fun_special.py
│   │   ├── math_isclose.py
│   │   ├── math_isclose.py.exp
│   │   ├── python36.py
│   │   ├── python36.py.exp
│   │   ├── string_format.py
│   │   ├── string_format2.py
│   │   ├── string_format_fp30.py
│   │   ├── string_format_modulo.py
│   │   ├── string_format_modulo2.py
│   │   ├── string_format_modulo2_intbig.py
│   │   ├── string_format_modulo3.py
│   │   ├── string_format_modulo3.py.exp
│   │   ├── sys_getsizeof_float.py
│   │   ├── true_value.py
│   │   └── types.py
│   ├── import/
│   │   ├── builtin_import.py
│   │   ├── gen_context.py
│   │   ├── gen_context2.py
│   │   ├── import1a.py
│   │   ├── import1b.py
│   │   ├── import2a.py
│   │   ├── import3a.py
│   │   ├── import4.py
│   │   ├── import_file.py
│   │   ├── import_hook.py
│   │   ├── import_hook.py.exp
│   │   ├── import_long_dyn.py
│   │   ├── import_long_dyn2.py
│   │   ├── import_m.py
│   │   ├── import_m_option.py
│   │   ├── import_m_option.py.exp
│   │   ├── import_mod_populate.py
│   │   ├── import_mod_populate.py.exp
│   │   ├── import_override.py
│   │   ├── import_override.py.exp
│   │   ├── import_pkg1.py
│   │   ├── import_pkg2.py
│   │   ├── import_pkg3.py
│   │   ├── import_pkg4.py
│   │   ├── import_pkg5.py
│   │   ├── import_pkg6.py
│   │   ├── import_pkg7.py
│   │   ├── import_pkg7.py.exp
│   │   ├── import_pkg8.py
│   │   ├── import_star_all.py
│   │   ├── import_star_error.py
│   │   ├── module_constructor.py
│   │   ├── module_getattr.py
│   │   ├── module_getattr.py.exp
│   │   ├── pkg/
│   │   │   ├── __init__.py
│   │   │   └── mod.py
│   │   ├── pkg2/
│   │   │   ├── __init__.py
│   │   │   ├── mod1.py
│   │   │   └── mod2.py
│   │   ├── pkg3/
│   │   │   ├── __init__.py
│   │   │   ├── mod1.py
│   │   │   ├── mod2.py
│   │   │   └── subpkg1/
│   │   │       ├── __init__.py
│   │   │       └── mod1.py
│   │   ├── pkg6/
│   │   │   ├── __init__.py
│   │   │   └── x/
│   │   │       ├── __init__.py
│   │   │       └── y.py
│   │   ├── pkg7/
│   │   │   ├── __init__.py
│   │   │   ├── mod1.py
│   │   │   ├── mod2.py
│   │   │   └── subpkg1/
│   │   │       ├── __init__.py
│   │   │       └── subpkg2/
│   │   │           ├── __init__.py
│   │   │           └── mod3.py
│   │   ├── pkg8/
│   │   │   └── mod.py
│   │   ├── pkg_m/
│   │   │   ├── __init__.py
│   │   │   └── pkg2/
│   │   │       ├── __init__.py
│   │   │       ├── __main__.py
│   │   │       └── mod.py
│   │   ├── rel_import_inv.py
│   │   └── try_module.py
│   ├── inlineasm/
│   │   ├── asmargs.py
│   │   ├── asmargs.py.exp
│   │   ├── asmbcc.py
│   │   ├── asmbcc.py.exp
│   │   ├── asmbitops.py
│   │   ├── asmbitops.py.exp
│   │   ├── asmblbx.py
│   │   ├── asmblbx.py.exp
│   │   ├── asmconst.py
│   │   ├── asmconst.py.exp
│   │   ├── asmdiv.py
│   │   ├── asmdiv.py.exp
│   │   ├── asmfpaddsub.py
│   │   ├── asmfpaddsub.py.exp
│   │   ├── asmfpcmp.py
│   │   ├── asmfpcmp.py.exp
│   │   ├── asmfpldrstr.py
│   │   ├── asmfpldrstr.py.exp
│   │   ├── asmfpmuldiv.py
│   │   ├── asmfpmuldiv.py.exp
│   │   ├── asmfpsqrt.py
│   │   ├── asmfpsqrt.py.exp
│   │   ├── asmit.py
│   │   ├── asmit.py.exp
│   │   ├── asmpushpop.py
│   │   ├── asmpushpop.py.exp
│   │   ├── asmrettype.py
│   │   ├── asmrettype.py.exp
│   │   ├── asmshift.py
│   │   ├── asmshift.py.exp
│   │   ├── asmspecialregs.py
│   │   ├── asmspecialregs.py.exp
│   │   ├── asmsum.py
│   │   └── asmsum.py.exp
│   ├── internal_bench/
│   │   ├── arrayop-1-list_inplace.py
│   │   ├── arrayop-2-list_map.py
│   │   ├── arrayop-3-bytearray_inplace.py
│   │   ├── arrayop-4-bytearray_map.py
│   │   ├── bench.py
│   │   ├── bytealloc-1-bytes_n.py
│   │   ├── bytealloc-2-repeat.py
│   │   ├── bytebuf-1-inplace.py
│   │   ├── bytebuf-2-join_map_bytes.py
│   │   ├── bytebuf-3-bytarray_map.py
│   │   ├── from_iter-1-list_bound.py
│   │   ├── from_iter-2-list_unbound.py
│   │   ├── from_iter-3-tuple_bound.py
│   │   ├── from_iter-4-tuple_unbound.py
│   │   ├── from_iter-5-bytes_bound.py
│   │   ├── from_iter-6-bytes_unbound.py
│   │   ├── from_iter-7-bytearray_bound.py
│   │   ├── from_iter-8-bytearray_unbound.py
│   │   ├── func_args-1.1-pos_1.py
│   │   ├── func_args-1.2-pos_3.py
│   │   ├── func_args-2-pos_default_2_of_3.py
│   │   ├── func_args-3.1-kw_1.py
│   │   ├── func_args-3.2-kw_3.py
│   │   ├── func_builtin-1-enum_pos.py
│   │   ├── func_builtin-2-enum_kw.py
│   │   ├── funcall-1-inline.py
│   │   ├── funcall-2-funcall.py
│   │   ├── funcall-3-funcall-local.py
│   │   ├── loop_count-1-range.py
│   │   ├── loop_count-2-range_iter.py
│   │   ├── loop_count-3-while_up.py
│   │   ├── loop_count-4-while_down_gt.py
│   │   ├── loop_count-5-while_down_ne.py
│   │   ├── loop_count-5.1-while_down_ne_localvar.py
│   │   ├── var-1-constant.py
│   │   ├── var-2-global.py
│   │   ├── var-3-local.py
│   │   ├── var-4-arg.py
│   │   ├── var-5-class-attr.py
│   │   ├── var-6-instance-attr.py
│   │   ├── var-6.1-instance-attr-5.py
│   │   ├── var-7-instance-meth.py
│   │   ├── var-8-namedtuple-1st.py
│   │   └── var-8.1-namedtuple-5th.py
│   ├── io/
│   │   ├── argv.py
│   │   ├── builtin_print_file.py
│   │   ├── data/
│   │   │   ├── bigfile1
│   │   │   ├── file1
│   │   │   ├── file1_utf8
│   │   │   └── file2
│   │   ├── file1.py
│   │   ├── file_close.py
│   │   ├── file_iter.py
│   │   ├── file_long_read.py
│   │   ├── file_long_read2.py
│   │   ├── file_long_read3.py
│   │   ├── file_readinto.py
│   │   ├── file_readinto_len.py
│   │   ├── file_readinto_len.py.exp
│   │   ├── file_readline.py
│   │   ├── file_readline_unicode.py
│   │   ├── file_seek.py
│   │   ├── file_stdio.py
│   │   ├── file_with.py
│   │   ├── open_append.py
│   │   ├── open_plus.py
│   │   ├── open_textio.py
│   │   ├── resource_stream.py
│   │   ├── resource_stream.py.exp
│   │   └── sys_stdio_override.py
│   ├── jni/
│   │   ├── README
│   │   ├── list.py
│   │   ├── list.py.exp
│   │   ├── object.py
│   │   ├── object.py.exp
│   │   ├── system_out.py
│   │   └── system_out.py.exp
│   ├── micropython/
│   │   ├── const.py
│   │   ├── const.py.exp
│   │   ├── const2.py
│   │   ├── const2.py.exp
│   │   ├── const_error.py
│   │   ├── const_error.py.exp
│   │   ├── const_intbig.py
│   │   ├── const_intbig.py.exp
│   │   ├── decorator.py
│   │   ├── decorator.py.exp
│   │   ├── decorator_error.py
│   │   ├── decorator_error.py.exp
│   │   ├── emg_exc.py
│   │   ├── emg_exc.py.exp
│   │   ├── extreme_exc.py
│   │   ├── extreme_exc.py.exp
│   │   ├── heap_lock.py
│   │   ├── heap_lock.py.exp
│   │   ├── heap_locked.py
│   │   ├── heap_locked.py.exp
│   │   ├── heapalloc.py
│   │   ├── heapalloc.py.exp
│   │   ├── heapalloc_bytesio.py
│   │   ├── heapalloc_bytesio.py.exp
│   │   ├── heapalloc_bytesio2.py
│   │   ├── heapalloc_bytesio2.py.exp
│   │   ├── heapalloc_exc_compressed.py
│   │   ├── heapalloc_exc_compressed.py.exp
│   │   ├── heapalloc_exc_compressed_emg_exc.py
│   │   ├── heapalloc_exc_compressed_emg_exc.py.exp
│   │   ├── heapalloc_exc_raise.py
│   │   ├── heapalloc_exc_raise.py.exp
│   │   ├── heapalloc_fail_bytearray.py
│   │   ├── heapalloc_fail_bytearray.py.exp
│   │   ├── heapalloc_fail_bytearray2.py
│   │   ├── heapalloc_fail_bytearray2.py.exp
│   │   ├── heapalloc_fail_dict.py
│   │   ├── heapalloc_fail_dict.py.exp
│   │   ├── heapalloc_fail_list.py
│   │   ├── heapalloc_fail_list.py.exp
│   │   ├── heapalloc_fail_memoryview.py
│   │   ├── heapalloc_fail_memoryview.py.exp
│   │   ├── heapalloc_fail_set.py
│   │   ├── heapalloc_fail_set.py.exp
│   │   ├── heapalloc_fail_tuple.py
│   │   ├── heapalloc_fail_tuple.py.exp
│   │   ├── heapalloc_inst_call.py
│   │   ├── heapalloc_inst_call.py.exp
│   │   ├── heapalloc_int_from_bytes.py
│   │   ├── heapalloc_int_from_bytes.py.exp
│   │   ├── heapalloc_iter.py
│   │   ├── heapalloc_str.py
│   │   ├── heapalloc_str.py.exp
│   │   ├── heapalloc_str_format_vs_modulo.py
│   │   ├── heapalloc_str_format_vs_modulo.py.exp
│   │   ├── heapalloc_str_modulo.py
│   │   ├── heapalloc_str_modulo.py.exp
│   │   ├── heapalloc_str_upperlow.py
│   │   ├── heapalloc_str_upperlow.py.exp
│   │   ├── heapalloc_super.py
│   │   ├── heapalloc_super.py.exp
│   │   ├── heapalloc_traceback.py
│   │   ├── heapalloc_traceback.py.exp
│   │   ├── heapalloc_yield_from.py
│   │   ├── heapalloc_yield_from.py.exp
│   │   ├── icast.py
│   │   ├── icast.py.exp
│   │   ├── import_mpy_invalid.py
│   │   ├── import_mpy_invalid.py.exp
│   │   ├── import_mpy_native_gc.py
│   │   ├── import_mpy_native_gc.py.exp
│   │   ├── import_mpy_native_x64.py
│   │   ├── import_mpy_native_x64.py.exp
│   │   ├── kbd_intr.py
│   │   ├── kbd_intr.py.exp
│   │   ├── meminfo.py
│   │   ├── meminfo.py.exp
│   │   ├── memstats.py
│   │   ├── memstats.py.exp
│   │   ├── native_closure.py
│   │   ├── native_closure.py.exp
│   │   ├── native_const.py
│   │   ├── native_const.py.exp
│   │   ├── native_const_intbig.py
│   │   ├── native_const_intbig.py.exp
│   │   ├── native_for.py
│   │   ├── native_for.py.exp
│   │   ├── native_gen.py
│   │   ├── native_gen.py.exp
│   │   ├── native_misc.py
│   │   ├── native_misc.py.exp
│   │   ├── native_try.py
│   │   ├── native_try.py.exp
│   │   ├── native_try_deep.py
│   │   ├── native_try_deep.py.exp
│   │   ├── native_with.py
│   │   ├── native_with.py.exp
│   │   ├── opt_level.py
│   │   ├── opt_level.py.exp
│   │   ├── opt_level_lineno.py
│   │   ├── opt_level_lineno.py.exp
│   │   ├── schedule.py
│   │   ├── schedule.py.exp
│   │   ├── stack_use.py
│   │   ├── stack_use.py.exp
│   │   ├── viper_addr.py
│   │   ├── viper_addr.py.exp
│   │   ├── viper_args.py
│   │   ├── viper_args.py.exp
│   │   ├── viper_binop_arith.py
│   │   ├── viper_binop_arith.py.exp
│   │   ├── viper_binop_arith_uint.py
│   │   ├── viper_binop_arith_uint.py.exp
│   │   ├── viper_binop_bitwise_uint.py
│   │   ├── viper_binop_bitwise_uint.py.exp
│   │   ├── viper_binop_comp.py
│   │   ├── viper_binop_comp.py.exp
│   │   ├── viper_binop_comp_imm.py
│   │   ├── viper_binop_comp_imm.py.exp
│   │   ├── viper_binop_comp_uint.py
│   │   ├── viper_binop_comp_uint.py.exp
│   │   ├── viper_binop_divmod.py
│   │   ├── viper_binop_divmod.py.exp
│   │   ├── viper_binop_multi_comp.py
│   │   ├── viper_binop_multi_comp.py.exp
│   │   ├── viper_cond.py
│   │   ├── viper_cond.py.exp
│   │   ├── viper_const.py
│   │   ├── viper_const.py.exp
│   │   ├── viper_const_intbig.py
│   │   ├── viper_const_intbig.py.exp
│   │   ├── viper_error.py
│   │   ├── viper_error.py.exp
│   │   ├── viper_globals.py
│   │   ├── viper_globals.py.exp
│   │   ├── viper_import.py
│   │   ├── viper_import.py.exp
│   │   ├── viper_misc.py
│   │   ├── viper_misc.py.exp
│   │   ├── viper_misc2.py
│   │   ├── viper_misc2.py.exp
│   │   ├── viper_misc_intbig.py
│   │   ├── viper_misc_intbig.py.exp
│   │   ├── viper_ptr16_load.py
│   │   ├── viper_ptr16_load.py.exp
│   │   ├── viper_ptr16_store.py
│   │   ├── viper_ptr16_store.py.exp
│   │   ├── viper_ptr32_load.py
│   │   ├── viper_ptr32_load.py.exp
│   │   ├── viper_ptr32_store.py
│   │   ├── viper_ptr32_store.py.exp
│   │   ├── viper_ptr8_load.py
│   │   ├── viper_ptr8_load.py.exp
│   │   ├── viper_ptr8_store.py
│   │   ├── viper_ptr8_store.py.exp
│   │   ├── viper_subscr.py
│   │   ├── viper_subscr.py.exp
│   │   ├── viper_try.py
│   │   ├── viper_try.py.exp
│   │   ├── viper_types.py
│   │   ├── viper_types.py.exp
│   │   ├── viper_with.py
│   │   ├── viper_with.py.exp
│   │   ├── writable_ns.py
│   │   └── writable_ns.py.exp
│   ├── misc/
│   │   ├── features.py
│   │   ├── non_compliant.py
│   │   ├── non_compliant.py.exp
│   │   ├── non_compliant_lexer.py
│   │   ├── non_compliant_lexer.py.exp
│   │   ├── print_exception.py
│   │   ├── rge_sm.py
│   │   ├── sys_exc_info.py
│   │   ├── sys_settrace_features.py
│   │   ├── sys_settrace_generator.py
│   │   ├── sys_settrace_generator.py.exp
│   │   ├── sys_settrace_loop.py
│   │   ├── sys_settrace_loop.py.exp
│   │   └── sys_settrace_subdir/
│   │       ├── sys_settrace_generic.py
│   │       └── sys_settrace_importme.py
│   ├── multi_bluetooth/
│   │   ├── ble_characteristic.py
│   │   ├── ble_characteristic.py.exp
│   │   ├── ble_gap_advertise.py
│   │   ├── ble_gap_advertise.py.exp
│   │   ├── ble_gap_connect.py
│   │   ├── ble_gap_connect.py.exp
│   │   ├── ble_gap_device_name.py
│   │   ├── ble_gap_device_name.py.exp
│   │   ├── ble_gap_pair.py
│   │   ├── ble_gap_pair.py.exp
│   │   ├── ble_gap_pair_bond.py
│   │   ├── ble_gap_pair_bond.py.exp
│   │   ├── ble_gatt_data_transfer.py
│   │   ├── ble_gatt_data_transfer.py.exp
│   │   ├── ble_gattc_discover_services.py
│   │   ├── ble_gattc_discover_services.py.exp
│   │   ├── ble_l2cap.py
│   │   ├── ble_l2cap.py.exp
│   │   ├── ble_mtu.py
│   │   ├── ble_mtu.py.exp
│   │   ├── perf_gatt_char_write.py
│   │   ├── perf_gatt_char_write.py.exp
│   │   ├── perf_gatt_notify.py
│   │   ├── perf_gatt_notify.py.exp
│   │   ├── perf_l2cap.py
│   │   ├── perf_l2cap.py.exp
│   │   ├── stress_log_filesystem.py
│   │   └── stress_log_filesystem.py.exp
│   ├── multi_net/
│   │   ├── ssl_data.py
│   │   ├── ssl_data.py.exp
│   │   ├── tcp_accept_recv.py
│   │   ├── tcp_client_rst.py
│   │   ├── tcp_data.py
│   │   ├── uasyncio_tcp_client_rst.py
│   │   ├── uasyncio_tcp_client_rst.py.exp
│   │   ├── uasyncio_tcp_close_write.py
│   │   ├── uasyncio_tcp_close_write.py.exp
│   │   ├── uasyncio_tcp_readexactly.py
│   │   ├── uasyncio_tcp_readexactly.py.exp
│   │   ├── uasyncio_tcp_readinto.py
│   │   ├── uasyncio_tcp_readinto.py.exp
│   │   ├── uasyncio_tcp_server_client.py
│   │   └── uasyncio_tcp_server_client.py.exp
│   ├── net_hosted/
│   │   ├── README
│   │   ├── accept_nonblock.py
│   │   ├── accept_nonblock.py.exp
│   │   ├── accept_timeout.py
│   │   ├── accept_timeout.py.exp
│   │   ├── connect_nonblock.py
│   │   ├── connect_nonblock.py.exp
│   │   ├── connect_poll.py
│   │   ├── connect_poll.py.exp
│   │   ├── ssl_getpeercert.py
│   │   └── ssl_getpeercert.py.exp
│   ├── net_inet/
│   │   ├── README
│   │   ├── getaddrinfo.py
│   │   ├── test_tls_sites.py
│   │   ├── test_tls_sites.py.exp
│   │   ├── uasyncio_cancel_stream.py
│   │   ├── uasyncio_cancel_stream.py.exp
│   │   ├── uasyncio_open_connection.py
│   │   ├── uasyncio_open_connection.py.exp
│   │   ├── uasyncio_tcp_read_headers.py
│   │   └── uasyncio_tcp_read_headers.py.exp
│   ├── perf_bench/
│   │   ├── benchrun.py
│   │   ├── bm_chaos.py
│   │   ├── bm_fannkuch.py
│   │   ├── bm_fft.py
│   │   ├── bm_float.py
│   │   ├── bm_hexiom.py
│   │   ├── bm_nqueens.py
│   │   ├── bm_pidigits.py
│   │   ├── misc_aes.py
│   │   ├── misc_mandel.py
│   │   ├── misc_pystone.py
│   │   ├── misc_raytrace.py
│   │   ├── viper_call0.py
│   │   ├── viper_call1a.py
│   │   ├── viper_call1b.py
│   │   ├── viper_call1c.py
│   │   ├── viper_call2a.py
│   │   └── viper_call2b.py
│   ├── pyb/
│   │   ├── accel.py
│   │   ├── accel.py.exp
│   │   ├── adc.py
│   │   ├── adc.py.exp
│   │   ├── adcall.py
│   │   ├── adcall.py.exp
│   │   ├── board_pybv1x.py
│   │   ├── board_pybv1x.py.exp
│   │   ├── can.py
│   │   ├── can.py.exp
│   │   ├── can2.py
│   │   ├── can2.py.exp
│   │   ├── dac.py
│   │   ├── dac.py.exp
│   │   ├── extint.py
│   │   ├── extint.py.exp
│   │   ├── i2c.py
│   │   ├── i2c.py.exp
│   │   ├── i2c_accel.py
│   │   ├── i2c_accel.py.exp
│   │   ├── i2c_error.py
│   │   ├── i2c_error.py.exp
│   │   ├── irq.py
│   │   ├── irq.py.exp
│   │   ├── led.py
│   │   ├── led.py.exp
│   │   ├── modstm.py
│   │   ├── modstm.py.exp
│   │   ├── modtime.py
│   │   ├── modtime.py.exp
│   │   ├── pin.py
│   │   ├── pin.py.exp
│   │   ├── pyb1.py
│   │   ├── pyb1.py.exp
│   │   ├── pyb_f405.py
│   │   ├── pyb_f405.py.exp
│   │   ├── pyb_f411.py
│   │   ├── pyb_f411.py.exp
│   │   ├── rtc.py
│   │   ├── rtc.py.exp
│   │   ├── servo.py
│   │   ├── servo.py.exp
│   │   ├── spi.py
│   │   ├── spi.py.exp
│   │   ├── switch.py
│   │   ├── switch.py.exp
│   │   ├── timer.py
│   │   ├── timer.py.exp
│   │   ├── timer_callback.py
│   │   ├── timer_callback.py.exp
│   │   ├── uart.py
│   │   └── uart.py.exp
│   ├── pybnative/
│   │   ├── while.py
│   │   └── while.py.exp
│   ├── qemu-arm/
│   │   ├── native_test.py
│   │   └── native_test.py.exp
│   ├── run-internalbench.py
│   ├── run-multitests.py
│   ├── run-natmodtests.py
│   ├── run-perfbench.py
│   ├── run-tests-exp.py
│   ├── run-tests-exp.sh
│   ├── run-tests.py
│   ├── stress/
│   │   ├── dict_copy.py
│   │   ├── dict_create.py
│   │   ├── dict_create_max.py
│   │   ├── gc_trace.py
│   │   ├── list_sort.py
│   │   ├── qstr_limit.py
│   │   ├── qstr_limit.py.exp
│   │   ├── recursion.py
│   │   ├── recursive_data.py
│   │   ├── recursive_data.py.exp
│   │   ├── recursive_gen.py
│   │   ├── recursive_iternext.py
│   │   └── recursive_iternext.py.exp
│   ├── strict/
│   │   ├── dir_const.py
│   │   ├── dir_const.py.exp
│   │   ├── it_class_double_fun.py
│   │   ├── it_class_double_fun.py.exp
│   │   ├── it_double_fun.py
│   │   ├── it_double_fun.py.exp
│   │   ├── it_double_fun_global.py
│   │   ├── it_double_fun_global.py.exp
│   │   ├── it_import1.py
│   │   ├── it_import1.py.exp
│   │   ├── it_import2.py
│   │   ├── it_import2.py.exp
│   │   ├── it_import_all.py
│   │   ├── it_import_all.py.exp
│   │   ├── it_import_all_reimport.py
│   │   ├── it_import_all_reimport.py.exp
│   │   ├── it_import_name.py
│   │   ├── it_import_name.py.exp
│   │   ├── it_mod_double_fun.py
│   │   ├── it_mod_double_fun.py.exp
│   │   ├── it_var_to_fun.py
│   │   ├── it_var_to_fun.py.exp
│   │   ├── mod.py
│   │   ├── mod.py.exp
│   │   ├── mod2.py
│   │   ├── mod2.py.exp
│   │   ├── pkg/
│   │   │   ├── __init__.py
│   │   │   ├── mod.py
│   │   │   └── mod2.py
│   │   ├── rt_class_attr_add.py
│   │   ├── rt_class_attr_add.py.exp
│   │   ├── rt_class_attr_del.py
│   │   ├── rt_class_attr_del.py.exp
│   │   ├── rt_global_add.py
│   │   ├── rt_global_add.py.exp
│   │   ├── rt_global_add_via_globals.py
│   │   ├── rt_global_add_via_globals.py.exp
│   │   ├── rt_global_const_override.py
│   │   ├── rt_global_const_override.py.exp
│   │   ├── rt_global_del.py
│   │   ├── rt_global_del.py.exp
│   │   ├── rt_global_del_via_globals.py
│   │   ├── rt_global_del_via_globals.py.exp
│   │   ├── rt_globals.py
│   │   ├── rt_globals.py.exp
│   │   ├── rt_mod_global_add.py
│   │   ├── rt_mod_global_add.py.exp
│   │   ├── rt_mod_global_del.py
│   │   ├── rt_mod_global_del.py.exp
│   │   ├── rt_monkeypatch_mod.py
│   │   ├── rt_monkeypatch_mod.py.exp
│   │   ├── rt_monkeypatch_mod_workaround.py
│   │   └── rt_monkeypatch_mod_workaround.py.exp
│   ├── thread/
│   │   ├── mutate_bytearray.py
│   │   ├── mutate_dict.py
│   │   ├── mutate_instance.py
│   │   ├── mutate_list.py
│   │   ├── mutate_set.py
│   │   ├── stress_aes.py
│   │   ├── stress_create.py
│   │   ├── stress_heap.py
│   │   ├── stress_recurse.py
│   │   ├── stress_schedule.py
│   │   ├── stress_schedule.py.exp
│   │   ├── thread_exc1.py
│   │   ├── thread_exc2.py
│   │   ├── thread_exc2.py.exp
│   │   ├── thread_exit1.py
│   │   ├── thread_exit2.py
│   │   ├── thread_gc1.py
│   │   ├── thread_heap_lock.py
│   │   ├── thread_heap_lock.py.exp
│   │   ├── thread_ident1.py
│   │   ├── thread_lock1.py
│   │   ├── thread_lock2.py
│   │   ├── thread_lock3.py
│   │   ├── thread_lock4.py
│   │   ├── thread_lock5.py
│   │   ├── thread_qstr1.py
│   │   ├── thread_shared1.py
│   │   ├── thread_shared2.py
│   │   ├── thread_sleep1.py
│   │   ├── thread_stacksize1.py
│   │   ├── thread_start1.py
│   │   └── thread_start2.py
│   ├── unicode/
│   │   ├── data/
│   │   │   ├── utf-8_1.txt
│   │   │   └── utf-8_2.txt
│   │   ├── file1.py
│   │   ├── file2.py
│   │   ├── unicode.py
│   │   ├── unicode_chr.py
│   │   ├── unicode_errors.py
│   │   ├── unicode_escape.py
│   │   ├── unicode_id.py
│   │   ├── unicode_index.py
│   │   ├── unicode_iter.py
│   │   ├── unicode_ord.py
│   │   ├── unicode_pos.py
│   │   ├── unicode_slice.py
│   │   ├── unicode_str_format.py
│   │   ├── unicode_str_modulo.py
│   │   └── unicode_subscr.py
│   ├── unix/
│   │   ├── extra_coverage.py
│   │   ├── extra_coverage.py.exp
│   │   ├── ffi_callback.py
│   │   ├── ffi_callback.py.exp
│   │   ├── ffi_float.py
│   │   ├── ffi_float.py.exp
│   │   ├── ffi_float2.py
│   │   ├── ffi_float2.py.exp
│   │   ├── ffi_instances.py
│   │   ├── ffi_instances.py.exp
│   │   ├── ffi_lib.c
│   │   ├── ffi_types.py
│   │   ├── ffi_types.py.exp
│   │   ├── uos_stat.py
│   │   └── uos_stat.py.exp
│   └── wipy/
│       ├── adc.py
│       ├── adc.py.exp
│       ├── i2c.py
│       ├── i2c.py.exp
│       ├── modwipy.py
│       ├── modwipy.py.exp
│       ├── os.py
│       ├── os.py.exp
│       ├── pin.py
│       ├── pin.py.exp
│       ├── pin_irq.py
│       ├── pin_irq.py.exp
│       ├── reset/
│       │   ├── reset.py
│       │   └── reset.py.exp
│       ├── rtc.py
│       ├── rtc.py.exp
│       ├── sd.py
│       ├── sd.py.exp
│       ├── skipped/
│       │   ├── rtc_irq.py
│       │   └── rtc_irq.py.exp
│       ├── spi.py
│       ├── spi.py.exp
│       ├── time.py
│       ├── time.py.exp
│       ├── timer.py
│       ├── timer.py.exp
│       ├── uart.py
│       ├── uart.py.exp
│       ├── uart_irq.py
│       ├── uart_irq.py.exp
│       ├── wdt.py
│       ├── wdt.py.exp
│       └── wlan/
│           ├── machine.py
│           ├── machine.py.exp
│           ├── server.py
│           ├── server.py.exp
│           ├── wlan.py
│           └── wlan.py.exp
└── tools/
    ├── .gitattributes
    ├── .gitignore
    ├── bootstrap_upip.sh
    ├── build-stm-latest.sh
    ├── cc1
    ├── check_code_size.sh
    ├── ci.sh
    ├── codeformat.py
    ├── codestats.sh
    ├── dfu.py
    ├── file2h.py
    ├── gen-changelog.sh
    ├── gen-cpydiff.py
    ├── gendoc.py
    ├── insert-usb-ids.py
    ├── make-frozen.py
    ├── makemanifest.py
    ├── metrics.py
    ├── mpremote/
    │   ├── LICENSE
    │   ├── README.md
    │   ├── mpremote/
    │   │   ├── __init__.py
    │   │   ├── console.py
    │   │   ├── main.py
    │   │   └── pyboardextended.py
    │   ├── mpremote.py
    │   ├── pyproject.toml
    │   └── setup.cfg
    ├── mpy-tool.py
    ├── mpy_bin2res.py
    ├── mpy_cross_all.py
    ├── mpy_ld.py
    ├── pyboard.py
    ├── pydfu.py
    ├── tinytest-codegen.py
    ├── uf2conv.py
    ├── uncrustify.cfg
    ├── upip.py
    ├── upip_utarfile.py
    └── verifygitlog.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .git-blame-ignore-revs
================================================
# tests/run-tests.py: Reformat with Black.
2a38d7103672580882fb621a5b76e8d26805d593

# all: Update Python code to conform to latest black formatting.
06659077a81b85882254cf0953c33b27614e018e

# tools/uncrustify: Enable more opts to remove space between func and '('.
77ed6f69ac35c1663a5633a8ee1d8a2446542204

# tools/codeformat.py: Include extmod/{btstack,nimble} in code formatting.
026fda605e03113d6e753290d65fed774418bc53

# all: Format code to add space after C++-style comment start.
84fa3312cfa7d2237d4b56952f2cd6e3591210c4

# tests: Format all Python code with black, except tests in basics subdir.
3dc324d3f1312e40d3a8ed87e7244966bb756f26

# all: Remove spaces inside and around parenthesis.
1a3e386c67e03a79eb768cb6e9f6777e002d6660

# all: Remove spaces between nested paren and inside function arg paren.
feb25775851ba0c04b8d1013716f442258879d9c

# all: Reformat C and Python source code with tools/codeformat.py.
69661f3343bedf86e514337cff63d96cc42f8859

# stm32/usbdev: Convert files to unix line endings.
abde0fa2267f9062b28c3c015d7662a550125cc6

# all: Remove trailing spaces, per coding conventions.
761e4c7ff62896c7d8f8c3dfc3cc98a4cc4f2f6f


================================================
FILE: .gitattributes
================================================
# Per default everything gets normalized and gets LF line endings on checkout.
* text eol=lf

# These will always have CRLF line endings on checkout.
*.vcxproj text eol=crlf
*.props text eol=crlf
*.bat text eol=crlf

# These are binary so should never be modified by git.
*.a binary
*.png binary
*.jpg binary
*.dxf binary
*.mpy binary

# These should also not be modified by git.
tests/basics/string_cr_conversion.py -text
tests/basics/string_crlf_conversion.py -text
ports/stm32/pybcdc.inf_template -text
ports/stm32/usbhost/** -text
ports/cc3200/hal/aes.c -text
ports/cc3200/hal/aes.h -text
ports/cc3200/hal/des.c -text
ports/cc3200/hal/i2s.c -text
ports/cc3200/hal/i2s.h -text
ports/cc3200/version.h -text


================================================
FILE: .github/workflows/code_formatting.yml
================================================
name: Check code formatting

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v1
    - name: Install packages
      run: source tools/ci.sh && ci_code_formatting_setup
    - name: Run code formatting
      run: source tools/ci.sh && ci_code_formatting_run
    - name: Check code formatting
      run: git diff --exit-code


================================================
FILE: .github/workflows/code_size.yml
================================================
name: Check code size

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'ports/bare-arm/**'
      - 'ports/minimal/**'

jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 100
    - name: Update package list
      run: sudo apt-get update -qq || true
    - name: Install packages
      run: source tools/ci.sh && ci_code_size_setup
    - name: Build
      run: source tools/ci.sh && ci_code_size_build
    - name: Compute code size difference
      run: tools/metrics.py diff --error-threshold 0 ~/size0 ~/size1


================================================
FILE: .github/workflows/commit_formatting.yml
================================================
name: Check commit message formatting

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: '100'
    - uses: actions/setup-python@v1
    - name: Check commit message formatting
      run: source tools/ci.sh && ci_commit_formatting_run


================================================
FILE: .github/workflows/docs.yml
================================================
name: Build docs

on:
  pull_request:
    paths:
      - docs/**

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v1
    - name: Install Python packages
      run: pip install Sphinx
    - name: Build docs
      run: make -C docs/ html


================================================
FILE: .github/workflows/ports_cc3200.yml
================================================
name: cc3200 port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/cc3200/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_cc3200_setup
    - name: Build
      run: source tools/ci.sh && ci_cc3200_build


================================================
FILE: .github/workflows/ports_esp32.yml
================================================
name: esp32 port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/esp32/**'

jobs:
  build_idf402:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_esp32_idf402_setup
    - name: Build
      run: source tools/ci.sh && ci_esp32_build

  build_idf43:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_esp32_idf43_setup
    - name: Build
      run: source tools/ci.sh && ci_esp32_build


================================================
FILE: .github/workflows/ports_esp8266.yml
================================================
name: esp8266 port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/esp8266/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_esp8266_setup && ci_esp8266_path >> $GITHUB_PATH
    - name: Build
      run: source tools/ci.sh && ci_esp8266_build


================================================
FILE: .github/workflows/ports_mimxrt.yml
================================================
name: mimxrt port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/mimxrt/**'

jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_mimxrt_setup
    - name: Build
      run: source tools/ci.sh && ci_mimxrt_build


================================================
FILE: .github/workflows/ports_nrf.yml
================================================
name: nrf port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/nrf/**'

jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_nrf_setup
    - name: Build
      run: source tools/ci.sh && ci_nrf_build


================================================
FILE: .github/workflows/ports_powerpc.yml
================================================
name: powerpc port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/powerpc/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_powerpc_setup
    - name: Build
      run: source tools/ci.sh && ci_powerpc_build


================================================
FILE: .github/workflows/ports_qemu-arm.yml
================================================
name: qemu-arm port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/qemu-arm/**'
      - 'tests/**'

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_qemu_arm_setup
    - name: Build and run test suite
      run: source tools/ci.sh && ci_qemu_arm_build
    - name: Print failures
      if: failure()
      run: grep --text "FAIL" ports/qemu-arm/build/console.out


================================================
FILE: .github/workflows/ports_rp2.yml
================================================
name: rp2 port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/rp2/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_rp2_setup
    - name: Build
      run: source tools/ci.sh && ci_rp2_build


================================================
FILE: .github/workflows/ports_samd.yml
================================================
name: samd port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/samd/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_samd_setup
    - name: Build
      run: source tools/ci.sh && ci_samd_build


================================================
FILE: .github/workflows/ports_stm32.yml
================================================
name: stm32 port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/stm32/**'

jobs:
  build_pyb:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_stm32_setup
    - name: Build
      run: source tools/ci.sh && ci_stm32_pyb_build

  build_nucleo:
    if: false  # Overflows flash
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_stm32_setup
    - name: Build
      run: source tools/ci.sh && ci_stm32_nucleo_build


================================================
FILE: .github/workflows/ports_teensy.yml
================================================
name: teensy port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'drivers/**'
      - 'ports/teensy/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_teensy_setup
    - name: Build
      run: source tools/ci.sh && ci_teensy_build


================================================
FILE: .github/workflows/ports_unix.yml
================================================
name: unix port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'examples/**'
      - 'ports/unix/**'
      - 'tests/**'

jobs:
  minimal:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: source tools/ci.sh && ci_unix_minimal_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_minimal_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  reproducible:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build with reproducible date
      run: source tools/ci.sh && ci_unix_minimal_build
      env:
        SOURCE_DATE_EPOCH: 1234567890
    - name: Check reproducible build date
      run: echo | ports/unix/pycopy-minimal -i | grep 'on 2009-02-13;'

  standard:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: source tools/ci.sh && ci_unix_standard_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_standard_run_tests
    - name: Run performance benchmarks
      run: source tools/ci.sh && ci_unix_standard_run_perfbench
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  coverage:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_coverage_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_coverage_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_coverage_run_tests
    - name: Build native mpy modules
      run: source tools/ci.sh && ci_native_mpy_modules_build
    - name: Test importing .mpy generated by mpy_ld.py
      run: source tools/ci.sh && ci_unix_coverage_run_native_mpy_tests
    - name: Run lcov coverage analysis
      run: |
        mkdir -p coverage
        lcov --rc lcov_branch_coverage=1 --directory ports/unix/build-coverage --capture --output-file coverage/lcov.info.all
        lcov --remove coverage/lcov.info.all '*/lib/*' '*/ports/unix/*' '*/utils/*' --output-file coverage/lcov.info
    - name: Send to coveralls
      uses: coverallsapp/github-action@master
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  coverage_32bit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_32bit_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_coverage_32bit_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_coverage_32bit_run_tests
    - name: Build native mpy modules
      run: source tools/ci.sh && ci_native_mpy_modules_32bit_build
    - name: Test importing .mpy generated by mpy_ld.py
      run: source tools/ci.sh && ci_unix_coverage_32bit_run_native_mpy_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  nanbox:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_32bit_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_nanbox_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_nanbox_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  float:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: source tools/ci.sh && ci_unix_float_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_float_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  stackless_clang:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_clang_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_stackless_clang_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_stackless_clang_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  float_clang:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_clang_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_float_clang_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_float_clang_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  settrace:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: source tools/ci.sh && ci_unix_settrace_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_settrace_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  settrace_stackless:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: source tools/ci.sh && ci_unix_settrace_stackless_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_settrace_stackless_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  macos:
    runs-on: macos-11.0
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - name: Build
      run: source tools/ci.sh && ci_unix_macos_build
    - name: Run tests
      run: source tools/ci.sh && ci_unix_macos_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  qemu_mips:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_qemu_mips_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_qemu_mips_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_qemu_mips_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures

  qemu_arm:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_unix_qemu_arm_setup
    - name: Build
      run: source tools/ci.sh && ci_unix_qemu_arm_build
    - name: Run main test suite
      run: source tools/ci.sh && ci_unix_qemu_arm_run_tests
    - name: Print failures
      if: failure()
      run: tests/run-tests.py --print-failures


================================================
FILE: .github/workflows/ports_windows.yml
================================================
name: windows port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/*.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'ports/unix/**'
      - 'ports/windows/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_windows_setup
    - name: Build
      run: source tools/ci.sh && ci_windows_build


================================================
FILE: .github/workflows/ports_zephyr.yml
================================================
name: zephyr port

on:
  push:
  pull_request:
    paths:
      - '.github/workflows/ports_zephyr.yml'
      - 'tools/**'
      - 'py/**'
      - 'extmod/**'
      - 'lib/**'
      - 'ports/zephyr/**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install packages
      run: source tools/ci.sh && ci_zephyr_setup
    - name: Install Zephyr
      run: source tools/ci.sh && ci_zephyr_install
    - name: Build
      run: source tools/ci.sh && ci_zephyr_build


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
#  push:
  release:
    types: [created, edited]

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - name: Clone
      uses: actions/checkout@v1
    - name: Install i386 support
      run: |
        sudo dpkg --add-architecture i386
        sudo apt-get update
        sudo apt install gcc-multilib libffi-dev:i386
    - name: Build pre-requisites
      run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix deplibs
    - name: Workaround for random permission change in libffi
      run: cd lib/libffi; git checkout .
    - run: git status

    - name: Build Unix port (pycopy.x86)
      run: |
        make ${MAKEOPTS} -C ports/unix MICROPY_FORCE_32BIT=1
        mv ports/unix/pycopy ports/unix/pycopy.x86
    - name: Build Unix port (pycopy-dev.x86)
      run: |
        make ${MAKEOPTS} -C ports/unix dev MICROPY_FORCE_32BIT=1
        mv ports/unix/pycopy-dev ports/unix/pycopy-dev.x86
        rm -rf ports/unix/build*

    - name: Build Unix port (pycopy)
      run: |
        make ${MAKEOPTS} -C ports/unix
    - name: Build Unix port (pycopy-dev)
      run: |
        make ${MAKEOPTS} -C ports/unix dev

    - name: Create release tarball
      run: |
        cd ports/unix; tar cfvz pycopy-$(git describe --tags)-bin.tar.gz pycopy pycopy-dev pycopy.x86 pycopy-dev.x86
    - name: Upload release files
      uses: pfalcon/github-action-publish-binaries@master
      env:
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
      with:
          args: "ports/unix/pycopy*.tar.gz"


================================================
FILE: .github/workflows/travis-ci.yml
================================================
on:
  push:
  pull_request:

env:
  MAKEOPTS: "-j4"
  XTENSA_CROSS_ROOT: "~/persist/toolchain-xtensa"
  XTENSA_CROSS_BINDIR: "~/persist/toolchain-xtensa/bin"

jobs:

  code-formatting:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # before_install
    - run: |
        sudo apt-add-repository --yes --update ppa:pybricks/ppa
    # install
    - run: |
        sudo apt-get install uncrustify python3-pip
        uncrustify --version
        pip3 install --user setuptools
        pip3 install --user black
        black --version
    # script
    - run: |
        tools/codeformat.py
        git diff --exit-code

  esp8266-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # before_install
    - run: |
        sudo apt-get install bison flex gperf help2man libexpat-dev libtool libtool-bin python-serial texinfo
        echo "HAS_XTENSA="test -d ${XTENSA_CROSS_BINDIR}"" >> $GITHUB_ENV
    # install
    - run: |
        set -x
        XTENSA_CROSS_ROOT=$(eval echo ${XTENSA_CROSS_ROOT})
        echo ${XTENSA_CROSS_ROOT}
        unset CC
        ${HAS_XTENSA} || git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
        ${HAS_XTENSA} || echo "CT_LOG_PROGRESS_BAR=n" >> esp-open-sdk/crosstool-config-overrides
        ${HAS_XTENSA} || make -C esp-open-sdk TOOLCHAIN=${XTENSA_CROSS_ROOT}
    # script
    - run: |
        XTENSA_CROSS_BINDIR=$(eval echo ${XTENSA_CROSS_BINDIR})
        make ${MAKEOPTS} -C mpy-cross
        make -C ports/esp8266 submodules
        PATH=${XTENSA_CROSS_BINDIR}:${PATH} make -C ports/esp8266

  zephyr-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # before_install
    - run: |
        docker pull zephyrprojectrtos/ci:v0.11.8
        docker run --name zephyr-ci -d -it -v "$(pwd)":/micropython -e ZEPHYR_SDK_INSTALL_DIR=/opt/sdk/zephyr-sdk-0.11.3 -e ZEPHYR_TOOLCHAIN_VARIANT=zephyr -w /micropython/ports/zephyr zephyrprojectrtos/ci:v0.11.8

        docker ps -a
    # install
    - run: |
        docker exec zephyr-ci west init --mr v2.4.0 /zephyrproject
        docker exec -w /zephyrproject zephyr-ci west update
        docker exec -w /zephyrproject zephyr-ci west zephyr-export
    # script
    - run: |
        docker exec zephyr-ci bash -c "make clean; ./make-minimal ${MAKEOPTS}"
        docker exec zephyr-ci bash -c "make clean; ./make-minimal ${MAKEOPTS} BOARD=frdm_k64f"
        docker exec zephyr-ci bash -c "make clean; make ${MAKEOPTS}"
        docker exec zephyr-ci bash -c "make clean; make ${MAKEOPTS} BOARD=frdm_k64f"
        docker exec zephyr-ci bash -c "make clean; make ${MAKEOPTS} BOARD=mimxrt1050_evk"
        docker exec zephyr-ci bash -c "make clean; make ${MAKEOPTS} BOARD=reel_board"

  unix-port-build-with-clang-on-OSX:
    runs-on: macos-10.15
    steps:
    - name: Use CPython3.8
      uses: actions/setup-python@v2
      with:
        python-version: "3.8"
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        brew install pkgconfig || true
        brew install autoconf automake libtool
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix deplibs
        make ${MAKEOPTS} -C ports/unix
        (cd tests && ./run-tests.py --exclude 'uasyncio_(basic|heaplock|lock|wait_task)')
        make ${MAKEOPTS} -C ports/unix VARIANT=coverage
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  stm32-port-build:
    # Rely on separate upstream action.
    if: false
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo add-apt-repository -y ppa:team-gcc-arm-embedded/ppa
        sudo apt-get update -qq || true
        sudo apt-get install gcc-arm-embedded
        arm-none-eabi-gcc --version
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/stm32 submodules
        git submodule update --init lib/btstack
        make ${MAKEOPTS} -C ports/stm32 BOARD=NUCLEO_F091RC
        make ${MAKEOPTS} -C ports/stm32 BOARD=PYBV11 MICROPY_PY_WIZNET5K=5200 MICROPY_PY_CC3K=1
        make ${MAKEOPTS} -C ports/stm32 BOARD=PYBD_SF2
        make ${MAKEOPTS} -C ports/stm32 BOARD=PYBD_SF6 NANBOX=1 MICROPY_BLUETOOTH_NIMBLE=0 MICROPY_BLUETOOTH_BTSTACK=1
        make ${MAKEOPTS} -C ports/stm32 BOARD=NUCLEO_H743ZI CFLAGS_EXTRA='-DMICROPY_PY_THREAD=1'
        make ${MAKEOPTS} -C ports/stm32 BOARD=STM32L476DISC
        make ${MAKEOPTS} -C ports/stm32 BOARD=NUCLEO_WB55
        make ${MAKEOPTS} -C ports/stm32/mboot BOARD=PYBV10 CFLAGS_EXTRA='-DMBOOT_FSLOAD=1 -DMBOOT_VFS_LFS2=1'
        make ${MAKEOPTS} -C ports/stm32/mboot BOARD=PYBD_SF6
        make ${MAKEOPTS} -C ports/stm32/mboot BOARD=NUCLEO_WB55

  qemu-arm-port-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get update -qq || true
        sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi qemu-system
        arm-none-eabi-gcc --version
        qemu-system-arm --version
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/qemu-arm CFLAGS_EXTRA=-DMP_ENDIANNESS_BIG=1
        make ${MAKEOPTS} -C ports/qemu-arm clean
        make ${MAKEOPTS} -C ports/qemu-arm -f Makefile.test test
    - if: ${{ failure() }}
      run: |
        grep --text "FAIL" ports/qemu-arm/build/console.out

  unix-coverage-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
        sudo apt-get update -qq || true
        sudo apt-get install -y gcc-7
        sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 80
        sudo update-alternatives --config gcc
        sudo apt-get install python3-pip
        sudo pip3 install setuptools
        sudo pip3 install pyelftools
        sudo pip3 install cpp-coveralls
        gcc --version
        python3 --version
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix deplibs
        make ${MAKEOPTS} -C ports/unix coverage
        (cd tests && MICROPY_CPYTHON3=python3 MICROPY_MICROPYTHON=../ports/unix/pycopy-coverage ./run-multitests.py multi_net/*.py) || travis_terminate 1
        make -C ports/unix VARIANT=coverage test_full
        make -C examples/natmod/features1 ARCH=x64
        make -C examples/natmod/features2 ARCH=x64
        make -C examples/natmod/btree ARCH=x64
        make -C examples/natmod/framebuf ARCH=x64
        make -C examples/natmod/uheapq ARCH=x64
        make -C examples/natmod/ure ARCH=x64
        make -C examples/natmod/uzlib ARCH=x64
        PYCOPYPATH=examples/natmod/features2 ./ports/unix/pycopy-coverage -m features2
        (cd tests && ./run-natmodtests.py extmod/{btree*,framebuf*,uheapq*,ure*,uzlib*}.py)
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  unix-coverage-32-bit-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    - run: |
        sudo dpkg --add-architecture i386
        sudo apt-get update -y -qq
    # install
    - run: |
        sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
        sudo apt-get update -qq || true
        sudo apt-get install -y gcc-7
        sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 80
        sudo update-alternatives --config gcc
        sudo apt-get install gcc-multilib g++-multilib gcc-7-multilib libffi-dev:i386
        sudo apt-get install python3-pip
        sudo pip3 install setuptools
        sudo pip3 install pyelftools
        gcc --version
        python3 --version
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix MICROPY_FORCE_32BIT=1 submodules
        make ${MAKEOPTS} -C ports/unix MICROPY_FORCE_32BIT=1 deplibs
        make ${MAKEOPTS} -C ports/unix MICROPY_FORCE_32BIT=1 coverage
        make -C ports/unix MICROPY_FORCE_32BIT=1 VARIANT=coverage test_full || travis_terminate 1
        make -C examples/natmod/features1 ARCH=x86
        make -C examples/natmod/features2 ARCH=x86
        make -C examples/natmod/btree ARCH=x86
        make -C examples/natmod/framebuf ARCH=x86
        make -C examples/natmod/uheapq ARCH=x86
        make -C examples/natmod/urandom ARCH=x86
        make -C examples/natmod/ure ARCH=x86
        make -C examples/natmod/uzlib ARCH=x86
        PYCOPYPATH=examples/natmod/features2 ./ports/unix/pycopy-coverage  -m features2
        (cd tests && ./run-natmodtests.py --arch x86 extmod/{btree*,framebuf*,uheapq*,ure*,uzlib*}.py)
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  unix-port-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix deplibs
        make ${MAKEOPTS} -C ports/unix
        make ${MAKEOPTS} -C ports/unix test
        (cd tests && MICROPY_CPYTHON3=python3 MICROPY_MICROPYTHON=../ports/unix/pycopy ./run-perfbench.py 1000 1000)
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  unix-port-with-mbedTLS-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix MICROPY_SSL_MBEDTLS=1 MICROPY_SSL_AXTLS=0
        make ${MAKEOPTS} -C ports/unix MICROPY_SSL_MBEDTLS=1 MICROPY_SSL_AXTLS=0 test RUN_TESTS_EXTRA="-e ussl_basic"

  unix-port-micropython-dev:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix dev
        make ${MAKEOPTS} -C ports/unix dev_test

  unix-nanbox-float-port-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    - run: |
        sudo dpkg --add-architecture i386
        sudo apt-get update -y -qq
    # install
    - run: |
        sudo apt-get install gcc-multilib libffi-dev:i386
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix deplibs
        make ${MAKEOPTS} -C ports/unix nanbox
        make ${MAKEOPTS} -C ports/unix VARIANT=nanbox test_full || travis_terminate 1
        make ${MAKEOPTS} -C ports/unix clean
        make ${MAKEOPTS} -C ports/unix CFLAGS_EXTRA="-DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_FLOAT"
        make ${MAKEOPTS} -C ports/unix test
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  unix-stackless-port-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} -C ports/unix deplibs
        make ${MAKEOPTS} -C ports/unix CFLAGS_EXTRA="-DMICROPY_STACKLESS=1 -DMICROPY_STACKLESS_STRICT=1"
        make ${MAKEOPTS} -C ports/unix test

  unix-port-with-clang:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} CC=clang -C mpy-cross
        make ${MAKEOPTS} -C ports/unix submodules
        make ${MAKEOPTS} CC=clang -C ports/unix
        make ${MAKEOPTS} CC=clang -C ports/unix test || travis_terminate 1
        make ${MAKEOPTS} -C ports/unix clean
        make ${MAKEOPTS} -C ports/unix CC=clang CFLAGS_EXTRA="-DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_FLOAT"
        make ${MAKEOPTS} -C ports/unix CC=clang test
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  unix-port-with-sys-settrace-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/unix MICROPY_PY_BTREE=0 MICROPY_PY_FFI=0 MICROPY_PY_USSL=0 CFLAGS_EXTRA="-DMICROPY_PY_SYS_SETTRACE=1" test || travis_terminate 1
        make ${MAKEOPTS} -C ports/unix clean
        make ${MAKEOPTS} -C ports/unix MICROPY_PY_BTREE=0 MICROPY_PY_FFI=0 MICROPY_PY_USSL=0 CFLAGS_EXTRA="-DMICROPY_STACKLESS=1 -DMICROPY_STACKLESS_STRICT=1 -DMICROPY_PY_SYS_SETTRACE=1" test
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  minimal-unix-port-build-and-tests:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # script
    - run: |
        make ${MAKEOPTS} -C ports/unix minimal
        (cd tests && MICROPY_CPYTHON3=python3 MICROPY_MICROPYTHON=../ports/unix/pycopy-minimal ./run-tests.py -e exception_chain \
          -e self_type_check -e subclass_native_init -e subclass_native6 -e class_slots_ -d basics \
          -e subclass_exception -e subclass_list -e subclass_tuple)
    - if: ${{ failure() }}
      run: |
        tests/run-tests.py --print-failures

  windows-port-build-via-mingw:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install gcc-mingw-w64
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/windows CROSS_COMPILE=i686-w64-mingw32-

  esp32-ESP-IDFv3-port-build:
    if: false
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install python3-pip python-serial
        sudo pip3 install 'pyparsing<2.4'
        curl -L https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz | tar zxf -
        echo "PATH=$(pwd)/xtensa-esp32-elf/bin:$PATH" >> $GITHUB_ENV
        git clone https://github.com/espressif/esp-idf.git
        echo "IDF_PATH=$(pwd)/esp-idf" >> $GITHUB_ENV
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        git -C esp-idf checkout $(grep "ESPIDF_SUPHASH_V3 :=" ports/esp32/Makefile | cut -d " " -f 3)
        git -C esp-idf submodule update --init components/json/cJSON components/esp32/lib components/esptool_py/esptool components/expat/expat components/lwip/lwip components/micro-ecc/micro-ecc components/nghttp/nghttp2 components/nimble components/bt
        (cd esp-idf/components/mbedtls/; rm -rf mbedtls; git clone -b mbedtls-2.16.5-idf-pycopy https://github.com/pfalcon/mbedtls/)
        (cd esp-idf/components/mbedtls/mbedtls; git log -n1)
        make ${MAKEOPTS} -C ports/esp32 submodules
        make ${MAKEOPTS} -C ports/esp32

  esp32-ESP-IDFv4-port-build:
    if: false
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install python3-pip python-serial
        sudo pip3 install 'pyparsing<2.4'
        curl -L https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd64.tar.gz | tar zxf -
        echo "PATH=$(pwd)/xtensa-esp32-elf/bin:$PATH" >> $GITHUB_ENV
        git clone https://github.com/espressif/esp-idf.git
        echo "IDF_PATH=$(pwd)/esp-idf" >> $GITHUB_ENV
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        git -C esp-idf checkout $(grep "ESPIDF_SUPHASH_V4 :=" ports/esp32/Makefile | cut -d " " -f 3)
        git -C esp-idf submodule update --init components/bt/controller/lib components/bt/host/nimble/nimble components/esp_wifi/lib_esp32 components/esptool_py/esptool components/lwip/lwip
        (cd esp-idf/components/mbedtls/; rm -rf mbedtls; git clone -b mbedtls-2.16.5-idf-pycopy https://github.com/pfalcon/mbedtls/)
        (cd esp-idf/components/mbedtls/mbedtls; git log -n1)
        make ${MAKEOPTS} -C ports/esp32 submodules
        make ${MAKEOPTS} -C ports/esp32

  nrf-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo add-apt-repository -y ppa:team-gcc-arm-embedded/ppa
        sudo apt-get update -qq || true
        sudo apt-get install gcc-arm-embedded
        arm-none-eabi-gcc --version
    # script
    - run: |
        ports/nrf/drivers/bluetooth/download_ble_stack.sh s140_nrf52_6_1_1
        make ${MAKEOPTS} -C ports/nrf submodules
        make ${MAKEOPTS} -C ports/nrf BOARD=pca10040
        make ${MAKEOPTS} -C ports/nrf BOARD=microbit
        make ${MAKEOPTS} -C ports/nrf BOARD=pca10056 SD=s140
        make ${MAKEOPTS} -C ports/nrf BOARD=pca10090

  bare-arm-and-minimal-ports-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    - run: |
        sudo dpkg --add-architecture i386
        sudo apt-get update -y -qq
    # install
    - run: |
        sudo apt-get install gcc-multilib libffi-dev:i386 gcc-arm-none-eabi libnewlib-arm-none-eabi
        gcc --version
        arm-none-eabi-gcc --version
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/bare-arm
        make ${MAKEOPTS} -C ports/minimal CROSS=1 build/firmware.bin
        ls -l ports/minimal/build/firmware.bin
        tools/check_code_size.sh
        mkdir -p ${HOME}/persist
        if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then cp ports/minimal/build/firmware.bin ${HOME}/persist/; fi

  cc3200-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi
    # script
    - run: |
        make ${MAKEOPTS} -C ports/cc3200 BTARGET=application BTYPE=release
        make ${MAKEOPTS} -C ports/cc3200 BTARGET=bootloader  BTYPE=release

  samd-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi
    # script
    - run: |
        make ${MAKEOPTS} -C ports/samd submodules
        make ${MAKEOPTS} -C ports/samd

  teensy-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi
    # script
    - run: |
        make ${MAKEOPTS} -C ports/teensy

  powerpc-port-build:
    runs-on: ubuntu-18.04
    steps:
    - name: Clone
      uses: actions/checkout@v2
    - name: Add ~/bin:~/.local/bin to PATH
      run: |
        echo ~/bin >> $GITHUB_PATH
        echo ~/.local/bin >> $GITHUB_PATH

    # install
    - run: |
        sudo apt-get install gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross
    # script
    - run: |
        make ${MAKEOPTS} -C mpy-cross
        make ${MAKEOPTS} -C ports/powerpc UART=potato
        make ${MAKEOPTS} -C ports/powerpc UART=lpc_serial


================================================
FILE: .gitignore
================================================
# Compiled Sources
###################
*.o
*.a
*.elf
*.bin
*.map
*.hex
*.dis
*.exe

# Packages
############

# Logs and Databases
######################
*.log

# VIM Swap Files
######################
*.swp

# Build directories
######################
build/
build-*/

# Test failure outputs
######################
tests/results/*

# Python cache files
######################
__pycache__/
*.pyc

# Customized Makefile/project overrides
######################
GNUmakefile
user.props

# Generated rst files
######################
genrst/

# MacOS desktop metadata files
######################
.DS_Store


================================================
FILE: .gitmodules
================================================
[submodule "lib/axtls"]
	path = lib/axtls
	url = https://github.com/pfalcon/axtls
	branch = micropython
[submodule "lib/libffi"]
	path = lib/libffi
	url = https://github.com/atgreen/libffi
[submodule "lib/lwip"]
	path = lib/lwip
	url = https://github.com/lwip-tcpip/lwip.git
[submodule "lib/berkeley-db-1.xx"]
	path = lib/berkeley-db-1.xx
	url = https://github.com/pfalcon/berkeley-db-1.xx
[submodule "lib/stm32lib"]
	path = lib/stm32lib
	url = https://github.com/micropython/stm32lib
	branch = work-F4-1.13.1+F7-1.5.0+L4-1.3.0
[submodule "lib/nrfx"]
	path = lib/nrfx
	url = https://github.com/NordicSemiconductor/nrfx.git
[submodule "lib/mbedtls"]
	path = lib/mbedtls
	url = https://github.com/pfalcon/mbedtls.git
[submodule "lib/asf4"]
	path = lib/asf4
	url = https://github.com/adafruit/asf4
[submodule "lib/tinyusb"]
	path = lib/tinyusb
	url = https://github.com/hathach/tinyusb
[submodule "lib/mynewt-nimble"]
	path = lib/mynewt-nimble
	url = https://github.com/apache/mynewt-nimble.git
[submodule "lib/btstack"]
	path = lib/btstack
	url = https://github.com/bluekitchen/btstack.git
[submodule "lib/nxp_driver"]
	path = lib/nxp_driver
	url = https://github.com/hathach/nxp_driver.git
[submodule "lib/libhydrogen"]
	path = lib/libhydrogen
	url = https://github.com/jedisct1/libhydrogen.git
[submodule "lib/pico-sdk"]
	path = lib/pico-sdk
	url = https://github.com/raspberrypi/pico-sdk.git


================================================
FILE: ACKNOWLEDGEMENTS
================================================
The MicroPython project was proudly and successfully crowdfunded
via a Kickstarter campaign which ended on 13th December 2013.  The
project was supported by 1923 very generous backers, who pledged
for a total of 2320 pyboards.

Damien George, the project creator, is grateful to the people
listed below (and others who asked not to be named), whose support
of the project help make the code in this repository what it is
today.  The names appear in order of pledging.

    3 Cliff Senkbeil
    4 MacDefender (http://www.macdefender.org)
   11 Shaun Walker - http://theshaun.com
   12 Robert Joscelyne
   17 Peter Simon, Germany
   18 theNetImp
   21 Eamonn Maguire
   22 Rob Knegjens
   27 Greg, https://www.logre.eu
   28 Rick S
   30 Norman Jaffe (OpenDragon)
   34 UltraBob was here.
   35 Geoffrey R. Thompson
   36 MrAtoni
   40 Proud to be a backer of Micro Python, Phil C. United Kingdom.
   42 www.babybadger.co.uk
   45 Mert
   46 Miles Cederman-Haysom
   47 unixarmy.com
   52 Proud to be here! Tonton Pommes
   54 Espen Sae-Tang Ottersen
   56 howang.hk
   58 Innovatology
   59 Marzsman
   63 Tristan A. Hearn
   64 Patrick Clarke
   65 Bryan Lyon
   70 Craig Burkhead
   72 Dr Igor Vizir
   73 Steve Iltis, @steven_iltis
   79 www.giacomo.inches.ch
   80 Alexander Gordeyev
   81 Steve Conklin www.ai4qr.com
   83 n1c0la5
   84 Matthew R. Johnson
   86 Jeppe Rishede
   87 Kirill Zakharenko - Russian Federation
   88 beltwaybureau.com
   93 felix svoboda
   95 Smart
   96 Stephen Goudge
   97 Dr Richard Whitaker, www.drrich.co.uk, UK
   99 Tim Robertson
  101 Rudy De Volder, www.devolder.be,  Belgium
  104 August H., Wien
  107 Jason Hsu
  109 dstensnes
  110 Joe Reynolds (professorlamp)
  112 Michael Davies (AU) - @butterparty @spaceduststudio
  113 Jim Kirk, Westborough, MA, USA
  114 yfnt
  117 Even when it looks like someone is reaching for blue sky. Some days you just have to blindly support that dreamer.
  118 G. Todd Vaules - todd.vaules.net
  122 Gunnar Wehrhahn
  124 Eric Masser
  126 Vaibhav Sagar
  128 Eric Wallstedt
  129 Richard G Wiater
  130 Toby Nance
  132 Michael Fogleman
  133 Snepo Research www.snepo.com Gary says Hi!
  137 nic gihl
  138 Felix Yuan
  139 mmhanif
  141 James Snyder
  144 roddyr2
  146 Richard Jones <http://mechanicalcat.net/richard>
  147 Jon-Eric Simmons
  148 Craig "The Coder" Dunn
  150 Jesse S (USA)
  151 Matt I. - github.com/pengii23
  153 Seth Borders - sethborders.com
  155 David Zemon (http://david.zemon.name)
  156 Garry DuBose
  157 Apeiron Systems
  158 BAR
  160 Jakob Hedman
  163 Bryan Moffatt
  165 Moises Lorenzo, Tenerife Isl.
  166 Erik H.
  170 Peter George
  171 Nikolas Akerblom
  174 Chris (@chassing)
  176 Wei-Ning Huang
  178 Edd Barrett, UK
  179 Alec Langford
  180 Shunya Sato
  181 Serge GUILLAUME
  183 Dr. Ross A Lumley
  184 Dorian Pula
  189 Tendayi Mawushe
  190 SDanziger
  191 Sean O'Donnell
  192 Kevin McLaughlin
  193 Tommy Allen
  194 Beedlebub
  195 Brad Howes
  196 Mike B
  200 Aleš Bublík
  202 David Dever
  206 Danilo Bargen, https://dbrgn.ch/
  209 Brendan Curran-Johnson
  210 Piotr Maliński http://www.rkblog.rk.edu.pl
  211 SEE Co. - Science, Engineering and Education Co. - www.seeco.us
  215 Richard Lancaster
  218 Bilbo Baggins from Middle Zealand
  219 Ollie Guy
  221 Shlomo Zippel
  222 Andy Kenny
  223 Double-O-ren
  226 For the pleasure of @tinproject
  229 mfr
  230 Eric Floehr
  232 Matt from Adp.EU.Com
  234 Joanna Tustanowska & Wojciech Bederski
  235 Eric LeBlanc
  236 Siggy , Belgium
  238 Mauro De Giorgi
  239 Belug http://belug.ca/
  241 Arik Baratz - @arikb
  242 Zvika Palkovich
  243 Yves Dorfsman - yves at zioup dot com
  244 Asad Ansari, Canada
  245 Brandon Bennett
  246 Christoph Bluoss
  248 Konstantin Renner
  249 Abtin Afshar
  250 A. Soltani
  251 Jon Mills
  256 NoisyGecko
  258 Lothilius
  262 Jay Deiman
  263 flo at twigs dot de
  265 _Mark_ eichin at thok dot org
  267 Adrian Astley
  268 aknerats[::-1]
  271 @robberwick
  272 Daniele Lacamera
  273 Thanks to M. Derome
  275 Paul Paradigm, Australia
  276 lyuden
  277 www.SamuelJohn.de
  279 John Pinner, funthyme at gmail dot com
  280 Michael and Vicky Twomey-Lee
  281 Kenneth Ljungqvist
  292 Karin Beitins, Australia
  295 Nick Johnson
  297 Chris Cole  U.K.
  298 The planet Andete is famous for its killer edible poets.
  302 Patrick B (aged 11)
  304 Chris Mason, Australia
  306 Steven Foster
  308 Pat Fleury, Andrew Hodgson
  311 @moneywithwings
  313 Neil Stephen
  314 Cory A. Johannsen
  315 Massimo Di Stefano - geofemengineering.it - Italy
  317 James Luscher, Madison, Wisconsin, USA
  319 Lindsay Watt
  320 Nils Fischbeck
  324 Peter J. Farrell - Maestro Publishing, LLC - Minneapolis, MN, USA
  325 Alex Willmer (@moreati)
  328 T.R. Renicker
  329 William B. Phelps
  330 David Goodger
  331 Viktoriya Skoryk
  334 JR Rickerson
  336 Keven Webb
  338 www.hcfengineering.com
  341 Larry Lab Rat, Shalford.
  342 Rob Hetland
  343 Brush Technology (NZ)
  346 Jason Fehr
  347 Olivier Vigneresse
  348 Nano Gennari, me at nngn dot net, Brasilia, Brazil
  352 Petr Viktorin (http://encukou.cz)
  355 Karijn Wessing (IN2TECH)
  356 Arsham Hatambeiki
  358 Alvaro Rivera-Rei
  360 Nolan & Theo Baldwin
  362 Tyler Baker, USA
  363 Russell Warren (Canada)
  365 Aaron Peterson
  366 Al Billings
  367 Jeremy Herbert
  372 Dimitrios Bogiatzoules, www.bogiatzoules.de, Germany
  375 Paul Nicholls
  376 Robert F. Brost
  378 Aideen (Cambridge, UK) - Very happy backer and follower of this great project
  379 Caelan Borowiec
  380 Caroline, Canada - carolinesimpson.ca
  382 Rikard Anglerud
  383 Scott Will
  384 Jussi Ylanen
  385 @joshbapiste
  387 spongefile
  389 Keith Baston
  392 Holger Steinlechner
  394 sent by State mail service
  398 N.Pearce, Wells UK - @t #ashtag UK
  399 Paid up & stood back;;
  401 Mike M. Tempe, AZ, USA
  406 Brandon Jasper
  407 Dan Mahoney
  411 George Bushnell, for use in CPSS
  412 Per Konradsson
  413 Supported by afinzel
  417 Tom Igoe
  418 Jonathan Saggau
  419 Chris Allick http://chrisallick.com
  420 joshuaalbers.com
  423 B. Adryan
  432 Tim Fuchs
  433 steven antalics
  434 BezouwenR
  435 Andrew Addison
  436 Hubert de L'arrêtdubus - France
  437 Salim Fadhley
  438 Ben Hockley
  439 Geoffrey Webb
  441 Vladimir Mikulik
  442 7 Elements & Troy Benjegerdes - hozer at hozed dot org
  443 Pashakun
  444 Craig Barnes, UK
  445 Andres Ayala
  446 Stonly Baptiste (urban.us)
  448 Brian Conner
  452 Jeremy Blum (jeremyblum.com)
  454 Pebble Technology
  455 Andrew
  456 Jeffrey Allen Randorf, PE PhD
  457 J.A.Zaratiegui a.k.a. Zara
  459 simon.vc and hack.rs
  462 La vida es para vivirla y ser feliz, de esa forma damos gracias por tan gran regalo!
  463 Alistair Walsh
  469 fun, Ireland
  474 martijnthe.nl
  479 Andreas Kobara
  486 Armanda
  487 Richard Myhill
  488 Ash Gibbons
  489 Glenn Franxman HackerMojo.com
  492 Russell Durrett
  494 Pieter Ennes
  495 Tom Gross, Washington D.C.
  496 Mark Schafer
  497 Sandro Dutra, Brazil
  500 Can Bulbul
  501 Chih-Chun Chen, http://abmcet.net/Chih-Chun_Chen/home.html
  502 Lost Property Bureau Ltd
  503 skakz
  504 Chad Cooper
  505 Makhan Virdi, mlvirdi.com, InfinityXLabs.com, USA
  506 Glenn Ruben Bakke, Norway
  507 Alasdair Allan
  509 dlbrandon
  511 Dr J Garcia, Sweden
  513 Tiago Vieira
  518 Team ME
  519 OBD Solutions (http://www.obdsol.com)
  520 @pors
  521 Joo Chew Ang
  523 garbas
  526 http://epoz.org/
  527 J. Sabater
  530 José-María Súnico
  537 Erfundnix
  538 Tontonisback Belgium
  539 Greg Benson, Professor, University of San Francisco
  542 Thomas Sarlandie aka @sarfata
  545 JanTheMan kickstarter at embedded-systems dot craftx dot biz
  546 Chuhan Frank Qin
  549 Peb R Aryan, Indonesia
  553 Johan Deimert, http://www.ldchome.org
  555 Conny Sjöblom / Finland
  558 AndyboyH, UK
  559 Anthony Lupinetti
  561 Travis Travelstead
  566 Siegfried Boyd Isidro-Cloudas
  567 G. Schroeer
  568 mmths, http://randomaccessmemory.at/
  570 Andy Miller - NZ..
  571 Rodolfo Lara from México
  572 Gary Patton Wolfe
  574 Vend-lab Russia
  578 Super Job! FXF
  579 Oliver Heggelbacher, www.kickdrive.de
  581 James Husum
  585 David Lodge
  587 Tess
  592 PR Taylor
  593 6306665119
  598 Jorg Bliesener, Brazil - www.bliesener.com
  602 Rodrigo, Germany
  605 Tanja Kaiser, www.mrsminirobot.de, Germany
  606 Franco Ponticelli - www.weblob.net
  608 Piet Hoffman
  609 Paul Cunnane
  610 Balazs Kinszler
  611 Nathan Ramella (synthesizerpatel)
  612 Tyler Jones (squirly)
  613 James Saffery
  614 Christoffer Sjowall
  615 Iman Shames
  616 Thomas Dejanovic, Australia.
  618 Tom Alker
  619 Matt Davis, UK
  621 Design for the real world! @UXnightingale
  622 Budd Van Lines
  624 __Gio__
  628 Chew Kok Hoor
  630 Santiago Alarcon, Thanks Damien for Micro Python
  632 hardtoneselector
  633 supported by Chris Bunker
  634 Sebus - France
  635 Mechanical Men Sweden
  638 A Fellow Electronics Enthusiast
  639 Stan Seibert
  642 Dave Curtis
  652 Sebastian Ross - www.ross.sx
  653 Julien Goodwin
  654 Reinoud de Lange, the Netherlands
  655 carl beck
  659 John Gaidimas
  660 Tyler Eckwright
  661 Keith Rome (Wintellect - http://www.wintellect.com/blogs/krome)
  662 Kashev Dalmia - kashevdalmia.com
  666 Alberto Martín de la Torre
  667 Niels Kjøller Hansen
  668 pmst - Italy
  671 Sergio Conde Gómez (skgsergio)
  672 Micromint, www.micromint.com
  673 Xie Yanbo, China
  675 Thank you
  677 Kacem Ben Dhiab
  679 CornishSteve
  680 Daniel Wood, Warrington, UK.
  682 Greg "GothAck" Miell
  688 Matt Williams & Sam Carter
  691 Frédéric Lasnier
  694 Tim K
  697 Joshua Clarke, Guernsey!
  700 daynewaterlow.com
  703 Scott Winder
  704 @DepletionMode
  707 Maria Yablonina
  710 Roger Hausermann
  713 Crazy_Owl
  714 mike hardin usa
  717 C. Towne Springer
  719 ursm gruesst euch
  720 madnis
  727 http://itay.bazoo.org
  729 @0atman
  730 Jerry Gagnon
  732 Emmanuel Boyer
  738 suspenders
  739 Roland Frédéric - http://www.creativeconvergence.be/
  742 @herchu
  745 Riley Lundquist
  746 Go LOBOS
  749 João Alves, http://jpralves.net, Portugal
  751 Nick Porcino
  753 Jack E. Wilkinson, Texas, USA
  754 @rcarmo on Twitter/Github
  758 Matt Manuel, www.mattmanuel.com
  759 Padraic D. Hallinan
  760 Rob Fairbairn
  763 Zac Luzader
  768 Sam Shams
  773 terje nagel, dk
  775 Luc LEGER
  782 Luis M. Morales S.
  785 Charles Edward Pax
  786 Daryl Cumbo
  787 Zephyris13
  788 Wonderful project.
  792 Sylvain Maziere
  794 Milen
  795 Robert Mai, Germany, hsapps.com
  797 Angelo Compagnucci angelo.compagnucci at gmail dot com
  801 Long Live Micro Python, airtripper.com
  804 António M P Mendes
  805 Marc Z.
  809 Anoyomouse
  810 in memory of Dan J. Schlacks III
  817 Peter Froehlich - http://werk-schau.blogspot.com
  818 Ahmad Albaqsami
  821 Peter Lavelle (http://solderintheveins.co.uk)
  822 Manuel Sagra de Diego http://manuelsagra.com/
  823 Sam Wilson
  824 Khalis
  825 c't Hacks
  828 Georg Bremer
  830 Ward en Sanne (WenS)
  832 javacasm http://www.elcacharreo.com Spain
  833 mctouch
  835 Bruce Schreiner @ www.stevenscollege.edu/electronics
  836 Jonas
  839 Nick Ludlam
  840 Patrick_Law, UK
  843 Alex Crouzen, UK
  848 Ben Banfield-Zanin
  850 Wouter Slegers, Your Creative Solutions <http://www.yourcreativesolutions.nl/>
  851 Fred Zyda
  853 Gianfranco Risaliti
  854 Ron Hochsprung
  858 Vianney Tran
  862 Aaron Mahler - http://halfpress.com
  868 Stephan Schulte, Germany
  869 Kenneth Henderick
  872 DaveP (www.davepeake.com)
  873 Markus Schuss, Austria
  876 Kyle Gordon, http://lodge.glasgownet.com
  877 Joseph Gerard Campbell
  881 Thanks for the board. Good luck to you. --Jason Doege
  883 Garet McKinley
  884 www.magtouchelectronics.co.za
  889 Ben Johnson
  896 Ruairi Newman
  897 Gemma Hentsch
  902 Alexander Steppke
  906 Stephen Paulger
  907 Martin Buhr, http://lonelycode.com, UK
  912 Dale Drummond
  913 Go Utah State
  918 Jarturomartinez, Mexico
  921 Barry Bourne Micro Python Supporter
  923 Andreas Bolka
  927 Thanks Susan, Tom, Paul, and Mark!
  935 http://wall-y.fr
  937 Eero af Heurlin, Finland, https://github.com/rambo/
  938 Guillaume DAVY
  941 Alexander Steffen
  942 Janne "Lietu" Enberg
  945 Luca 'loop' de Marinis - https://github.com/loop23
  946 Andras Veres-Szentkiralyi http://techblog.vsza.hu/
  948 Florian flowolf Klien (http://blog.flo.cx)
  949 nickyb
  951 Mark Walland, England
  952 Ian Barfield
  953 Andrew Murray, UK - eat my code - http://links.bloater.org/micropython
  955 Kyle Howells
  956 Chris Cadonic
  957 LCS, USA: scripting___/||\===/||\___embedded
  958 Sven Wegener
  963 Kean Electronics http://www.kean.com.au/
  964 Beandob
  965 Don't feed the troll.
  966 Alexis Polti (http://rose.eu.org)
  969 Scottyler
  971 The Dead's Own Jones
  974 Evseev Alexey
  976 Arnaud
  978 Jannis Rosenbaum
  980 paul at fontenworks dot com
  981 John Griessen ecosensory.com USA
  982 Tobias Ammann
  983 Simon V.
  984 JaWi
  987 Ergun Kucukkose
  989 Jonathan Piat France
  990 Steve Pemberton
  993 Aaron Robson
  994 Antoine Authier
  995 Thomas Winkler, Austria
  997 Jannes mit dem dicken Pannes
 1001 Joe Baker
 1002 Jon Hylands, Canada (blog.huv.com)
 1004 Mike Asker (aka mpymike)
 1007 Charles V Bock - Charles at CharlesBock dot com
 1010 Remember June 4th, 1989
 1012 Stuart Marsden
 1013 Herbert Graef, Stuttgart
 1014 Arthur P, USA
 1015 John Hall & Jeremy Armijo
 1017 Luciano Ramalho, Python.pro.br
 1018 Quentin Stafford-Fraser
 1019 Marcin Walendzik Ratingpedia.eu
 1020 Wincent Balin
 1022 rbp
 1024 Frank Carver ( www.frankcarver.me )
 1026 Peter Farmer, http://geekytronics.com/
 1029 Rubens Altimari
 1033 Sebastian
 1035 Gerli, Estonia
 1036 Maurin, Switzerland
 1037 Kevin Houlihan (http://crimsoncookie.com)
 1039 Jon Green of Adeptium Consulting (www.adeptium.com)
 1040 Eirik S. Mikkelsen
 1042 Jogy Sam
 1043 GGG
 1045 Sean E Palmer, epimetheon.com
 1049 Greg O'Drobinak, USA
 1050 RaptorBird Robotics Inc
 1051 Desmond Larsen-Rosner
 1056 Crusty
 1057 ArthurGuy.co.uk
 1059 Melissa-Ivan, 14/04/2013
 1064 Enrico Spinielli, https://github.com/espinielli
 1066 Dave Snowdon
 1067 Martin P. Hellwig
 1070 Carl Clement
 1074 Paul Taylor
 1076 Pandemon
 1082 Thrilled to support Damien's effort to put this together: there will no doubt be many applications for this effort and many enhancements and ports..
 1083 Oddvar Lovaas
 1090 BenScarb
 1093 Www.qualnetics.com
 1094 Manny Muro - Now Python can RULE from below as it does from above! PYTHON RULES!!! :)
 1095 Michael Grazebrook
 1098 Mark Shuttleworth, UK
 1106 wyzzar
 1110 Luca Zanetti
 1112 Carl A Fagg
 1115 Adam Klotblixt
 1118 Breawn
 1122 pippyisatruck
 1124 Andrew "ClothBot" Plumb
 1126 Realise the projects your heart beats for! Sven Wiebus (http://wiebus.tumblr.com)
 1128 Citius Systems
 1130 Benjamin & Reuben Fuller
 1131 aglimme
 1133 John Becker
 1135 Mark Drummond
 1138 JHProuty
 1141 Lars Olsson Sweden
 1144 daisuke, http://dkpyn.com
 1145 Chris Pawley - http://www.pawley.co.uk/honey/
 1147 Daniel from EzSBC.com
 1149 New York Mortgage Exchange NYME.COM
 1150 Herb Winters,USA,www.ecs87.com
 1151 renttu
 1159 Joe Rickerby
 1160 john guthrie
 1161 PUBLIC
 1163 dobra-dobra
 1164 Neil Reynolds, Staffordshire
 1165 GEHoward
 1166 Frank Delporte
 1167 Bauer Brauner Enterprise
 1168 Francisco Mardones
 1169 Ryan Kirkpatrick, @rkirkpatnet, http://rkirkpat.net/
 1170 Krister Svanlund
 1174 Derek Patton Pearcy
 1177 Roger Olsson, Sweden
 1179 Jan-Niklas Braak
 1180 Pete boy
 1181 MilenX
 1182 Ubbe Larsson
 1183 Simon Freethy
 1184 Daniel Andersson
 1187 Daniele Procida
 1190 Adrian Duke
 1191 Pauline Middelink
 1193 Ted Gueniche
 1197 Craig Knott, University of Queensland, Australia
 1198 Jamie Mackenzie - Australia
 1199 ravenoak
 1200 LucaP Luni Italy
 1203 jacanterbury
 1205 Bleachin, www.rhyspowell.com
 1207 Supported by Andrew Maier via Kickstarter
 1208 Rob, http://robjstanley.me.uk
 1210 George Gingell
 1213 Chris Elleman
 1215 Jack Barham - @jackbarham - http://jackbarham.com
 1221 Kyle Dausin
 1222 Ben Lucker
 1225 Gareth cheesewhisk Evans
 1226 Jacob Forsyth
 1227 Olof S - Germany
 1231 Brasil
 1233 glaslos
 1234 Will Cooke - http://www.whizzy.org
 1236 Andrew Wright - Canada
 1239 Resourceful Robin
 1240 Jay O'Neill @jayoneilluk
 1241 Dennis G Daniels
 1244 J. Peterson (www.saccade.com)
 1245 Chipaca
 1246 Nicko van Someren
 1247 C. Cumbaa, Canada
 1248 Gyro Gearloose was here
 1249 Magnus Ericmats, Sweden
 1253 Steve Wilson
 1256 Adrian Bullock
 1258 Sarevian & Longwall
 1261 Skipp Savage
 1265 Eric Nahon
 1267 Stuart Dallas / 3ft9 Ltd
 1270 USA
 1271 Oliver
 1277 jeffmcneill.com
 1278 alnjxn
 1283 Marc Liyanage
 1285 Christian Lange
 1286 Bryant Paul Umali from the Philippines
 1290 W.B.Hill, Norwich, UK
 1292 Michael Karliner
 1293 Oli Larkin
 1303 A. Pockberger
 1304 dc - bagel
 1305 Thadeus Arnel
 1308 technoweenie
 1309 Liam Welsh
 1313 Per Thorell, Sweden
 1314 peterlee
 1316 Dustin Mierau
 1317 tech-zen.tv
 1320 Cheers from IDF :)
 1322 www.a-d-k.de
 1323 rixx
 1324 @jlev
 1325 e2e4
 1328 Thomas J. Quinlan, London UK
 1329 Don Bone
 1331 Narayanamurthi
 1333 PGS_Astra-ProjeX_Wilts
 1337 Mark Schulz & Phillip Long, CEIT, The University of Queensland
 1340 Tiegeng (Tim) Ren
 1344 EMR_1344, DE
 1348 Matt Ward, Nottingham
 1351 Rupert
 1352 Cory Li - http://cory.li
 1354 Jim Davies, Brighton, UK
 1355 Jon Watkins, UK
 1356 Thomas, www.bitmix.de
 1359 Markus Gritsch
 1362 Carl H. Blomqvist
 1371 Brian Green
 1374 Ben Merryman
 1375 O'Dea
 1376 Josh Trujillo
 1378 Daniel Halloran
 1379 another_martin
 1383 Thanks for innovating!
 1385 CoderDojo Malahide
 1397 Jacob Z
 1398 Staffan Hillberg
 1399 http://kim.ht
 1402 Can't wait to plug it in!
 1403 Márton Szinovszki
 1405 sellorm says 'Hi!'
 1406 Thomas Provoost
 1411 Clive Freeman
 1412 Norman Thomas
 1415 Javier Llopis
 1417 Ho Man Fai
 1418 Anders Helland
 1421 Richard lavanture
 1425 Alan Churley, UK
 1426 Robert'); DROP TABLE Students;--unicode is fun!
 1427 Go Illini!
 1430 MicroPy FTW
 1431 Bryan Morrissey, www.browninnovations.com
 1436 Krzysztof Chomski, Poland
 1437 WellAware (USA)
 1441 Tomas Hau
 1443 Paul Way
 1444 Benjamin Anderson
 1445 Andrew Bates
 1446 Davide Di Blasi
 1451 Mathias Fischer
 1453 Drexore, NL
 1454 Marek Mroz
 1455 Mark Easley Jr. - USA
 1457 Joshua Warren
 1459 Rohan Menon
 1460 Paul Sokolovsky
 1461 Chris Foresman, @foresmac
 1475 USI
 1478 Chris Emerson
 1479 Ph. Truillet, France, http://www.irit.fr/~Philippe.Truillet
 1480 WAB3
 1481 Lucidologia.pl
 1482 Ed Hardebeck | www.hardebeck.us
 1484 Ludovic Léau-Mercier, www.coriolys.org, France
 1487 BLUEBOBO
 1488 Berno Kneer, Germany
 1491 Julian Eccli
 1494 Batman
 1495 Manuel Núñez Sánchez
 1496 Millie and Sadie Smith
 1499 Ronald Eddy
 1500 SynShop Las Vegas
 1503 This is really cool.  - Jack Conway
 1505 Victor Suarez, Argentina
 1507 Renesas Electronics America
 1509 Team
 1513 A. Lamborn KD0ZFY
 1514 olifink
 1520 mike at sustainable-opportunities dot com
 1521 luis almeida, Teresina - Brazil
 1523 Muhammad Jamaludin
 1524 Sdlion
 1525 Charles Rogers
 1526 Diego M. Aires, Brazil
 1529 muwatt.com
 1532 Proud supporter of microPython
 1535 Jesus J. de Felipe
 1536 slminneman.com -- Wow, an acknowledgement?  ...really?
 1538 Mike (Meski) Smith
 1541 Piero Steinger
 1545 Alex Rembish (https://rembish.org)
 1551 Sergey [BuG2BuG] Sobko, Russia
 1553 Serge Krier
 1556 Luuk Derksen
 1561 Jimmy Caille (CH)
 1562 Jesús Leganés Combarro "piranna"
 1564 Viacheslav Olegovich Savitskiy
 1565 Jamie Whitehorn
 1567 Bagge Carlson
 1568 Milan Cermak
 1569 Matthias Lemp
 1570 BOFG
 1571 Johan Elmerfjord, Sweden
 1573 Matt Finch • fnch.io
 1574 Jean-Francois Paris
 1575 Florian Franzen, Germany
 1576 doganowscy.com
 1579 Stan Yamane
 1580 William Cirillo
 1583 David Dibben
 1584 Nicolás, Amelia, Luli y alecu
 1586 Alex W
 1591 Livia Maria Dias Tavares
 1593 d freymann chicago il & his australian shepherd jaldi
 1594 Barnstorm Studio, LLC
 1595 Sashi Penta
 1597 tflhyl
 1598 clacktronics
 1599 j3hyde
 1600 Rik Williams
 1602 Valeriy Van, Ukraine, w7software.com
 1603 Louis Taylor - https://github.com/kragniz
 1606 What's the derivative of (6.022 x 10^23)x? That's A(n)mol
 1611 Bailey & Brayden Yoong Policarpio
 1613 William Bettridge-Radford
 1617 Urbane Jackson
 1618 Henius
 1622 Alister Galpin, New Zealand
 1623 Marco Bertoldi
 1627 Julian Pistorius
 1628 www.neotral.com
 1632 ChrisB
 1633 Norbini
 1634 Eric Rand at Brownhatsecurity.com
 1636 Benjamin Eberle
 1637 MG Projects bvba, Geert Maertens, Belgium
 1640 Robson dos Santos França (Brasil)
 1642 Udine
 1643 Simon Critchley
 1644 Sven Haiges, Germany
 1646 "silicium" ("silicium_one", if "silicium" is busy)
 1648 Andy O'Malia, @andyomalia
 1650 RedCamelApps.com
 1652 Christoph Heer
 1653 AlisonW
 1654 Yannick Allard (Belgium) supported this project.
 1655 Andy Pointon, UK
 1660 Diego Cantalapiedra
 1664 Pepillou
 1670 Sonny Cannon
 1671 Rick W
 1672 David Chan, USA
 1674 Philip Rowlands
 1675 dieresys
 1676 T.R. Fullhart
 1683 Oleg Sidorkin
 1686 Tatsuro Yasukawa
 1687 Brad Smith, Somerville MA, USA
 1688 kristoffervikhansen.com
 1690 Nice Project de W6AKB Alan Biocca
 1691 Hiss Hisss Hissss Hiss Hiss Hissssssss
 1692 Alan Kennedy
 1698 ElChessu
 1701 Flower Craswell
 1702 David Fontenot
 1707 To innovation & creativity. Tony J Winter
 1708 Joakim Hentula
 1711 Michael Schaefer
 1713 Brody Radford ~ www.brodyradford.com
 1714 Charles Durrant
 1715 Rodrigo S.
 1718 Dima Shylo
 1719 Jiahao James Jian
 1722 Helen Wilson, Christ's Hospital
 1726 Martin Aule, http://hackest.org/
 1727 İsmail Etem Tezcan, Rasteda
 1728 Charlie "Blackfrog" Sizer
 1729 Matloob Qureshi
 1730 Travis Saul http://travissaul.com
 1731 Michael Cavins
 1733 Peter Köllensperger, Norway
 1734 Anne Harrison
 1736 Peter Bradeen
 1739 Fredrik Luthander
 1740 Nick LaRosa
 1744 Aladuino
 1745 dgrebb
 1746 Truls Unstad
 1748 Jesus Saves
 1750 Andy Stannard (@rockmonkey)
 1751 Daniel Atkinson
 1755 John Potter
 1758 Ian V
 1760 David Leinbach
 1761 nemec-automation.com
 1765 Supported by JoW with Hardwired TCP/IP from www.WIZnet.eu
 1767 misskniss, Boise Idaho. It is our responsibility to code the freedom we want to see in the world.
 1768 Jeff Vahue - Knowlogic Software Corp.
 1769 Pat Molloy
 1770 Greg Maxwell  gregmaxwell-at-mac-dot-com
 1771 Rich Robinson
 1773 Ken Corey @ flippinbits.com
 1782 Acknowledged
 1785 Optimized Tomfoolery
 1791 Nontakan Nuntachit, Thailand
 1794 Rasit Eskicioglu - Canada
 1795 Simon Elliston Ball
 1796 pfh
 1798 John W. C. McNabb
 1799 Frank Sanborn
 1803 Morgan Hough
 1804 Sorcha Bowler
 1805 http://www.WayneKeenan.info
 1806 HBEE, hbee.eu
 1807 Deadlight
 1809 www.danenet.org
 1811 Sergey Nebolsin
 1813 Threv
 1817 dynsne
 1818 David Wright
 1819 John Warren
 1821 I wanted Erlang! (╯°□°)╯︵ ┻━┻
 1825 Howard R Hansen
 1828 Kevin Schumacher
 1833 Matthias Erll, Sweden
 1836 Matt Graham
 1837 thedawn
 1838 Ruby Feinstein
 1839 Gustavo Muñoz (timbergus)
 1840 Ian Paczek
 1841 Köteles Károly, Hungary
 1843 Tobias Sette Ferreira
 1846 x4FF3 <3 microPython
 1847 Enrico Faulhaber (Germany)
 1850 jolan00
 1854 Red Harbinger Inc
 1855 Noman
 1858 @DerLinkshaender
 1863 Jon Woodcock
 1864 Elmo, hakkerikartano.fi
 1865 Imaginals
 1866 Sam Hathaway and Rachel Stevens
 1874 Remo Sanges, SZN, Italy
 1875 Devraj Mukherjee
 1876 an Embedded fan
 1877 Peter Huisers
 1878 Kin-Wai Lee (Malaysia)
 1879 Samuel Hawksby-Robinson
 1881 R. Stock
 1886 Randy of Capistrano street backed Damien's MicroPython!
 1887 Rogério Bulha Siqueira - www.esd-talk.com - Brazil
 1889 NickE is happy to support such a worthy project!
 1892 John Boudreaux
 1894 Riverfreeloader
 1895 Jose Marcelino http://metavurt.net
 1896 T Britto-Borges
 1899 DannyWhitsonUSA
 1904 José Iván Ferrer Ruiz.
 1905 Tom Loredo
 1906 Gregory Perry USA
 1908 josephoberholtzer.com
 1910 Michael Klos, USA
 1912 Adam Mildenberger
 1913 R Anderson
 1914 Nikesh, USA
 1915 Bogdan Chivoiu, Romania
 1916 Scott C. Lemon, USA
 1918 Konstantin Ufimtsev (@KestL)
 1919 Benny Khoo
 1922 Nicci Tofts
 1925 Joshua Coxwell
 1926 Franklin Hamilton
 1928 Peter Korcz
 1929 Leroy Douglas
 1930 A ナルと fan from Nigeria who likes smileys, here's one for good measure  :)
 1931 Kimmo Lahtinen, Finland
 1932 http://staybles.co.uk
 1937 The Olivetti's: Emanuele Laura Nausicaa Sibilla Ettore
 1940 Pascal Hirsch
 1942 cbernander, Sweden
 1944 Enrico M.
 1947 Dinis Cruz
 1949 Jonathan Greig, http://embroidermodder.github.io
 1950 Andy Bower
 1952 Gerard Hickey
 1953 Fabrice BARRAL was here ...
 1955 Pieter Röhling
 1957 uomorando, Italy
 1959 Acacio Cruz

The MicroPython project raised further funds through a second
Kickstarter campaign that was primarily targeted at porting the
code to the ESP8266 WiFi chip.  The campaign ended on 2nd March
2016 and gained the support of 1384 fantastic backers who believed
in the project and the principles of Open Source code.  Those
backers who asked to be named are listed below, with an asterisk
indicating that they also supported the first campaign.

*   1 Gabriel, Seattle
*   2 @robberwick
*   6 Dave Hylands
    7 Les, UK
    8 Ryanteck LTD., UK
   10 karlsruhe, HU
*  11 Turbinenreiter
   13 Ben Nuttall, UK
*  14 Bryan Morrissey, MA, USA
*  15 Jogy, Qatar
*  16 BOB63,IT
   19 ReaBoyd
*  20 Andrew, MK
*  21 chrisq, NO
   22 Pascal RENOU, France
   23 Javier G, ES
   25 Forrest, US
   26 Filip Korling, Sweden
   27 roberthh - Rhineland
*  28 Herbert Graef, Stuttgart, thanking the MicroPython Team for this great project
*  29 johnsonfamily38, UK
   30 CympleCy
   31 OJ, PK
   32 Daniel, SVK
   33 Shabaz Mohammad
*  35 Kenneth Henderick, BE
*  37 Daniel Mouritzen, DK
   39 Torntrousers, UK
*  44 Scanner
   45 Radomir Dopieralski
   46 Nick, UK
*  47 Jon Hylands, Canada
*  48 Ben Barwise Clacktronics
   50 Rob Kent, UK
   52 Carlos Pereira Atencio
   54 Andy, UK
*  55 WMinarik, Canada
   57 Hauffe, Germany
   58 HyperTaz, IT
*  61 Michael Kovacs, AT
   62 Erick Navarro, PE
   69 Karan,US
*  71 Nick B, UK
*  72 Anthony Lister, NZ
*  73 Bryan Lyon
   76 Miguel Angel Ajo,  ES
*  78 Sebastian, Regensburg (GER)
*  80 iv3unm
   81 Thierry BÉNET, FR
   84 Jannis, Germany
   86 Nathan Jeffrey
   88 Cory Benfield, UK
   90 Carlo, IT
*  91 Wojciech Bederski (@wuub)
   92 Steve Holden, UK
   93 Tristan Roddis, UK
   94 Balder, Sweden
*  95 Rhys, UK
   96 Rowan, UK
*  97 Gary Martin, Edinburgh
* 100 Mikael Eiman
* 101 torwag
* 102 Craig Barnes, UK
  103 Andrea Grandi, UK
  105 Piers, UK
* 109 Wayne Keenan
  110 makuk66
  111 Hamine,DZ
  112 Arahavica,JP
* 113 Bill Eubanks, USA
  114 Jonathan, UK
  115 ghickman
* 117 Christian Lange, Germany
  119 Jonty Wareing
  121 TheHetman
  123 Víctor R. Ruiz, Spain
* 124 Laurynas Paukste, Norway
* 125 Taki
  126 André Milette, Canada
* 127 Ron Cromberge,NL
  128 IJ, Thailand
* 130 IGOR VIZIR
  132 Bill Saturno
  134 scibi
  136 Timbo, AU
  137 Raphael Vogel, DE
* 139 jasonkirk, US
  141 Linköping, Sweden
* 142 Dugres
  144 DarioS, UK
  146 NelisW
* 148 _Mark_
* 149 Folke Berglund, Sweden
  150 Deniz Dag/Belgium
  152 Jacques Thomas
  153 Dag Henrik, Norway
* 154 Alexander Steppke
  158 stavros.io
* 161 Seong-Woo Kim, KR
  162 Aaron H, Seattle
  164 Iwan, CZ
  165 Jenning, DE
  167 Oliver Z, Germany
* 168 Chris Mason, Australia
  169 Fabio P. Italy
  171 Jonathan, Ireland
  173 Philipp B., DE
  174 Mancho, IT
  175 Mikkel Sørensen, DK
  176 Raphael Lullis
* 177 Tim, China
  179 JasperS, NL
  180 Scott, AU
  181 Roland Kay, UK
  182 Adam Baxter
  184 Hugo Herter
  185 Simon AM, Malta
  186 Leif Denby
  190 Maxious
* 192 Guido, GER
* 193 Pierre Rousseau, Canada
  195 Pete Hinch
* 198 KoalaBear,USA. TRUMPED 2016!
* 200 Pimoroni, UK
  201 jpwsutton, UK
  203 Felix, Sweden
  204 Dmitri Don, Tallinn Estonia
  205 PeteDemiSwede, UK
* 207 Serge GUILLAUME
  208 Gurtubay, ES
  209 Geir-Olav, NO
  210 RayDeo, Germany
  215 DIYAbility
  216 Josef Dunbar, USA
* 217 Enrico, BE/IT
  219 Damian Moore, UK
  220 Wayne and Layne, LLC
  221 The Old Crow, USA
  224 Hackscribble, UK
* 225 Alex March, UK
  226 @rdslw
  227 Mike, Canada
* 228 Adrian Smith
  229 Dinu Gherman, Germany
  230 Tinamous.com
* 231 Nikesh, US
* 232 chrisallick.com
  234 Daniel Von Fange
* 235 Michal Muhlpachr, CZ
* 236 Petr Viktorin
  237 Ryan Aldredge
  238 Patrik Wallström, SE
* 239 MobiusNexus
  240 Stray, US
* 241 BOFG, no
  244 Issac Kelly
* 247 David Prime
  249 James Marsh, UK
* 250 BezouwenR
  252 Avinash Magdum, India
  253 Greg Abbas, Menlo Park CA
  254 Jorge, ES
  256 JohanP, swe
* 258 Ben Doan
  259 Jan van Haarst, NL
* 263 JoshT, Los Angeles
  264 cstuder, Switzerland
  266 Jon Armani
* 270 Liam Welsh
  271 Jason Peacock
  272 Alejandro Lopez
  275 Dan O'Donovan, UK
  276 N1TWC
  277 Roland Tanglao, Vancouver
  278 Twpsyn
  280 Robert, ME-US
* 282 Thomas, UK
  283 Jeff Schroeder, USA
  284 Paulus Schoutsen
* 287 Neon22, NZ
  290 kbmeister
  291 Gary Hahn
  292 Dave Matsumoto, USA
  296 Sam Lee, SG
  304 Poul Borg, Denmark
  307 MightyPork
  308 Dale
* 312 Anton Kraft, Germany
  315 Kism3t, UK
  317 NateM
* 318 N&T, Calvijn Meerpaal, NL
  322 Andreas Monitzer
  323 Rikard, SE
  328 Olaf, DE
* 329 John Boudreaux
  330 DOCE, Germany
  331 feilipu
  332 Stefan Schwetschke
  333 Wayneji, NZ
  337 Alain de Lamirande, Canada
  338 Hori, TW
  340 Azmodie, UK
  341 Lygon, UK
* 342 JRM in STL, USA
  344 R Colistete-Jr., BR
* 345 ChristianG, DE
  347 Nis Sarup, DK.
  350 Nickedynick
  351 Dazza, Oz
  352 lispmeister, NL
  355 Tomas Lubkowitz, SE
  357 Mark, UK
* 358 Team ME
  363 Papahabla
  364 Greg Chevalley
  365 Maic Striepe, Germany
  369 Ian McMahon
  371 A. DARGA, Fr
  372 Ernesto Maranesi, BR
  373 Steve Lyon
  374 James Cloos
  375 Bas Zeppenfeldt, The Netherlands
  378 Pycom Ltd
  380 Wade Christensen, USA
  382 Justin Wing Chung Hui, UK
  383 C Paulson
  384 Ian Tickle
  386 Danny, Seattle
  388 Erik Moe, Chicago, IL
* 389 Eric B. Wertz, USA
  390 Michael. CH
  391 Christopher Baughman
  392 James Churchill
  393 Rob, DC
  395 Whee Min, Singapore
* 396 Jason Doege, TX
  401 MrFish
  403 Thejesh GN
  404 Markus, Sweden
  405 AMR, Spain
  407 Svet, ES
* 408 Thoralt, Germany
  409 Emil, Sweden
  410 David Moloney, ireland
  411 Marco S, DE
  415 Peter W., Austria
  417 emendo A/S
* 419 Kalestis, Switzerland
  421 Ondra, CZ
  422 Elheffe
  423 thinkl33t, UK
  424 TonyF
  425 Herr Robert Linder, PA, USA
* 426 Anders Astrom S(E|G)
* 428 Jussi Ylanen, CT, USA
  431 Neil H., USA
  434 Rod Perez, MX
  435 Carol, US
  436 Gina Haeussge, DE
  438 Weilinger, GER
* 439 Ron Ward, Australia
  441 Rex, UT, USA
* 444 Slush, CZ
  445 Bruce, Florida
* 448 Patrick Di Justo
  449 ScubaBearLA
  450 Mike Causer, Sydney AU
  451 Joel Fries, USA
* 452 Andrew Bernstein, US
  454 EAS, Seattle, WA, USA
* 456 Christopher J. Morrone, USA
* 457 Anthony Gilley, Sweden
  458 Andre Breiler, DE
* 460 Fuffkin, UK
* 461 adent, CZ
  462 Samuel Pickard
  463 Mirko, Germany
* 464 Ramin/US
  465 Mike, Grenoble
  466 Rolf, DE
* 467 Dave Haynes
* 469 Mac Ha, Vietnam
* 470 Enno, DE
* 473 Smudo, DE
* 474 Duncan, Scotland
  475 Chris, UK
  476 Peter Groen, NL
  478 Gertjan Geerling, Nijmegen
* 479 Benjamin Eberle
* 480 Mechanical Men Sweden
* 482 Rémi de Chazelles, FR
  483 mager, Bremen
  484 jurekh, NL
* 485 Craig Burkhead
  487 JohanHartman, SouthAfrica
* 489 Viktor, NL
  491 Jean-Denis Carre
  492 Jesse, Canada
  493 Alex C. MacDonald, USA
* 494 GustavoV, MX
  495 Sebastian, Berlin
  497 Bernard, Feluy
* 500 Ron H, USA
  501 Gregg "Cabe" Bond, UK
  502 Colin, NI
  504 Robin, USA
* 507 pkropf
* 510 6LhasaCo Canada
  511 Tom Sepe, USA
  513 Andrew McKenna
  515 tom46037
  516 G2, USA
* 517 Pauline Middelink, NL
* 518 Brush Technology, Ltd
  520 Pierre Meyitang, USA
  521 Stephanie Maks, Canada
  526 John McClain
* 527 Sigadore, US
  528 Richard Hudspeth, US
  530 Martin, Austria
  531 Stephen Eaton, Australia
* 533 RJCE, UK
  535 Teiste, Finland
  536 Pio, UK
  537 DirtyHarry, DE
* 540 Dom G. UK
* 541 Nial, UK
  543 Andreas, AUT
  545 WisdomWolf
* 549 MrMx,ES
  552 Daniel Soto, Landscape.
  554 Claus Fischer, DK
  557 Aleksi Määttä
  560 Justin Wilcott, USA
  562 LoneTone, UK
  567 Cameron, US
  568 Dirck, Germany
  569 Michael Keirnan
  571 Harry, CN
* 572 Ward Wouts
  573 Dan Anaya, USA
  574 Ben Bennett
  575 nirvana2165, US
  576 PDG, BZH
* 581 Visit, Thailand
  582 John Carr, UK
* 583 Klankschap
  587 jacky,FR
  588 JD Marsters
  591 Ryan Jarvis, US
  595 Claudio Hediger, CH
* 597 Bambam, Sweden
  598 Timothé, FR
* 599 Luís Manuel, Portugal
  601 Eric, DE
  602 Olaf, Cambridge, UK
* 603 Tim, Dubai
  604 Tyndell, US
  606 Ciellt AB, SE
  607 Ömer Boratav
  609 Guy Molinari, US
  614 Freek Dijkstra
  615 Carlos Camargo CO
  616 Michael Nemecky, Norway
  618 Ovidiu G.
  619 arobg, USA
* 621 Geoff Shilling, US
  623 EliotB, NZ
  624 slos UK
  625 Montreal, CA
* 626 Peter Korcz
  627 Kodi
  628 Jim, Valdosta, USA
  629 Sander Boele, NL
  630 Max Lupo
  631 Daniel.B, Newcastle Australia
  632 Andrés Suárez García, Vigo (Spain)
  633 Rens, NL
  634 Max Petrich, DE
  635 Fabian Affolter, CH
  636 Cadair
* 637 Mike Karliner
  638 Daniel T, UK
  639 Mark Campbell, UK
  640 James S, Australia
  641 PBTX!
* 642 amaza,SP
  644 se4mus
* 645 Alexander Steffen
* 647 Jim Richards Maine, USA
  649 Doug D, US
  650 Keaton Walker
* 651 Scott Winder, USA
  653 Jeff Fischer, USA
  654 Andrej Mosat
  655 Mohd Faizal Mansor, Malaysia
  657 Mike "Cutter" Shievitz, US
* 658 Daniel Andersson, SE
  659 Alexander, NL
  660 François, CH
* 661 AndrewS, UK
  662 Denisae, PT
  663 KC8KZN
  664 Angelo, Wales
  665 BlueberryE, Germany
  667 fvlmurat
  668 Adam Wilson
  675 Ulrich Norbisrath (http://ulno.net)
  676 Daniel, Portland OR
* 677 Andreas Lindquist, SE
  680 Jason, NL
  682 lapawa, GER
  683 John Batty, UK
  685 Addy, Netherlands
  686 Marc, CA
  690 APapantonatos
  691 gmorell, US
* 692 Jamie Mackenzie, Adelaide, SA
* 693 Dave Dean, US
  697 woojay, US
  698 Webabot, NY
* 699 Jason Fehr, Canada
  700 Hadi (AU)
* 701 Abraham Arce
* 703 Must Be Art
  712 Thanks for the great work!/datax-holding/Stuttgart
* 714 Thomas Pr., BE
  715 Black Country Atelier BCA
  718 Don W, Arlington VA
  721 Xavier C. (EU)
  722 Chad P. Lung, U.S.A
  726 Alexander Lash (@lexlash)
  727 Sven, MX
  728 Terence, PL
* 730 Mauro De Giorgi, USA
  735 Jay Ward, Canada
  736 Fabian Topfstedt, AT
  739 sjoerdDOTcom
  740 David, Australia
  743 Michael Niewiera, Germany
  745 cbenhagen
  746 berserck, CH
  748 Lars Hansson, Sweden
  750 Landrash
  751 Richard B., CT USA
  752 Neil Chandler, UK
* 753 John Griessen US
* 755 Caminiti, Mexico
  757 Mikael Trieb, Sweden
  760 S1GM9, MX
  761 Dave C, US
* 763 Su Zhou, China
  765 Caitlyn - USA
  769 Will, NZ
  770 CJB,UK
  771 Victor Claessen, NL
  772 Antal, CH
  773 Tokyo, Japan
* 774 Join Business & Technology AB, Sweden
  777 Overspeed Innovation
* 778 Bruce, Chanute KS
  779 TOPALIS, RO
  780 klaas2
  781 Matthias Schmitz, Berlin
  783 Jan Studený wishes "Python everywhere"
  788 Ian, USA
  789 Mark K, UK
  791 DerFlob, Germany
  792 Staffan Johansson, Sweden
  793 Stefan W., DE
  795 Mark S. Harris, Small Dog Electronics
  796 Kittikun, TH
* 798 aerialist, Japan
  799 Sweta
* 800 Mark Shuttleworth
  802 Kim Thostrup
  803 Andy Fundinger
  810 Matt Vallevand, Detroit MI
  813 Jim McDonald
  816 Rob Dobson
  817 Rafał Zieliński, PL
* 818 Shaun Walker, AUS
  819 Timothy R, Belgium
  820 clem
  825 JuanB, ES
  826 Randall Gaz, Colorado USA
  827 Dick van Ginkel, The Netherlands
  829 Jan-Pieter Van Impe
  831 David Kirkpatrick, AU
  832 Ravi Teja, India
  833 AkosLukacs, HU
  834 Dave Desson, CAN
  837 LWQ.CZ, CZ
  838 Robert W., Issaquah, WA
  839 Daniel Hrynczenko
  840 Martin Filtenborg, DK
  841 InnHuchen, Ger
  845 Raju Pillai,India
  847 cfus/DE
* 851 Juli H.
  853 David Monterroso Cabello , SP
  857 24x8, LLC, US
  860 Sebastian, DE
  861 pajusmar
  864 Ronnie, UK
* 867 Travis Travelstead, USA
* 870 Woodat, US/UK
  872 Gary Bake, UK
  873 Ernesto Martinez
* 874 Scottt, USA
  876 Ronnie Kizzle, LA
  880 Harish, Singapore
  882 Wacht, Pittsburgh
  883 PatrickF, US
  886 Paolo, IT
  888 Defragster
  889 Rachel Rayns, UK
* 890 Peak Data LLC
  891 Mindwarp, AU
  892 Vincent Smedley, UK
* 894 Bailey & Brayden
  898 Jacek Artymiak, UK
  900 John Hudson, USA
* 901 ReneS, NL
* 902 B Stevens
  903 Cptnslick, US
  904 janlj@me.com
  905 Fabricio Biazzotto
  906 Lenz Hirsch
  907 SerSher, RU
  908 Florian, DE
  909 Mathias Svendsen, DK
* 910 Jeremiah Dey-Oh
  911 Allan Joseph Medwick
  913 Matt, Australia
  914 Christian Pedersen
* 915 SPIN
  916 Denis M., Russia
  917 Ahmed Alboori, Saudi Arabia
  918 Luciano, Italy
  919 Ragdehl
* 921 Artur, HU
  922 Greg, NC - USA
  924 Gurzixo
* 927 Gregg, Oregon
  928 cwschroeder, BY
  929 W. Bush - NY, USA.
  932 ddparker
  933 Enkion
* 934 Eric G. Barron
  936 thomasDOTwtf
  940 mifous, cucurbitae.eu
  942 VFL68, FR
  943 Casey, Hong Kong
* 945 Kean Electronics
  946 Nima, UK
  947 Klosinski, USA
  948 PieWiE, NL
* 949 Rui Carmo, PT
* 950 basbrun.com
  951 Aashu, UK
* 952 vk2nq - Brian
  954 gojimmypi
  955 Jack, USA
* 957 @SteveBattle
* 958 Beshr, Sweden
  962 PeterR, UK
  964 Russell Calbert
  965 LAurent_B, Fr
  967 Qazi, USA
  971 Jonas, FR
  973 PK Shiu
* 974 sea_kev
  976 Radhika, USA
  977 Chris Gibson, US
* 978 Mike, AU
* 979 Geeky Pete
  981 Timmy the wonderdog
  983 An Ostler it IT
  984 Frank Ray Robles
  985 Kurtsik
  987 Johan, SE
  988 NJBerland, Norway
  992 Leon Noel - @leonnoel
  994 Kjell, SE
  995 boriskourt
  997 Bartek B., CANADA
  999 Thomas Wiradikusuma, Indonesia
 1000 Trey, NOLA
 1002 Jori, FI
 1005 nmmarkin
 1006 Mattias Fornander
 1007 Panayot Daskalov, Bulgaria
*1009 AndyP, UK
 1011 TSD
 1013 Chris, Berlin
 1017 Gareth Edwards, UK
 1018 Trixam,DE
 1019 César from Makespace Madrid, Spain
 1020 Prajwal, Australia
*1024 Fred Dart - FTDI
 1025 bsx
*1026 Regis, FR
 1027 Adrian Hill
 1029 Alice, UK
 1030 Erkan Shakir, BG
 1031 Alexander, EE
 1033 Patric, Luxembourg
 1034 For my beloved mother, Colleen Clancy.
 1035 NigelB
 1037 François, Aus/Fr
*1039 Thanura Siribaddana, Australia
 1041 Harald, USA
 1042 Jeremy Utting, NZ
 1043 bejuryu, KR
*1044 Daniel Wood, UK
 1046 C. J. Blocker
*1047 Rodrigo Benenson, Germany
 1048 Håvard Gulldahl
 1049 SeB, Belgium
 1054 Ryan Miller, Austin TX
 1055 Gianluca Cancelmi
 1057 Francesco, IT
 1058 RockTractor!
 1060 Bill G., Atlanta GA USA
 1061 joenotjoe
 1064 ATrivedi, USA
 1067 Jim Chandler, UK
 1068 Aria Sabeti
 1069 Noah Rosamilia, USA
 1070 GAKgDavid, CA
 1072 Markus, Austria
*1073 Tarwin, MUC
*1077 Balazs Kinszler, HU
*1080 pfh
*1082 Ovidiu Hossu, SG
*1083 mmhanif, NJ
*1084 Wincent Balin, DE
*1086 Anatoly Verkhovsky
*1087 Greg, Plano
*1089 Angelo Compagnucci
 1090 Ryan Shaw (ryannathans), AU
 1092 Dries007, BE
*1093 Dave Snowdon, UK
*1094 halfpress
*1096 DeuxVis, FR
*1097 Your Creative Solutions
 1099 Emanuele Goldoni, IT
*1100 Tendayi Mawushe
 1101 Rob, Tikitere
*1102 SolidStateSoul
*1103 Michael, GER
*1106 Paul, San Francisco
*1107 Oddvar Lovaas
*1108 Doc Savage, Man of Bronze
 1109 Stijn Debrouwere
 1111 Ark Nieckarz, USA
*1112 ECS87.com, USA
*1114 Gary P. Wolfe, USA
 1117 Tom Hodson
*1118 @arikb (twitter)
 1123 Piotr Gryko UK
*1125 Cantalaweb, Spain
 1126 Edward of Clovis
 1127 Jim G
*1128 billbr, Loveland, CO, USA
 1129 dalanmiller
*1130 StephenH, UK
*1132 Thomas Sarlandie - @sarfata
 1133 Doug Rohm, US
*1134 Eric Floehr, Ohio, USA
*1135 Sven Haiges
 1136 relix42
*1137 Ralf Nyren
*1138 nickgb
 1139 zwack, DE
 1140 Michal B., PL
 1141 Matt, Australia
 1143 slv, Mi2
 1144 Pawel, CH
*1145 James Saffery
*1147 nekomatic
*1149 @nt1, Earth
*1150 Alister Galpin, NZ
 1151 Jayemel, UK
 1152 Koalabs
 1153 James Myatt, UK
*1154 DanS, Norway
 1155 Sandeep, US
*1156 Anil Kavipurapu
*1158 Frederik Werner, DE
 1160 Erik J, Canada
 1164 bluezebra, Ireland
 1168 Birk, DE
 1169 Gabi, FR
*1173 mliberty, USA
 1174 Jamie Smith, Scotland
 1175 Sebastian, Germany
*1176 John Cooper, UK
 1177 Moritz, DE
 1178 Kevin, DE
*1179 Ming Leung, Canada
 1180 Laird Popkin
 1181 tasmaniac, GA
*1183 RichardW, UK
*1187 Thomas Quinlan, London, UK
 1188 LGnap, BE
*1189 bloater, Edinburgh UK
 1192 pakt, SE
 1194 Sandsmark, NO
*1195 Gert Menke
 1197 Emsi88, SK
 1199 GTtronics HK Ltd.
 1200 Jo, Bergen
*1202 MarkS, Australia
 1203 Igor, HR
 1204 Lord Nightmare
 1205 Great Uncle Bulgaria, UK
*1206 salomonderossi
 1208 Master_Ipse, DE
 1209 Luis G.F, ES
 1211 Harald, FO
*1212 Kimmo, Finland
*1213 P. Perreijn, Netherlands
 1214 jcea, Spain
 1215 simon holmes à court
 1217 Bill M, Newcastle
*1218 snowball
*1221 Georges, CDN
 1222 JPLa
 1225 Erik Gullberg, Sweden
 1226 Matthias Fuchs, IN, Germany
 1229 Majed, CA
 1230 Michiel, Reeuwijk
 1231 Clive, Essex UK
 1232 Jan Kalina, CZ
 1234 MBBest, Australia
*1235 Reinoud de Lange, NL
 1237 Jeffrey Park, South Korea
 1238 David Olson
 1239 Nathan Battan
 1240 Marcus, TW
 1241 randyrrt, USA
 1242 Holger, Germany
 1243 Dmitri Chapkine, FRANCE
 1244 Ceyhun Kapucu, TR
 1245 Hong Kong
*1246 gPozo, US
 1247 Peter M, Sweden
*1249 Duncan, Cambridge
*1251 Schaeferling, DE
 1252 Christian Prior, DE
*1256 ovig
 1257 Kerry Channing, UK
 1258 Exception42, GER
*1259 nchalikias
 1261 Kittie, US
 1263 Alex, Norway
 1264 wats0n, TW
*1265 Henner
*1266 Mike M, AZ, USA
 1268 Bobby Ly, USA
*1269 Espen STO, Norway
 1270 arduware.cc
 1274 Christopher Flynn, NH USA
*1275 Bruce Boyes, USA
 1276 DCH
 1278 McGinkel, Netherlands
 1279 Dieter, Wien
 1280 R. Tummers, NL
 1283 Pranav Maddula, USA
 1286 Dusan, SLovakia
 1290 Stephen Youndt
*1291 Lertsenem, FR
 1292 NuclearTide, London
 1293 Ben Gift, USA
 1294 rmg
 1295 jmaybe, USA
 1296 Allan G, Georgia
 1297 Duncan Brassington, UK
 1300 Hans, NL
 1301 Valerio "valdez" Paolini, IT
 1303 Neotreat, DE
 1306 tomtoump
 1307 Edward B Cox, England
 1310 Oliver Steele
 1311 merps, AUS
 1313 n8henrie, USA
*1314 YGA-KSD n7/ULB, FR-BE
 1317 Adrian, Romania
*1318 Luca "Loop", ITA
*1319 Michael Twomey, Ireland
 1321 Trey Aughenbaugh
 1322 Marcel Hecko, SK
 1323 Hugo Neira, CL
 1326 JH, US
*1330 Luthander, SE
 1331 Rickard Dahlstrand, Sweden
 1333 Olivier M., France
 1334 DWVL, UK
 1335 MRZANE, Sweden
 1336 Benedikt, DE
*1338 Tiegeng, US
*1339 arthoo Eindhoven Nederland
 1340 Magnus Gustavsson, Sweden
 1341 Jan Bednařík
 1344 Mike McGary: US
 1346 mp3tobi
*1350 Cyberhippy
 1351 Sandro, PT
 1355 Kwabena W. Agyeman
 1357 Ryan Young
*1358 Chiang Mai, Thailand
 1359 AKLitman, USA
 1360 JASK Enterprises, Ltd-John
*1361 Tom Gidden, UK
 1362 AdamT, USA
 1363 Jose de la Campa, BOL
 1365 Steve Laguna, U.S.A
*1368 Walrusklasse, NL
 1370 Timofei Korostelev, Belarus
 1374 Janos,HU
*1375 Paul Cunnane
 1377 IanE, UK
 1378 Hans, NL
 1379 Jose Angel Jimenez Vadillo, Spain
*1380 PaulT, Lancs
 1383 Lutz; DE
 1385 AnRkey
 1387 Fredrik, FIN
 1388 Matt W (funkyHat)
 1389 Zeev Rotshtein, Israel
 1391 joostd, NL
 1392 Lukasz Blaszczyk, USA
*1397 Wei-Ning Huang, TW
 1398 myu
*1399 Thorsten, Germany
 1401 sm0ihr
 1403 Xiaotian, Seattle US
*1406 -gt-, Czech Republic
 1407 Mike Y. Diallo, US
 1409 ubii, US


================================================
FILE: CODECONVENTIONS.md
================================================
Git commit conventions
======================

Each commit message should start with a directory or full file path
prefix, so it was clear which part of codebase a commit affects. If
a change affects one file, it's better to use path to a file. If it
affects few files in a subdirectory, using subdirectory as a prefix
is ok. For longish paths, it's acceptable to drop intermediate
components, which still should provide good context of a change.
It's also ok to drop file extensions.

Besides prefix, first line of a commit message should describe a
change clearly and to the point, and be a grammatical sentence with
final full stop. First line should fit within 78 characters. Examples
of good first line of commit messages:

    py/objstr: Add splitlines() method.
    py: Rename FOO to BAR.
    docs/machine: Fix typo in reset() description.
    ports: Switch to use lib/foo instead of duplicated code.

After the first line add an empty line and in the following lines describe
the change in a detail, if needed, with lines fitting within 75 characters
(with an exception for long items like URLs which cannot be broken). Any
change beyond 5 lines would likely require such detailed description.

To get good practical examples of good commits and their messages, browse
the `git log` of the project.

When committing you are encouraged to sign-off your commit by adding
"Signed-off-by" lines and similar, eg using "git commit -s".  If you don't
explicitly sign-off in this way then the commit message, which includes your
name and email address in the "Author" line, implies your sign-off.  In either
case, of explicit or implicit sign-off, you are certifying and signing off
against the following:

* That you wrote the change yourself, or took it from a project with
  a compatible license (in the latter case the commit message, and possibly
  source code should provide reference where the implementation was taken
  from and give credit to the original author, as required by the license).
* That you are allowed to release these changes to an open-source project
  (for example, changes done during paid work for a third party may require
  explicit approval from that third party).
* That you (or your employer) agree to release the changes under
  MicroPython's license, which is the MIT license. Note that you retain
  copyright for your changes (for smaller changes, the commit message
  conveys your copyright; if you make significant changes to a particular
  source module, you're welcome to add your name to the file header).
* Your contribution including commit message will be publicly and
  indefinitely available for anyone to access, including redistribution
  under the terms of the project's license.
* Your signature for all of the above, which is the "Signed-off-by" line
  or the "Author" line in the commit message, includes your full real name and
  a valid and active email address by which you can be contacted in the
  foreseeable future.

Code auto-formatting
====================

Both C and Python code are auto-formatted using the `tools/codeformat.py`
script.  This uses [uncrustify](https://github.com/uncrustify/uncrustify) to
format C code and [black](https://github.com/psf/black) to format Python code.
After making changes, and before committing, run this tool to reformat your
changes to the correct style.  Without arguments this tool will reformat all
source code (and may take some time to run).  Otherwise pass as arguments to
the tool the files that changed and it will only reformat those.

Python code conventions
=======================

Python code follows [PEP 8](https://legacy.python.org/dev/peps/pep-0008/) and
is auto-formatted using [black](https://github.com/psf/black) with a line-length
of 99 characters.

Naming conventions:
- Module names are short and all lowercase; eg pyb, stm.
- Class names are CamelCase, with abbreviations all uppercase; eg I2C, not
  I2c.
- Function and method names are all lowercase with words separated by
  a single underscore as necessary to improve readability; eg mem_read.
- Constants are all uppercase with words separated by a single underscore;
  eg GPIO_IDR.

C code conventions
==================

C code is auto-formatted using [uncrustify](https://github.com/uncrustify/uncrustify)
and the corresponding configuration file `tools/uncrustify.cfg`, with a few
minor fix-ups applied by `tools/codeformat.py`.  When writing new C code please
adhere to the existing style and use `tools/codeformat.py` to check any changes.
The main conventions, and things not enforceable via the auto-formatter, are
described below.

White space:
- Expand tabs to 4 spaces.
- Don't leave trailing whitespace at the end of a line.
- For control blocks (if, for, while), put 1 space between the
  keyword and the opening parenthesis.
- Put 1 space after a comma, and 1 space around operators.

Braces:
- Use braces for all blocks, even no-line and single-line pieces of
  code.
- Put opening braces on the end of the line it belongs to, not on
  a new line.
- For else-statements, put the else on the same line as the previous
  closing brace.

Header files:
- Header files should be protected from multiple inclusion with #if
  directives. See an existing header for naming convention.

Names:
- Use underscore_case, not camelCase for all names.
- Use CAPS_WITH_UNDERSCORE for enums and macros.
- When defining a type use underscore_case and put '_t' after it.

Integer types: MicroPython runs on 16, 32, and 64 bit machines, so it's
important to use the correctly-sized (and signed) integer types.  The
general guidelines are:
- For most cases use mp_int_t for signed and mp_uint_t for unsigned
  integer values.  These are guaranteed to be machine-word sized and
  therefore big enough to hold the value from a MicroPython small-int
  object.
- Use size_t for things that count bytes / sizes of objects.
- You can use int/uint, but remember that they may be 16-bits wide.
- If in doubt, use mp_int_t/mp_uint_t.

Comments:
- Be concise and only write comments for things that are not obvious.
- Use `// ` prefix, NOT `/* ... */`. No extra fluff.

Memory allocation:
- Use m_new, m_renew, m_del (and friends) to allocate and free heap memory.
  These macros are defined in py/misc.h.

Examples
--------

Braces, spaces, names and comments:

    #define TO_ADD (123)

    // This function will always recurse indefinitely and is only used to show
    // coding style
    int foo_function(int x, int some_value) {
        if (x < some_value) {
            foo(some_value, x);
        } else {
            foo(x + TO_ADD, some_value - 1);
        }

        for (int my_counter = 0; my_counter < x; ++my_counter) {
        }
    }

Type declarations:

    typedef struct _my_struct_t {
        int member;
        void *data;
    } my_struct_t;

Documentation conventions
=========================

MicroPython generally follows CPython in documentation process and
conventions. reStructuredText syntax is used for the documention.

Specific conventions/suggestions:

* Use `*` markup to refer to arguments of a function, e.g.:

```
.. method:: poll.unregister(obj)

   Unregister *obj* from polling.
```

* Use following syntax for cross-references/cross-links:

```
:func:`foo` - function foo in current module
:func:`module1.foo` - function foo in module "module1"
    (similarly for other referent types)
:class:`Foo` - class Foo
:meth:`Class.method1` - method1 in Class
:meth:`~Class.method1` - method1 in Class, but rendered just as "method1()",
    not "Class.method1()"
:meth:`title <method1>` - reference method1, but render as "title" (use only
    if really needed)
:mod:`module1` - module module1

`symbol` - generic xref syntax which can replace any of the above in case
    the xref is unambiguous. If there's ambiguity, there will be a warning
    during docs generation, which need to be fixed using one of the syntaxes
    above
```

* Cross-referencing arbitrary locations
~~~
.. _xref_target:

Normal non-indented text.

This is :ref:`reference <xref_target>`.

(If xref target is followed by section title, can be just
:ref:`xref_target`).
~~~

* Linking to external URL:
```
`link text <http://foo.com/...>`_
```

* Referencing builtin singleton objects:
```
``None``, ``True``, ``False``
```

* Use following syntax to create common description for more than one element:
~~~
.. function:: foo(x)
              bar(y)

   Description common to foo() and bar().
~~~


More detailed guides and quickrefs:

* http://www.sphinx-doc.org/en/stable/rest.html
* http://www.sphinx-doc.org/en/stable/markup/inline.html
* http://docutils.sourceforge.net/docs/user/rst/quickref.html


================================================
FILE: CONTRIBUTING.md
================================================
When reporting an issue and especially submitting a pull request, please
make sure that you are acquainted with Contributor Guidelines:

https://github.com/pfalcon/pycopy/wiki/ContributorGuidelines

as well as the Code Conventions, which includes details of how to commit:

https://github.com/pfalcon/pycopy/blob/master/CODECONVENTIONS.md


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2013-2021 Damien P. George
Copyright (c) 2014-2021 Paul Sokolovsky

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: README.md
================================================
[![Build Status](https://github.com/pfalcon/pycopy/actions/workflows/ports_unix.yml/badge.svg)](https://github.com/pfalcon/pycopy/actions) [![Coverage Status](https://coveralls.io/repos/pfalcon/pycopy/badge.png?branch=master)](https://coveralls.io/github/pfalcon/pycopy?branch=master)

The Pycopy project
==================

[Web site](https://pycopy.github.io/) | [Documentation](https://pycopy.readthedocs.io/)

Pycopy aims to develop and maintain a **minimalist**, lightweight,
and extensible implementation of
[Python](https://en.wikipedia.org/wiki/Python_(programming_language))(-compatible)
language. Pycopy to CPython is a similar thing as
[Scheme](https://en.wikipedia.org/wiki/Scheme_(programming_language))
to [Common Lisp](https://en.wikipedia.org/wiki/Common_Lisp).
Pycopy works similarly well in the cloud, on desktop systems, on small
embedded systems, and scales all the way down to microcontrollers. The
project is developed and maintained by Paul Sokolovsky and is originally
based on MicroPython, developed by Damien George, Paul Sokolovsky and
contributors. Names "Pycopy" and "MicroPython" are used interchangeably
in the project documentation and source code.

WARNING: this project is in beta stage and is subject to changes of the
code-base, including project-wide name changes and API changes.

Pycopy implements the entire Python 3.4 syntax (including exceptions,
`with`, `yield from`, etc., and additionally `async`/`await` keywords from
Python 3.5). The following core datatypes are provided: `str` (including
basic Unicode support), `bytes`, `bytearray`, `tuple`, `list`, `dict`, `set`,
`frozenset`, `array.array`, `collections.namedtuple`, classes and instances.
Builtin modules include `sys`, `time`, and `struct`, etc. Select ports have
support for `_thread` module (multithreading). Note that only a subset of
Python 3 functionality is implemented for the data types and modules.

Pycopy can execute scripts in textual source form or from precompiled
bytecode, in both cases either from an on-device filesystem or "frozen" into
the executable.

Pycopy is highly portable, and the main repository includes support for
POSIX operating systems (Linux, MacOSX, FreeBSD, etc.), Windows, Android,
and a number of bare-metal microcontroller systems (see below). Ports to
other systems can be implemented easily. POSIX port (nicknamed "Unix port")
is the reference port of Pycopy.

The Pycopy Zen
--------------

[Just as "big Python"](https://www.python.org/dev/peps/pep-0020/), Pycopy has
its "Zen". The main principles of Pycopy are **simplicity**, **minimalism**,
and **light-weightedness**.

At the same time, Pycopy strives to be a full-stack language and
be compatible with wider Python ecosystem. The Pycopy project resolves
these seemingly conflicting goals in a well-known and elegant way: by
being a multi-level project, and by providing flexible configuration options.
Specifically, there's a well-defined lightweight core written in C,
defining the "native Pycopy language". Above it, a number of options are
provided, implementing additional functionality (oftentimes offering more
CPython compatibility). For example, on top of the core, "native Pycopy
builtin modules" are provided, defining the native Pycopy API, which
provides a subset of CPython's modules functionality, and at the same time,
some extensions to it (driven by Pycopy's goal to be efficient). These native
Pycopy modules are clearly namespaced, to allow to implement modules fully
compatible with CPython API without any changes to the main project.

On top of this primary project, there are separate projects to further extend
Pycopy functionality and achieve full-stack ecosystem. For example, there's
a [pycopy-lib](https://github.com/pfalcon/pycopy-lib) project (see below) to
implement a fully compatible CPython standard library for Pycopy.

Finally, on top of that infrastructure, there is an ecosystem of third-party
packages, which are managed by the Pycopy users themselves.

The art of working with Pycopy is to understand where a particular feature
belongs. Just as with CPython, it's almost never the core project, and almost
always users' third party packages.

[Contributors' Guidelines](https://github.com/pfalcon/pycopy/wiki/ContributorGuidelines)
further elaborate on some points touched above.

Source tree layout
------------------

Major components in this repository:
- [py/](py/) -- the core Python implementation, including compiler, runtime, and
  core library.
- [mpy-cross/](mpy-cross/) -- the bytecode (cross)compiler which is used to turn scripts
  into precompiled bytecode.
- [ports/unix/](ports/unix/) -- a version of Pycopy that runs on Unix (which includes Android).
- [ports/windows/](ports/windows/) -- a version for Windows.
- [ports/stm32/](ports/stm32/) -- a version of Pycopy that runs on the PyBoard and similar
  STM32 boards (using ST's Cube HAL drivers).
- [ports/minimal/](ports/minimal/) -- a minimal port. Start with this if you want
  to port the project to another microcontroller.
- [tests/](tests/) -- test framework and test scripts.
- [docs/](docs/) -- user documentation in Sphinx reStructuredText format. Rendered
  HTML documentation is available at http://pycopy.readthedocs.io/ .

Additional components:
- [ports/bare-arm/](ports/bare-arm/) -- a bare minimum version for ARM MCUs. Used
  mostly to control code size.
- [ports/teensy/](ports/teensy/) -- a version that runs on the Teensy 3.1
  (preliminary but functional).
- [ports/pic16bit/](ports/pic16bit/) -- a version for 16-bit PIC microcontrollers.
- [ports/cc3200/](ports/cc3200/) -- a version that runs on the CC3200 from TI.
- [ports/esp8266/](ports/esp8266/) -- a version that runs on Espressif's ESP8266 SoC.
- [ports/esp32/](ports/esp32/) -- a version that runs on Espressif's ESP32 SoC.
- [ports/nrf/](ports/nrf/) -- a version that runs on Nordic's nRF51 and nRF52 MCUs.
- [extmod/](extmod/) -- additional (non-core) modules implemented in C.
- [tools/](tools/) -- various tools, including the pyboard.py module.
- [examples/](examples/) -- various example scripts.

The subdirectories above may include READMEs with additional info.

"make" is used to build the components, or "gmake" on BSD-based systems.
You will also need bash, gcc, and Python 3.3+ available as the command `python3`
(if your system only has Python 2.7 then invoke make with the additional option
`PYTHON=python2`).

The cross-compiler, pycopy-cross
--------------------------------

Most ports require the Pycopy cross-compiler to be built first.  This
program, called pycopy-cross, is used to pre-compile Python scripts to .mpy
files which can then be included (frozen) into the firmware/executable for
a port.  To build pycopy-cross use:

    $ cd mpy-cross
    $ make

The Unix version
----------------

The "unix" port requires a standard Unix environment with gcc and GNU make.
x86 and x64 architectures are supported (i.e. x86 32- and 64-bit), as well
as ARM and MIPS. Making full-featured port to another architecture requires
writing some assembly code for the exception handling and garbage collection.
Alternatively, fallback implementation based on setjmp/longjmp can be used.

To build (see section below for required dependencies):

    $ make -C mpy-cross
    $ cd ports/unix
    $ make submodules
    $ make

Then to give it a try:

    $ ./pycopy
    >>> list(5 * x + y for x in range(10) for y in [4, 2, 1])

Use `CTRL-D` (i.e. EOF) to exit the shell.
Learn about command-line options (in particular, how to increase heap size
which may be needed for larger applications):

    $ ./pycopy --help

Run complete testsuite:

    $ make test

Unix version comes with a builtin package manager called `upip`, e.g.:

    $ ./pycopy -m upip install pycopy-pystone
    $ ./pycopy -m pystone

Browse available modules on [PyPI](https://pypi.org/search/?q=pycopy-).
Standard library modules come from
[pycopy-lib](https://github.com/pfalcon/pycopy-lib) project.

`pycopy` executable built following the instructions above is a
"production" executable for native Pycopy software. It's also possible
to build `pycop-dev` executable which provides additional reflection,
diagnostics, and extensibility capabilities, at the expense of code
size and memory usage efficiency. In particular, `pycopy-dev` is more
compatible with software written for CPython. To build the `pycopy-dev`
variant, run `make dev`.

External dependencies
---------------------

Building Pycopy ports may require some dependencies installed.

For Unix port, `libffi` library and `pkg-config` tool are required. On
Debian/Ubuntu/Mint derivative Linux distros, install `build-essential`
(includes toolchain and make), `libffi-dev`, and `pkg-config` packages.

Other dependencies can be built together with Pycopy. This may
be required to enable extra features or capabilities, and in recent
versions, these may be enabled by default. To build
these additional dependencies, first fetch git submodules for them:

    $ make submodules

This will fetch all the relevant git submodules (sub repositories) that
the port needs.  Use the same command to get the latest versions of
submodules as they are updated from time to time. After that execute:

    $ make deplibs

This will build all available dependencies (regardless whether they
are used or not). If you intend to build Pycopy with additional
options (like cross-compiling), the same set of options should be passed
to `make deplibs`. To actually enable/disable use of dependencies, edit
`ports/unix/mpconfigport.mk` file, which has inline descriptions of the options.
For example, to build SSL module (required for `upip` tool described above,
and so enabled by default), `MICROPY_PY_USSL` should be set to 1.

For some ports, building required dependences is transparent, and happens
automatically.  But they still need to be fetched with the `make submodules`
command.

<!--
The STM32 version
-----------------

The "stm32" port requires an ARM compiler, arm-none-eabi-gcc, and associated
bin-utils.  For those using Arch Linux, you need arm-none-eabi-binutils,
arm-none-eabi-gcc and arm-none-eabi-newlib packages.  Otherwise, try here:
https://launchpad.net/gcc-arm-embedded

To build:

    $ cd ports/stm32
    $ make submodules
    $ make

You then need to get your board into DFU mode.  On the pyboard, connect the
3V3 pin to the P1/DFU pin with a wire (on PYBv1.0 they are next to each other
on the bottom left of the board, second row from the bottom).

Then to flash the code via USB DFU to your device:

    $ make deploy

This will use the included `tools/pydfu.py` script.  If flashing the firmware
does not work it may be because you don't have the correct permissions, and
need to use `sudo make deploy`.
See the README.md file in the ports/stm32/ directory for further details.
-->

Contributing
------------

Pycopy is an open-source project and welcomes contributions which are aligned
with its paradigm and work process. To be productive, please be sure to follow the
[Contributors' Guidelines](https://github.com/pfalcon/pycopy/wiki/ContributorGuidelines)
and the [Code Conventions](https://github.com/pfalcon/pycopy/blob/master/CODECONVENTIONS.md).
Note that Pycopy is licenced under the MIT license, and all contributions
should follow this license.

Project FAQ
===========

Q: How Pycopy differs from other Python implementations?

A: Pycopy is intended to be a small, minimalist implementation of the
"core of the Python language" (in some definition of the "core"). Beyond
that, the aim is to be extensible, to be able to support features of other
Python implementations. Pycopy is particularly intended to write software
(and extensions just mentioned) in Python. This may sounds as oxymoron, but
it's a matter of fact that other implementations have too much of their
functionality implemented in other languages (e.g., in C for CPython). This
is a discouraged approach for Pycopy. Instead, for interfacing with non-Python
libraries, it encourages the use of FFI (Foreign Function Interface) and
flexible import extensions.

Q: How Pycopy differs from other *small* Python implementations?

A: Please see previous question for general information on how Pycopy
differs from other Python implementations. Regarding small Python
implementations specifically, a common issue with them is that they
structure and represent themselves as niche, special-purpose systems,
and oftentimes implement very bare subset of Python. Pycopy isn't
just "Python for microcontrollers" or "Python to embed in other
application". First and foremost, Pycopy is a general, and
general-purpose, language, suitable for developing any kind of software.
Which can be even used on microcontrollers and embedded in other
applications (without growing them too much), but it's not limited
to that in any way. Pycopy strives to cover as many systems as possible -
from clouds down to tiny IoT devices. And project's attention and focus
is also shared among them according to the functionality and value
particular areas may offer. For example, microcontrollers are neat cute
things, but you can do only so much with them, so they represent maybe
20% of the project focus.

Q: Current focus of the project?

A:
* Code optimizations.
* Continue to develop inplace, buffer and stream operations allowing
  to write highly memory effiicient applications.
* Garbage collection experiments.
* Reflection features (ultimately allowing to develop optimizing compilers,
  etc. in Python).
* More CPython features implemented (configurable).
* "Development/Testing" version with improved program analysis features.
* etc.


================================================
FILE: docs/Makefile
================================================
# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
PYTHON        = python3
SPHINXOPTS    =
SPHINXBUILD   = sphinx-build
PAPER         =
BUILDDIR      = build/$(MICROPY_PORT)
CPYDIFFDIR    = ../tools
CPYDIFF       = gen-cpydiff.py
GENRSTDIR     = differences
# Run "make FORCE= ..." to avoid rebuilding from scratch (and risk
# producing incorrect docs).
FORCE         = -E

# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif

# Internal variables.
PAPEROPT_a4     = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .

.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext

help:
	@echo "Please use \`make <target>' where <target> is one of"
	@echo "  html       to make standalone HTML files"
	@echo "  dirhtml    to make HTML files named index.html in directories"
	@echo "  singlehtml to make a single large HTML file"
	@echo "  pickle     to make pickle files"
	@echo "  json       to make JSON files"
	@echo "  htmlhelp   to make HTML files and a HTML help project"
	@echo "  qthelp     to make HTML files and a qthelp project"
	@echo "  devhelp    to make HTML files and a Devhelp project"
	@echo "  epub       to make an epub"
	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
	@echo "  text       to make text files"
	@echo "  man        to make manual pages"
	@echo "  texinfo    to make Texinfo files"
	@echo "  info       to make Texinfo files and run them through makeinfo"
	@echo "  gettext    to make PO message catalogs"
	@echo "  changes    to make an overview of all changed/added/deprecated items"
	@echo "  xml        to make Docutils-native XML files"
	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
	@echo "  linkcheck  to check all external links for integrity"
	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
	@echo "  cpydiff    to generate the MicroPython differences from CPython"

clean:
	rm -rf $(BUILDDIR)/*
	rm -f $(GENRSTDIR)/*.rst

cpydiff:
	@echo "Generating MicroPython Differences."
	rm -f $(GENRSTDIR)/*.rst
	cd $(CPYDIFFDIR) && $(PYTHON) $(CPYDIFF)

html: cpydiff
	$(SPHINXBUILD) $(FORCE) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

dirhtml:
	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

singlehtml:
	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
	@echo
	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."

pickle:
	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
	@echo
	@echo "Build finished; now you can process the pickle files."

json:
	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
	@echo
	@echo "Build finished; now you can process the JSON files."

htmlhelp:
	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
	@echo
	@echo "Build finished; now you can run HTML Help Workshop with the" \
	      ".hhp project file in $(BUILDDIR)/htmlhelp."

qthelp:
	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
	@echo
	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MicroPython.qhcp"
	@echo "To view the help file:"
	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MicroPython.qhc"

devhelp:
	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
	@echo
	@echo "Build finished."
	@echo "To view the help file:"
	@echo "# mkdir -p $$HOME/.local/share/devhelp/MicroPython"
	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MicroPython"
	@echo "# devhelp"

epub:
	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
	@echo
	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."

latex: cpydiff
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
	@echo
	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
	@echo "Run \`make' in that directory to run these through (pdf)latex" \
	      "(use \`make latexpdf' here to do that automatically)."

latexpdf: cpydiff
	$(SPHINXBUILD) $(FORCE) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
	@echo "Running LaTeX files through pdflatex..."
	$(MAKE) -C $(BUILDDIR)/latex all-pdf
	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

latexpdfja: cpydiff
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
	@echo "Running LaTeX files through platex and dvipdfmx..."
	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

text:
	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
	@echo
	@echo "Build finished. The text files are in $(BUILDDIR)/text."

man:
	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
	@echo
	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."

texinfo:
	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
	@echo
	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
	@echo "Run \`make' in that directory to run these through makeinfo" \
	      "(use \`make info' here to do that automatically)."

info:
	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
	@echo "Running Texinfo files through makeinfo..."
	make -C $(BUILDDIR)/texinfo info
	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."

gettext:
	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
	@echo
	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."

changes:
	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
	@echo
	@echo "The overview file is in $(BUILDDIR)/changes."

linkcheck:
	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
	@echo
	@echo "Link check complete; look for any errors in the above output " \
	      "or in $(BUILDDIR)/linkcheck/output.txt."

doctest:
	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
	@echo "Testing of doctests in the sources finished, look at the " \
	      "results in $(BUILDDIR)/doctest/output.txt."

xml:
	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
	@echo
	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."

pseudoxml:
	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
	@echo
	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."


================================================
FILE: docs/README.md
================================================
Pycopy Documentation
====================

The Pycopy documentation can be found at: https://pycopy.readthedocs.io/ .

The documentation you see there is generated from the files in the docs tree:
https://github.com/pfalcon/pycopy/tree/master/docs

Building the documentation locally
----------------------------------

If you're making changes to the documentation, you may want to build the
documentation locally so that you can preview your changes.

Install Sphinx, and optionally (for the RTD-styling), sphinx_rtd_theme,
preferably in a virtualenv:

     pip install sphinx
     pip install sphinx_rtd_theme

In `docs/`, build the docs:

    make html

You'll find the index page at `docs/build/html/index.html`.

PDF manual generation
---------------------

This can be achieved with:

    make latexpdf

but require rather complete install of LaTeX with various extensions. On
Debian/Ubuntu, try (500MB+ download):

    apt-get install texlive-latex-recommended texlive-latex-extra


================================================
FILE: docs/conf.py
================================================
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# MicroPython documentation build configuration file, created by
# sphinx-quickstart on Sun Sep 21 11:42:03 2014.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.

import sys
import os

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('.'))

# The members of the html_context dict are available inside topindex.html
micropy_version = os.getenv('MICROPY_VERSION') or 'latest'
micropy_all_versions = (os.getenv('MICROPY_ALL_VERSIONS') or 'latest').split(',')
url_pattern = '%s/en/%%s' % (os.getenv('MICROPY_URL_PREFIX') or '/',)
html_context = {
    'cur_version':micropy_version,
    'all_versions':[
        (ver, url_pattern % ver) for ver in micropy_all_versions
    ],
    'downloads':[
        ('PDF', url_pattern % micropy_version + '/pycopy.pdf'),
    ],
}


# -- General configuration ------------------------------------------------

# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.doctest',
    'sphinx.ext.intersphinx',
    'sphinx.ext.todo',
    'sphinx.ext.coverage',
]

# Add any paths that contain templates here, relative to this directory.
templates_path = ['templates']

# The suffix of source filenames.
source_suffix = '.rst'

# The encoding of source files.
#source_encoding = 'utf-8-sig'

# The master toctree document.
master_doc = 'index'

# General information about the project.
project = 'Pycopy'
copyright = '2014-2021, Damien P. George, Paul Sokolovsky, and contributors'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# We don't follow "The short X.Y version" vs "The full version, including alpha/beta/rc tags"
# breakdown, so use the same version identifier for both to avoid confusion.
version = release = '3.6.1'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None

# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['build', '.venv']

# The reST default role (used for this markup: `text`) to use for all
# documents.
default_role = 'any'

# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True

# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True

# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'

# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []

# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False

# Global include files. Sphinx docs suggest using rst_epilog in preference
# of rst_prolog, so we follow. Absolute paths below mean "from the base
# of the doctree".
rst_epilog = """
.. include:: /templates/replace.inc
"""

# -- Options for HTML output ----------------------------------------------

# on_rtd is whether we are on readthedocs.org
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'

if not on_rtd:  # only import and set the theme if we're building docs locally
    try:
        import sphinx_rtd_theme
        html_theme = 'sphinx_rtd_theme'
        html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), '.']
    except:
        html_theme = 'default'
        html_theme_path = ['.']
else:
    html_theme_path = ['.']

# Theme options are theme-specific and customize the look and feel of a theme
# further.  For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}

# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = ['.']

# The name for this set of Sphinx documents.  If None, it defaults to
# "<project> v<release> documentation".
#html_title = None

# A shorter title for the navigation bar.  Default is the same as html_title.
#html_short_title = None

# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = '../../logo/trans-logo.png'

# The name of an image file (within the static path) to use as favicon of the
# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
html_favicon = 'static/favicon.ico'

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['static']

# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []

# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
html_last_updated_fmt = '%d %b %Y'

# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True

# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}

# Additional templates that should be rendered to pages, maps page names to
# template names.
html_additional_pages = {"index": "topindex.html"}

# If false, no module index is generated.
#html_domain_indices = True

# If false, no index is generated.
#html_use_index = True

# If true, the index is split into individual pages for each letter.
#html_split_index = False

# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True

# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True

# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True

# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it.  The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''

# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None

# Output file base name for HTML help builder.
htmlhelp_basename = 'Pycopydoc'


# -- Options for LaTeX output ---------------------------------------------

latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',

# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',

# Additional stuff for the LaTeX preamble.
#'preamble': '',
# Include 3 levels of headers in PDF ToC
'preamble': '\setcounter{tocdepth}{2}',
}

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
#  author, documentclass [howto, manual, or own class]).
latex_documents = [
  (master_doc, 'Pycopy.tex', 'Pycopy Documentation',
   'Damien P. George, Paul Sokolovsky, and contributors', 'manual'),
]

# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None

# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False

# If true, show page references after internal links.
#latex_show_pagerefs = False

# If true, show URL addresses after external links.
#latex_show_urls = False

# Documents to append as an appendix to all manuals.
#latex_appendices = []

# If false, no module index is generated.
#latex_domain_indices = True


# -- Options for manual page output ---------------------------------------

# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
    ('index', 'pycopy', 'Pycopy Documentation',
     ['Damien P. George, Paul Sokolovsky, and contributors'], 1),
]

# If true, show URL addresses after external links.
#man_show_urls = False


# -- Options for Texinfo output -------------------------------------------

# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
#  dir menu entry, description, category)
texinfo_documents = [
  (master_doc, 'Pycopy', 'Pycopy Documentation',
   'Damien P. George, Paul Sokolovsky, and contributors', 'Pycopy', 'One line description of project.',
   'Miscellaneous'),
]

# Documents to append as an appendix to all manuals.
#texinfo_appendices = []

# If false, no module index is generated.
#texinfo_domain_indices = True

# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'

# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False


# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'python': ('https://docs.python.org/3.5', None)}


================================================
FILE: docs/develop/cmodules.rst
================================================
.. _cmodules:

MicroPython external C modules
==============================

When developing modules for use with MicroPython you may find you run into
limitations with the Python environment, often due to an inability to access
certain hardware resources or Python speed limitations.

If your limitations can't be resolved with suggestions in :ref:`speed_python`,
writing some or all of your module in C (and/or C++ if implemented for your port)
is a viable option.

If your module is designed to access or work with commonly available
hardware or libraries please consider implementing it inside the MicroPython
source tree alongside similar modules and submitting it as a pull request.
If however you're targeting obscure or proprietary systems it may make
more sense to keep this external to the main MicroPython repository.

This chapter describes how to compile such external modules into the
MicroPython executable or firmware image.  Both Make and CMake build
tools are supported, and when writing an external module it's a good idea to
add the build files for both of these tools so the module can be used on all
ports.  But when compiling a particular port you will only need to use one
method of building, either Make or CMake.

An alternative approach is to use :ref:`natmod` which allows writing custom C
code that is placed in a .mpy file, which can be imported dynamically in to
a running MicroPython system without the need to recompile the main firmware.


Structure of an external C module
---------------------------------

A MicroPython user C module is a directory with the following files:

* ``*.c`` / ``*.cpp`` / ``*.h`` source code files for your module.

  These will typically include the low level functionality being implemented and
  the MicroPython binding functions to expose the functions and module(s).

  Currently the best reference for writing these functions/modules is
  to find similar modules within the MicroPython tree and use them as examples.

* ``micropython.mk`` contains the Makefile fragment for this module.

  ``$(USERMOD_DIR)`` is available in ``micropython.mk`` as the path to your
  module directory. As it's redefined for each c module, is should be expanded
  in your ``micropython.mk`` to a local make variable,
  eg ``EXAMPLE_MOD_DIR := $(USERMOD_DIR)``

  Your ``micropython.mk`` must add your modules source files relative to your
  expanded copy of ``$(USERMOD_DIR)`` to ``SRC_USERMOD``, eg
  ``SRC_USERMOD += $(EXAMPLE_MOD_DIR)/example.c``

  If you have custom compiler options (like ``-I`` to add directories to search
  for header files), these should be added to ``CFLAGS_USERMOD`` for C code
  and to ``CXXFLAGS_USERMOD`` for C++ code.

* ``micropython.cmake`` contains the CMake configuration for this module.

  In ``micropython.cmake``, you may use ``${CMAKE_CURRENT_LIST_DIR}`` as the path to
  the current module.

  Your ``micropython.cmake`` should define an ``INTERFACE`` library and associate
  your source files, compile definitions and include directories with it.
  The library should then be linked to the ``usermod`` target.

  .. code-block:: cmake

      add_library(usermod_cexample INTERFACE)

      target_sources(usermod_cexample INTERFACE
          ${CMAKE_CURRENT_LIST_DIR}/examplemodule.c
      )

      target_include_directories(usermod_cexample INTERFACE
          ${CMAKE_CURRENT_LIST_DIR}
      )

      target_link_libraries(usermod INTERFACE usermod_cexample)


  See below for full usage example.


Basic example
-------------

This simple module named ``cexample`` provides a single function
``cexample.add_ints(a, b)`` which adds the two integer args together and returns
the result. It can be found in the MicroPython source tree
`in the examples directory <https://github.com/micropython/micropython/tree/master/examples/usercmodule/cexample>`_
and has a source file and a Makefile fragment with content as described above::

    micropython/
    └──examples/
       └──usercmodule/
          └──cexample/
             ├── examplemodule.c
             ├── micropython.mk
             └── micropython.cmake


Refer to the comments in these files for additional explanation.
Next to the ``cexample`` module there's also ``cppexample`` which
works in the same way but shows one way of mixing C and C++ code
in MicroPython.


Compiling the cmodule into MicroPython
--------------------------------------

To build such a module, compile MicroPython (see `getting started
<https://github.com/micropython/micropython/wiki/Getting-Started>`_),
applying 2 modifications:

1. Set the build-time flag ``USER_C_MODULES`` to point to the modules
   you want to include.  For ports that use Make this variable should be a
   directory which is searched automatically for modules.  For ports that
   use CMake this variable should be a file which includes the modules to
   build.  See below for details.

2. Enable the modules by setting the corresponding C preprocessor macro to
   1.  This is only needed if the modules you are building are not
   automatically enabled.

For building the example modules which come with MicroPython,
set ``USER_C_MODULES`` to the ``examples/usercmodule`` directory for Make,
or to ``examples/usercmodule/micropython.cmake`` for CMake.

For example, here's how the to build the unix port with the example modules:

.. code-block:: bash

    cd micropython/ports/unix
    make USER_C_MODULES=../../examples/usercmodule

You may need to run ``make clean`` once at the start when including new
user modules in the build.  The build output will show the modules found::

    ...
    Including User C Module from ../../examples/usercmodule/cexample
    Including User C Module from ../../examples/usercmodule/cppexample
    ...

For a CMake-based port such as rp2, this will look a little different (note
that CMake is actually invoked by ``make``):

.. code-block:: bash

    cd micropython/ports/rp2
    make USER_C_MODULES=../../examples/usercmodule/micropython.cmake

Again, you may need to run ``make clean`` first for CMake to pick up the
user modules.  The CMake build output lists the modules by name::

    ...
    Including User C Module(s) from ../../examples/usercmodule/micropython.cmake
    Found User C Module(s): usermod_cexample, usermod_cppexample
    ...

The contents of the top-level ``micropython.cmake`` can be used to control which
modules are enabled.

For your own projects it's more convenient to keep custom code out of the main
MicroPython source tree, so a typical project directory structure will look
like this::

      my_project/
      ├── modules/
      │   ├── example1/
      │   │   ├── example1.c
      │   │   ├── micropython.mk
      │   │   └── micropython.cmake
      │   ├── example2/
      │   │   ├── example2.c
      │   │   ├── micropython.mk
      │   │   └── micropython.cmake
      │   └── micropython.cmake
      └── micropython/
          ├──ports/
         ... ├──stm32/
            ...

When building with Make set ``USER_C_MODULES`` to the ``my_project/modules``
directory.  For example, building the stm32 port:

.. code-block:: bash

    cd my_project/micropython/ports/stm32
    make USER_C_MODULES=../../../modules

When building with CMake the top level ``micropython.cmake`` -- found directly
in the ``my_project/modules`` directory -- should ``include`` all of the modules
you want to have available:

  .. code-block:: cmake

      include(${CMAKE_CURRENT_LIST_DIR}/example1/micropython.cmake)
      include(${CMAKE_CURRENT_LIST_DIR}/example2/micropython.cmake)

Then build with:

.. code-block:: bash

    cd my_project/micropython/ports/esp32
    make USER_C_MODULES=../../../../modules/micropython.cmake

Note that the esp32 port needs the extra ``..`` for relative paths due to the
location of its main ``CMakeLists.txt`` file.   You can also specify absolute
paths to ``USER_C_MODULES``.

All modules specified by the ``USER_C_MODULES`` variable (either found in this
directory when using Make, or added via ``include`` when using CMake) will be
compiled, but only those which are enabled will be available for importing.
User modules are usually enabled by default (this is decided by the developer
of the module), in which case there is nothing more to do than set ``USER_C_MODULES``
as described above.

If a module is not enabled by default then the corresponding C preprocessor macro
must be enabled.  This macro name can be found by searching for the ``MP_REGISTER_MODULE``
line in the module's source code (it usually appears at the end of the main source file).
The third argument to ``MP_REGISTER_MODULE`` is the macro name, and this must be set
to 1 using ``CFLAGS_EXTRA`` to make the module available.  If the third argument is just
the number 1 then the module is enabled by default.

For example, the ``examples/usercmodule/cexample`` module is enabled by default so
has the following line in its source code:

  .. code-block:: c

      MP_REGISTER_MODULE(MP_QSTR_cexample, example_user_cmodule, 1);

Alternatively, to make this module disabled by default but selectable through
a preprocessor configuration option, it would be:

  .. code-block:: c

      MP_REGISTER_MODULE(MP_QSTR_cexample, example_user_cmodule, MODULE_CEXAMPLE_ENABLED);

In this case the module is enabled by adding ``CFLAGS_EXTRA=-DMODULE_CEXAMPLE_ENABLED=1``
to the ``make`` command, or editing ``mpconfigport.h`` or ``mpconfigboard.h`` to add

  .. code-block:: c

      #define MODULE_CEXAMPLE_ENABLED (1)

Note that the exact method depends on the port as they have different
structures.  If not done correctly it will compile but importing will
fail to find the module.


Module usage in MicroPython
---------------------------

Once built into your copy of MicroPython, the module
can now be accessed in Python just like any other builtin module, e.g.

.. code-block:: python

    import cexample
    print(cexample.add_ints(1, 3))
    # should display 4


================================================
FILE: docs/develop/compiler.rst
================================================
.. _compiler:

The Compiler
============

The compilation process in MicroPython involves the following steps:

* The lexer converts the stream of text that makes up a MicroPython program into tokens.
* The parser then converts the tokens into an abstract syntax (parse tree).
* Then bytecode or native code is emitted based on the parse tree.

For purposes of this discussion we are going to add a simple language feature ``add1``
that can be use in Python as:

.. code-block:: bash

    >>> add1 3
    4
    >>>

The ``add1`` statement takes an integer as argument and adds ``1`` to it.

Adding a grammar rule
----------------------

MicroPython's grammar is based on the `CPython grammar <https://docs.python.org/3.5/reference/grammar.html>`_
and is defined in `py/grammar.h <https://github.com/micropython/micropython/blob/master/py/grammar.h>`_.
This grammar is what is used to parse MicroPython source files.

There are two macros you need to know to define a grammar rule: ``DEF_RULE`` and ``DEF_RULE_NC``.
``DEF_RULE`` allows you to define a rule with an associated compile function,
while ``DEF_RULE_NC`` has no compile (NC) function for it.

A simple grammar definition with a compile function for our new ``add1`` statement
looks like the following:

.. code-block:: c

   DEF_RULE(add1_stmt, c(add1_stmt), and(2), tok(KW_ADD1), rule(testlist))

The second argument ``c(add1_stmt)`` is the corresponding compile function that should be implemented
in ``py/compile.c`` to turn this rule into executable code.

The third required argument can be ``or`` or ``and``. This specifies the number of nodes associated
with a statement. For example, in this case, our ``add1`` statement is similar to ADD1 in assembly
language. It takes one numeric argument. Therefore, the ``add1_stmt`` has two nodes associated with it.
One node is for the statement itself, i.e the literal ``add1`` corresponding to ``KW_ADD1``,
and the other for its argument, a ``testlist`` rule which is the top-level expression rule.

.. note::
   The ``add1`` rule here is just an example and not part of the standard
   MicroPython grammar.

The fourth argument in this example is the token associated with the rule, ``KW_ADD1``. This token should be
defined in the lexer by editing ``py/lexer.h``.

Defining the same rule without a compile function is achieved by using the ``DEF_RULE_NC`` macro
and omitting the compile function argument:

.. code-block:: c

   DEF_RULE_NC(add1_stmt, and(2), tok(KW_ADD1), rule(testlist))

The remaining arguments take on the same meaning. A rule without a compile function must
be handled explicitly by all rules that may have this rule as a node. Such NC-rules are usually
used to express sub-parts of a complicated grammar structure that cannot be expressed in a
single rule.

.. note::
   The macros ``DEF_RULE`` and ``DEF_RULE_NC`` take other arguments. For an in-depth understanding of
   supported parameters, see `py/grammar.h <https://github.com/micropython/micropython/blob/master/py/grammar.h>`_.

Adding a lexical token
----------------------

Every rule defined in the grammar should have a token associated with it that is defined in ``py/lexer.h``.
Add this token by editing the ``_mp_token_kind_t`` enum:

.. code-block:: c
   :emphasize-lines: 12

   typedef enum _mp_token_kind_t {
       ...
       MP_TOKEN_KW_OR,
       MP_TOKEN_KW_PASS,
       MP_TOKEN_KW_RAISE,
       MP_TOKEN_KW_RETURN,
       MP_TOKEN_KW_TRY,
       MP_TOKEN_KW_WHILE,
       MP_TOKEN_KW_WITH,
       MP_TOKEN_KW_YIELD,
       MP_TOKEN_KW_ADD1,
       ...
   } mp_token_kind_t;

Then also edit ``py/lexer.c`` to add the new keyword literal text:

.. code-block:: c
   :emphasize-lines: 12

   STATIC const char *const tok_kw[] = {
       ...
       "or",
       "pass",
       "raise",
       "return",
       "try",
       "while",
       "with",
       "yield",
       "add1",
       ...
   };

Notice the keyword is named depending on what you want it to be. For consistency, maintain the
naming standard accordingly.

.. note::
   The order of these keywords in ``py/lexer.c`` must match the order of tokens in the enum
   defined in ``py/lexer.h``.

Parsing
-------

In the parsing stage the parser takes the tokens produced by the lexer and converts them to an abstract syntax tree (AST) or
*parse tree*. The implementation for the parser is defined in `py/parse.c <https://github.com/micropython/micropython/blob/master/py/parse.c>`_.

The parser also maintains a table of constants for use in different aspects of parsing, similar to what a
`symbol table <https://steemit.com/programming/@drifter1/writing-a-simple-compiler-on-my-own-symbol-table-basic-structure>`_
does.

Several optimizations like `constant folding <http://compileroptimizations.com/category/constant_folding.htm>`_
on integers for most operations e.g. logical, binary, unary, etc, and optimizing enhancements on parenthesis
around expressions are performed during this phase, along with some optimizations on strings.

It's worth noting that *docstrings* are discarded and not accessible to the compiler.
Even optimizations like `string interning <https://en.wikipedia.org/wiki/String_interning>`_ are
not applied to *docstrings*.

Compiler passes
---------------

Like many compilers, MicroPython compiles all code to MicroPython bytecode or native code. The functionality
that achieves this is implemented in `py/compile.c <https://github.com/micropython/micropython/blob/master/py/compile.c>`_.
The most relevant method you should know about is this:

.. code-block:: c

   mp_obj_t mp_compile(mp_parse_tree_t *parse_tree, qstr source_file, bool is_repl) {
       // Compile the input parse_tree to a raw-code structure.
       mp_raw_code_t *rc = mp_compile_to_raw_code(parse_tree, source_file, is_repl);
       // Create and return a function object that executes the outer module.
       return mp_make_function_from_raw_code(rc, MP_OBJ_NULL, MP_OBJ_NULL);
   }

The compiler compiles the code in four passes: scope, stack size, code size and emit.
Each pass runs the same C code over the same AST data structure, with different things
being computed each time based on the results of the previous pass.

First pass
~~~~~~~~~~

In the first pass, the compiler learns about the known identifiers (variables) and
their scope, being global, local, closed over, etc. In the same pass the emitter
(bytecode or native code) also computes the number of labels needed for the emitted
code.

.. code-block:: c

   // Compile pass 1.
   comp->emit = emit_bc;
   comp->emit_method_table = &emit_bc_method_table;

   uint max_num_labels = 0;
   for (scope_t *s = comp->scope_head; s != NULL && comp->compile_error == MP_OBJ_NULL; s = s->next) {
       if (s->emit_options == MP_EMIT_OPT_ASM) {
           compile_scope_inline_asm(comp, s, MP_PASS_SCOPE);
       } else {
           compile_scope(comp, s, MP_PASS_SCOPE);

           // Check if any implicitly declared variables should be closed over.
           for (size_t i = 0; i < s->id_info_len; ++i) {
               id_info_t *id = &s->id_info[i];
               if (id->kind == ID_INFO_KIND_GLOBAL_IMPLICIT) {
                   scope_check_to_close_over(s, id);
               }
           }
       }
       ...
   }

Second and third passes
~~~~~~~~~~~~~~~~~~~~~~~

The second and third passes involve computing the Python stack size and code size
for the bytecode or native code. After the third pass the code size cannot change,
otherwise jump labels will be incorrect.

.. code-block:: c

   for (scope_t *s = comp->scope_head; s != NULL && comp->compile_error == MP_OBJ_NULL; s = s->next) {
       ...

       // Pass 2: Compute the Python stack size.
       compile_scope(comp, s, MP_PASS_STACK_SIZE);

       // Pass 3: Compute the code size.
       if (comp->compile_error == MP_OBJ_NULL) {
           compile_scope(comp, s, MP_PASS_CODE_SIZE);
       }

       ...
   }

Just before pass two there is a selection for the type of code to be emitted, which can
either be native or bytecode.

.. code-block:: c

   // Choose the emitter type.
   switch (s->emit_options) {
       case MP_EMIT_OPT_NATIVE_PYTHON:
       case MP_EMIT_OPT_VIPER:
           if (emit_native == NULL) {
               emit_native = NATIVE_EMITTER(new)(&comp->compile_error, &comp->next_label, max_num_labels);
           }
           comp->emit_method_table = NATIVE_EMITTER_TABLE;
           comp->emit = emit_native;
           break;

       default:
           comp->emit = emit_bc;
           comp->emit_method_table = &emit_bc_method_table;
           break;
   }

The bytecode option is the default but something unique to note for the native
code option is that there is another option via ``VIPER``. See the
:ref:`Emitting native code <emitting_native_code>` section for more details on
viper annotations.

There is also support for *inline assembly code*, where assembly instructions are
written as Python function calls but are emitted directly as the corresponding
machine code. This assembler has only three passes (scope, code size, emit)
and uses a different implementation, not the ``compile_scope`` function.
See the `inline assembler tutorial <https://docs.micropython.org/en/latest/pyboard/tutorial/assembler.html#pyboard-tutorial-assembler>`_
for more details.

Fourth pass
~~~~~~~~~~~

The fourth pass emits the final code that can be executed, either bytecode in
the virtual machine, or native code directly by the CPU.

.. code-block:: c

   for (scope_t *s = comp->scope_head; s != NULL && comp->compile_error == MP_OBJ_NULL; s = s->next) {
       ...

       // Pass 4: Emit the compiled bytecode or native code.
       if (comp->compile_error == MP_OBJ_NULL) {
           compile_scope(comp, s, MP_PASS_EMIT);
       }
   }

Emitting bytecode
-----------------

Statements in Python code usually correspond to emitted bytecode, for example ``a + b``
generates "push a" then "push b" then "binary op add". Some statements do not emit
anything but instead affect other things like the scope of variables, for example
``global a``.

The implementation of a function that emits bytecode looks similar to this:

.. code-block:: c

   void mp_emit_bc_unary_op(emit_t *emit, mp_unary_op_t op) {
       emit_write_bytecode_byte(emit, 0, MP_BC_UNARY_OP_MULTI + op);
   }

We use the unary operator expressions for an example here but the implementation
details are similar for other statements/expressions. The method ``emit_write_bytecode_byte()``
is a wrapper around the main function ``emit_get_cur_to_write_bytecode()`` that all
functions must call to emit bytecode.

.. _emitting_native_code:

Emitting native code
---------------------

Similar to how bytecode is generated, there should be a corresponding function in ``py/emitnative.c`` for each
code statement:

.. code-block:: c

   STATIC void emit_native_unary_op(emit_t *emit, mp_unary_op_t op) {
        vtype_kind_t vtype;
        emit_pre_pop_reg(emit, &vtype, REG_ARG_2);
        if (vtype == VTYPE_PYOBJ) {
            emit_call_with_imm_arg(emit, MP_F_UNARY_OP, op, REG_ARG_1);
            emit_post_push_reg(emit, VTYPE_PYOBJ, REG_RET);
        } else {
            adjust_stack(emit, 1);
            EMIT_NATIVE_VIPER_TYPE_ERROR(emit,
                MP_ERROR_TEXT("unary op %q not implemented"), mp_unary_op_method_name[op]);
        }
   }

The difference here is that we have to handle *viper typing*. Viper annotations allow
us to handle more than one type of variable. By default all variables are Python objects,
but with viper a variable can also be declared as a machine-typed variable like a native
integer or pointer. Viper can be thought of as a superset of Python, where normal Python
objects are handled as usual, while native machine variables are handled in an optimised
way by using direct machine instructions for the operations. Viper typing may break
Python equivalence because, for example, integers become native integers and can overflow
(unlike Python integers which extend automatically to arbitrary precision).


================================================
FILE: docs/develop/extendingmicropython.rst
================================================
.. _extendingmicropython:

Extending MicroPython in C
==========================

This chapter describes options for implementing additional functionality in C, but from code
written outside of the main MicroPython repository. The first approach is useful for building
your own custom firmware with some project-specific additional modules or functions that can
be accessed from Python. The second approach is for building modules that can be loaded at runtime.

Please see the :ref:`library section <internals_library>` for more information on building core modules that
live in the main MicroPython repository.

.. toctree::
   :maxdepth: 3

   cmodules.rst
   natmod.rst
   

================================================
FILE: docs/develop/gettingstarted.rst
================================================
.. _gettingstarted:

Getting Started
===============

This guide covers a step-by-step process on setting up version control, obtaining and building
a copy of the source code for a port, building the documentation, running tests, and a description of the 
directory structure of the MicroPython code base.

Source control with git
-----------------------

MicroPython is hosted on `GitHub <https://github.com/micropython/micropython>`_ and uses
`Git <https://git-scm.com>`_ for source control. The workflow is such that
code is pulled and pushed to and from the main repository. Install the respective version
of Git for your operating system to follow through the rest of the steps.

.. note::
   For a reference on the installation instructions, please refer to 
   the `Git installation instructions <https://git-scm.com/book/en/v2/Getting-Started-Installing-Git>`_.
   Learn about the basic git commands in this `Git Handbook <https://guides.github.com/introduction/git-handbook/>`_
   or any other sources on the internet.

.. note::
   A .git-blame-ignore-revs file is included which avoids the output of git blame getting cluttered
   by commits which are only for formatting code but have no functional changes. See `git blame documentation
   <https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revltrevgt>`_ on how to use this.

Get the code
------------

It is recommended that you maintain a fork of the MicroPython repository for your development purposes.
The process of obtaining the source code includes the following:

#. Fork the repository https://github.com/micropython/micropython
#. You will now have a fork at <https://github.com/<your-user-name>/micropython>.
#. Clone the forked repository using the following command:

.. code-block:: bash

   $ git clone https://github.com/<your-user-name>/micropython

Then, `configure the remote repositories <https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes>`_ to be able to
collaborate on the MicroPython project.

Configure remote upstream:

.. code-block:: bash

   $ cd micropython
   $ git remote add upstream https://github.com/micropython/micropython

It is common to configure ``upstream`` and ``origin`` on a forked repository
to assist with sharing code changes. You can maintain your own mapping but
it is recommended that ``origin`` maps to your fork and ``upstream`` to the main
MicroPython repository.

After the above configuration, your setup should be similar to this:

.. code-block:: bash
   
   $ git remote -v
   origin	https://github.com/<your-user-name>/micropython (fetch)
   origin	https://github.com/<your-user-name>/micropython (push)
   upstream	https://github.com/micropython/micropython (fetch)
   upstream	https://github.com/micropython/micropython (push)

You should now have a copy of the source code. By default, you are pointing
to the master branch. To prepare for further development, it is recommended
to work on a development branch.

.. code-block:: bash

    $ git checkout -b dev-branch

You can give it any name. You will have to compile MicroPython whenever you change 
to a different branch.

Compile and build the code
--------------------------

When compiling MicroPython, you compile a specific :term:`port`, usually
targeting a specific :ref:`board <glossary>`. Start by installing the required dependencies.
Then build the MicroPython cross-compiler before you can successfully compile and build.
This applies specifically when using Linux to compile.
The Windows instructions are provided in a later section.

.. _required_dependencies:

Required dependencies
~~~~~~~~~~~~~~~~~~~~~

Install the required dependencies for Linux:

.. code-block:: bash

   $ sudo apt-get install build-essential libffi-dev git pkg-config

For the stm32 port, the ARM cross-compiler is required:

.. code-block:: bash

   $ sudo apt-get install arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib

See the `ARM GCC
toolchain <https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm>`_
for the latest details.

Python is also required. Python 2 is supported for now, but we recommend using Python 3.
Check that you have Python available on your system:

.. code-block:: bash

   $ python3
   Python 3.5.0 (default, Jul 17 2020, 14:04:10) 
   [GCC 5.4.0 20160609] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>> 

All supported ports have different dependency requirements, see their respective
`readme files <https://github.com/micropython/micropython/tree/master/ports>`_.

Building the MicroPython cross-compiler
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Almost all ports require building ``mpy-cross`` first to perform pre-compilation
of Python code that will be included in the port firmware:

.. code-block:: bash

   $ cd mpy-cross
   $ make

.. note::
   Note that, ``mpy-cross`` must be built for the host architecture
   and not the target architecture.

If it built successfully, you should see a message similar to this:

.. code-block:: bash

   LINK mpy-cross
      text	   data	    bss	    dec	    hex	filename
    279328	    776	    880	 280984	  44998	mpy-cross

.. note::

   Use ``make -C mpy-cross`` to build the cross-compiler in one statement
   without moving to the ``mpy-cross`` directory otherwise, you will need
   to do ``cd ..`` for the next steps.

Building the Unix port of MicroPython
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The Unix port is a version of MicroPython that runs on Linux, macOS, and other Unix-like operating systems.
It's extremely useful for developing MicroPython as it avoids having to deploy your code to a device to test it.
In many ways, it works a lot like CPython's python binary.

To build for the Unix port, make sure all Linux related dependencies are installed as detailed in the
required dependencies section. See the :ref:`required_dependencies`
to make sure that all dependencies are installed for this port. Also, make sure you have a working
environment for ``gcc`` and ``GNU make``. Ubuntu 20.04 has been used for the example
below but other unixes ought to work with little modification:

.. code-block:: bash

   $ gcc --version
   gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
   Copyright (C) 2019 Free Software Foundation, Inc.
   This is free software; see the source for copying conditions.  There is NO
   warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.then build:

.. code-block:: bash

   $ cd ports/unix
   $ make submodules
   $ make

If MicroPython built correctly, you should see the following:

.. code-block:: bash

   LINK micropython
      text	   data	    bss	    dec	    hex	filename
    412033	   5680	   2496	 420209	  66971	micropython

Now run it:

.. code-block:: bash

   $ ./micropython
   MicroPython v1.13-38-gc67012d-dirty on 2020-09-13; linux version
   Use Ctrl-D to exit, Ctrl-E for paste mode
   >>> print("hello world")
   hello world
   >>>

Building the Windows port
~~~~~~~~~~~~~~~~~~~~~~~~~

The Windows port includes a Visual Studio project file micropython.vcxproj that you can use to build micropython.exe.
It can be opened in Visual Studio or built from the command line using msbuild. Alternatively, it can be built using mingw,
either in Windows with Cygwin, or on Linux.
See `windows port documentation <https://github.com/micropython/micropython/tree/master/ports/windows>`_ for more information.

Building the STM32 port
~~~~~~~~~~~~~~~~~~~~~~~

Like the Unix port, you need to install some required dependencies
as detailed in the :ref:`required_dependencies` section, then build:

.. code-block:: bash

   $ cd ports/stm32
   $ make submodules
   $ make

Please refer to the `stm32 documentation <https://github.com/micropython/micropython/tree/master/ports/stm32>`_ 
for more details on flashing the firmware.

.. note::
   See the :ref:`required_dependencies` to make sure that all dependencies are installed for this port.
   The cross-compiler is needed. ``arm-none-eabi-gcc`` should also be in the $PATH or specified manually
   via CROSS_COMPILE, either by setting the environment variable or in the ``make`` command line arguments.

You can also specify which board to use:

.. code-block:: bash

   $ cd ports/stm32
   $ make submodules
   $ make BOARD=<board>

See `ports/stm32/boards <https://github.com/micropython/micropython/tree/master/ports/stm32/boards>`_
for the available boards. e.g. "PYBV11" or "NUCLEO_WB55".

Building the documentation
--------------------------

MicroPython documentation is created using ``Sphinx``. If you have already
installed Python, then install ``Sphinx`` using ``pip``. It is recommended
that you use a virtual environment:

.. code-block:: bash

   $ python3 -m venv env
   $ source env/bin/activate
   $ pip install sphinx

Navigate to the ``docs`` directory:

.. code-block:: bash

   $ cd docs

Build the docs:

.. code-block:: bash

   $ make html

Open ``docs/build/html/index.html`` in your browser to view the docs locally. Refer to the 
documentation on `importing your documentation
<https://docs.readthedocs.io/en/stable/intro/import-guide.html>`_ to use Read the Docs.

Running the tests
-----------------

To run all tests in the test suite on the Unix port use:

.. code-block:: bash

   $ cd ports/unix
   $ make test

To run a selection of tests on a board/device connected over USB use:

.. code-block:: bash

   $ cd tests
   $ ./run-tests.py --target minimal --device /dev/ttyACM0

See also :ref:`writingtests`.

Folder structure
----------------

There are a couple of directories to take note of in terms of where certain implementation details
are. The following is a break down of the top-level folders in the source code.

py

  Contains the compiler, runtime, and core library implementation.

mpy-cross

  Has the MicroPython cross-compiler which pre-compiles the Python scripts to bytecode.

ports

  Code for all the versions of MicroPython for the supported ports.

lib

  Low-level C libraries used by any port which are mostly 3rd-party libraries.

drivers

  Has drivers for specific hardware and intended to work across multiple ports.

extmod

  Contains a C implementation of more non-core modules.

docs

  Has the standard documentation found at https://docs.micropython.org/.

tests

  An implementation of the test suite.

tools

  Contains helper tools including the ``upip`` and the ``pyboard.py`` module.

examples

  Example code for building MicroPython as a library as well as native modules.


================================================
FILE: docs/develop/index.rst
================================================
Developing and building
=======================

This chapter covers a tour of MicroPython from the perspective of a developer, contributing
to MicroPython. It acts as a comprehensive resource on the implementation details of MicroPython
for both novice and expert contributors.

Development around MicroPython usually involves modifying the core runtime, porting or 
maintaining a new library. This guide describes at great depth, the implementation
details of MicroPython including a getting started guide, compiler internals, porting
MicroPython to a new platform and implementing a core MicroPython library.

.. toctree::
   :maxdepth: 3

   gettingstarted.rst
   writingtests.rst
   compiler.rst
   memorymgt.rst
   library.rst
   optimizations.rst
   qstr.rst
   maps.rst
   publiccapi.rst
   extendingmicropython.rst
   porting.rst
   

================================================
FILE: docs/develop/library.rst
================================================
.. _internals_library:

Implementing a Module
=====================

This chapter details how to implement a core module in MicroPython.
MicroPython modules can be one of the following:

- Built-in module: A general module that is be part of the MicroPython repository.
- User module: A module that is useful for your specific project that you maintain
  in your own repository or private codebase.
- Dynamic module: A module that can be deployed and imported at runtime to your device.

A module in MicroPython can be implemented in one of the following locations:

- py/: A core library that mirrors core CPython functionality.
- extmod/: A CPython or MicroPython-specific module that is shared across multiple ports.
- ports/<port>/: A port-specific module.

.. note::
   This chapter describes modules implemented in ``py/`` or core modules.
   See :ref:`extendingmicropython` for details on implementing an external module.
   For details on port-specific modules, see :ref:`porting_to_a_board`.

Implementing a core module
--------------------------

Like CPython, MicroPython has core builtin modules that can be accessed through import statements.
An example is the ``gc`` module discussed in :ref:`memorymanagement`.

.. code-block:: bash

   >>> import gc
   >>> gc.enable()
   >>>

MicroPython has several other builtin standard/core modules like ``io``, ``uarray`` etc.
Adding a new core module involves several modifications.

First, create the ``C`` file in the ``py/`` directory. In this example we are adding a
hypothetical new module ``subsystem`` in the file ``modsubsystem.c``:

.. code-block:: c

   #include "py/builtin.h"
   #include "py/runtime.h"

   #if MICROPY_PY_SUBSYSTEM

   // info()
   STATIC mp_obj_t py_subsystem_info(void) {
       return MP_OBJ_NEW_SMALL_INT(42);
   }
   MP_DEFINE_CONST_FUN_OBJ_0(subsystem_info_obj, py_subsystem_info);

   STATIC const mp_rom_map_elem_t mp_module_subsystem_globals_table[] = {
       { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_subsystem) },
       { MP_ROM_QSTR(MP_QSTR_info), MP_ROM_PTR(&subsystem_info_obj) },
   };
   STATIC MP_DEFINE_CONST_DICT(mp_module_subsystem_globals, mp_module_subsystem_globals_table);

   const mp_obj_module_t mp_module_subsystem = {
       .base = { &mp_type_module },
       .globals = (mp_obj_dict_t *)&mp_module_subsystem_globals,
   };

   MP_REGISTER_MODULE(MP_QSTR_subsystem, mp_module_subsystem, MICROPY_PY_SUBSYSTEM);

   #endif

The implementation includes a definition of all functions related to the module and adds the
functions to the module's global table in ``mp_module_subsystem_globals_table``. It also
creates the module object with ``mp_module_subsystem``.  The module is then registered with
the wider system via the ``MP_REGISTER_MODULE`` macro.

After building and running the modified MicroPython, the module should now be importable:

.. code-block:: bash

   >>> import subsystem
   >>> subsystem.info()
   42
   >>>

Our ``info()`` function currently returns just a single number but can be extended
to do anything.  Similarly, more functions can be added to this new module.


================================================
FILE: docs/develop/maps.rst
================================================
.. _maps:

Maps and Dictionaries
=====================

MicroPython dictionaries and maps use techniques called open addressing and linear probing.
This chapter details both of these methods.

Open addressing
---------------

`Open addressing <https://en.wikipedia.org/wiki/Open_addressing>`_ is used to resolve collisions.
Collisions are very common occurrences and happen when two items happen to hash to the same
slot or location. For example, given a hash setup as this:

.. image:: img/collision.png

If there is a request to fill slot ``0`` with ``70``, since the slot ``0`` is not empty, open addressing
finds the next available slot in the dictionary to service this request. This sequential search for an alternate
location is called *probing*. There are several sequence probing algorithms but MicroPython uses
linear probing that is described in the next section.

Linear probing
--------------

Linear probing is one of the methods for finding an available address or slot in a dictionary. In MicroPython,
it is used with open addressing. To service the request described above, unlike other probing algorithms,
linear probing assumes a fixed interval of ``1`` between probes. The request will therefore be serviced by
placing the item in the next free slot which is slot ``4`` in our example:

.. image:: img/linprob.png

The same methods i.e open addressing and linear probing are used to search for an item in a dictionary.
Assume we want to search for the data item ``33``. The computed hash value will be 2. Looking at slot 2
reveals ``33``, at this point, we return ``True``. Searching for ``70`` is quite different as there was a
collision at the time of insertion. Therefore computing the hash value is ``0`` which is currently
holding ``44``. Instead of simply returning ``False``, we perform a sequential search starting at point
``1`` until the item ``70`` is found or we encounter a free slot. This is the general way of performing
look-ups in hashes:

.. code-block:: c

   // not yet found, keep searching in this table
   pos = (pos + 1) % set->alloc;

   if (pos == start_pos) {
       // search got back to starting position, so index is not in table
       if (lookup_kind & MP_MAP_LOOKUP_ADD_IF_NOT_FOUND) {
           if (avail_slot != NULL) {
               // there was an available slot, so use that
               set->used++;
               *avail_slot = index;
               return index;
           } else {
               // not enough room in table, rehash it
               mp_set_rehash(set);
               // restart the search for the new element
               start_pos = pos = hash % set->alloc;
           }
       }
   } else {
        return MP_OBJ_NULL;
   }


================================================
FILE: docs/develop/memorymgt.rst
================================================
.. _memorymanagement:

Memory Management
=================

Unlike programming languages such as C/C++, MicroPython hides memory management
details from the developer by supporting automatic memory management.
Automatic memory management is a technique used by operating systems or applications to automatically manage
the allocation and deallocation of memory. This eliminates challenges such as forgetting to
free the memory allocated to an object. Automatic memory management also avoids the critical issue of using memory
that is already released. Automatic memory management takes many forms, one of them being
garbage collection (GC).

The garbage collector usually has two responsibilities;

#. Allocate new objects in available memory.
#. Free unused memory.

There are many GC algorithms but MicroPython uses the
`Mark and Sweep <https://en.wikipedia.org/wiki/Tracing_garbage_collection#Basic_algorithm>`_
policy for managing memory. This algorithm has a mark phase that traverses the heap marking all
live objects while the sweep phase goes through the heap reclaiming all unmarked objects.

Garbage collection functionality in MicroPython is available through the ``gc`` built-in
module:

.. code-block:: bash

   >>> x = 5
   >>> x
   5
   >>> import gc
   >>> gc.enable()
   >>> gc.mem_alloc()
   1312
   >>> gc.mem_free()
   2071392
   >>> gc.collect()
   19
   >>> gc.disable()
   >>>

Even when ``gc.disable()`` is invoked, collection can be triggered with ``gc.collect()``.

The object model
----------------

All MicroPython objects are referred to by the ``mp_obj_t`` data type.
This is usually word-sized (i.e. the same size as a pointer on the target architecture),
and can be typically 32-bit (STM32, nRF, ESP32, Unix x86) or 64-bit (Unix x64).
It can also be greater than a word-size for certain object representations, for
example ``OBJ_REPR_D`` has a 64-bit sized ``mp_obj_t`` on a 32-bit architecture.

An ``mp_obj_t`` represents a MicroPython object, for example an integer, float, type, dict or
class instance. Some objects, like booleans and small integers, have their value stored directly
in the ``mp_obj_t`` value and do not require additional memory. Other objects have their value
store elsewhere in memory (for example on the garbage-collected heap) and their ``mp_obj_t`` contains
a pointer to that memory. A portion of ``mp_obj_t`` is the tag which tells what type of object it is.

See ``py/mpconfig.h`` for the specific details of the available representations.

**Pointer tagging**

Because pointers are word-aligned, when they are stored in an ``mp_obj_t`` the
lower bits of this object handle will be zero.  For example on a 32-bit architecture
the lower 2 bits will be zero:

``********|********|********|******00``

These bits are reserved for purposes of storing a tag. The tag stores extra information as
opposed to introducing a new field to store that information in the object, which may be
inefficient.  In MicroPython the tag tells if we are dealing with a small integer, interned
(small) string or a concrete object, and different semantics apply to each of these.

For small integers the mapping is this:

``********|********|********|*******1``

Where the asterisks hold the actual integer value.  For an interned string or an immediate
object (e.g. ``True``) the layout of the ``mp_obj_t`` value is, respectively:

``********|********|********|*****010``

``********|********|********|*****110``

While a concrete object that is none of the above takes the form:

``********|********|********|******00``

The stars here correspond to the address of the concrete object in memory.

Allocation of objects
----------------------

The value of a small integer is stored directly in the ``mp_obj_t`` and will be
allocated in-place, not on the heap or elsewhere.  As such, creation of small
integers does not affect the heap.  Similarly for interned strings that already have
their textual data stored elsewhere, and immediate values like ``None``, ``False``
and ``True``.

Everything else which is a concrete object is allocated on the heap and its object structure is such that
a field is reserved in the object header to store the type of the object.

.. code-block:: bash

    +++++++++++
    +         +
    + type    + object header
    +         +
    +++++++++++
    +         + object items
    +         +
    +         +
    +++++++++++

The heap's smallest unit of allocation is a block, which is four machine words in
size (16 bytes on a 32-bit machine, 32 bytes on a 64-bit machine).
Another structure also allocated on the heap tracks the allocation of
objects in each block. This structure is called a *bitmap*.

.. image:: img/bitmap.png

The bitmap tracks whether a block is "free" or "in use" and use two bits to track this state
for each block.

The mark-sweep garbage collector manages the objects allocated on the heap, and also
utilises the bitmap to mark objects that are still in use.
See `py/gc.c <https://github.com/micropython/micropython/blob/master/py/gc.c>`_
for the full implementation of these details.

**Allocation: heap layout**

The heap is arranged such that it consists of blocks in pools. A block
can have different properties:

- *ATB(allocation table byte):* If set, then the block is a normal block
- *FREE:* Free block
- *HEAD:* Head of a chain of blocks
- *TAIL:* In the tail of a chain of blocks
- *MARK :* Marked head block
- *FTB(finaliser table byte):* If set, then the block has a finaliser


================================================
FILE: docs/develop/natmod.rst
================================================
.. _natmod:

Native machine code in .mpy files
=================================

This section describes how to build and work with .mpy files that contain native
machine code from a language other than Python.  This allows you to
write code in a language like C, compile and link it into a .mpy file, and then
import this file like a normal Python module.  This can be used for implementing
functionality which is performance critical, or for including an existing
library written in another language.

One of the main advantages of using native .mpy files is that native machine code
can be imported by a script dynamically, without the need to rebuild the main
MicroPython firmware.  This is in contrast to :ref:`cmodules` which also allows
defining custom modules in C but they must be compiled into the main firmware image.

The focus here is on using C to build native modules, but in principle any
language which can be compiled to stand-alone machine code can be put into a
.mpy file.

A native .mpy module is built using the ``mpy_ld.py`` tool, which is found in the
``tools/`` directory of the project.  This tool takes a set of object files
(.o files) and links them together to create a native .mpy files.  It requires
CPython 3 and the library pyelftools v0.25 or greater.

Supported features and limitations
----------------------------------

A .mpy file can contain MicroPython bytecode and/or native machine code.  If it
contains native machine code then the .mpy file has a specific architecture
associated with it.  Current supported architectures are (these are the valid
options for the ``ARCH`` variable, see below):

* ``x86`` (32 bit)
* ``x64`` (64 bit x86)
* ``armv7m`` (ARM Thumb 2, eg Cortex-M3)
* ``armv7emsp`` (ARM Thumb 2, single precision float, eg Cortex-M4F, Cortex-M7)
* ``armv7emdp`` (ARM Thumb 2, double precision float, eg Cortex-M7)
* ``xtensa`` (non-windowed, eg ESP8266)
* ``xtensawin`` (windowed with window size 8, eg ESP32)

When compiling and linking the native .mpy file the architecture must be chosen
and the corresponding file can only be imported on that architecture.  For more
details about .mpy files see :ref:`mpy_files`.

Native code must be compiled as position independent code (PIC) and use a global
offset table (GOT), although the details of this varies from architecture to
architecture.  When importing .mpy files with native code the import machinery
is able to do some basic relocation of the native code.  This includes
relocating text, rodata and BSS sections.

Supported features of the linker and dynamic loader are:

* executable code (text)
* read-only data (rodata), including strings and constant data (arrays, structs, etc)
* zeroed data (BSS)
* pointers in text to text, rodata and BSS
* pointers in rodata to text, rodata and BSS

The known limitations are:

* data sections are not supported; workaround: use BSS data and initialise the
  data values explicitly

* static BSS variables are not supported; workaround: use global BSS variables

So, if your C code has writable data, make sure the data is defined globally,
without an initialiser, and only written to within functions.

Linker limitation: the native module is not linked against the symbol table of the
full MicroPython firmware.  Rather, it is linked against an explicit table of exported
symbols found in ``mp_fun_table`` (in ``py/nativeglue.h``), that is fixed at firmware
build time.  It is thus not possible to simply call some arbitrary HAL/OS/RTOS/system
function, for example.

New symbols can be added to the end of the table and the firmware rebuilt.
The symbols also need to be added to ``tools/mpy_ld.py``'s ``fun_table`` dict in the
same location.  This allows ``mpy_ld.py`` to be able to pick the new symbols up and
provide relocations for them when the mpy is imported.  Finally, if the symbol is a
function, a macro or stub should be added to ``py/dynruntime.h`` to make it easy to
call the function.

Defining a native module
------------------------

A native .mpy module is defined by a set of files that are used to build the .mpy.
The filesystem layout consists of two main parts, the source files and the Makefile:

* In the simplest case only a single C source file is required, which contains all
  the code that will be compiled into the .mpy module.  This C source code must
  include the ``py/dynruntime.h`` file to access the MicroPython dynamic API, and
  must at least define a function called ``mpy_init``.  This function will be the
  entry point of the module, called when the module is imported.

  The module can be split into multiple C source files if desired.  Parts of the
  module can also be implemented in Python.  All source files should be listed in
  the Makefile, by adding them to the ``SRC`` variable (see below).  This includes
  both C source files as well as any Python files which will be included in the
  resulting .mpy file.

* The ``Makefile`` contains the build configuration for the module and list the
  source files used to build the .mpy module.  It should define ``MPY_DIR`` as the
  location of the MicroPython repository (to find header files, the relevant Makefile
  fragment, and the ``mpy_ld.py`` tool), ``MOD`` as the name of the module, ``SRC``
  as the list of source files, optionally specify the machine architecture via ``ARCH``,
  and then include ``py/dynruntime.mk``.

Minimal example
---------------

This section provides a fully working example of a simple module named ``factorial``.
This module provides a single function ``factorial.factorial(x)`` which computes the
factorial of the input and returns the result.

Directory layout::

    factorial/
    ├── factorial.c
    └── Makefile

The file ``factorial.c`` contains:

.. code-block:: c

    // Include the header file to get access to the MicroPython API
    #include "py/dynruntime.h"

    // Helper function to compute factorial
    STATIC mp_int_t factorial_helper(mp_int_t x) {
        if (x == 0) {
            return 1;
        }
        return x * factorial_helper(x - 1);
    }

    // This is the function which will be called from Python, as factorial(x)
    STATIC mp_obj_t factorial(mp_obj_t x_obj) {
        // Extract the integer from the MicroPython input object
        mp_int_t x = mp_obj_get_int(x_obj);
        // Calculate the factorial
        mp_int_t result = factorial_helper(x);
        // Convert the result to a MicroPython integer object and return it
        return mp_obj_new_int(result);
    }
    // Define a Python reference to the function above
    STATIC MP_DEFINE_CONST_FUN_OBJ_1(factorial_obj, factorial);

    // This is the entry point and is called when the module is imported
    mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *args) {
        // This must be first, it sets up the globals dict and other things
        MP_DYNRUNTIME_INIT_ENTRY

        // Make the function available in the module's namespace
        mp_store_global(MP_QSTR_factorial, MP_OBJ_FROM_PTR(&factorial_obj));

        // This must be last, it restores the globals dict
        MP_DYNRUNTIME_INIT_EXIT
    }

The file ``Makefile`` contains:

.. code-block:: make

    # Location of top-level MicroPython directory
    MPY_DIR = ../../..

    # Name of module
    MOD = factorial

    # Source files (.c or .py)
    SRC = factorial.c

    # Architecture to build for (x86, x64, armv7m, xtensa, xtensawin)
    ARCH = x64

    # Include to get the rules for compiling and linking the module
    include $(MPY_DIR)/py/dynruntime.mk

Compiling the module
--------------------

The prerequisite tools needed to build a native .mpy file are:

* The MicroPython repository (at least the ``py/`` and ``tools/`` directories).
* CPython 3, and the library pyelftools (eg ``pip install 'pyelftools>=0.25'``).
* GNU make.
* A C compiler for the target architecture (if C source is used).
* Optionally ``mpy-cross``, built from the MicroPython repository (if .py source is used).

Be sure to select the correct ``ARCH`` for the target you are going to run on.
Then build with::

    $ make

Without modifying the Makefile you can specify the target architecture via::

    $ make ARCH=armv7m

Module usage in MicroPython
---------------------------

Once the module is built there should be a file called ``factorial.mpy``.  Copy
this so it is accessible on the filesystem of your MicroPython system and can be
found in the import path.  The module can now be accessed in Python just like any
other module, for example::

    import factorial
    print(factorial.factorial(10))
    # should display 3628800

Further examples
----------------

See ``examples/natmod/`` for further examples which show many of the available
features of native .mpy modules.  Such features include:

* using multiple C source files
* including Python code alongside C code
* rodata and BSS data
* memory allocation
* use of floating point
* exception handling
* including external C libraries


================================================
FILE: docs/develop/optimizations.rst
================================================
.. _optimizations:

Optimizations
=============

MicroPython uses several optimizations to save RAM but also ensure the efficient
execution of programs. This chapter discusses some of these optimizations.

.. note::
   :ref:`qstr` and :ref:`maps` details other optimizations on strings and
   dictionaries.

Frozen bytecode
---------------

When MicroPython loads Python code from the filesystem, it first has to parse the file into
a temporary in-memory representation, and then generate bytecode for execution, both of which
are stored in the heap (in RAM). This can lead to significant amounts of memory being used.
The MicroPython cross compiler can be used to generate
a ``.mpy`` file, containing the pre-compiled bytecode for a Python module. This will still
be loaded into RAM, but it avoids the additional overhead of the parsing stage.

As a further optimisation, the pre-compiled bytecode from a ``.mpy`` file can be "frozen"
into the firmware image as part of the main firmware compilation process, which means that
the bytecode will be executed from ROM. This can lead to a significant memory saving, and
reduce heap fragmentation.

Variables
---------

MicroPython processes local and global variables differently. Global variables
are stored and looked up from a global dictionary that is allocated on the heap
(note that each module has its own separate dict, so separate namespace).
Local variables on the other hand are are stored on the Python value stack, which may
live on the C stack or on the heap.  They are accessed directly by their offset
within the Python stack, which is more efficient than a global lookup in a dict.

The length of global variable names also affects how much RAM is used as identifiers
are stored in RAM. The shorter the identifier, the less memory is used.

The other aspect is that ``const`` variables that start with an underscore are treated as
proper constants and are not allocated or added in a dictionary, hence saving some memory.
These variables use ``const()`` from the MicroPython library. Therefore:

.. code-block:: python

    from micropython import const

    X = const(1)
    _Y = const(2)
    foo(X, _Y)

Compiles to:

.. code-block:: python

    X = 1
    foo(1, 2)

Allocation of memory
--------------------

Most of the common MicroPython constructs are not allocated on the heap.
However the following are:

- Dynamic data structures like lists, mappings, etc;
- Functions, classes and object instances;
- imports; and
- First-time assignment of global variables (to create the slot in the global dict).

For a detailed discussion on a more user-centric perspective on optimization,
see `Maximising MicroPython speed <https://docs.micropython.org/en/latest/reference/speed_python.html>`_


================================================
FILE: docs/develop/porting.rst
================================================
.. _porting_to_a_board:

Porting MicroPython
===================

The MicroPython project contains several ports to different microcontroller families and
architectures. The project repository has a `ports <https://github.com/micropython/micropython/tree/master/ports>`_
directory containing a subdirectory for each supported port.

A port will typically contain definitions for multiple "boards", each of which is a specific piece of
hardware that that port can run on, e.g. a development kit or device.

The `minimal port <https://github.com/micropython/micropython/tree/master/ports/minimal>`_ is
available as a simplified reference implementation of a MicroPython port.  It can run on both the
host system and an STM32F4xx MCU.

In general, starting a port requires:

- Setting up the toolchain (configuring Makefiles, etc).
- Implementing boot configuration and CPU initialization.
- Initialising basic drivers required for development and debugging (e.g. GPIO, UART).
- Performing the board-specific configurations.
- Implementing the port-specific modules.

Minimal MicroPython firmware
----------------------------

The best way to start porting MicroPython to a new board is by integrating a minimal
MicroPython interpreter.  For this walkthrough, create a subdirectory for the new
port in the ``ports`` directory:

.. code-block:: bash

   $ cd ports
   $ mkdir example_port

The basic MicroPython firmware is implemented in the main port file, e.g ``main.c``:

.. code-block:: c

   #include "py/compile.h"
   #include "py/gc.h"
   #include "py/mperrno.h"
   #include "py/stackctrl.h"
   #include "lib/utils/gchelper.h"
   #include "lib/utils/pyexec.h"

   // Allocate memory for the MicroPython GC heap.
   static char heap[4096];

   int main(int argc, char **argv) {
       // Initialise the MicroPython runtime.
       mp_stack_ctrl_init();
       gc_init(heap, heap + sizeof(heap));
       mp_init();
       mp_obj_list_init(MP_OBJ_TO_PTR(mp_sys_path), 0);
       mp_obj_list_init(MP_OBJ_TO_PTR(mp_sys_argv), 0);

       // Start a normal REPL; will exit when ctrl-D is entered on a blank line.
       pyexec_friendly_repl();

       // Deinitialise the runtime.
       gc_sweep_all();
       mp_deinit();
       return 0;
   }

   // Handle uncaught exceptions (should never be reached in a correct C implementation).
   void nlr_jump_fail(void *val) {
       for (;;) {
       }
   }

   // Do a garbage collection cycle.
   void gc_collect(void) {
       gc_collect_start();
       gc_helper_collect_regs_and_stack();
       gc_collect_end();
   }

   // There is no filesystem so stat'ing returns nothing.
   mp_import_stat_t mp_import_stat(const char *path) {
       return MP_IMPORT_STAT_NO_EXIST;
   }

   // There is no filesystem so opening a file raises an exception.
   mp_lexer_t *mp_lexer_new_from_file(const char *filename) {
       mp_raise_OSError(MP_ENOENT);
   }

We also need a Makefile at this point for the port:

.. code-block:: Makefile

   # Include the core environment definitions; this will set $(TOP).
   include ../../py/mkenv.mk

   # Include py core make definitions.
   include $(TOP)/py/py.mk

   # Set CFLAGS and libraries.
   CFLAGS = -I. -I$(BUILD) -I$(TOP)
   LIBS = -lm

   # Define the required source files.
   SRC_C = \
       main.c \
       mphalport.c \
       lib/mp-readline/readline.c \
       lib/utils/gchelper_generic.c \
       lib/utils/pyexec.c \
       lib/utils/stdout_helpers.c \

   # Define the required object files.
   OBJ = $(PY_CORE_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))

   # Define the top-level target, the main firmware.
   all: $(BUILD)/firmware.elf

   # Define how to build the firmware.
   $(BUILD)/firmware.elf: $(OBJ)
       $(ECHO) "LINK $@"
       $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
       $(Q)$(SIZE) $@

   # Include remaining core make rules.
   include $(TOP)/py/mkrules.mk

Remember to use proper tabs to indent the Makefile.

MicroPython Configurations
--------------------------

After integrating the minimal code above, the next step is to create the MicroPython
configuration files for the port. The compile-time configurations are specified in
``mpconfigport.h`` and additional hardware-abstraction functions, such as time keeping,
in ``mphalport.h``.

The following is an example of an ``mpconfigport.h`` file:

.. code-block:: c

   #include <stdint.h>

   // Python internal features.
   #define MICROPY_ENABLE_GC                       (1)
   #define MICROPY_HELPER_REPL                     (1)
   #define MICROPY_ERROR_REPORTING                 (MICROPY_ERROR_REPORTING_TERSE)
   #define MICROPY_FLOAT_IMPL                      (MICROPY_FLOAT_IMPL_FLOAT)

   // Fine control over Python builtins, classes, modules, etc.
   #define MICROPY_PY_ASYNC_AWAIT                  (0)
   #define MICROPY_PY_BUILTINS_SET                 (0)
   #define MICROPY_PY_ATTRTUPLE                    (0)
   #define MICROPY_PY_COLLECTIONS                  (0)
   #define MICROPY_PY_MATH                         (0)
   #define MICROPY_PY_IO                           (0)
   #define MICROPY_PY_STRUCT                       (0)

   // Type definitions for the specific machine.

   typedef intptr_t mp_int_t; // must be pointer size
   typedef uintptr_t mp_uint_t; // must be pointer size
   typedef long mp_off_t;

   // We need to provide a declaration/definition of alloca().
   #include <alloca.h>

   // Define the port's name and hardware.
   #define MICROPY_HW_BOARD_NAME "example-board"
   #define MICROPY_HW_MCU_NAME   "unknown-cpu"

   #define MP_STATE_PORT MP_STATE_VM

   #define MICROPY_PORT_ROOT_POINTERS \
       const char *readline_hist[8];

This configuration file contains machine-specific configurations including aspects like if different
MicroPython features should be enabled e.g. ``#define MICROPY_ENABLE_GC (1)``. Making this Setting
``(0)`` disables the feature.

Other configurations include type definitions, root pointers, board name, microcontroller name
etc.

Similarly, an minimal example ``mphalport.h`` file looks like this:

.. code-block:: c

   static inline void mp_hal_set_interrupt_char(char c) {}

Support for standard input/output
---------------------------------

MicroPython requires at least a way to output characters, and to have a REPL it also
requires a way to input characters. Functions for this can be implemented in the file
``mphalport.c``, for example:

.. code-block:: c

   #include <unistd.h>
   #include "py/mpconfig.h"

   // Receive single character, blocking until one is available.
   int mp_hal_stdin_rx_chr(void) {
       unsigned char c = 0;
       int r = read(STDIN_FILENO, &c, 1);
       (void)r;
       return c;
   }

   // Send the string of given length.
   void mp_hal_stdout_tx_strn(const char *str, mp_uint_t len) {
       int r = write(STDOUT_FILENO, str, len);
       (void)r;
   }

These input and output functions have to be modified depending on the
specific board API. This example uses the standard input/output stream.

Building and running
--------------------

At this stage the directory of the new port should contain::

    ports/example_port/
    ├── main.c
    ├── Makefile
    ├── mpconfigport.h
    ├── mphalport.c
    └── mphalport.h

The port can now be built by running ``make`` (or otherwise, depending on your system).

If you are using the default compiler settings in the Makefile given above then this
will create an executable called ``build/firmware.elf`` which can be executed directly.
To get a functional REPL you may need to first configure the terminal to raw mode:

.. code-block:: bash

   $ stty raw opost -echo
   $ ./build/firmware.elf

That should give a MicroPython REPL.  You can then run commands like:

.. code-block:: bash

   MicroPython v1.13 on 2021-01-01; example-board with unknown-cpu
   >>> import usys
   >>> usys.implementation
   ('micropython', (1, 13, 0))
   >>>

Use Ctrl-D to exit, and then run ``reset`` to reset the terminal.

Adding a module to the port
---------------------------

To add a custom module like ``myport``, first add the module definition in a file
``modmyport.c``:

.. code-block:: c

   #include "py/runtime.h"

   STATIC mp_obj_t myport_info(void) {
       mp_printf(&mp_plat_print, "info about my port\n");
       return mp_const_none;
   }
   STATIC MP_DEFINE_CONST_FUN_OBJ_0(myport_info_obj, myport_info);

   STATIC const mp_rom_map_elem_t myport_module_globals_table[] = {
       { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_myport) },
       { MP_ROM_QSTR(MP_QSTR_info), MP_ROM_PTR(&myport_info_obj) },
   };
   STATIC MP_DEFINE_CONST_DICT(myport_module_globals, myport_module_globals_table);

   const mp_obj_module_t myport_module = {
       .base = { &mp_type_module },
       .globals = (mp_obj_dict_t *)&myport_module_globals,
   };

   MP_REGISTER_MODULE(MP_QSTR_myport, myport_module, 1);

Note: the "1" as the third argument in ``MP_REGISTER_MODULE`` enables this new module
unconditionally. To allow it to be conditionally enabled, replace the "1" by
``MIC
Download .txt
gitextract_srqy4qsq/

├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   └── workflows/
│       ├── code_formatting.yml
│       ├── code_size.yml
│       ├── commit_formatting.yml
│       ├── docs.yml
│       ├── ports_cc3200.yml
│       ├── ports_esp32.yml
│       ├── ports_esp8266.yml
│       ├── ports_mimxrt.yml
│       ├── ports_nrf.yml
│       ├── ports_powerpc.yml
│       ├── ports_qemu-arm.yml
│       ├── ports_rp2.yml
│       ├── ports_samd.yml
│       ├── ports_stm32.yml
│       ├── ports_teensy.yml
│       ├── ports_unix.yml
│       ├── ports_windows.yml
│       ├── ports_zephyr.yml
│       ├── release.yml
│       └── travis-ci.yml
├── .gitignore
├── .gitmodules
├── ACKNOWLEDGEMENTS
├── CODECONVENTIONS.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│   ├── Makefile
│   ├── README.md
│   ├── conf.py
│   ├── develop/
│   │   ├── cmodules.rst
│   │   ├── compiler.rst
│   │   ├── extendingmicropython.rst
│   │   ├── gettingstarted.rst
│   │   ├── index.rst
│   │   ├── library.rst
│   │   ├── maps.rst
│   │   ├── memorymgt.rst
│   │   ├── natmod.rst
│   │   ├── optimizations.rst
│   │   ├── porting.rst
│   │   ├── publiccapi.rst
│   │   ├── qstr.rst
│   │   └── writingtests.rst
│   ├── differences/
│   │   ├── builtin_types.rst
│   │   ├── core_language.rst
│   │   ├── index.rst
│   │   ├── index_template.txt
│   │   ├── modules.rst
│   │   └── syntax.rst
│   ├── esp32/
│   │   ├── general.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       └── intro.rst
│   ├── esp8266/
│   │   ├── general.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       ├── adc.rst
│   │       ├── apa102.rst
│   │       ├── dht.rst
│   │       ├── filesystem.rst
│   │       ├── index.rst
│   │       ├── intro.rst
│   │       ├── neopixel.rst
│   │       ├── network_basics.rst
│   │       ├── network_tcp.rst
│   │       ├── nextsteps.rst
│   │       ├── onewire.rst
│   │       ├── pins.rst
│   │       ├── powerctrl.rst
│   │       ├── pwm.rst
│   │       ├── repl.rst
│   │       └── ssd1306.rst
│   ├── index.rst
│   ├── library/
│   │   ├── _thread.rst
│   │   ├── btree.rst
│   │   ├── builtins.rst
│   │   ├── cmath.rst
│   │   ├── esp.rst
│   │   ├── esp32.rst
│   │   ├── ffi.rst
│   │   ├── framebuf.rst
│   │   ├── gc.rst
│   │   ├── index.rst
│   │   ├── lcd160cr.rst
│   │   ├── machine.ADC.rst
│   │   ├── machine.ADCWiPy.rst
│   │   ├── machine.I2C.rst
│   │   ├── machine.PWM.rst
│   │   ├── machine.Pin.rst
│   │   ├── machine.RTC.rst
│   │   ├── machine.SD.rst
│   │   ├── machine.SDCard.rst
│   │   ├── machine.SPI.rst
│   │   ├── machine.Signal.rst
│   │   ├── machine.Timer.rst
│   │   ├── machine.TimerWiPy.rst
│   │   ├── machine.UART.rst
│   │   ├── machine.WDT.rst
│   │   ├── machine.rst
│   │   ├── math.rst
│   │   ├── micropython.rst
│   │   ├── network.CC3K.rst
│   │   ├── network.WIZNET5K.rst
│   │   ├── network.WLAN.rst
│   │   ├── network.WLANWiPy.rst
│   │   ├── network.rst
│   │   ├── pyb.ADC.rst
│   │   ├── pyb.Accel.rst
│   │   ├── pyb.CAN.rst
│   │   ├── pyb.DAC.rst
│   │   ├── pyb.ExtInt.rst
│   │   ├── pyb.Flash.rst
│   │   ├── pyb.I2C.rst
│   │   ├── pyb.LCD.rst
│   │   ├── pyb.LED.rst
│   │   ├── pyb.Pin.rst
│   │   ├── pyb.RTC.rst
│   │   ├── pyb.SPI.rst
│   │   ├── pyb.Servo.rst
│   │   ├── pyb.Switch.rst
│   │   ├── pyb.Timer.rst
│   │   ├── pyb.UART.rst
│   │   ├── pyb.USB_HID.rst
│   │   ├── pyb.USB_VCP.rst
│   │   ├── pyb.rst
│   │   ├── rp2.Flash.rst
│   │   ├── rp2.PIO.rst
│   │   ├── rp2.StateMachine.rst
│   │   ├── rp2.rst
│   │   ├── sys.rst
│   │   ├── uarray.rst
│   │   ├── uasyncio.rst
│   │   ├── ubinascii.rst
│   │   ├── ubluetooth.rst
│   │   ├── ucollections.rst
│   │   ├── ucryptolib.rst
│   │   ├── uctypes.rst
│   │   ├── uerrno.rst
│   │   ├── uhashlib.rst
│   │   ├── uheapq.rst
│   │   ├── uio.rst
│   │   ├── ujson.rst
│   │   ├── uos.rst
│   │   ├── urandom.rst
│   │   ├── ure.rst
│   │   ├── uselect.rst
│   │   ├── usocket.rst
│   │   ├── ussl.rst
│   │   ├── ustruct.rst
│   │   ├── utime.rst
│   │   ├── uzlib.rst
│   │   └── wipy.rst
│   ├── license.rst
│   ├── make.bat
│   ├── pyboard/
│   │   ├── general.rst
│   │   ├── hardware/
│   │   │   └── index.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       ├── accel.rst
│   │       ├── amp_skin.rst
│   │       ├── assembler.rst
│   │       ├── debounce.rst
│   │       ├── fading_led.rst
│   │       ├── index.rst
│   │       ├── intro.rst
│   │       ├── lcd160cr_skin.rst
│   │       ├── lcd_skin.rst
│   │       ├── leds.rst
│   │       ├── pass_through.rst
│   │       ├── power_ctrl.rst
│   │       ├── repl.rst
│   │       ├── reset.rst
│   │       ├── script.rst
│   │       ├── servo.rst
│   │       ├── switch.rst
│   │       ├── timer.rst
│   │       └── usb_mouse.rst
│   ├── readthedocs/
│   │   └── settings/
│   │       └── local_settings.py
│   ├── reference/
│   │   ├── asm_thumb2_arith.rst
│   │   ├── asm_thumb2_compare.rst
│   │   ├── asm_thumb2_directives.rst
│   │   ├── asm_thumb2_float.rst
│   │   ├── asm_thumb2_hints_tips.rst
│   │   ├── asm_thumb2_index.rst
│   │   ├── asm_thumb2_label_branch.rst
│   │   ├── asm_thumb2_ldr.rst
│   │   ├── asm_thumb2_logical_bit.rst
│   │   ├── asm_thumb2_misc.rst
│   │   ├── asm_thumb2_mov.rst
│   │   ├── asm_thumb2_stack.rst
│   │   ├── asm_thumb2_str.rst
│   │   ├── constrained.rst
│   │   ├── filesystem.rst
│   │   ├── glossary.rst
│   │   ├── index.rst
│   │   ├── isr_rules.rst
│   │   ├── mpyfiles.rst
│   │   ├── packages.rst
│   │   ├── pyboard.py.rst
│   │   ├── repl.rst
│   │   └── speed_python.rst
│   ├── rp2/
│   │   ├── general.rst
│   │   ├── quickref.rst
│   │   └── tutorial/
│   │       └── intro.rst
│   ├── static/
│   │   └── customstyle.css
│   ├── templates/
│   │   ├── layout.html
│   │   ├── replace.inc
│   │   ├── topindex.html
│   │   └── versions.html
│   ├── unix/
│   │   └── quickref.rst
│   └── wipy/
│       ├── general.rst
│       ├── quickref.rst
│       └── tutorial/
│           ├── blynk.rst
│           ├── index.rst
│           ├── intro.rst
│           ├── repl.rst
│           ├── reset.rst
│           ├── timer.rst
│           └── wlan.rst
├── drivers/
│   ├── README.md
│   ├── bus/
│   │   ├── qspi.h
│   │   ├── softqspi.c
│   │   ├── softspi.c
│   │   └── spi.h
│   ├── cc3000/
│   │   ├── inc/
│   │   │   ├── cc3000_common.h
│   │   │   ├── ccspi.h
│   │   │   ├── data_types.h
│   │   │   ├── evnt_handler.h
│   │   │   ├── hci.h
│   │   │   ├── host_driver_version.h
│   │   │   ├── inet_ntop.h
│   │   │   ├── inet_pton.h
│   │   │   ├── netapp.h
│   │   │   ├── nvmem.h
│   │   │   ├── patch_prog.h
│   │   │   ├── security.h
│   │   │   ├── socket.h
│   │   │   └── wlan.h
│   │   └── src/
│   │       ├── cc3000_common.c
│   │       ├── ccspi.c
│   │       ├── evnt_handler.c
│   │       ├── hci.c
│   │       ├── inet_ntop.c
│   │       ├── inet_pton.c
│   │       ├── netapp.c
│   │       ├── nvmem.c
│   │       ├── patch.c
│   │       ├── patch_prog.c
│   │       ├── security.c
│   │       ├── socket.c
│   │       └── wlan.c
│   ├── cc3100/
│   │   ├── inc/
│   │   │   ├── device.h
│   │   │   ├── driver.h
│   │   │   ├── flowcont.h
│   │   │   ├── fs.h
│   │   │   ├── netapp.h
│   │   │   ├── netcfg.h
│   │   │   ├── nonos.h
│   │   │   ├── objInclusion.h
│   │   │   ├── protocol.h
│   │   │   ├── simplelink.h
│   │   │   ├── socket.h
│   │   │   ├── spawn.h
│   │   │   ├── trace.h
│   │   │   ├── wlan.h
│   │   │   └── wlan_rx_filters.h
│   │   └── src/
│   │       ├── device.c
│   │       ├── driver.c
│   │       ├── flowcont.c
│   │       ├── fs.c
│   │       ├── netapp.c
│   │       ├── netcfg.c
│   │       ├── nonos.c
│   │       ├── socket.c
│   │       ├── spawn.c
│   │       └── wlan.c
│   ├── cyw43/
│   │   ├── README.md
│   │   ├── cyw43.h
│   │   ├── cyw43_ctrl.c
│   │   ├── cyw43_ll.h
│   │   ├── cyw43_lwip.c
│   │   └── cywbt.c
│   ├── dht/
│   │   ├── dht.c
│   │   ├── dht.h
│   │   └── dht.py
│   ├── display/
│   │   ├── lcd160cr.py
│   │   ├── lcd160cr_test.py
│   │   └── ssd1306.py
│   ├── memory/
│   │   ├── spiflash.c
│   │   └── spiflash.h
│   ├── nrf24l01/
│   │   ├── nrf24l01.py
│   │   └── nrf24l01test.py
│   ├── onewire/
│   │   ├── ds18x20.py
│   │   └── onewire.py
│   ├── sdcard/
│   │   ├── sdcard.py
│   │   └── sdtest.py
│   └── wiznet5k/
│       ├── README.md
│       ├── ethernet/
│       │   ├── socket.c
│       │   ├── socket.h
│       │   ├── w5200/
│       │   │   ├── w5200.c
│       │   │   └── w5200.h
│       │   ├── w5500/
│       │   │   ├── w5500.c
│       │   │   └── w5500.h
│       │   ├── wizchip_conf.c
│       │   └── wizchip_conf.h
│       └── internet/
│           ├── dhcp/
│           │   ├── dhcp.c
│           │   └── dhcp.h
│           └── dns/
│               ├── dns.c
│               └── dns.h
├── examples/
│   ├── SDdatalogger/
│   │   ├── README.md
│   │   ├── boot.py
│   │   ├── cardreader.py
│   │   └── datalogger.py
│   ├── accel_i2c.py
│   ├── accellog.py
│   ├── asmled.py
│   ├── asmsum.py
│   ├── bluetooth/
│   │   ├── ble_advertising.py
│   │   ├── ble_bonding_peripheral.py
│   │   ├── ble_simple_central.py
│   │   ├── ble_simple_peripheral.py
│   │   ├── ble_temperature.py
│   │   ├── ble_temperature_central.py
│   │   ├── ble_uart_peripheral.py
│   │   └── ble_uart_repl.py
│   ├── conwaylife.py
│   ├── embedding/
│   │   ├── Makefile
│   │   ├── Makefile.upylib
│   │   ├── README.md
│   │   ├── hello-embed.c
│   │   ├── mpconfigport.h
│   │   └── mpconfigport_minimal.h
│   ├── hwapi/
│   │   ├── README.md
│   │   ├── button_led.py
│   │   ├── button_reaction.py
│   │   ├── hwconfig_console.py
│   │   ├── hwconfig_dragonboard410c.py
│   │   ├── hwconfig_esp8266_esp12.py
│   │   ├── hwconfig_pyboard.py
│   │   ├── hwconfig_z_96b_carbon.py
│   │   ├── hwconfig_z_frdm_k64f.py
│   │   ├── soft_pwm.py
│   │   ├── soft_pwm2_uasyncio.py
│   │   └── soft_pwm_uasyncio.py
│   ├── ledangle.py
│   ├── mandel.py
│   ├── micropython.py
│   ├── natmod/
│   │   ├── .gitignore
│   │   ├── btree/
│   │   │   ├── Makefile
│   │   │   ├── btree_c.c
│   │   │   └── btree_py.py
│   │   ├── features0/
│   │   │   ├── Makefile
│   │   │   └── features0.c
│   │   ├── features1/
│   │   │   ├── Makefile
│   │   │   └── features1.c
│   │   ├── features2/
│   │   │   ├── Makefile
│   │   │   ├── main.c
│   │   │   ├── prod.c
│   │   │   ├── prod.h
│   │   │   └── test.py
│   │   ├── framebuf/
│   │   │   ├── Makefile
│   │   │   └── framebuf.c
│   │   ├── uheapq/
│   │   │   ├── Makefile
│   │   │   └── uheapq.c
│   │   ├── urandom/
│   │   │   ├── Makefile
│   │   │   └── urandom.c
│   │   ├── ure/
│   │   │   ├── Makefile
│   │   │   └── ure.c
│   │   └── uzlib/
│   │       ├── Makefile
│   │       └── uzlib.c
│   ├── network/
│   │   ├── http_client.py
│   │   ├── http_client_ssl.py
│   │   ├── http_client_ssl_nonblock.py
│   │   ├── http_server.py
│   │   ├── http_server_simplistic.py
│   │   ├── http_server_simplistic_commented.py
│   │   └── http_server_ssl.py
│   ├── pins.py
│   ├── pyb.py
│   ├── rp2/
│   │   ├── pio_1hz.py
│   │   ├── pio_exec.py
│   │   ├── pio_pinchange.py
│   │   ├── pio_pwm.py
│   │   ├── pio_uart_rx.py
│   │   ├── pio_uart_tx.py
│   │   ├── pio_ws2812.py
│   │   └── pwm_fade.py
│   ├── switch.py
│   ├── unix/
│   │   ├── ffi_example.py
│   │   └── machine_bios.py
│   └── usercmodule/
│       ├── cexample/
│       │   ├── examplemodule.c
│       │   ├── micropython.cmake
│       │   └── micropython.mk
│       ├── cppexample/
│       │   ├── example.cpp
│       │   ├── examplemodule.c
│       │   ├── examplemodule.h
│       │   ├── micropython.cmake
│       │   └── micropython.mk
│       └── micropython.cmake
├── extmod/
│   ├── axtls-include/
│   │   ├── config.h
│   │   └── version.h
│   ├── btstack/
│   │   ├── btstack.mk
│   │   ├── btstack_config.h
│   │   ├── btstack_hci_uart.c
│   │   ├── btstack_hci_uart.h
│   │   ├── modbluetooth_btstack.c
│   │   └── modbluetooth_btstack.h
│   ├── crypto-algorithms/
│   │   ├── sha256.c
│   │   └── sha256.h
│   ├── extmod.cmake
│   ├── extmod.mk
│   ├── lwip-include/
│   │   ├── arch/
│   │   │   ├── cc.h
│   │   │   └── perf.h
│   │   └── lwipopts.h
│   ├── machine_i2c.c
│   ├── machine_i2c.h
│   ├── machine_mem.c
│   ├── machine_mem.h
│   ├── machine_pinbase.c
│   ├── machine_pinbase.h
│   ├── machine_pulse.c
│   ├── machine_pulse.h
│   ├── machine_signal.c
│   ├── machine_signal.h
│   ├── machine_spi.c
│   ├── machine_spi.h
│   ├── misc.h
│   ├── modbluetooth.c
│   ├── modbluetooth.h
│   ├── modbtree.c
│   ├── modframebuf.c
│   ├── modlwip.c
│   ├── modonewire.c
│   ├── moduasyncio.c
│   ├── modubinascii.c
│   ├── moducryptolib.c
│   ├── moductypes.c
│   ├── moduhashlib.c
│   ├── moduheapq.c
│   ├── modujson.c
│   ├── modurandom.c
│   ├── modure.c
│   ├── moduselect.c
│   ├── modussl_axtls.c
│   ├── modussl_mbedtls.c
│   ├── modutimeq.c
│   ├── moduwebsocket.c
│   ├── moduwebsocket.h
│   ├── moduzlib.c
│   ├── modwebrepl.c
│   ├── mpbthci.c
│   ├── mpbthci.h
│   ├── network_cyw43.c
│   ├── network_cyw43.h
│   ├── nimble/
│   │   ├── bsp/
│   │   │   └── bsp.h
│   │   ├── hal/
│   │   │   ├── hal_gpio.h
│   │   │   ├── hal_uart.c
│   │   │   └── hal_uart.h
│   │   ├── logcfg/
│   │   │   └── logcfg.h
│   │   ├── modbluetooth_nimble.c
│   │   ├── modbluetooth_nimble.h
│   │   ├── nimble/
│   │   │   ├── nimble_npl_os.c
│   │   │   └── nimble_npl_os.h
│   │   ├── nimble.mk
│   │   └── syscfg/
│   │       └── syscfg.h
│   ├── re1.5/
│   │   ├── charclass.c
│   │   ├── compilecode.c
│   │   ├── dumpcode.c
│   │   ├── re1.5.h
│   │   └── recursiveloop.c
│   ├── uasyncio/
│   │   ├── __init__.py
│   │   ├── core.py
│   │   ├── event.py
│   │   ├── funcs.py
│   │   ├── lock.py
│   │   ├── manifest.py
│   │   ├── stream.py
│   │   └── task.py
│   ├── uos_dupterm.c
│   ├── utime_mphal.c
│   ├── utime_mphal.h
│   ├── uzlib/
│   │   ├── adler32.c
│   │   ├── crc32.c
│   │   ├── defl_static.h
│   │   ├── tinf.h
│   │   ├── tinf_compat.h
│   │   ├── tinfgzip.c
│   │   ├── tinflate.c
│   │   ├── tinfzlib.c
│   │   ├── uzlib.h
│   │   └── uzlib_conf.h
│   ├── vfs.c
│   ├── vfs.h
│   ├── vfs_blockdev.c
│   ├── vfs_fat.c
│   ├── vfs_fat.h
│   ├── vfs_fat_diskio.c
│   ├── vfs_fat_file.c
│   ├── vfs_lfs.c
│   ├── vfs_lfs.h
│   ├── vfs_lfsx.c
│   ├── vfs_lfsx_file.c
│   ├── vfs_posix.c
│   ├── vfs_posix.h
│   ├── vfs_posix_file.c
│   ├── vfs_reader.c
│   ├── virtpin.c
│   ├── virtpin.h
│   └── webrepl/
│       ├── manifest.py
│       ├── webrepl.py
│       ├── webrepl_setup.py
│       └── websocket_helper.py
├── lib/
│   ├── README.md
│   ├── cmsis/
│   │   └── inc/
│   │       ├── cmsis_armcc.h
│   │       ├── cmsis_armclang.h
│   │       ├── cmsis_armclang_ltm.h
│   │       ├── cmsis_compiler.h
│   │       ├── cmsis_gcc.h
│   │       ├── cmsis_iccarm.h
│   │       ├── cmsis_version.h
│   │       ├── core_armv81mml.h
│   │       ├── core_armv8mbl.h
│   │       ├── core_armv8mml.h
│   │       ├── core_cm0.h
│   │       ├── core_cm0plus.h
│   │       ├── core_cm1.h
│   │       ├── core_cm23.h
│   │       ├── core_cm3.h
│   │       ├── core_cm33.h
│   │       ├── core_cm35p.h
│   │       ├── core_cm4.h
│   │       ├── core_cm7.h
│   │       ├── core_sc000.h
│   │       ├── core_sc300.h
│   │       ├── mpu_armv7.h
│   │       ├── mpu_armv8.h
│   │       └── tz_context.h
│   ├── embed/
│   │   ├── __errno.c
│   │   └── abort_.c
│   ├── libc/
│   │   └── string0.c
│   ├── libm/
│   │   ├── acoshf.c
│   │   ├── asinfacosf.c
│   │   ├── asinhf.c
│   │   ├── atan2f.c
│   │   ├── atanf.c
│   │   ├── atanhf.c
│   │   ├── ef_rem_pio2.c
│   │   ├── ef_sqrt.c
│   │   ├── erf_lgamma.c
│   │   ├── fdlibm.h
│   │   ├── fmodf.c
│   │   ├── kf_cos.c
│   │   ├── kf_rem_pio2.c
│   │   ├── kf_sin.c
│   │   ├── kf_tan.c
│   │   ├── libm.h
│   │   ├── log1pf.c
│   │   ├── math.c
│   │   ├── nearbyintf.c
│   │   ├── roundf.c
│   │   ├── sf_cos.c
│   │   ├── sf_erf.c
│   │   ├── sf_frexp.c
│   │   ├── sf_ldexp.c
│   │   ├── sf_modf.c
│   │   ├── sf_sin.c
│   │   ├── sf_tan.c
│   │   ├── thumb_vfp_sqrtf.c
│   │   ├── wf_lgamma.c
│   │   └── wf_tgamma.c
│   ├── libm_dbl/
│   │   ├── README
│   │   ├── __cos.c
│   │   ├── __expo2.c
│   │   ├── __fpclassify.c
│   │   ├── __rem_pio2.c
│   │   ├── __rem_pio2_large.c
│   │   ├── __signbit.c
│   │   ├── __sin.c
│   │   ├── __tan.c
│   │   ├── acos.c
│   │   ├── acosh.c
│   │   ├── asin.c
│   │   ├── asinh.c
│   │   ├── atan.c
│   │   ├── atan2.c
│   │   ├── atanh.c
│   │   ├── ceil.c
│   │   ├── copysign.c
│   │   ├── cos.c
│   │   ├── cosh.c
│   │   ├── erf.c
│   │   ├── exp.c
│   │   ├── expm1.c
│   │   ├── floor.c
│   │   ├── fmod.c
│   │   ├── frexp.c
│   │   ├── ldexp.c
│   │   ├── lgamma.c
│   │   ├── libm.h
│   │   ├── log.c
│   │   ├── log10.c
│   │   ├── log1p.c
│   │   ├── modf.c
│   │   ├── nearbyint.c
│   │   ├── pow.c
│   │   ├── rint.c
│   │   ├── round.c
│   │   ├── scalbn.c
│   │   ├── sin.c
│   │   ├── sinh.c
│   │   ├── sqrt.c
│   │   ├── tan.c
│   │   ├── tanh.c
│   │   ├── tgamma.c
│   │   ├── thumb_vfp_sqrt.c
│   │   └── trunc.c
│   ├── littlefs/
│   │   ├── README.md
│   │   ├── lfs1.c
│   │   ├── lfs1.h
│   │   ├── lfs1_util.c
│   │   ├── lfs1_util.h
│   │   ├── lfs2.c
│   │   ├── lfs2.h
│   │   ├── lfs2_util.c
│   │   └── lfs2_util.h
│   ├── memzip/
│   │   ├── README.md
│   │   ├── import.c
│   │   ├── lexermemzip.c
│   │   ├── make-memzip.py
│   │   ├── memzip.c
│   │   └── memzip.h
│   ├── mp-readline/
│   │   ├── readline.c
│   │   └── readline.h
│   ├── netutils/
│   │   ├── dhcpserver.c
│   │   ├── dhcpserver.h
│   │   ├── netutils.c
│   │   ├── netutils.h
│   │   └── trace.c
│   ├── oofatfs/
│   │   ├── diskio.h
│   │   ├── ff.c
│   │   ├── ff.h
│   │   ├── ffconf.h
│   │   └── ffunicode.c
│   ├── timeutils/
│   │   ├── timeutils.c
│   │   └── timeutils.h
│   ├── tinytest/
│   │   ├── README
│   │   ├── tinytest.c
│   │   ├── tinytest.h
│   │   └── tinytest_macros.h
│   ├── upytesthelper/
│   │   ├── upytesthelper.c
│   │   └── upytesthelper.h
│   └── utils/
│       ├── gchelper.h
│       ├── gchelper_generic.c
│       ├── gchelper_m0.s
│       ├── gchelper_m3.s
│       ├── gchelper_native.c
│       ├── interrupt_char.c
│       ├── interrupt_char.h
│       ├── mpirq.c
│       ├── mpirq.h
│       ├── printf.c
│       ├── pyexec.c
│       ├── pyexec.h
│       ├── semihosting.c
│       ├── semihosting.h
│       ├── stdout_helpers.c
│       └── sys_stdio_mphal.c
├── logo/
│   ├── FONT-LICENSE.txt
│   ├── vector-logo-R2000.dxf
│   └── vector-text-R2000.dxf
├── ports/
│   ├── bare-arm/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── lib.c
│   │   ├── main.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── stm32f405.ld
│   │   └── system.c
│   ├── cc3200/
│   │   ├── FreeRTOS/
│   │   │   ├── FreeRTOSConfig.h
│   │   │   ├── License/
│   │   │   │   └── license.txt
│   │   │   └── Source/
│   │   │       ├── croutine.c
│   │   │       ├── event_groups.c
│   │   │       ├── include/
│   │   │       │   ├── FreeRTOS.h
│   │   │       │   ├── StackMacros.h
│   │   │       │   ├── croutine.h
│   │   │       │   ├── deprecated_definitions.h
│   │   │       │   ├── event_groups.h
│   │   │       │   ├── list.h
│   │   │       │   ├── mpu_prototypes.h
│   │   │       │   ├── mpu_wrappers.h
│   │   │       │   ├── portable.h
│   │   │       │   ├── projdefs.h
│   │   │       │   ├── queue.h
│   │   │       │   ├── semphr.h
│   │   │       │   ├── task.h
│   │   │       │   └── timers.h
│   │   │       ├── list.c
│   │   │       ├── portable/
│   │   │       │   ├── GCC/
│   │   │       │   │   └── ARM_CM3/
│   │   │       │   │       ├── port.c
│   │   │       │   │       └── portmacro.h
│   │   │       │   └── MemMang/
│   │   │       │       └── heap_4.c
│   │   │       ├── queue.c
│   │   │       ├── tasks.c
│   │   │       └── timers.c
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── application.lds
│   │   ├── application.mk
│   │   ├── appsign.sh
│   │   ├── boards/
│   │   │   ├── LAUNCHXL/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── pins.csv
│   │   │   ├── WIPY/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── pins.csv
│   │   │   ├── cc3200_af.csv
│   │   │   ├── cc3200_prefix.c
│   │   │   └── make-pins.py
│   │   ├── bootmgr/
│   │   │   ├── bootgen.sh
│   │   │   ├── bootloader.mk
│   │   │   ├── bootmgr.h
│   │   │   ├── bootmgr.lds
│   │   │   ├── flc.h
│   │   │   ├── main.c
│   │   │   ├── runapp.s
│   │   │   └── sl/
│   │   │       └── user.h
│   │   ├── fatfs/
│   │   │   └── src/
│   │   │       └── drivers/
│   │   │           ├── sd_diskio.c
│   │   │           ├── sd_diskio.h
│   │   │           ├── sflash_diskio.c
│   │   │           ├── sflash_diskio.h
│   │   │           └── stdcmd.h
│   │   ├── fatfs_port.c
│   │   ├── ftp/
│   │   │   ├── ftp.c
│   │   │   ├── ftp.h
│   │   │   ├── updater.c
│   │   │   └── updater.h
│   │   ├── hal/
│   │   │   ├── adc.c
│   │   │   ├── adc.h
│   │   │   ├── aes.c
│   │   │   ├── aes.h
│   │   │   ├── cc3200_asm.h
│   │   │   ├── cc3200_hal.c
│   │   │   ├── cc3200_hal.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── crc.c
│   │   │   ├── crc.h
│   │   │   ├── debug.h
│   │   │   ├── des.c
│   │   │   ├── des.h
│   │   │   ├── fault_registers.h
│   │   │   ├── gpio.c
│   │   │   ├── gpio.h
│   │   │   ├── i2c.c
│   │   │   ├── i2c.h
│   │   │   ├── i2s.c
│   │   │   ├── i2s.h
│   │   │   ├── inc/
│   │   │   │   ├── asmdefs.h
│   │   │   │   ├── hw_adc.h
│   │   │   │   ├── hw_aes.h
│   │   │   │   ├── hw_apps_config.h
│   │   │   │   ├── hw_apps_rcm.h
│   │   │   │   ├── hw_camera.h
│   │   │   │   ├── hw_common_reg.h
│   │   │   │   ├── hw_des.h
│   │   │   │   ├── hw_dthe.h
│   │   │   │   ├── hw_flash_ctrl.h
│   │   │   │   ├── hw_gpio.h
│   │   │   │   ├── hw_gprcm.h
│   │   │   │   ├── hw_hib1p2.h
│   │   │   │   ├── hw_hib3p3.h
│   │   │   │   ├── hw_i2c.h
│   │   │   │   ├── hw_ints.h
│   │   │   │   ├── hw_mcasp.h
│   │   │   │   ├── hw_mcspi.h
│   │   │   │   ├── hw_memmap.h
│   │   │   │   ├── hw_mmchs.h
│   │   │   │   ├── hw_nvic.h
│   │   │   │   ├── hw_ocp_shared.h
│   │   │   │   ├── hw_shamd5.h
│   │   │   │   ├── hw_stack_die_ctrl.h
│   │   │   │   ├── hw_timer.h
│   │   │   │   ├── hw_types.h
│   │   │   │   ├── hw_uart.h
│   │   │   │   ├── hw_udma.h
│   │   │   │   └── hw_wdt.h
│   │   │   ├── interrupt.c
│   │   │   ├── interrupt.h
│   │   │   ├── pin.c
│   │   │   ├── pin.h
│   │   │   ├── prcm.c
│   │   │   ├── prcm.h
│   │   │   ├── rom.h
│   │   │   ├── rom_map.h
│   │   │   ├── rom_patch.h
│   │   │   ├── sdhost.c
│   │   │   ├── sdhost.h
│   │   │   ├── shamd5.c
│   │   │   ├── shamd5.h
│   │   │   ├── spi.c
│   │   │   ├── spi.h
│   │   │   ├── startup_gcc.c
│   │   │   ├── systick.c
│   │   │   ├── systick.h
│   │   │   ├── timer.c
│   │   │   ├── timer.h
│   │   │   ├── uart.c
│   │   │   ├── uart.h
│   │   │   ├── utils.c
│   │   │   ├── utils.h
│   │   │   ├── wdt.c
│   │   │   └── wdt.h
│   │   ├── main.c
│   │   ├── misc/
│   │   │   ├── FreeRTOSHooks.c
│   │   │   ├── antenna.c
│   │   │   ├── antenna.h
│   │   │   ├── help.c
│   │   │   ├── mperror.c
│   │   │   ├── mperror.h
│   │   │   ├── mpirq.c
│   │   │   └── mpirq.h
│   │   ├── mods/
│   │   │   ├── modmachine.c
│   │   │   ├── modnetwork.c
│   │   │   ├── modnetwork.h
│   │   │   ├── moduhashlib.c
│   │   │   ├── moduos.c
│   │   │   ├── moduos.h
│   │   │   ├── modusocket.c
│   │   │   ├── modusocket.h
│   │   │   ├── modussl.c
│   │   │   ├── modutime.c
│   │   │   ├── modwipy.c
│   │   │   ├── modwlan.c
│   │   │   ├── modwlan.h
│   │   │   ├── pybadc.c
│   │   │   ├── pybadc.h
│   │   │   ├── pybflash.c
│   │   │   ├── pybflash.h
│   │   │   ├── pybi2c.c
│   │   │   ├── pybi2c.h
│   │   │   ├── pybpin.c
│   │   │   ├── pybpin.h
│   │   │   ├── pybrtc.c
│   │   │   ├── pybrtc.h
│   │   │   ├── pybsd.c
│   │   │   ├── pybsd.h
│   │   │   ├── pybsleep.c
│   │   │   ├── pybsleep.h
│   │   │   ├── pybspi.c
│   │   │   ├── pybspi.h
│   │   │   ├── pybtimer.c
│   │   │   ├── pybtimer.h
│   │   │   ├── pybuart.c
│   │   │   ├── pybuart.h
│   │   │   ├── pybwdt.c
│   │   │   └── pybwdt.h
│   │   ├── mpconfigport.h
│   │   ├── mptask.c
│   │   ├── mptask.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── qstrdefsport.h
│   │   ├── serverstask.c
│   │   ├── serverstask.h
│   │   ├── simplelink/
│   │   │   ├── cc_pal.c
│   │   │   ├── cc_pal.h
│   │   │   ├── oslib/
│   │   │   │   ├── osi.h
│   │   │   │   └── osi_freertos.c
│   │   │   └── user.h
│   │   ├── telnet/
│   │   │   ├── telnet.c
│   │   │   └── telnet.h
│   │   ├── tools/
│   │   │   ├── smoke.py
│   │   │   ├── smoke.py.exp
│   │   │   ├── uniflash.py
│   │   │   └── update-wipy.py
│   │   ├── util/
│   │   │   ├── cortex_m3_get_sp.s
│   │   │   ├── cryptohash.c
│   │   │   ├── cryptohash.h
│   │   │   ├── fifo.c
│   │   │   ├── fifo.h
│   │   │   ├── gccollect.c
│   │   │   ├── gccollect.h
│   │   │   ├── random.c
│   │   │   ├── random.h
│   │   │   ├── sleeprestore.h
│   │   │   ├── sleeprestore.s
│   │   │   ├── socketfifo.c
│   │   │   └── socketfifo.h
│   │   └── version.h
│   ├── esp32/
│   │   ├── CMakeLists.txt
│   │   ├── Makefile
│   │   ├── Makefile.real
│   │   ├── README.md
│   │   ├── README.ulp.md
│   │   ├── boards/
│   │   │   ├── GENERIC/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── GENERIC_D2WD/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── GENERIC_OTA/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── GENERIC_S2/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── GENERIC_SPIRAM/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── M5STACK_ATOM/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   └── atom.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── UM_FEATHERS2/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   └── feathers2.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── UM_TINYPICO/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   ├── dotstar.py
│   │   │   │   │   └── tinypico.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── UM_TINYS2/
│   │   │   │   ├── manifest.py
│   │   │   │   ├── modules/
│   │   │   │   │   └── tinys2.py
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── sdkconfig.board
│   │   │   ├── manifest.py
│   │   │   ├── manifest_release.py
│   │   │   ├── sdkconfig.240mhz
│   │   │   ├── sdkconfig.base
│   │   │   ├── sdkconfig.ble
│   │   │   ├── sdkconfig.spiram
│   │   │   ├── sdkconfig.spiram_sx
│   │   │   └── sdkconfig.usb
│   │   ├── esp32_nvs.c
│   │   ├── esp32_partition.c
│   │   ├── esp32_rmt.c
│   │   ├── esp32_ulp.c
│   │   ├── espneopixel.c
│   │   ├── fatfs_port.c
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── help.c
│   │   ├── machine_adc.c
│   │   ├── machine_dac.c
│   │   ├── machine_hw_spi.c
│   │   ├── machine_i2c.c
│   │   ├── machine_pin.c
│   │   ├── machine_pwm.c
│   │   ├── machine_rtc.c
│   │   ├── machine_rtc.h
│   │   ├── machine_sdcard.c
│   │   ├── machine_timer.c
│   │   ├── machine_touchpad.c
│   │   ├── machine_uart.c
│   │   ├── machine_wdt.c
│   │   ├── main/
│   │   │   └── CMakeLists.txt
│   │   ├── main.c
│   │   ├── makeimg.py
│   │   ├── memory.h
│   │   ├── modesp.c
│   │   ├── modesp.h
│   │   ├── modesp32.c
│   │   ├── modesp32.h
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modnetwork.c
│   │   ├── modnetwork.h
│   │   ├── modsocket.c
│   │   ├── modules/
│   │   │   ├── _boot.py
│   │   │   ├── apa106.py
│   │   │   ├── flashbdev.py
│   │   │   ├── inisetup.py
│   │   │   └── neopixel.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── mpnimbleport.c
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── network_lan.c
│   │   ├── network_ppp.c
│   │   ├── partitions-16MiB.csv
│   │   ├── partitions-2MiB.csv
│   │   ├── partitions-ota.csv
│   │   ├── partitions.csv
│   │   ├── qstrdefsport.h
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── usb.c
│   │   └── usb.h
│   ├── esp8266/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── boards/
│   │   │   ├── GENERIC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── GENERIC_1M/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── GENERIC_512K/
│   │   │   │   ├── _boot.py
│   │   │   │   ├── manifest.py
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── eagle.rom.addr.v6.ld
│   │   │   ├── esp8266_1m.ld
│   │   │   ├── esp8266_2m.ld
│   │   │   ├── esp8266_512k.ld
│   │   │   ├── esp8266_common.ld
│   │   │   ├── esp8266_ota.ld
│   │   │   └── manifest.py
│   │   ├── esp_init_data.c
│   │   ├── esp_mphal.c
│   │   ├── esp_mphal.h
│   │   ├── espapa102.c
│   │   ├── espapa102.h
│   │   ├── espneopixel.c
│   │   ├── espneopixel.h
│   │   ├── esppwm.c
│   │   ├── esppwm.h
│   │   ├── ets_alt_task.c
│   │   ├── ets_alt_task.h
│   │   ├── etshal.h
│   │   ├── fatfs_port.c
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── gchelper.s
│   │   ├── help.c
│   │   ├── hspi.c
│   │   ├── hspi.h
│   │   ├── hspi_register.h
│   │   ├── lexerstr32.c
│   │   ├── machine_adc.c
│   │   ├── machine_hspi.c
│   │   ├── machine_pin.c
│   │   ├── machine_pwm.c
│   │   ├── machine_rtc.c
│   │   ├── machine_uart.c
│   │   ├── machine_wdt.c
│   │   ├── main.c
│   │   ├── makeimg.py
│   │   ├── modesp.c
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modnetwork.c
│   │   ├── modpyb.c
│   │   ├── modules/
│   │   │   ├── _boot.py
│   │   │   ├── apa102.py
│   │   │   ├── flashbdev.py
│   │   │   ├── inisetup.py
│   │   │   ├── neopixel.py
│   │   │   ├── ntptime.py
│   │   │   └── port_diag.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── posix_helpers.c
│   │   ├── qstrdefsport.h
│   │   ├── strtoll.c
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── uart_register.h
│   │   ├── user_config.h
│   │   └── xtirq.h
│   ├── javascript/
│   │   ├── JSBackend.patch
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── library.h
│   │   ├── library.js
│   │   ├── main.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── node_run.sh
│   │   ├── qstrdefsport.h
│   │   └── wrapper.js
│   ├── mimxrt/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── board_init.c
│   │   ├── boards/
│   │   │   ├── MIMXRT1010_EVK/
│   │   │   │   ├── MIMXRT1010_EVK.ld
│   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1011.ld
│   │   │   ├── MIMXRT1011_af.csv
│   │   │   ├── MIMXRT1020_EVK/
│   │   │   │   ├── MIMXRT1020_EVK.ld
│   │   │   │   ├── evkmimxrt1020_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1021.ld
│   │   │   ├── MIMXRT1021_af.csv
│   │   │   ├── MIMXRT1050_EVK/
│   │   │   │   ├── MIMXRT1050_EVK.ld
│   │   │   │   ├── evkmimxrt1050_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1052.ld
│   │   │   ├── MIMXRT1052_af.csv
│   │   │   ├── MIMXRT1060_EVK/
│   │   │   │   ├── MIMXRT1060_EVK.ld
│   │   │   │   ├── evkmimxrt1060_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1062.ld
│   │   │   ├── MIMXRT1062_af.csv
│   │   │   ├── MIMXRT1064.ld
│   │   │   ├── MIMXRT1064_EVK/
│   │   │   │   ├── MIMXRT1064_EVK.ld
│   │   │   │   ├── evkmimxrt1064_flexspi_nor_config.h
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── MIMXRT1064_af.csv
│   │   │   ├── TEENSY40/
│   │   │   │   ├── TEENSY40.ld
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── format.py
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── teensy40_flexspi_nor_config.h
│   │   │   ├── TEENSY41/
│   │   │   │   ├── TEENSY41.ld
│   │   │   │   ├── flash_config.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── teensy41_flexspi_nor_config.h
│   │   │   ├── common.ld
│   │   │   ├── make-pins.py
│   │   │   ├── manifest.py
│   │   │   └── mimxrt_prefix.c
│   │   ├── hal/
│   │   │   ├── flexspi_nor_flash.c
│   │   │   └── flexspi_nor_flash.h
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── machine_adc.c
│   │   ├── machine_led.c
│   │   ├── machine_pin.c
│   │   ├── machine_rtc.c
│   │   ├── machine_timer.c
│   │   ├── machine_uart.c
│   │   ├── main.c
│   │   ├── mimxrt_flash.c
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modmimxrt.c
│   │   ├── modmimxrt.h
│   │   ├── modules/
│   │   │   └── _boot.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── pin.c
│   │   ├── pin.h
│   │   ├── qstrdefsport.h
│   │   ├── ticks.c
│   │   ├── ticks.h
│   │   ├── tusb_config.h
│   │   └── tusb_port.c
│   ├── minimal/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── frozentest.py
│   │   ├── main.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── qstrdefsport.h
│   │   ├── stm32f405.ld
│   │   └── uart_core.c
│   ├── nrf/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── bluetooth_conf.h
│   │   ├── boards/
│   │   │   ├── actinius_icarus/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── arduino_primo/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── blueio_tag_evim/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── common.ld
│   │   │   ├── dvk_bl652/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── evk_nina_b1/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── evk_nina_b3/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── feather52/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── ibk_blyst_nano/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── idk_blyst_nano/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── make-pins.py
│   │   │   ├── memory.ld
│   │   │   ├── microbit/
│   │   │   │   ├── custom_nrf51822_s110_microbit.ld
│   │   │   │   ├── modules/
│   │   │   │   │   ├── AUTHORS
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── boardmodules.h
│   │   │   │   │   ├── boardmodules.mk
│   │   │   │   │   ├── iters.c
│   │   │   │   │   ├── iters.h
│   │   │   │   │   ├── microbitconstimage.c
│   │   │   │   │   ├── microbitconstimage.h
│   │   │   │   │   ├── microbitconstimagetuples.c
│   │   │   │   │   ├── microbitdisplay.c
│   │   │   │   │   ├── microbitdisplay.h
│   │   │   │   │   ├── microbitfont.h
│   │   │   │   │   ├── microbitimage.c
│   │   │   │   │   ├── microbitimage.h
│   │   │   │   │   ├── modmicrobit.c
│   │   │   │   │   └── modmicrobit.h
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── nrf51_prefix.c
│   │   │   ├── nrf51x22_256k_16k.ld
│   │   │   ├── nrf51x22_256k_32k.ld
│   │   │   ├── nrf52832_512k_64k.ld
│   │   │   ├── nrf52840-mdk-usb-dongle/
│   │   │   │   ├── README.md
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── nrf52840_1M_256k.ld
│   │   │   ├── nrf52840_open_bootloader_1.2.x.ld
│   │   │   ├── nrf52_prefix.c
│   │   │   ├── nrf9160_1M_256k.ld
│   │   │   ├── nrf9160_1M_256k_secure.ld
│   │   │   ├── nrf91_prefix.c
│   │   │   ├── particle_xenon/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10000/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10001/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10028/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10031/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10040/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10056/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10059/
│   │   │   │   ├── modules/
│   │   │   │   │   ├── boardmodules.h
│   │   │   │   │   ├── boardmodules.mk
│   │   │   │   │   └── recover_uicr_regout0.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── pca10090/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   └── pins.csv
│   │   │   ├── s110_8.0.0.ld
│   │   │   ├── s132_6.1.1.ld
│   │   │   ├── s140_6.1.1.ld
│   │   │   └── wt51822_s4at/
│   │   │       ├── mpconfigboard.h
│   │   │       ├── mpconfigboard.mk
│   │   │       └── pins.csv
│   │   ├── device/
│   │   │   ├── startup_nrf51822.c
│   │   │   ├── startup_nrf52832.c
│   │   │   ├── startup_nrf52840.c
│   │   │   └── startup_nrf9160.c
│   │   ├── drivers/
│   │   │   ├── bluetooth/
│   │   │   │   ├── ble_drv.c
│   │   │   │   ├── ble_drv.h
│   │   │   │   ├── ble_uart.c
│   │   │   │   ├── ble_uart.h
│   │   │   │   ├── bluetooth_common.mk
│   │   │   │   ├── download_ble_stack.sh
│   │   │   │   └── ringbuffer.h
│   │   │   ├── flash.c
│   │   │   ├── flash.h
│   │   │   ├── rng.c
│   │   │   ├── rng.h
│   │   │   ├── secureboot/
│   │   │   │   ├── secureboot.mk
│   │   │   │   └── secureboot_main.c
│   │   │   ├── softpwm.c
│   │   │   ├── softpwm.h
│   │   │   ├── ticker.c
│   │   │   ├── ticker.h
│   │   │   └── usb/
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_cdc.c
│   │   │       ├── usb_cdc.h
│   │   │       └── usb_descriptors.c
│   │   ├── examples/
│   │   │   ├── mountsd.py
│   │   │   ├── musictest.py
│   │   │   ├── nrf52_pwm.py
│   │   │   ├── nrf52_servo.py
│   │   │   ├── powerup.py
│   │   │   ├── seeed_tft.py
│   │   │   ├── ssd1306_mod.py
│   │   │   ├── ubluepy_eddystone.py
│   │   │   ├── ubluepy_scan.py
│   │   │   └── ubluepy_temp.py
│   │   ├── fatfs_port.c
│   │   ├── freeze/
│   │   │   └── test.py
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── help.c
│   │   ├── main.c
│   │   ├── modules/
│   │   │   ├── ble/
│   │   │   │   ├── help_sd.h
│   │   │   │   └── modble.c
│   │   │   ├── board/
│   │   │   │   ├── led.c
│   │   │   │   ├── led.h
│   │   │   │   └── modboard.c
│   │   │   ├── machine/
│   │   │   │   ├── adc.c
│   │   │   │   ├── adc.h
│   │   │   │   ├── i2c.c
│   │   │   │   ├── i2c.h
│   │   │   │   ├── modmachine.c
│   │   │   │   ├── modmachine.h
│   │   │   │   ├── pin.c
│   │   │   │   ├── pin.h
│   │   │   │   ├── pwm.c
│   │   │   │   ├── pwm.h
│   │   │   │   ├── rtcounter.c
│   │   │   │   ├── rtcounter.h
│   │   │   │   ├── spi.c
│   │   │   │   ├── spi.h
│   │   │   │   ├── temp.c
│   │   │   │   ├── temp.h
│   │   │   │   ├── timer.c
│   │   │   │   ├── timer.h
│   │   │   │   ├── uart.c
│   │   │   │   └── uart.h
│   │   │   ├── music/
│   │   │   │   ├── modmusic.c
│   │   │   │   ├── modmusic.h
│   │   │   │   ├── musictunes.c
│   │   │   │   └── musictunes.h
│   │   │   ├── ubluepy/
│   │   │   │   ├── modubluepy.c
│   │   │   │   ├── modubluepy.h
│   │   │   │   ├── ubluepy_characteristic.c
│   │   │   │   ├── ubluepy_constants.c
│   │   │   │   ├── ubluepy_delegate.c
│   │   │   │   ├── ubluepy_descriptor.c
│   │   │   │   ├── ubluepy_peripheral.c
│   │   │   │   ├── ubluepy_scan_entry.c
│   │   │   │   ├── ubluepy_scanner.c
│   │   │   │   ├── ubluepy_service.c
│   │   │   │   └── ubluepy_uuid.c
│   │   │   ├── uos/
│   │   │   │   ├── microbitfs.c
│   │   │   │   ├── microbitfs.h
│   │   │   │   └── moduos.c
│   │   │   └── utime/
│   │   │       └── modutime.c
│   │   ├── mpconfigdevice_nrf51822.h
│   │   ├── mpconfigdevice_nrf52832.h
│   │   ├── mpconfigdevice_nrf52840.h
│   │   ├── mpconfigdevice_nrf9160.h
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── nrf51_af.csv
│   │   ├── nrf52_af.csv
│   │   ├── nrf91_af.csv
│   │   ├── nrfx_config.h
│   │   ├── nrfx_glue.h
│   │   ├── nrfx_log.h
│   │   ├── pin_defs_nrf5.h
│   │   ├── pin_named_pins.c
│   │   └── qstrdefsport.h
│   ├── pic16bit/
│   │   ├── Makefile
│   │   ├── board.c
│   │   ├── board.h
│   │   ├── main.c
│   │   ├── modpyb.c
│   │   ├── modpyb.h
│   │   ├── modpybled.c
│   │   ├── modpybswitch.c
│   │   ├── mpconfigport.h
│   │   ├── pic16bit_mphal.c
│   │   ├── pic16bit_mphal.h
│   │   ├── qstrdefsport.h
│   │   └── unistd.h
│   ├── powerpc/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── frozentest.py
│   │   ├── head.S
│   │   ├── main.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── powerpc.lds
│   │   ├── qstrdefsport.h
│   │   ├── uart_lpc_serial.c
│   │   ├── uart_lpc_serial.h
│   │   ├── uart_potato.c
│   │   ├── uart_potato.h
│   │   └── unistd.h
│   ├── qemu-arm/
│   │   ├── Makefile
│   │   ├── Makefile.test
│   │   ├── README.md
│   │   ├── imx6.ld
│   │   ├── main.c
│   │   ├── modmachine.c
│   │   ├── moduos.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.h
│   │   ├── mps2.ld
│   │   ├── nrf51.ld
│   │   ├── qstrdefsport.h
│   │   ├── startup.c
│   │   ├── stm32.ld
│   │   ├── test-frzmpy/
│   │   │   └── native_frozen_align.py
│   │   ├── test_main.c
│   │   ├── uart.c
│   │   └── uart.h
│   ├── rp2/
│   │   ├── CMakeLists.txt
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── boards/
│   │   │   ├── ADAFRUIT_FEATHER_RP2040/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── PICO/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── SPARKFUN_PROMICRO/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   ├── SPARKFUN_THINGPLUS/
│   │   │   │   ├── mpconfigboard.cmake
│   │   │   │   └── mpconfigboard.h
│   │   │   └── manifest.py
│   │   ├── fatfs_port.c
│   │   ├── machine_adc.c
│   │   ├── machine_i2c.c
│   │   ├── machine_pin.c
│   │   ├── machine_pwm.c
│   │   ├── machine_rtc.c
│   │   ├── machine_spi.c
│   │   ├── machine_timer.c
│   │   ├── machine_uart.c
│   │   ├── machine_wdt.c
│   │   ├── main.c
│   │   ├── memmap_mp.ld
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modrp2.c
│   │   ├── modrp2.h
│   │   ├── modules/
│   │   │   ├── _boot.py
│   │   │   └── rp2.py
│   │   ├── moduos.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── qstrdefsport.h
│   │   ├── rp2_flash.c
│   │   ├── rp2_pio.c
│   │   ├── tusb_config.h
│   │   ├── tusb_port.c
│   │   ├── uart.c
│   │   └── uart.h
│   ├── samd/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── boards/
│   │   │   ├── ADAFRUIT_FEATHER_M0_EXPRESS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── ADAFRUIT_ITSYBITSY_M4_EXPRESS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── ADAFRUIT_TRINKET_M0/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── MINISAM_M4/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── SAMD21_XPLAINED_PRO/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   └── mpconfigboard.mk
│   │   │   ├── samd21x18a.ld
│   │   │   └── samd51g19a.ld
│   │   ├── main.c
│   │   ├── modmachine.c
│   │   ├── modutime.c
│   │   ├── mpconfigport.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── qstrdefsport.h
│   │   ├── samd_isr.c
│   │   ├── samd_soc.c
│   │   ├── samd_soc.h
│   │   ├── sections.ld
│   │   ├── tusb_config.h
│   │   └── tusb_port.c
│   ├── stm32/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── accel.c
│   │   ├── accel.h
│   │   ├── adc.c
│   │   ├── adc.h
│   │   ├── autoflash
│   │   ├── boardctrl.c
│   │   ├── boardctrl.h
│   │   ├── boards/
│   │   │   ├── ADAFRUIT_F405_EXPRESS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── B_L072Z_LRWAN1/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l0xx_hal_conf.h
│   │   │   ├── B_L475E_IOT01A/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── CERB40/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── ESPRUINO_PICO/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── HYDRABUS/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── LIMIFROG/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── MIKROE_CLICKER2_STM32/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NADHAT_PYBF405/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NETDUINO_PLUS_2/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F091RC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f0xx_hal_conf.h
│   │   │   ├── NUCLEO_F401RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F411RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F412ZG/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F413ZH/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F429ZI/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F446RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── NUCLEO_F722ZE/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── NUCLEO_F746ZG/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── NUCLEO_F767ZI/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── NUCLEO_H743ZI/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32h7xx_hal_conf.h
│   │   │   ├── NUCLEO_L073RZ/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l0xx_hal_conf.h
│   │   │   ├── NUCLEO_L432KC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── NUCLEO_L452RE/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── NUCLEO_L476RG/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── NUCLEO_WB55/
│   │   │   │   ├── mboot_keys.h
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   ├── rfcore_debug.py
│   │   │   │   ├── rfcore_firmware.py
│   │   │   │   ├── rfcore_makefirmware.py
│   │   │   │   └── stm32wbxx_hal_conf.h
│   │   │   ├── OLIMEX_E407/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBD_SF2/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── f722_qspi.ld
│   │   │   │   ├── manifest.py
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── PYBD_SF3/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── PYBD_SF6/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── f767.ld
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── PYBLITEV10/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV10/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV11/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV3/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── PYBV4/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F411DISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F429DISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F439/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F4DISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   ├── staccel.py
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── STM32F769DISC/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── f769_qspi.ld
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── STM32F7DISC/
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f7xx_hal_conf.h
│   │   │   ├── STM32L476DISC/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── STM32L496GDISC/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32l4xx_hal_conf.h
│   │   │   ├── USBDONGLE_WB55/
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32wbxx_hal_conf.h
│   │   │   ├── VCC_GND_F407VE/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── VCC_GND_F407ZG/
│   │   │   │   ├── bdev.c
│   │   │   │   ├── board_init.c
│   │   │   │   ├── mpconfigboard.h
│   │   │   │   ├── mpconfigboard.mk
│   │   │   │   ├── pins.csv
│   │   │   │   └── stm32f4xx_hal_conf.h
│   │   │   ├── common_basic.ld
│   │   │   ├── common_bl.ld
│   │   │   ├── common_blifs.ld
│   │   │   ├── common_bss_heap_stack.ld
│   │   │   ├── common_extratext_data_in_flash.ld
│   │   │   ├── common_extratext_data_in_flash_app.ld
│   │   │   ├── common_extratext_data_in_flash_text.ld
│   │   │   ├── common_ifs.ld
│   │   │   ├── make-pins.py
│   │   │   ├── manifest.py
│   │   │   ├── openocd_stm32f4.cfg
│   │   │   ├── openocd_stm32f7.cfg
│   │   │   ├── openocd_stm32l4.cfg
│   │   │   ├── pllvalues.py
│   │   │   ├── stm32f091_af.csv
│   │   │   ├── stm32f091xc.ld
│   │   │   ├── stm32f0xx_hal_conf_base.h
│   │   │   ├── stm32f401_af.csv
│   │   │   ├── stm32f401xd.ld
│   │   │   ├── stm32f401xe.ld
│   │   │   ├── stm32f405.ld
│   │   │   ├── stm32f405_af.csv
│   │   │   ├── stm32f411.ld
│   │   │   ├── stm32f411_af.csv
│   │   │   ├── stm32f412_af.csv
│   │   │   ├── stm32f412zx.ld
│   │   │   ├── stm32f413_af.csv
│   │   │   ├── stm32f413xg.ld
│   │   │   ├── stm32f413xh.ld
│   │   │   ├── stm32f429.ld
│   │   │   ├── stm32f429_af.csv
│   │   │   ├── stm32f439.ld
│   │   │   ├── stm32f439_af.csv
│   │   │   ├── stm32f4xx_hal_conf_base.h
│   │   │   ├── stm32f4xx_prefix.c
│   │   │   ├── stm32f722.ld
│   │   │   ├── stm32f722_af.csv
│   │   │   ├── stm32f746.ld
│   │   │   ├── stm32f746_af.csv
│   │   │   ├── stm32f767.ld
│   │   │   ├── stm32f767_af.csv
│   │   │   ├── stm32f769.ld
│   │   │   ├── stm32f7xx_hal_conf_base.h
│   │   │   ├── stm32h743.ld
│   │   │   ├── stm32h743_af.csv
│   │   │   ├── stm32h7xx_hal_conf_base.h
│   │   │   ├── stm32l072_af.csv
│   │   │   ├── stm32l072xz.ld
│   │   │   ├── stm32l0xx_hal_conf_base.h
│   │   │   ├── stm32l432.ld
│   │   │   ├── stm32l432_af.csv
│   │   │   ├── stm32l452_af.csv
│   │   │   ├── stm32l452xe.ld
│   │   │   ├── stm32l476_af.csv
│   │   │   ├── stm32l476xe.ld
│   │   │   ├── stm32l476xg.ld
│   │   │   ├── stm32l496_af.csv
│   │   │   ├── stm32l496xg.ld
│   │   │   ├── stm32l4xx_hal_conf_base.h
│   │   │   ├── stm32wb55_af.csv
│   │   │   ├── stm32wb55xg.ld
│   │   │   └── stm32wbxx_hal_conf_base.h
│   │   ├── bufhelper.c
│   │   ├── bufhelper.h
│   │   ├── can.c
│   │   ├── can.h
│   │   ├── dac.c
│   │   ├── dac.h
│   │   ├── dma.c
│   │   ├── dma.h
│   │   ├── eth.c
│   │   ├── eth.h
│   │   ├── extint.c
│   │   ├── extint.h
│   │   ├── factoryreset.c
│   │   ├── factoryreset.h
│   │   ├── fatfs_port.c
│   │   ├── fdcan.c
│   │   ├── flash.c
│   │   ├── flash.h
│   │   ├── flashbdev.c
│   │   ├── font_petme128_8x8.h
│   │   ├── gccollect.c
│   │   ├── gccollect.h
│   │   ├── help.c
│   │   ├── i2c.c
│   │   ├── i2c.h
│   │   ├── i2cslave.c
│   │   ├── i2cslave.h
│   │   ├── irq.c
│   │   ├── irq.h
│   │   ├── lcd.c
│   │   ├── lcd.h
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── lwip_inc/
│   │   │   ├── arch/
│   │   │   │   ├── cc.h
│   │   │   │   └── sys_arch.h
│   │   │   └── lwipopts.h
│   │   ├── machine_adc.c
│   │   ├── machine_i2c.c
│   │   ├── machine_spi.c
│   │   ├── machine_timer.c
│   │   ├── machine_uart.c
│   │   ├── main.c
│   │   ├── make-stmconst.py
│   │   ├── mbedtls/
│   │   │   ├── mbedtls_config.h
│   │   │   └── mbedtls_port.c
│   │   ├── mboot/
│   │   │   ├── Makefile
│   │   │   ├── Particle.h
│   │   │   ├── README.md
│   │   │   ├── dfu.h
│   │   │   ├── elem.c
│   │   │   ├── ffconf.h
│   │   │   ├── fsload.c
│   │   │   ├── fwupdate.py
│   │   │   ├── gzstream.c
│   │   │   ├── gzstream.h
│   │   │   ├── main.c
│   │   │   ├── mboot.h
│   │   │   ├── mboot.py
│   │   │   ├── mboot_pack_dfu.py
│   │   │   ├── mphalport.h
│   │   │   ├── pack.c
│   │   │   ├── pack.h
│   │   │   ├── stm32_memory.ld
│   │   │   ├── stm32_sections.ld
│   │   │   ├── vfs.h
│   │   │   ├── vfs_fat.c
│   │   │   └── vfs_lfs.c
│   │   ├── modmachine.c
│   │   ├── modmachine.h
│   │   ├── modnetwork.c
│   │   ├── modnetwork.h
│   │   ├── modnwcc3k.c
│   │   ├── modnwwiznet5k.c
│   │   ├── modpyb.c
│   │   ├── modstm.c
│   │   ├── moduos.c
│   │   ├── modusocket.c
│   │   ├── modutime.c
│   │   ├── mpbthciport.c
│   │   ├── mpbtstackport.c
│   │   ├── mpbtstackport.h
│   │   ├── mpconfigboard_common.h
│   │   ├── mpconfigport.h
│   │   ├── mpconfigport.mk
│   │   ├── mpconfigport_nanbox.h
│   │   ├── mphalport.c
│   │   ├── mphalport.h
│   │   ├── mpnimbleport.c
│   │   ├── mpnimbleport.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── mpu.h
│   │   ├── network_lan.c
│   │   ├── network_wiznet5k.c
│   │   ├── pendsv.c
│   │   ├── pendsv.h
│   │   ├── pin.c
│   │   ├── pin.h
│   │   ├── pin_defs_stm32.c
│   │   ├── pin_defs_stm32.h
│   │   ├── pin_named_pins.c
│   │   ├── pin_static_af.h
│   │   ├── portmodules.h
│   │   ├── powerctrl.c
│   │   ├── powerctrl.h
│   │   ├── powerctrlboot.c
│   │   ├── pyb_can.c
│   │   ├── pyb_i2c.c
│   │   ├── pyb_spi.c
│   │   ├── pybcdc.inf_template
│   │   ├── pybthread.c
│   │   ├── pybthread.h
│   │   ├── qspi.c
│   │   ├── qspi.h
│   │   ├── qstrdefsport.h
│   │   ├── resethandler.s
│   │   ├── resethandler_m0.s
│   │   ├── rfcore.c
│   │   ├── rfcore.h
│   │   ├── rng.c
│   │   ├── rng.h
│   │   ├── rtc.c
│   │   ├── rtc.h
│   │   ├── sdcard.c
│   │   ├── sdcard.h
│   │   ├── sdio.c
│   │   ├── sdio.h
│   │   ├── sdram.c
│   │   ├── sdram.h
│   │   ├── servo.c
│   │   ├── servo.h
│   │   ├── softtimer.c
│   │   ├── softtimer.h
│   │   ├── spi.c
│   │   ├── spi.h
│   │   ├── spibdev.c
│   │   ├── stm32_it.c
│   │   ├── stm32_it.h
│   │   ├── storage.c
│   │   ├── storage.h
│   │   ├── system_stm32.c
│   │   ├── systick.c
│   │   ├── systick.h
│   │   ├── timer.c
│   │   ├── timer.h
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── usb.c
│   │   ├── usb.h
│   │   ├── usbd_cdc_interface.c
│   │   ├── usbd_cdc_interface.h
│   │   ├── usbd_conf.c
│   │   ├── usbd_conf.h
│   │   ├── usbd_desc.c
│   │   ├── usbd_desc.h
│   │   ├── usbd_hid_interface.c
│   │   ├── usbd_hid_interface.h
│   │   ├── usbd_msc_interface.c
│   │   ├── usbd_msc_interface.h
│   │   ├── usbdev/
│   │   │   ├── class/
│   │   │   │   ├── inc/
│   │   │   │   │   ├── usbd_cdc_msc_hid.h
│   │   │   │   │   ├── usbd_cdc_msc_hid0.h
│   │   │   │   │   ├── usbd_msc_bot.h
│   │   │   │   │   └── usbd_msc_scsi.h
│   │   │   │   └── src/
│   │   │   │       ├── usbd_cdc_msc_hid.c
│   │   │   │       ├── usbd_msc_bot.c
│   │   │   │       └── usbd_msc_scsi.c
│   │   │   └── core/
│   │   │       ├── inc/
│   │   │       │   ├── usbd_core.h
│   │   │       │   ├── usbd_ctlreq.h
│   │   │       │   ├── usbd_def.h
│   │   │       │   └── usbd_ioreq.h
│   │   │       └── src/
│   │   │           ├── usbd_core.c
│   │   │           ├── usbd_ctlreq.c
│   │   │           └── usbd_ioreq.c
│   │   ├── usbhost/
│   │   │   ├── Class/
│   │   │   │   ├── AUDIO/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   └── usbh_audio.h
│   │   │   │   │   └── Src/
│   │   │   │   │       └── usbh_audio.c
│   │   │   │   ├── CDC/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   └── usbh_cdc.h
│   │   │   │   │   └── Src/
│   │   │   │   │       └── usbh_cdc.c
│   │   │   │   ├── HID/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   ├── usbh_hid.h
│   │   │   │   │   │   ├── usbh_hid_keybd.h
│   │   │   │   │   │   ├── usbh_hid_mouse.h
│   │   │   │   │   │   ├── usbh_hid_parser.h
│   │   │   │   │   │   └── usbh_hid_usage.h
│   │   │   │   │   └── Src/
│   │   │   │   │       ├── usbh_hid.c
│   │   │   │   │       ├── usbh_hid_keybd.c
│   │   │   │   │       ├── usbh_hid_mouse.c
│   │   │   │   │       └── usbh_hid_parser.c
│   │   │   │   ├── MSC/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   ├── usbh_msc.h
│   │   │   │   │   │   ├── usbh_msc_bot.h
│   │   │   │   │   │   └── usbh_msc_scsi.h
│   │   │   │   │   └── Src/
│   │   │   │   │       ├── usbh_msc.c
│   │   │   │   │       ├── usbh_msc_bot.c
│   │   │   │   │       └── usbh_msc_scsi.c
│   │   │   │   ├── MTP/
│   │   │   │   │   ├── Inc/
│   │   │   │   │   │   ├── usbh_mtp.h
│   │   │   │   │   │   └── usbh_mtp_ptp.h
│   │   │   │   │   └── Src/
│   │   │   │   │       ├── usbh_mtp.c
│   │   │   │   │       └── usbh_mtp_ptp.c
│   │   │   │   └── Template/
│   │   │   │       ├── Inc/
│   │   │   │       │   └── usbh_template.h
│   │   │   │       └── Src/
│   │   │   │           └── usbh_template.c
│   │   │   └── Core/
│   │   │       ├── Inc/
│   │   │       │   ├── usbh_conf_template.h
│   │   │       │   ├── usbh_core.h
│   │   │       │   ├── usbh_ctlreq.h
│   │   │       │   ├── usbh_def.h
│   │   │       │   ├── usbh_ioreq.h
│   │   │       │   └── usbh_pipes.h
│   │   │       └── Src/
│   │   │           ├── usbh_conf_template.c
│   │   │           ├── usbh_core.c
│   │   │           ├── usbh_ctlreq.c
│   │   │           ├── usbh_ioreq.c
│   │   │           └── usbh_pipes.c
│   │   ├── usrsw.c
│   │   ├── usrsw.h
│   │   ├── wdt.c
│   │   └── wdt.h
│   ├── teensy/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── add-memzip.sh
│   │   ├── core/
│   │   │   ├── Arduino.h
│   │   │   ├── HardwareSerial.h
│   │   │   ├── analog.c
│   │   │   ├── avr_functions.h
│   │   │   ├── core_pins.h
│   │   │   ├── mk20dx128.c
│   │   │   ├── mk20dx128.h
│   │   │   ├── pins_arduino.h
│   │   │   ├── pins_teensy.c
│   │   │   ├── usb_desc.c
│   │   │   ├── usb_desc.h
│   │   │   ├── usb_dev.c
│   │   │   ├── usb_dev.h
│   │   │   ├── usb_mem.c
│   │   │   ├── usb_mem.h
│   │   │   ├── usb_names.h
│   │   │   ├── usb_serial.c
│   │   │   ├── usb_serial.h
│   │   │   └── yield.c
│   │   ├── hal_ftm.c
│   │   ├── hal_ftm.h
│   │   ├── hal_gpio.c
│   │   ├── help.c
│   │   ├── lcd.c
│   │   ├── led.c
│   │   ├── led.h
│   │   ├── lexerfrozen.c
│   │   ├── lexermemzip.h
│   │   ├── main.c
│   │   ├── make-pins.py
│   │   ├── memzip_files/
│   │   │   ├── boot.py
│   │   │   └── main.py
│   │   ├── mk20dx256.ld
│   │   ├── mk20dx256_af.csv
│   │   ├── mk20dx256_prefix.c
│   │   ├── modpyb.c
│   │   ├── mpconfigport.h
│   │   ├── pin_defs_teensy.c
│   │   ├── pin_defs_teensy.h
│   │   ├── qstrdefsport.h
│   │   ├── reg.c
│   │   ├── reg.h
│   │   ├── servo.c
│   │   ├── servo.h
│   │   ├── std.h
│   │   ├── teensy_hal.c
│   │   ├── teensy_hal.h
│   │   ├── teensy_pins.csv
│   │   ├── timer.c
│   │   ├── timer.h
│   │   ├── uart.c
│   │   ├── uart.h
│   │   ├── usb.c
│   │   └── usb.h
│   ├── unix/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── alloc.c
│   │   ├── coverage.c
│   │   ├── coveragecpp.cpp
│   │   ├── fatfs_port.c
│   │   ├── fdfile.h
│   │   ├── file.c
│   │   ├── gccollect.c
│   │   ├── input.c
│   │   ├── input.h
│   │   ├── main.c
│   │   ├── modffi.c
│   │   ├── modjni.c
│   │   ├── modmachine.c
│   │   ├── modos.c
│   │   ├── modtermios.c
│   │   ├── modtime.c
│   │   ├── moduos_vfs.c
│   │   ├── moduselect.c
│   │   ├── modusocket.c
│   │   ├── mpbthciport.c
│   │   ├── mpbtstackport.h
│   │   ├── mpbtstackport_common.c
│   │   ├── mpbtstackport_h4.c
│   │   ├── mpbtstackport_usb.c
│   │   ├── mpconfigport.h
│   │   ├── mpconfigport.mk
│   │   ├── mphalport.h
│   │   ├── mpnimbleport.c
│   │   ├── mpnimbleport.h
│   │   ├── mpthreadport.c
│   │   ├── mpthreadport.h
│   │   ├── qstrdefsport.h
│   │   ├── unix_mphal.c
│   │   └── variants/
│   │       ├── coverage/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── dev/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── fast/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── freedos/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── minimal/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       ├── nanbox/
│   │       │   ├── mpconfigvariant.h
│   │       │   └── mpconfigvariant.mk
│   │       └── standard/
│   │           ├── mpconfigvariant.h
│   │           └── mpconfigvariant.mk
│   ├── windows/
│   │   ├── .appveyor.yml
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── fmode.c
│   │   ├── fmode.h
│   │   ├── init.c
│   │   ├── init.h
│   │   ├── micropython.vcxproj
│   │   ├── mpconfigport.h
│   │   ├── mpconfigport.mk
│   │   ├── msvc/
│   │   │   ├── common.props
│   │   │   ├── debug.props
│   │   │   ├── dirent.c
│   │   │   ├── dirent.h
│   │   │   ├── genhdr.targets
│   │   │   ├── gettimeofday.c
│   │   │   ├── paths.props
│   │   │   ├── release.props
│   │   │   ├── sources.props
│   │   │   ├── sys/
│   │   │   │   └── time.h
│   │   │   └── unistd.h
│   │   ├── realpath.c
│   │   ├── realpath.h
│   │   ├── sleep.c
│   │   ├── sleep.h
│   │   ├── windows_mphal.c
│   │   └── windows_mphal.h
│   └── zephyr/
│       ├── .gitignore
│       ├── CMakeLists.txt
│       ├── Kbuild
│       ├── Makefile
│       ├── Makefile.zephyr
│       ├── README.md
│       ├── boards/
│       │   ├── 96b_carbon.conf
│       │   ├── disco_l475_iot1.conf
│       │   ├── frdm_k64f.conf
│       │   ├── frdm_kw41z.conf
│       │   ├── mimxrt1050_evk.conf
│       │   ├── nucleo_h743zi.conf
│       │   ├── nucleo_h743zi.overlay
│       │   ├── nucleo_wb55rg.conf
│       │   ├── qemu_cortex_m3.conf
│       │   ├── qemu_x86.conf
│       │   ├── reel_board.conf
│       │   └── rv32m1_vega_ri5cy.conf
│       ├── help.c
│       ├── machine_i2c.c
│       ├── machine_pin.c
│       ├── machine_uart.c
│       ├── main.c
│       ├── make-bin-testsuite
│       ├── make-minimal
│       ├── modbluetooth_zephyr.c
│       ├── modmachine.c
│       ├── modmachine.h
│       ├── moduos.c
│       ├── modusocket.c
│       ├── modutime.c
│       ├── modzephyr.c
│       ├── modzephyr.h
│       ├── modzsensor.c
│       ├── mpconfigport.h
│       ├── mpconfigport_bin_testsuite.h
│       ├── mpconfigport_minimal.h
│       ├── mphalport.h
│       ├── prj.conf
│       ├── prj_minimal.conf
│       ├── run-builtin-testsuite.sh
│       ├── src/
│       │   ├── Makefile
│       │   ├── zephyr_getchar.c
│       │   ├── zephyr_getchar.h
│       │   └── zephyr_start.c
│       ├── uart_core.c
│       ├── z_config.mk
│       └── zephyr_storage.c
├── py/
│   ├── argcheck.c
│   ├── asmarm.c
│   ├── asmarm.h
│   ├── asmbase.c
│   ├── asmbase.h
│   ├── asmthumb.c
│   ├── asmthumb.h
│   ├── asmx64.c
│   ├── asmx64.h
│   ├── asmx86.c
│   ├── asmx86.h
│   ├── asmxtensa.c
│   ├── asmxtensa.h
│   ├── bc.c
│   ├── bc.h
│   ├── bc0.h
│   ├── binary.c
│   ├── binary.h
│   ├── builtin.h
│   ├── builtinevex.c
│   ├── builtinhelp.c
│   ├── builtinimport.c
│   ├── compile.c
│   ├── compile.h
│   ├── dynruntime.h
│   ├── dynruntime.mk
│   ├── emit.h
│   ├── emitbc.c
│   ├── emitcommon.c
│   ├── emitglue.c
│   ├── emitglue.h
│   ├── emitinlinethumb.c
│   ├── emitinlinextensa.c
│   ├── emitnarm.c
│   ├── emitnative.c
│   ├── emitnthumb.c
│   ├── emitnx64.c
│   ├── emitnx86.c
│   ├── emitnxtensa.c
│   ├── emitnxtensawin.c
│   ├── formatfloat.c
│   ├── formatfloat.h
│   ├── frozenmod.c
│   ├── frozenmod.h
│   ├── gc.c
│   ├── gc.h
│   ├── gc_dumbbump.c
│   ├── grammar.h
│   ├── lexer.c
│   ├── lexer.h
│   ├── makecompresseddata.py
│   ├── makemoduledefs.py
│   ├── makeqstrdata.py
│   ├── makeqstrdefs.py
│   ├── makeversionhdr.py
│   ├── malloc.c
│   ├── map.c
│   ├── misc.h
│   ├── mkenv.mk
│   ├── mkrules.cmake
│   ├── mkrules.mk
│   ├── modarray.c
│   ├── modbuiltins.c
│   ├── modcmath.c
│   ├── modcollections.c
│   ├── modgc.c
│   ├── modio.c
│   ├── modmath.c
│   ├── modmicropython.c
│   ├── modstruct.c
│   ├── modsys.c
│   ├── modthread.c
│   ├── moduerrno.c
│   ├── mpconfig.h
│   ├── mperrno.h
│   ├── mphal.h
│   ├── mpprint.c
│   ├── mpprint.h
│   ├── mpstate.c
│   ├── mpstate.h
│   ├── mpthread.h
│   ├── mpz.c
│   ├── mpz.h
│   ├── nativeglue.c
│   ├── nativeglue.h
│   ├── nlr.c
│   ├── nlr.h
│   ├── nlraarch64.c
│   ├── nlrpowerpc.c
│   ├── nlrsetjmp.c
│   ├── nlrthumb.c
│   ├── nlrx64.c
│   ├── nlrx86.c
│   ├── nlrxtensa.c
│   ├── obj.c
│   ├── obj.h
│   ├── objarray.c
│   ├── objarray.h
│   ├── objattrtuple.c
│   ├── objbool.c
│   ├── objboundmeth.c
│   ├── objbufreader.c
│   ├── objcell.c
│   ├── objclosure.c
│   ├── objcomplex.c
│   ├── objcomplex.h
│   ├── objdeque.c
│   ├── objdict.c
│   ├── objenumerate.c
│   ├── objexcept.c
│   ├── objexcept.h
│   ├── objfilter.c
│   ├── objfloat.c
│   ├── objfun.c
│   ├── objfun.h
│   ├── objgenerator.c
│   ├── objgenerator.h
│   ├── objgetitemiter.c
│   ├── objint.c
│   ├── objint.h
│   ├── objint_longlong.c
│   ├── objint_mpz.c
│   ├── objlist.c
│   ├── objlist.h
│   ├── objmap.c
│   ├── objmodule.c
│   ├── objmodule.h
│   ├── objnamedtuple.c
│   ├── objnamedtuple.h
│   ├── objnone.c
│   ├── objobject.c
│   ├── objpolyiter.c
│   ├── objproperty.c
│   ├── objrange.c
│   ├── objreversed.c
│   ├── objroproxy.c
│   ├── objset.c
│   ├── objsingleton.c
│   ├── objslice.c
│   ├── objstr.c
│   ├── objstr.h
│   ├── objstringio.c
│   ├── objstringio.h
│   ├── objstrunicode.c
│   ├── objtextio.c
│   ├── objtextio.h
│   ├── objtuple.c
│   ├── objtuple.h
│   ├── objtype.c
│   ├── objtype.h
│   ├── objzip.c
│   ├── opmethods.c
│   ├── pairheap.c
│   ├── pairheap.h
│   ├── parse.c
│   ├── parse.h
│   ├── parsenum.c
│   ├── parsenum.h
│   ├── parsenumbase.c
│   ├── parsenumbase.h
│   ├── persistentcode.c
│   ├── persistentcode.h
│   ├── profile.c
│   ├── profile.h
│   ├── py.cmake
│   ├── py.mk
│   ├── pystack.c
│   ├── pystack.h
│   ├── qstr.c
│   ├── qstr.h
│   ├── qstrdefs.h
│   ├── reader.c
│   ├── reader.h
│   ├── repl.c
│   ├── repl.h
│   ├── ringbuf.c
│   ├── ringbuf.h
│   ├── runtime.c
│   ├── runtime.h
│   ├── runtime0.h
│   ├── runtime_utils.c
│   ├── scheduler.c
│   ├── scope.c
│   ├── scope.h
│   ├── sequence.c
│   ├── showbc.c
│   ├── smallint.c
│   ├── smallint.h
│   ├── stackctrl.c
│   ├── stackctrl.h
│   ├── stream.c
│   ├── stream.h
│   ├── strict_mode.c
│   ├── strict_mode.h
│   ├── unicode.c
│   ├── unicode.h
│   ├── usermod.cmake
│   ├── vm.c
│   ├── vmentrytable.h
│   ├── vstr.c
│   └── warning.c
├── tests/
│   ├── README
│   ├── basics/
│   │   ├── 0prelim.py
│   │   ├── andor.py
│   │   ├── annotate_var.py
│   │   ├── annotate_var.py.exp
│   │   ├── array1.py
│   │   ├── array_add.py
│   │   ├── array_construct.py
│   │   ├── array_construct2.py
│   │   ├── array_construct_endian.py
│   │   ├── array_cpython_nonsense.py
│   │   ├── array_intbig.py
│   │   ├── array_micropython.py
│   │   ├── array_micropython.py.exp
│   │   ├── assign1.py
│   │   ├── assign_expr.py
│   │   ├── assign_expr.py.exp
│   │   ├── assign_expr_syntaxerror.py
│   │   ├── assign_expr_syntaxerror.py.exp
│   │   ├── async_await.py
│   │   ├── async_await.py.exp
│   │   ├── async_await2.py
│   │   ├── async_await2.py.exp
│   │   ├── async_def.py
│   │   ├── async_def.py.exp
│   │   ├── async_for.py
│   │   ├── async_for.py.exp
│   │   ├── async_for2.py
│   │   ├── async_for2.py.exp
│   │   ├── async_syntaxerror.py
│   │   ├── async_syntaxerror.py.exp
│   │   ├── async_with.py
│   │   ├── async_with.py.exp
│   │   ├── async_with2.py
│   │   ├── async_with2.py.exp
│   │   ├── async_with_break.py
│   │   ├── async_with_break.py.exp
│   │   ├── async_with_return.py
│   │   ├── async_with_return.py.exp
│   │   ├── attrtuple1.py
│   │   ├── bool1.py
│   │   ├── boundmeth1.py
│   │   ├── break.py
│   │   ├── builtin_abs.py
│   │   ├── builtin_abs_intbig.py
│   │   ├── builtin_allany.py
│   │   ├── builtin_bin.py
│   │   ├── builtin_bin_intbig.py
│   │   ├── builtin_callable.py
│   │   ├── builtin_chr.py
│   │   ├── builtin_compile.py
│   │   ├── builtin_delattr.py
│   │   ├── builtin_dir.py
│   │   ├── builtin_divmod.py
│   │   ├── builtin_divmod_intbig.py
│   │   ├── builtin_ellipsis.py
│   │   ├── builtin_enumerate.py
│   │   ├── builtin_eval.py
│   │   ├── builtin_eval_buffer.py
│   │   ├── builtin_eval_error.py
│   │   ├── builtin_exec.py
│   │   ├── builtin_exec_buffer.py
│   │   ├── builtin_filter.py
│   │   ├── builtin_getattr.py
│   │   ├── builtin_hasattr.py
│   │   ├── builtin_hash.py
│   │   ├── builtin_hash_gen.py
│   │   ├── builtin_hash_intbig.py
│   │   ├── builtin_help.py
│   │   ├── builtin_help.py.exp
│   │   ├── builtin_hex.py
│   │   ├── builtin_hex_intbig.py
│   │   ├── builtin_id.py
│   │   ├── builtin_issubclass.py
│   │   ├── builtin_len1.py
│   │   ├── builtin_locals.py
│   │   ├── builtin_map.py
│   │   ├── builtin_minmax.py
│   │   ├── builtin_next_arg2.py
│   │   ├── builtin_oct.py
│   │   ├── builtin_oct_intbig.py
│   │   ├── builtin_ord.py
│   │   ├── builtin_override.py
│   │   ├── builtin_pow.py
│   │   ├── builtin_pow3.py
│   │   ├── builtin_pow3_intbig.py
│   │   ├── builtin_print.py
│   │   ├── builtin_property.py
│   │   ├── builtin_property_inherit.py
│   │   ├── builtin_range.py
│   │   ├── builtin_range_attrs.py
│   │   ├── builtin_range_binop.py
│   │   ├── builtin_reversed.py
│   │   ├── builtin_round.py
│   │   ├── builtin_round_int.py
│   │   ├── builtin_round_intbig.py
│   │   ├── builtin_setattr.py
│   │   ├── builtin_slice.py
│   │   ├── builtin_sorted.py
│   │   ├── builtin_sum.py
│   │   ├── builtin_type.py
│   │   ├── builtin_zip.py
│   │   ├── bytearray1.py
│   │   ├── bytearray_add.py
│   │   ├── bytearray_append.py
│   │   ├── bytearray_construct.py
│   │   ├── bytearray_construct_array.py
│   │   ├── bytearray_construct_endian.py
│   │   ├── bytearray_decode.py
│   │   ├── bytearray_intbig.py
│   │   ├── bytearray_slice_assign.py
│   │   ├── bytes.py
│   │   ├── bytes_add.py
│   │   ├── bytes_add_array.py
│   │   ├── bytes_add_bytearray.py
│   │   ├── bytes_add_endian.py
│   │   ├── bytes_compare.py
│   │   ├── bytes_compare2.py
│   │   ├── bytes_compare3.py
│   │   ├── bytes_compare3.py.exp
│   │   ├── bytes_compare_array.py
│   │   ├── bytes_compare_bytearray.py
│   │   ├── bytes_construct.py
│   │   ├── bytes_construct_array.py
│   │   ├── bytes_construct_bytearray.py
│   │   ├── bytes_construct_endian.py
│   │   ├── bytes_construct_intbig.py
│   │   ├── bytes_count.py
│   │   ├── bytes_find.py
│   │   ├── bytes_format_modulo.py
│   │   ├── bytes_format_modulo.py.exp
│   │   ├── bytes_gen.py
│   │   ├── bytes_large.py
│   │   ├── bytes_mult.py
│   │   ├── bytes_partition.py
│   │   ├── bytes_replace.py
│   │   ├── bytes_split.py
│   │   ├── bytes_strip.py
│   │   ├── bytes_subscr.py
│   │   ├── class1.py
│   │   ├── class2.py
│   │   ├── class3.py
│   │   ├── class_bind_self.py
│   │   ├── class_binop.py
│   │   ├── class_call.py
│   │   ├── class_contains.py
│   │   ├── class_delattr_setattr.py
│   │   ├── class_descriptor.py
│   │   ├── class_dict.py
│   │   ├── class_emptybases.py
│   │   ├── class_enclosed_lookups.py
│   │   ├── class_getattr.py
│   │   ├── class_inherit1.py
│   │   ├── class_inherit_mul.py
│   │   ├── class_inplace_op.py
│   │   ├── class_inplace_op2.py
│   │   ├── class_inplace_op2.py.exp
│   │   ├── class_instance_override.py
│   │   ├── class_item.py
│   │   ├── class_mangle.py
│   │   ├── class_misc.py
│   │   ├── class_new.py
│   │   ├── class_new_init.py
│   │   ├── class_new_singleton.py
│   │   ├── class_notimpl.py
│   │   ├── class_number.py
│   │   ├── class_ordereddict.py
│   │   ├── class_ordereddict.py.exp
│   │   ├── class_reverse_op.py
│   │   ├── class_slots.py
│   │   ├── class_slots_empty.py
│   │   ├── class_slots_negative.py
│   │   ├── class_staticclassmethod.py
│   │   ├── class_store.py
│   │   ├── class_store_class.py
│   │   ├── class_str.py
│   │   ├── class_super.py
│   │   ├── class_super_aslocal.py
│   │   ├── class_super_classmeth.py
│   │   ├── class_super_closure.py
│   │   ├── class_super_multinherit.py
│   │   ├── class_super_object.py
│   │   ├── class_use_other.py
│   │   ├── closure1.py
│   │   ├── closure2.py
│   │   ├── closure_byref.py
│   │   ├── closure_defargs.py
│   │   ├── closure_docstring.py
│   │   ├── closure_manyvars.py
│   │   ├── closure_name.py
│   │   ├── closure_namedarg.py
│   │   ├── compare_multi.py
│   │   ├── comprehension1.py
│   │   ├── containment.py
│   │   ├── continue.py
│   │   ├── decorator.py
│   │   ├── del_attr.py
│   │   ├── del_deref.py
│   │   ├── del_global.py
│   │   ├── del_local.py
│   │   ├── del_name.py
│   │   ├── del_subscr.py
│   │   ├── deque1.py
│   │   ├── deque2.py
│   │   ├── deque2.py.exp
│   │   ├── dict1.py
│   │   ├── dict2.py
│   │   ├── dict_clear.py
│   │   ├── dict_construct.py
│   │   ├── dict_copy.py
│   │   ├── dict_del.py
│   │   ├── dict_fixed.py
│   │   ├── dict_fixed.py.exp
│   │   ├── dict_from_iter.py
│   │   ├── dict_fromkeys.py
│   │   ├── dict_fromkeys2.py
│   │   ├── dict_get.py
│   │   ├── dict_intern.py
│   │   ├── dict_iterator.py
│   │   ├── dict_pop.py
│   │   ├── dict_popitem.py
│   │   ├── dict_setdefault.py
│   │   ├── dict_specialmeth.py
│   │   ├── dict_update.py
│   │   ├── dict_views.py
│   │   ├── equal.py
│   │   ├── equal_class.py
│   │   ├── errno1.py
│   │   ├── errno1.py.exp
│   │   ├── except_match_tuple.py
│   │   ├── exception1.py
│   │   ├── exception_chain.py
│   │   ├── exception_chain.py.exp
│   │   ├── exceptpoly.py
│   │   ├── exceptpoly2.py
│   │   ├── floordivide.py
│   │   ├── floordivide_intbig.py
│   │   ├── for1.py
│   │   ├── for2.py
│   │   ├── for3.py
│   │   ├── for_break.py
│   │   ├── for_else.py
│   │   ├── for_range.py
│   │   ├── for_return.py
│   │   ├── frozenset1.py
│   │   ├── frozenset_add.py
│   │   ├── frozenset_binop.py
│   │   ├── frozenset_copy.py
│   │   ├── frozenset_difference.py
│   │   ├── frozenset_set.py
│   │   ├── fun1.py
│   │   ├── fun2.py
│   │   ├── fun3.py
│   │   ├── fun_annotations.py
│   │   ├── fun_calldblstar.py
│   │   ├── fun_calldblstar2.py
│   │   ├── fun_calldblstar3.py
│   │   ├── fun_callstar.py
│   │   ├── fun_callstardblstar.py
│   │   ├── fun_defargs.py
│   │   ├── fun_defargs2.py
│   │   ├── fun_docstring.py
│   │   ├── fun_error.py
│   │   ├── fun_error2.py
│   │   ├── fun_globals.py
│   │   ├── fun_kwargs.py
│   │   ├── fun_kwonly.py
│   │   ├── fun_kwonlydef.py
│   │   ├── fun_kwvarargs.py
│   │   ├── fun_largestate.py
│   │   ├── fun_name.py
│   │   ├── fun_str.py
│   │   ├── fun_varargs.py
│   │   ├── gc1.py
│   │   ├── gen_yield_from.py
│   │   ├── gen_yield_from_close.py
│   │   ├── gen_yield_from_ducktype.py
│   │   ├── gen_yield_from_exc.py
│   │   ├── gen_yield_from_executing.py
│   │   ├── gen_yield_from_iter.py
│   │   ├── gen_yield_from_pending.py
│   │   ├── gen_yield_from_send.py
│   │   ├── gen_yield_from_stopped.py
│   │   ├── gen_yield_from_throw.py
│   │   ├── gen_yield_from_throw2.py
│   │   ├── gen_yield_from_throw3.py
│   │   ├── generator1.py
│   │   ├── generator2.py
│   │   ├── generator_args.py
│   │   ├── generator_close.py
│   │   ├── generator_closure.py
│   │   ├── generator_exc.py
│   │   ├── generator_lambda.py
│   │   ├── generator_name.py
│   │   ├── generator_pend_throw.py
│   │   ├── generator_pend_throw.py.exp
│   │   ├── generator_pend_throw2.py
│   │   ├── generator_pend_throw2.py.exp
│   │   ├── generator_pep479.py
│   │   ├── generator_pep479.py.exp
│   │   ├── generator_return.py
│   │   ├── generator_send.py
│   │   ├── generator_throw.py
│   │   ├── generator_throw_nested.py
│   │   ├── getattr.py
│   │   ├── getitem.py
│   │   ├── globals_del.py
│   │   ├── ifcond.py
│   │   ├── ifexpr.py
│   │   ├── int1.py
│   │   ├── int2.py
│   │   ├── int_big1.py
│   │   ├── int_big_add.py
│   │   ├── int_big_and.py
│   │   ├── int_big_and2.py
│   │   ├── int_big_and3.py
│   │   ├── int_big_cmp.py
│   │   ├── int_big_div.py
│   │   ├── int_big_error.py
│   │   ├── int_big_lshift.py
│   │   ├── int_big_mod.py
│   │   ├── int_big_mul.py
│   │   ├── int_big_or.py
│   │   ├── int_big_or2.py
│   │   ├── int_big_or3.py
│   │   ├── int_big_pow.py
│   │   ├── int_big_rshift.py
│   │   ├── int_big_unary.py
│   │   ├── int_big_xor.py
│   │   ├── int_big_xor2.py
│   │   ├── int_big_xor3.py
│   │   ├── int_big_zeroone.py
│   │   ├── int_bytes.py
│   │   ├── int_bytes_intbig.py
│   │   ├── int_constfolding.py
│   │   ├── int_constfolding_intbig.py
│   │   ├── int_divmod.py
│   │   ├── int_divmod_intbig.py
│   │   ├── int_divzero.py
│   │   ├── int_intbig.py
│   │   ├── int_small.py
│   │   ├── io_buffered_reader.py
│   │   ├── io_buffered_writer.py
│   │   ├── io_buffered_writer.py.exp
│   │   ├── io_bytesio_cow.py
│   │   ├── io_bytesio_ext.py
│   │   ├── io_bytesio_ext2.py
│   │   ├── io_bytesio_ext2.py.exp
│   │   ├── io_bytesio_readinto_bytesio.py
│   │   ├── io_bytesio_readinto_bytesio.py.exp
│   │   ├── io_bytesio_readline.py
│   │   ├── io_bytesio_readline_ext.py
│   │   ├── io_bytesio_readline_ext.py.exp
│   │   ├── io_bytesio_to_stringio.py
│   │   ├── io_iobase.py
│   │   ├── io_read_writebin.py
│   │   ├── io_read_writebin.py.exp
│   │   ├── io_stringio1.py
│   │   ├── io_stringio_iadd.py
│   │   ├── io_stringio_iadd.py.exp
│   │   ├── io_stringio_truncate.py
│   │   ├── io_stringio_with.py
│   │   ├── io_write_ext.py
│   │   ├── io_write_ext.py.exp
│   │   ├── is_isnot.py
│   │   ├── is_isnot_literal.py
│   │   ├── is_isnot_literal.py.exp
│   │   ├── iter0.py
│   │   ├── iter1.py
│   │   ├── iter2.py
│   │   ├── iter_of_iter.py
│   │   ├── lambda1.py
│   │   ├── lambda_defargs.py
│   │   ├── lexer.py
│   │   ├── list1.py
│   │   ├── list_clear.py
│   │   ├── list_compare.py
│   │   ├── list_compare_instances.py
│   │   ├── list_copy.py
│   │   ├── list_count.py
│   │   ├── list_extend.py
│   │   ├── list_index.py
│   │   ├── list_insert.py
│   │   ├── list_mult.py
│   │   ├── list_pop.py
│   │   ├── list_remove.py
│   │   ├── list_reverse.py
│   │   ├── list_slice.py
│   │   ├── list_slice_3arg.py
│   │   ├── list_slice_assign.py
│   │   ├── list_slice_assign_grow.py
│   │   ├── list_sort.py
│   │   ├── list_sum.py
│   │   ├── logic_constfolding.py
│   │   ├── memoryerror.py
│   │   ├── memoryerror.py.exp
│   │   ├── memoryview1.py
│   │   ├── memoryview2.py
│   │   ├── memoryview_ext_3arg.py
│   │   ├── memoryview_ext_3arg.py.exp
│   │   ├── memoryview_ext_3arg_arr.py
│   │   ├── memoryview_ext_3arg_arr.py.exp
│   │   ├── memoryview_ext_init.py
│   │   ├── memoryview_ext_init.py.exp
│   │   ├── memoryview_ext_init_str.py
│   │   ├── memoryview_ext_init_str.py.exp
│   │   ├── memoryview_ext_str.py
│   │   ├── memoryview_ext_str.py.exp
│   │   ├── memoryview_gc.py
│   │   ├── memoryview_intbig.py
│   │   ├── memoryview_itemsize.py
│   │   ├── memoryview_slice_assign.py
│   │   ├── module1.py
│   │   ├── module2.py
│   │   ├── module2.py.exp
│   │   ├── module_docstring.py
│   │   ├── namedtuple1.py
│   │   ├── namedtuple_asdict.py
│   │   ├── namedtuple_empty.py
│   │   ├── native___init__.py
│   │   ├── object1.py
│   │   ├── object_dict.py
│   │   ├── object_new.py
│   │   ├── object_new2.py
│   │   ├── op_error.py
│   │   ├── op_error_bytearray.py
│   │   ├── op_error_intbig.py
│   │   ├── op_error_literal.py
│   │   ├── op_error_literal.py.exp
│   │   ├── op_error_memoryview.py
│   │   ├── op_precedence.py
│   │   ├── ordereddict1.py
│   │   ├── ordereddict2.py
│   │   ├── ordereddict2.py.exp
│   │   ├── ordereddict_eq.py
│   │   ├── ordereddict_eq.py.exp
│   │   ├── parser.py
│   │   ├── parser.py.exp
│   │   ├── python34.py
│   │   ├── python34.py.exp
│   │   ├── python36.py
│   │   ├── python36.py.exp
│   │   ├── return1.py
│   │   ├── scope.py
│   │   ├── scope_implicit.py
│   │   ├── self_type_check.py
│   │   ├── seq_unpack.py
│   │   ├── set_add.py
│   │   ├── set_basic.py
│   │   ├── set_binop.py
│   │   ├── set_clear.py
│   │   ├── set_comprehension.py
│   │   ├── set_containment.py
│   │   ├── set_copy.py
│   │   ├── set_difference.py
│   │   ├── set_discard.py
│   │   ├── set_intersection.py
│   │   ├── set_isdisjoint.py
│   │   ├── set_isfooset.py
│   │   ├── set_iter.py
│   │   ├── set_iter_of_iter.py
│   │   ├── set_pop.py
│   │   ├── set_remove.py
│   │   ├── set_specialmeth.py
│   │   ├── set_symmetric_difference.py
│   │   ├── set_type.py
│   │   ├── set_union.py
│   │   ├── set_unop.py
│   │   ├── set_update.py
│   │   ├── slice_attrs.py
│   │   ├── slice_indices.py
│   │   ├── slice_intbig.py
│   │   ├── slots_bool_len.py
│   │   ├── special_methods.py
│   │   ├── special_methods2.py
│   │   ├── special_methods2.py.exp
│   │   ├── string1.py
│   │   ├── string_center.py
│   │   ├── string_compare.py
│   │   ├── string_count.py
│   │   ├── string_cr_conversion.py
│   │   ├── string_crlf_conversion.py
│   │   ├── string_endswith.py
│   │   ├── string_endswith_upy.py
│   │   ├── string_endswith_upy.py.exp
│   │   ├── string_escape.py
│   │   ├── string_find.py
│   │   ├── string_format.py
│   │   ├── string_format2.py
│   │   ├── string_format_error.py
│   │   ├── string_format_modulo.py
│   │   ├── string_format_modulo_int.py
│   │   ├── string_index.py
│   │   ├── string_istest.py
│   │   ├── string_join.py
│   │   ├── string_large.py
│   │   ├── string_mult.py
│   │   ├── string_partition.py
│   │   ├── string_replace.py
│   │   ├── string_repr.py
│   │   ├── string_rfind.py
│   │   ├── string_rindex.py
│   │   ├── string_rpartition.py
│   │   ├── string_rsplit.py
│   │   ├── string_slice.py
│   │   ├── string_split.py
│   │   ├── string_splitlines.py
│   │   ├── string_startswith.py
│   │   ├── string_startswith_upy.py
│   │   ├── string_startswith_upy.py.exp
│   │   ├── string_strip.py
│   │   ├── string_upperlow.py
│   │   ├── struct1.py
│   │   ├── struct1_intbig.py
│   │   ├── struct2.py
│   │   ├── struct_micropython.py
│   │   ├── struct_micropython.py.exp
│   │   ├── struct_offset.py
│   │   ├── subclass_classmethod.py
│   │   ├── subclass_exception.py
│   │   ├── subclass_list.py
│   │   ├── subclass_native1.py
│   │   ├── subclass_native2_list.py
│   │   ├── subclass_native2_tuple.py
│   │   ├── subclass_native3.py
│   │   ├── subclass_native4.py
│   │   ├── subclass_native5.py
│   │   ├── subclass_native6.py
│   │   ├── subclass_native_buffer.py
│   │   ├── subclass_native_call.py
│   │   ├── subclass_native_call.py.exp
│   │   ├── subclass_native_cmp.py
│   │   ├── subclass_native_containment.py
│   │   ├── subclass_native_init.py
│   │   ├── subclass_native_iter.py
│   │   ├── subclass_native_specmeth.py
│   │   ├── subclass_tuple.py
│   │   ├── subclass_tuple2.py
│   │   ├── syntaxerror.py
│   │   ├── syntaxerror_return.py
│   │   ├── sys1.py
│   │   ├── sys_exit.py
│   │   ├── sys_getsizeof.py
│   │   ├── sys_intern.py
│   │   ├── true_value.py
│   │   ├── try1.py
│   │   ├── try2.py
│   │   ├── try3.py
│   │   ├── try4.py
│   │   ├── try_as_var.py
│   │   ├── try_continue.py
│   │   ├── try_else.py
│   │   ├── try_else_finally.py
│   │   ├── try_error.py
│   │   ├── try_except_break.py
│   │   ├── try_except_break.py.exp
│   │   ├── try_finally1.py
│   │   ├── try_finally2.py
│   │   ├── try_finally_break.py
│   │   ├── try_finally_break2.py
│   │   ├── try_finally_continue.py
│   │   ├── try_finally_continue.py.exp
│   │   ├── try_finally_loops.py
│   │   ├── try_finally_return.py
│   │   ├── try_finally_return2.py
│   │   ├── try_finally_return3.py
│   │   ├── try_finally_return4.py
│   │   ├── try_finally_return5.py
│   │   ├── try_reraise.py
│   │   ├── try_reraise2.py
│   │   ├── try_return.py
│   │   ├── tuple1.py
│   │   ├── tuple_compare.py
│   │   ├── tuple_count.py
│   │   ├── tuple_index.py
│   │   ├── tuple_mult.py
│   │   ├── tuple_slice.py
│   │   ├── types1.py
│   │   ├── types2.py
│   │   ├── unary_op.py
│   │   ├── unboundlocal.py
│   │   ├── unpack1.py
│   │   ├── while1.py
│   │   ├── while_cond.py
│   │   ├── while_nest_exc.py
│   │   ├── with1.py
│   │   ├── with_break.py
│   │   ├── with_continue.py
│   │   ├── with_raise.py
│   │   └── with_return.py
│   ├── bytecode/
│   │   ├── optimizations.py
│   │   └── optimizations.py.exp
│   ├── cmdline/
│   │   ├── cmd_optimise.py
│   │   ├── cmd_optimise.py.exp
│   │   ├── cmd_parsetree.py
│   │   ├── cmd_parsetree.py.exp
│   │   ├── cmd_showbc.py
│   │   ├── cmd_showbc.py.exp
│   │   ├── cmd_verbose.py
│   │   ├── cmd_verbose.py.exp
│   │   ├── repl_autocomplete.py
│   │   ├── repl_autocomplete.py.exp
│   │   ├── repl_basic.py
│   │   ├── repl_basic.py.exp
│   │   ├── repl_cont.py
│   │   ├── repl_cont.py.exp
│   │   ├── repl_emacs_keys.py
│   │   ├── repl_emacs_keys.py.exp
│   │   ├── repl_inspect.py
│   │   ├── repl_inspect.py.exp
│   │   ├── repl_words_move.py
│   │   └── repl_words_move.py.exp
│   ├── cpydiff/
│   │   ├── builtin_next_arg2.py
│   │   ├── core_class_delnotimpl.py
│   │   ├── core_class_mro.py
│   │   ├── core_class_supermultiple.py
│   │   ├── core_class_superproperty.py
│   │   ├── core_function_argcount.py
│   │   ├── core_function_moduleattr.py
│   │   ├── core_function_userattr.py
│   │   ├── core_generator_noexit.py
│   │   ├── core_import_path.py
│   │   ├── core_import_prereg.py
│   │   ├── core_import_split_ns_pkgs.py
│   │   ├── core_locals.py
│   │   ├── core_locals_eval.py
│   │   ├── module_array_comparison.py
│   │   ├── module_array_constructor.py
│   │   ├── modules/
│   │   │   ├── __init__.py
│   │   │   ├── foo.py
│   │   │   ├── modall.py
│   │   │   └── subpkg/
│   │   │       └── foo.py
│   │   ├── modules2/
│   │   │   └── subpkg/
│   │   │       └── bar.py
│   │   ├── modules_array_containment.py
│   │   ├── modules_array_deletion.py
│   │   ├── modules_array_subscrstep.py
│   │   ├── modules_collections_deque.py
│   │   ├── modules_json_nonserializable.py
│   │   ├── modules_struct_fewargs.py
│   │   ├── modules_struct_manyargs.py
│   │   ├── modules_sys_stdassign.py
│   │   ├── syntax_assign_expr.py
│   │   ├── syntax_spaces.py
│   │   ├── syntax_unicode_nameesc.py
│   │   ├── types_bytearray_sliceassign.py
│   │   ├── types_bytes_format.py
│   │   ├── types_bytes_keywords.py
│   │   ├── types_bytes_subscrstep.py
│   │   ├── types_dict_keys_set.py
│   │   ├── types_exception_chaining.py
│   │   ├── types_exception_instancevar.py
│   │   ├── types_exception_loops.py
│   │   ├── types_float_rounding.py
│   │   ├── types_int_subclassconv.py
│   │   ├── types_list_delete_subscrstep.py
│   │   ├── types_list_store_noniter.py
│   │   ├── types_list_store_subscrstep.py
│   │   ├── types_str_endswith.py
│   │   ├── types_str_formatsubscr.py
│   │   ├── types_str_keywords.py
│   │   ├── types_str_ljust_rjust.py
│   │   ├── types_str_rsplitnone.py
│   │   ├── types_str_subclassequality.py
│   │   ├── types_str_subscrstep.py
│   │   └── types_tuple_subscrstep.py
│   ├── esp32/
│   │   ├── check_err_str.py
│   │   ├── check_err_str.py.exp
│   │   ├── esp32_idf_heap_info.py
│   │   ├── esp32_idf_heap_info.py.exp
│   │   ├── esp32_nvs.py
│   │   ├── esp32_nvs.py.exp
│   │   ├── partition_ota.py
│   │   ├── partition_ota.py.exp
│   │   └── resolve_on_connect.py
│   ├── extmod/
│   │   ├── btree1.py
│   │   ├── btree1.py.exp
│   │   ├── btree_error.py
│   │   ├── btree_error.py.exp
│   │   ├── btree_gc.py
│   │   ├── btree_gc.py.exp
│   │   ├── framebuf1.py
│   │   ├── framebuf1.py.exp
│   │   ├── framebuf16.py
│   │   ├── framebuf16.py.exp
│   │   ├── framebuf2.py
│   │   ├── framebuf2.py.exp
│   │   ├── framebuf4.py
│   │   ├── framebuf4.py.exp
│   │   ├── framebuf8.py
│   │   ├── framebuf8.py.exp
│   │   ├── framebuf_subclass.py
│   │   ├── framebuf_subclass.py.exp
│   │   ├── machine1.py
│   │   ├── machine1.py.exp
│   │   ├── machine_pinbase.py
│   │   ├── machine_pinbase.py.exp
│   │   ├── machine_pulse.py
│   │   ├── machine_pulse.py.exp
│   │   ├── machine_signal.py
│   │   ├── machine_signal.py.exp
│   │   ├── machine_timer.py
│   │   ├── machine_timer.py.exp
│   │   ├── ticks_diff.py
│   │   ├── ticks_diff.py.exp
│   │   ├── time_ms_us.py
│   │   ├── time_ms_us.py.exp
│   │   ├── uasyncio_await_return.py
│   │   ├── uasyncio_await_return.py.exp
│   │   ├── uasyncio_basic.py
│   │   ├── uasyncio_basic.py.exp
│   │   ├── uasyncio_basic2.py
│   │   ├── uasyncio_basic2.py.exp
│   │   ├── uasyncio_cancel_fair.py
│   │   ├── uasyncio_cancel_fair.py.exp
│   │   ├── uasyncio_cancel_fair2.py
│   │   ├── uasyncio_cancel_fair2.py.exp
│   │   ├── uasyncio_cancel_self.py
│   │   ├── uasyncio_cancel_self.py.exp
│   │   ├── uasyncio_cancel_task.py
│   │   ├── uasyncio_cancel_task.py.exp
│   │   ├── uasyncio_cancel_wait_on_finished.py
│   │   ├── uasyncio_cancel_wait_on_finished.py.exp
│   │   ├── uasyncio_current_task.py
│   │   ├── uasyncio_current_task.py.exp
│   │   ├── uasyncio_event.py
│   │   ├── uasyncio_event.py.exp
│   │   ├── uasyncio_event_fair.py
│   │   ├── uasyncio_event_fair.py.exp
│   │   ├── uasyncio_exception.py
│   │   ├── uasyncio_exception.py.exp
│   │   ├── uasyncio_fair.py
│   │   ├── uasyncio_fair.py.exp
│   │   ├── uasyncio_gather.py
│   │   ├── uasyncio_gather.py.exp
│   │   ├── uasyncio_get_event_loop.py
│   │   ├── uasyncio_heaplock.py
│   │   ├── uasyncio_heaplock.py.exp
│   │   ├── uasyncio_lock.py
│   │   ├── uasyncio_lock.py.exp
│   │   ├── uasyncio_lock_cancel.py
│   │   ├── uasyncio_lock_cancel.py.exp
│   │   ├── uasyncio_loop_stop.py
│   │   ├── uasyncio_loop_stop.py.exp
│   │   ├── uasyncio_micropython.py
│   │   ├── uasyncio_micropython.py.exp
│   │   ├── uasyncio_new_event_loop.py
│   │   ├── uasyncio_new_event_loop.py.exp
│   │   ├── uasyncio_set_exception_handler.py
│   │   ├── uasyncio_set_exception_handler.py.exp
│   │   ├── uasyncio_task_done.py
│   │   ├── uasyncio_task_done.py.exp
│   │   ├── uasyncio_threadsafeflag.py
│   │   ├── uasyncio_threadsafeflag.py.exp
│   │   ├── uasyncio_wait_for.py
│   │   ├── uasyncio_wait_for.py.exp
│   │   ├── uasyncio_wait_for_fwd.py
│   │   ├── uasyncio_wait_for_fwd.py.exp
│   │   ├── uasyncio_wait_task.py
│   │   ├── uasyncio_wait_task.py.exp
│   │   ├── ubinascii_a2b_base64.py
│   │   ├── ubinascii_b2a_base64.py
│   │   ├── ubinascii_crc32.py
│   │   ├── ubinascii_hexlify.py
│   │   ├── ubinascii_micropython.py
│   │   ├── ubinascii_micropython.py.exp
│   │   ├── ubinascii_unhexlify.py
│   │   ├── ucryptolib_aes128_cbc.py
│   │   ├── ucryptolib_aes128_cbc.py.exp
│   │   ├── ucryptolib_aes128_ctr.py
│   │   ├── ucryptolib_aes128_ctr.py.exp
│   │   ├── ucryptolib_aes128_ecb.py
│   │   ├── ucryptolib_aes128_ecb.py.exp
│   │   ├── ucryptolib_aes128_ecb_enc.py
│   │   ├── ucryptolib_aes128_ecb_enc.py.exp
│   │   ├── ucryptolib_aes128_ecb_inpl.py
│   │   ├── ucryptolib_aes128_ecb_inpl.py.exp
│   │   ├── ucryptolib_aes128_ecb_into.py
│   │   ├── ucryptolib_aes128_ecb_into.py.exp
│   │   ├── ucryptolib_aes256_cbc.py
│   │   ├── ucryptolib_aes256_cbc.py.exp
│   │   ├── ucryptolib_aes256_ecb.py
│   │   ├── ucryptolib_aes256_ecb.py.exp
│   │   ├── uctypes_32bit_intbig.py
│   │   ├── uctypes_32bit_intbig.py.exp
│   │   ├── uctypes_array_assign_le.py
│   │   ├── uctypes_array_assign_le.py.exp
│   │   ├── uctypes_array_assign_native_le.py
│   │   ├── uctypes_array_assign_native_le.py.exp
│   │   ├── uctypes_array_assign_native_le_intbig.py
│   │   ├── uctypes_array_assign_native_le_intbig.py.exp
│   │   ├── uctypes_array_load_store.py
│   │   ├── uctypes_array_load_store.py.exp
│   │   ├── uctypes_bytearray.py
│   │   ├── uctypes_bytearray.py.exp
│   │   ├── uctypes_byteat.py
│   │   ├── uctypes_byteat.py.exp
│   │   ├── uctypes_calc_offsets.py
│   │   ├── uctypes_calc_offsets.py.exp
│   │   ├── uctypes_error.py
│   │   ├── uctypes_error.py.exp
│   │   ├── uctypes_le.py
│   │   ├── uctypes_le.py.exp
│   │   ├── uctypes_le_addressof_field.py
│   │   ├── uctypes_le_addressof_field.py.exp
│   │   ├── uctypes_le_float.py
│   │   ├── uctypes_le_float.py.exp
│   │   ├── uctypes_native_float.py
│   │   ├── uctypes_native_float.py.exp
│   │   ├── uctypes_native_le.py
│   │   ├── uctypes_native_le.py.exp
│   │   ├── uctypes_print.py
│   │   ├── uctypes_print.py.exp
│   │   ├── uctypes_ptr_le.py
│   │   ├── uctypes_ptr_le.py.exp
│   │   ├── uctypes_ptr_native_le.py
│   │   ├── uctypes_ptr_native_le.py.exp
│   │   ├── uctypes_sizeof.py
│   │   ├── uctypes_sizeof.py.exp
│   │   ├── uctypes_sizeof_float.py
│   │   ├── uctypes_sizeof_float.py.exp
│   │   ├── uctypes_sizeof_layout.py
│   │   ├── uctypes_sizeof_layout.py.exp
│   │   ├── uctypes_sizeof_native.py
│   │   ├── uctypes_sizeof_native.py.exp
│   │   ├── uctypes_sizeof_od.py
│   │   ├── uctypes_sizeof_od.py.exp
│   │   ├── uctypes_union.py
│   │   ├── uctypes_union.py.exp
│   │   ├── uhashlib_md5.py
│   │   ├── uhashlib_sha1.py
│   │   ├── uhashlib_sha256.py
│   │   ├── uheapq1.py
│   │   ├── ujson_dump.py
│   │   ├── ujson_dump_iobase.py
│   │   ├── ujson_dumps.py
│   │   ├── ujson_dumps_extra.py
│   │   ├── ujson_dumps_extra.py.exp
│   │   ├── ujson_dumps_float.py
│   │   ├── ujson_dumps_ordereddict.py
│   │   ├── ujson_load.py
│   │   ├── ujson_loads.py
│   │   ├── ujson_loads_bytes.py
│   │   ├── ujson_loads_bytes.py.exp
│   │   ├── ujson_loads_float.py
│   │   ├── urandom_basic.py
│   │   ├── urandom_extra.py
│   │   ├── urandom_extra_float.py
│   │   ├── ure1.py
│   │   ├── ure_debug.py
│   │   ├── ure_debug.py.exp
│   │   ├── ure_error.py
│   │   ├── ure_group.py
│   │   ├── ure_groups.py
│   │   ├── ure_limit.py
│   │   ├── ure_limit.py.exp
│   │   ├── ure_namedclass.py
│   │   ├── ure_span.py
│   │   ├── ure_split.py
│   │   ├── ure_split_empty.py
│   │   ├── ure_split_empty.py.exp
│   │   ├── ure_split_notimpl.py
│   │   ├── ure_split_notimpl.py.exp
│   │   ├── ure_stack_overflow.py
│   │   ├── ure_stack_overflow.py.exp
│   │   ├── ure_sub.py
│   │   ├── ure_sub_unmatched.py
│   │   ├── ure_sub_unmatched.py.exp
│   │   ├── ure_unsupported.py
│   │   ├── ure_unsupported.py.exp
│   │   ├── uselect_poll_basic.py
│   │   ├── uselect_poll_udp.py
│   │   ├── uselect_poll_unreg.py
│   │   ├── uselect_poll_unreg.py.exp
│   │   ├── usocket_tcp_basic.py
│   │   ├── usocket_udp_nonblock.py
│   │   ├── ussl_basic.py
│   │   ├── ussl_basic.py.exp
│   │   ├── ussl_keycert.py
│   │   ├── ussl_keycert.py.exp
│   │   ├── utime_res.py
│   │   ├── utime_res.py.exp
│   │   ├── utimeq1.py
│   │   ├── utimeq1.py.exp
│   │   ├── utimeq_handle.py
│   │   ├── utimeq_handle.py.exp
│   │   ├── utimeq_remove.py
│   │   ├── utimeq_remove.py.exp
│   │   ├── utimeq_stable.py
│   │   ├── utimeq_stable.py.exp
│   │   ├── uzlib_decompio.py
│   │   ├── uzlib_decompio.py.exp
│   │   ├── uzlib_decompio_dictbuf.py
│   │   ├── uzlib_decompio_dictbuf.py.exp
│   │   ├── uzlib_decompio_gz.py
│   │   ├── uzlib_decompio_gz.py.exp
│   │   ├── uzlib_decompio_init.py
│   │   ├── uzlib_decompio_init.py.exp
│   │   ├── uzlib_decompress.py
│   │   ├── vfs_basic.py
│   │   ├── vfs_basic.py.exp
│   │   ├── vfs_blockdev.py
│   │   ├── vfs_blockdev.py.exp
│   │   ├── vfs_fat_fileio1.py
│   │   ├── vfs_fat_fileio1.py.exp
│   │   ├── vfs_fat_fileio2.py
│   │   ├── vfs_fat_fileio2.py.exp
│   │   ├── vfs_fat_finaliser.py
│   │   ├── vfs_fat_finaliser.py.exp
│   │   ├── vfs_fat_more.py
│   │   ├── vfs_fat_more.py.exp
│   │   ├── vfs_fat_mtime.py
│   │   ├── vfs_fat_mtime.py.exp
│   │   ├── vfs_fat_oldproto.py
│   │   ├── vfs_fat_oldproto.py.exp
│   │   ├── vfs_fat_ramdisk.py
│   │   ├── vfs_fat_ramdisk.py.exp
│   │   ├── vfs_fat_ramdisklarge.py
│   │   ├── vfs_fat_ramdisklarge.py.exp
│   │   ├── vfs_lfs.py
│   │   ├── vfs_lfs.py.exp
│   │   ├── vfs_lfs_corrupt.py
│   │   ├── vfs_lfs_corrupt.py.exp
│   │   ├── vfs_lfs_error.py
│   │   ├── vfs_lfs_error.py.exp
│   │   ├── vfs_lfs_file.py
│   │   ├── vfs_lfs_file.py.exp
│   │   ├── vfs_lfs_mount.py
│   │   ├── vfs_lfs_mount.py.exp
│   │   ├── vfs_lfs_mtime.py
│   │   ├── vfs_lfs_mtime.py.exp
│   │   ├── vfs_lfs_superblock.py
│   │   ├── vfs_lfs_superblock.py.exp
│   │   ├── vfs_posix.py
│   │   ├── vfs_posix.py.exp
│   │   ├── vfs_userfs.py
│   │   ├── vfs_userfs.py.exp
│   │   ├── websocket_basic.py
│   │   └── websocket_basic.py.exp
│   ├── feature_check/
│   │   ├── README
│   │   ├── async_check.py
│   │   ├── async_check.py.exp
│   │   ├── bytearray.py
│   │   ├── bytearray.py.exp
│   │   ├── byteorder.py
│   │   ├── byteorder.py.exp
│   │   ├── complex.py
│   │   ├── complex.py.exp
│   │   ├── const.py
│   │   ├── const.py.exp
│   │   ├── coverage.py
│   │   ├── coverage.py.exp
│   │   ├── float.py
│   │   ├── float.py.exp
│   │   ├── int_big.py
│   │   ├── int_big.py.exp
│   │   ├── native_check.py
│   │   ├── native_check.py.exp
│   │   ├── repl_emacs_check.py
│   │   ├── repl_emacs_check.py.exp
│   │   ├── repl_words_move_check.py
│   │   ├── repl_words_move_check.py.exp
│   │   ├── reverse_ops.py
│   │   ├── reverse_ops.py.exp
│   │   ├── set_check.py
│   │   ├── set_check.py.exp
│   │   ├── slice.py
│   │   ├── slice.py.exp
│   │   ├── uio_module.py
│   │   └── uio_module.py.exp
│   ├── float/
│   │   ├── array_construct.py
│   │   ├── builtin_float_abs.py
│   │   ├── builtin_float_hash.py
│   │   ├── builtin_float_minmax.py
│   │   ├── builtin_float_pow.py
│   │   ├── builtin_float_round.py
│   │   ├── builtin_float_round_intbig.py
│   │   ├── bytearray_construct_endian.py
│   │   ├── bytes_construct_endian.py
│   │   ├── cmath_fun.py
│   │   ├── cmath_fun_special.py
│   │   ├── complex1.py
│   │   ├── complex1_intbig.py
│   │   ├── complex_attr.py
│   │   ├── complex_reverse_op.py
│   │   ├── complex_special_methods.py
│   │   ├── float1.py
│   │   ├── float2int_doubleprec_intbig.py
│   │   ├── float2int_fp30_intbig.py
│   │   ├── float2int_intbig.py
│   │   ├── float_array.py
│   │   ├── float_attr.py
│   │   ├── float_compare.py
│   │   ├── float_divmod.py
│   │   ├── float_divmod_relaxed.py
│   │   ├── float_format.py
│   │   ├── float_parse.py
│   │   ├── float_parse_doubleprec.py
│   │   ├── float_struct.py
│   │   ├── inf_nan_arith.py
│   │   ├── int_big_float.py
│   │   ├── int_divzero.py
│   │   ├── int_power.py
│   │   ├── lexer.py
│   │   ├── list_index.py
│   │   ├── math_domain.py
│   │   ├── math_domain_special.py
│   │   ├── math_factorial_intbig.py
│   │   ├── math_fun.py
│   │   ├── math_fun_bool.py
│   │   ├── math_fun_int.py
│   │   ├── math_fun_intbig.py
│   │   ├── math_fun_special.py
│   │   ├── math_isclose.py
│   │   ├── math_isclose.py.exp
│   │   ├── python36.py
│   │   ├── python36.py.exp
│   │   ├── string_format.py
│   │   ├── string_format2.py
│   │   ├── string_format_fp30.py
│   │   ├── string_format_modulo.py
│   │   ├── string_format_modulo2.py
│   │   ├── string_format_modulo2_intbig.py
│   │   ├── string_format_modulo3.py
│   │   ├── string_format_modulo3.py.exp
│   │   ├── sys_getsizeof_float.py
│   │   ├── true_value.py
│   │   └── types.py
│   ├── import/
│   │   ├── builtin_import.py
│   │   ├── gen_context.py
│   │   ├── gen_context2.py
│   │   ├── import1a.py
│   │   ├── import1b.py
│   │   ├── import2a.py
│   │   ├── import3a.py
│   │   ├── import4.py
│   │   ├── import_file.py
│   │   ├── import_hook.py
│   │   ├── import_hook.py.exp
│   │   ├── import_long_dyn.py
│   │   ├── import_long_dyn2.py
│   │   ├── import_m.py
│   │   ├── import_m_option.py
│   │   ├── import_m_option.py.exp
│   │   ├── import_mod_populate.py
│   │   ├── import_mod_populate.py.exp
│   │   ├── import_override.py
│   │   ├── import_override.py.exp
│   │   ├── import_pkg1.py
│   │   ├── import_pkg2.py
│   │   ├── import_pkg3.py
│   │   ├── import_pkg4.py
│   │   ├── import_pkg5.py
│   │   ├── import_pkg6.py
│   │   ├── import_pkg7.py
│   │   ├── import_pkg7.py.exp
│   │   ├── import_pkg8.py
│   │   ├── import_star_all.py
│   │   ├── import_star_error.py
│   │   ├── module_constructor.py
│   │   ├── module_getattr.py
│   │   ├── module_getattr.py.exp
│   │   ├── pkg/
│   │   │   ├── __init__.py
│   │   │   └── mod.py
│   │   ├── pkg2/
│   │   │   ├── __init__.py
│   │   │   ├── mod1.py
│   │   │   └── mod2.py
│   │   ├── pkg3/
│   │   │   ├── __init__.py
│   │   │   ├── mod1.py
│   │   │   ├── mod2.py
│   │   │   └── subpkg1/
│   │   │       ├── __init__.py
│   │   │       └── mod1.py
│   │   ├── pkg6/
│   │   │   ├── __init__.py
│   │   │   └── x/
│   │   │       ├── __init__.py
│   │   │       └── y.py
│   │   ├── pkg7/
│   │   │   ├── __init__.py
│   │   │   ├── mod1.py
│   │   │   ├── mod2.py
│   │   │   └── subpkg1/
│   │   │       ├── __init__.py
│   │   │       └── subpkg2/
│   │   │           ├── __init__.py
│   │   │           └── mod3.py
│   │   ├── pkg8/
│   │   │   └── mod.py
│   │   ├── pkg_m/
│   │   │   ├── __init__.py
│   │   │   └── pkg2/
│   │   │       ├── __init__.py
│   │   │       ├── __main__.py
│   │   │       └── mod.py
│   │   ├── rel_import_inv.py
│   │   └── try_module.py
│   ├── inlineasm/
│   │   ├── asmargs.py
│   │   ├── asmargs.py.exp
│   │   ├── asmbcc.py
│   │   ├── asmbcc.py.exp
│   │   ├── asmbitops.py
│   │   ├── asmbitops.py.exp
│   │   ├── asmblbx.py
│   │   ├── asmblbx.py.exp
│   │   ├── asmconst.py
│   │   ├── asmconst.py.exp
│   │   ├── asmdiv.py
│   │   ├── asmdiv.py.exp
│   │   ├── asmfpaddsub.py
│   │   ├── asmfpaddsub.py.exp
│   │   ├── asmfpcmp.py
│   │   ├── asmfpcmp.py.exp
│   │   ├── asmfpldrstr.py
│   │   ├── asmfpldrstr.py.exp
│   │   ├── asmfpmuldiv.py
│   │   ├── asmfpmuldiv.py.exp
│   │   ├── asmfpsqrt.py
│   │   ├── asmfpsqrt.py.exp
│   │   ├── asmit.py
│   │   ├── asmit.py.exp
│   │   ├── asmpushpop.py
│   │   ├── asmpushpop.py.exp
│   │   ├── asmrettype.py
│   │   ├── asmrettype.py.exp
│   │   ├── asmshift.py
│   │   ├── asmshift.py.exp
│   │   ├── asmspecialregs.py
│   │   ├── asmspecialregs.py.exp
│   │   ├── asmsum.py
│   │   └── asmsum.py.exp
│   ├── internal_bench/
│   │   ├── arrayop-1-list_inplace.py
│   │   ├── arrayop-2-list_map.py
│   │   ├── arrayop-3-bytearray_inplace.py
│   │   ├── arrayop-4-bytearray_map.py
│   │   ├── bench.py
│   │   ├── bytealloc-1-bytes_n.py
│   │   ├── bytealloc-2-repeat.py
│   │   ├── bytebuf-1-inplace.py
│   │   ├── bytebuf-2-join_map_bytes.py
│   │   ├── bytebuf-3-bytarray_map.py
│   │   ├── from_iter-1-list_bound.py
│   │   ├── from_iter-2-list_unbound.py
│   │   ├── from_iter-3-tuple_bound.py
│   │   ├── from_iter-4-tuple_unbound.py
│   │   ├── from_iter-5-bytes_bound.py
│   │   ├── from_iter-6-bytes_unbound.py
│   │   ├── from_iter-7-bytearray_bound.py
│   │   ├── from_iter-8-bytearray_unbound.py
│   │   ├── func_args-1.1-pos_1.py
│   │   ├── func_args-1.2-pos_3.py
│   │   ├── func_args-2-pos_default_2_of_3.py
│   │   ├── func_args-3.1-kw_1.py
│   │   ├── func_args-3.2-kw_3.py
│   │   ├── func_builtin-1-enum_pos.py
│   │   ├── func_builtin-2-enum_kw.py
│   │   ├── funcall-1-inline.py
│   │   ├── funcall-2-funcall.py
│   │   ├── funcall-3-funcall-local.py
│   │   ├── loop_count-1-range.py
│   │   ├── loop_count-2-range_iter.py
│   │   ├── loop_count-3-while_up.py
│   │   ├── loop_count-4-while_down_gt.py
│   │   ├── loop_count-5-while_down_ne.py
│   │   ├── loop_count-5.1-while_down_ne_localvar.py
│   │   ├── var-1-constant.py
│   │   ├── var-2-global.py
│   │   ├── var-3-local.py
│   │   ├── var-4-arg.py
│   │   ├── var-5-class-attr.py
│   │   ├── var-6-instance-attr.py
│   │   ├── var-6.1-instance-attr-5.py
│   │   ├── var-7-instance-meth.py
│   │   ├── var-8-namedtuple-1st.py
│   │   └── var-8.1-namedtuple-5th.py
│   ├── io/
│   │   ├── argv.py
│   │   ├── builtin_print_file.py
│   │   ├── data/
│   │   │   ├── bigfile1
│   │   │   ├── file1
│   │   │   ├── file1_utf8
│   │   │   └── file2
│   │   ├── file1.py
│   │   ├── file_close.py
│   │   ├── file_iter.py
│   │   ├── file_long_read.py
│   │   ├── file_long_read2.py
│   │   ├── file_long_read3.py
│   │   ├── file_readinto.py
│   │   ├── file_readinto_len.py
│   │   ├── file_readinto_len.py.exp
│   │   ├── file_readline.py
│   │   ├── file_readline_unicode.py
│   │   ├── file_seek.py
│   │   ├── file_stdio.py
│   │   ├── file_with.py
│   │   ├── open_append.py
│   │   ├── open_plus.py
│   │   ├── open_textio.py
│   │   ├── resource_stream.py
│   │   ├── resource_stream.py.exp
│   │   └── sys_stdio_override.py
│   ├── jni/
│   │   ├── README
│   │   ├── list.py
│   │   ├── list.py.exp
│   │   ├── object.py
│   │   ├── object.py.exp
│   │   ├── system_out.py
│   │   └── system_out.py.exp
│   ├── micropython/
│   │   ├── const.py
│   │   ├── const.py.exp
│   │   ├── const2.py
│   │   ├── const2.py.exp
│   │   ├── const_error.py
│   │   ├── const_error.py.exp
│   │   ├── const_intbig.py
│   │   ├── const_intbig.py.exp
│   │   ├── decorator.py
│   │   ├── decorator.py.exp
│   │   ├── decorator_error.py
│   │   ├── decorator_error.py.exp
│   │   ├── emg_exc.py
│   │   ├── emg_exc.py.exp
│   │   ├── extreme_exc.py
│   │   ├── extreme_exc.py.exp
│   │   ├── heap_lock.py
│   │   ├── heap_lock.py.exp
│   │   ├── heap_locked.py
│   │   ├── heap_locked.py.exp
│   │   ├── heapalloc.py
│   │   ├── heapalloc.py.exp
│   │   ├── heapalloc_bytesio.py
│   │   ├── heapalloc_bytesio.py.exp
│   │   ├── heapalloc_bytesio2.py
│   │   ├── heapalloc_bytesio2.py.exp
│   │   ├── heapalloc_exc_compressed.py
│   │   ├── heapalloc_exc_compressed.py.exp
│   │   ├── heapalloc_exc_compressed_emg_exc.py
│   │   ├── heapalloc_exc_compressed_emg_exc.py.exp
│   │   ├── heapalloc_exc_raise.py
│   │   ├── heapalloc_exc_raise.py.exp
│   │   ├── heapalloc_fail_bytearray.py
│   │   ├── heapalloc_fail_bytearray.py.exp
│   │   ├── heapalloc_fail_bytearray2.py
│   │   ├── heapalloc_fail_bytearray2.py.exp
│   │   ├── heapalloc_fail_dict.py
│   │   ├── heapalloc_fail_dict.py.exp
│   │   ├── heapalloc_fail_list.py
│   │   ├── heapalloc_fail_list.py.exp
│   │   ├── heapalloc_fail_memoryview.py
│   │   ├── heapalloc_fail_memoryview.py.exp
│   │   ├── heapalloc_fail_set.py
│   │   ├── heapalloc_fail_set.py.exp
│   │   ├── heapalloc_fail_tuple.py
│   │   ├── heapalloc_fail_tuple.py.exp
│   │   ├── heapalloc_inst_call.py
│   │   ├── heapalloc_inst_call.py.exp
│   │   ├── heapalloc_int_from_bytes.py
│   │   ├── heapalloc_int_from_bytes.py.exp
│   │   ├── heapalloc_iter.py
│   │   ├── heapalloc_str.py
│   │   ├── heapalloc_str.py.exp
│   │   ├── heapalloc_str_format_vs_modulo.py
│   │   ├── heapalloc_str_format_vs_modulo.py.exp
│   │   ├── heapalloc_str_modulo.py
│   │   ├── heapalloc_str_modulo.py.exp
│   │   ├── heapalloc_str_upperlow.py
│   │   ├── heapalloc_str_upperlow.py.exp
│   │   ├── heapalloc_super.py
│   │   ├── heapalloc_super.py.exp
│   │   ├── heapalloc_traceback.py
│   │   ├── heapalloc_traceback.py.exp
│   │   ├── heapalloc_yield_from.py
│   │   ├── heapalloc_yield_from.py.exp
│   │   ├── icast.py
│   │   ├── icast.py.exp
│   │   ├── import_mpy_invalid.py
│   │   ├── import_mpy_invalid.py.exp
│   │   ├── import_mpy_native_gc.py
│   │   ├── import_mpy_native_gc.py.exp
│   │   ├── import_mpy_native_x64.py
│   │   ├── import_mpy_native_x64.py.exp
│   │   ├── kbd_intr.py
│   │   ├── kbd_intr.py.exp
│   │   ├── meminfo.py
│   │   ├── meminfo.py.exp
│   │   ├── memstats.py
│   │   ├── memstats.py.exp
│   │   ├── native_closure.py
│   │   ├── native_closure.py.exp
│   │   ├── native_const.py
│   │   ├── native_const.py.exp
│   │   ├── native_const_intbig.py
│   │   ├── native_const_intbig.py.exp
│   │   ├── native_for.py
│   │   ├── native_for.py.exp
│   │   ├── native_gen.py
│   │   ├── native_gen.py.exp
│   │   ├── native_misc.py
│   │   ├── native_misc.py.exp
│   │   ├── native_try.py
│   │   ├── native_try.py.exp
│   │   ├── native_try_deep.py
│   │   ├── native_try_deep.py.exp
│   │   ├── native_with.py
│   │   ├── native_with.py.exp
│   │   ├── opt_level.py
│   │   ├── opt_level.py.exp
│   │   ├── opt_level_lineno.py
│   │   ├── opt_level_lineno.py.exp
│   │   ├── schedule.py
│   │   ├── schedule.py.exp
│   │   ├── stack_use.py
│   │   ├── stack_use.py.exp
│   │   ├── viper_addr.py
│   │   ├── viper_addr.py.exp
│   │   ├── viper_args.py
│   │   ├── viper_args.py.exp
│   │   ├── viper_binop_arith.py
│   │   ├── viper_binop_arith.py.exp
│   │   ├── viper_binop_arith_uint.py
│   │   ├── viper_binop_arith_uint.py.exp
│   │   ├── viper_binop_bitwise_uint.py
│   │   ├── viper_binop_bitwise_uint.py.exp
│   │   ├── viper_binop_comp.py
│   │   ├── viper_binop_comp.py.exp
│   │   ├── viper_binop_comp_imm.py
│   │   ├── viper_binop_comp_imm.py.exp
│   │   ├── viper_binop_comp_uint.py
│   │   ├── viper_binop_comp_uint.py.exp
│   │   ├── viper_binop_divmod.py
│   │   ├── viper_binop_divmod.py.exp
│   │   ├── viper_binop_multi_comp.py
│   │   ├── viper_binop_multi_comp.py.exp
│   │   ├── viper_cond.py
│   │   ├── viper_cond.py.exp
│   │   ├── viper_const.py
│   │   ├── viper_const.py.exp
│   │   ├── viper_const_intbig.py
│   │   ├── viper_const_intbig.py.exp
│   │   ├── viper_error.py
│   │   ├── viper_error.py.exp
│   │   ├── viper_globals.py
│   │   ├── viper_globals.py.exp
│   │   ├── viper_import.py
│   │   ├── viper_import.py.exp
│   │   ├── viper_misc.py
│   │   ├── viper_misc.py.exp
│   │   ├── viper_misc2.py
│   │   ├── viper_misc2.py.exp
│   │   ├── viper_misc_intbig.py
│   │   ├── viper_misc_intbig.py.exp
│   │   ├── viper_ptr16_load.py
│   │   ├── viper_ptr16_load.py.exp
│   │   ├── viper_ptr16_store.py
│   │   ├── viper_ptr16_store.py.exp
│   │   ├── viper_ptr32_load.py
│   │   ├── viper_ptr32_load.py.exp
│   │   ├── viper_ptr32_store.py
│   │   ├── viper_ptr32_store.py.exp
│   │   ├── viper_ptr8_load.py
│   │   ├── viper_ptr8_load.py.exp
│   │   ├── viper_ptr8_store.py
│   │   ├── viper_ptr8_store.py.exp
│   │   ├── viper_subscr.py
│   │   ├── viper_subscr.py.exp
│   │   ├── viper_try.py
│   │   ├── viper_try.py.exp
│   │   ├── viper_types.py
│   │   ├── viper_types.py.exp
│   │   ├── viper_with.py
│   │   ├── viper_with.py.exp
│   │   ├── writable_ns.py
│   │   └── writable_ns.py.exp
│   ├── misc/
│   │   ├── features.py
│   │   ├── non_compliant.py
│   │   ├── non_compliant.py.exp
│   │   ├── non_compliant_lexer.py
│   │   ├── non_compliant_lexer.py.exp
│   │   ├── print_exception.py
│   │   ├── rge_sm.py
│   │   ├── sys_exc_info.py
│   │   ├── sys_settrace_features.py
│   │   ├── sys_settrace_generator.py
│   │   ├── sys_settrace_generator.py.exp
│   │   ├── sys_settrace_loop.py
│   │   ├── sys_settrace_loop.py.exp
│   │   └── sys_settrace_subdir/
│   │       ├── sys_settrace_generic.py
│   │       └── sys_settrace_importme.py
│   ├── multi_bluetooth/
│   │   ├── ble_characteristic.py
│   │   ├── ble_characteristic.py.exp
│   │   ├── ble_gap_advertise.py
│   │   ├── ble_gap_advertise.py.exp
│   │   ├── ble_gap_connect.py
│   │   ├── ble_gap_connect.py.exp
│   │   ├── ble_gap_device_name.py
│   │   ├── ble_gap_device_name.py.exp
│   │   ├── ble_gap_pair.py
│   │   ├── ble_gap_pair.py.exp
│   │   ├── ble_gap_pair_bond.py
│   │   ├── ble_gap_pair_bond.py.exp
│   │   ├── ble_gatt_data_transfer.py
│   │   ├── ble_gatt_data_transfer.py.exp
│   │   ├── ble_gattc_discover_services.py
│   │   ├── ble_gattc_discover_services.py.exp
│   │   ├── ble_l2cap.py
│   │   ├── ble_l2cap.py.exp
│   │   ├── ble_mtu.py
│   │   ├── ble_mtu.py.exp
│   │   ├── perf_gatt_char_write.py
│   │   ├── perf_gatt_char_write.py.exp
│   │   ├── perf_gatt_notify.py
│   │   ├── perf_gatt_notify.py.exp
│   │   ├── perf_l2cap.py
│   │   ├── perf_l2cap.py.exp
│   │   ├── stress_log_filesystem.py
│   │   └── stress_log_filesystem.py.exp
│   ├── multi_net/
│   │   ├── ssl_data.py
│   │   ├── ssl_data.py.exp
│   │   ├── tcp_accept_recv.py
│   │   ├── tcp_client_rst.py
│   │   ├── tcp_data.py
│   │   ├── uasyncio_tcp_client_rst.py
│   │   ├── uasyncio_tcp_client_rst.py.exp
│   │   ├── uasyncio_tcp_close_write.py
│   │   ├── uasyncio_tcp_close_write.py.exp
│   │   ├── uasyncio_tcp_readexactly.py
│   │   ├── uasyncio_tcp_readexactly.py.exp
│   │   ├── uasyncio_tcp_readinto.py
│   │   ├── uasyncio_tcp_readinto.py.exp
│   │   ├── uasyncio_tcp_server_client.py
│   │   └── uasyncio_tcp_server_client.py.exp
│   ├── net_hosted/
│   │   ├── README
│   │   ├── accept_nonblock.py
│   │   ├── accept_nonblock.py.exp
│   │   ├── accept_timeout.py
│   │   ├── accept_timeout.py.exp
│   │   ├── connect_nonblock.py
│   │   ├── connect_nonblock.py.exp
│   │   ├── connect_poll.py
│   │   ├── connect_poll.py.exp
│   │   ├── ssl_getpeercert.py
│   │   └── ssl_getpeercert.py.exp
│   ├── net_inet/
│   │   ├── README
│   │   ├── getaddrinfo.py
│   │   ├── test_tls_sites.py
│   │   ├── test_tls_sites.py.exp
│   │   ├── uasyncio_cancel_stream.py
│   │   ├── uasyncio_cancel_stream.py.exp
│   │   ├── uasyncio_open_connection.py
│   │   ├── uasyncio_open_connection.py.exp
│   │   ├── uasyncio_tcp_read_headers.py
│   │   └── uasyncio_tcp_read_headers.py.exp
│   ├── perf_bench/
│   │   ├── benchrun.py
│   │   ├── bm_chaos.py
│   │   ├── bm_fannkuch.py
│   │   ├── bm_fft.py
│   │   ├── bm_float.py
│   │   ├── bm_hexiom.py
│   │   ├── bm_nqueens.py
│   │   ├── bm_pidigits.py
│   │   ├── misc_aes.py
│   │   ├── misc_mandel.py
│   │   ├── misc_pystone.py
│   │   ├── misc_raytrace.py
│   │   ├── viper_call0.py
│   │   ├── viper_call1a.py
│   │   ├── viper_call1b.py
│   │   ├── viper_call1c.py
│   │   ├── viper_call2a.py
│   │   └── viper_call2b.py
│   ├── pyb/
│   │   ├── accel.py
│   │   ├── accel.py.exp
│   │   ├── adc.py
│   │   ├── adc.py.exp
│   │   ├── adcall.py
│   │   ├── adcall.py.exp
│   │   ├── board_pybv1x.py
│   │   ├── board_pybv1x.py.exp
│   │   ├── can.py
│   │   ├── can.py.exp
│   │   ├── can2.py
│   │   ├── can2.py.exp
│   │   ├── dac.py
│   │   ├── dac.py.exp
│   │   ├── extint.py
│   │   ├── extint.py.exp
│   │   ├── i2c.py
│   │   ├── i2c.py.exp
│   │   ├── i2c_accel.py
│   │   ├── i2c_accel.py.exp
│   │   ├── i2c_error.py
│   │   ├── i2c_error.py.exp
│   │   ├── irq.py
│   │   ├── irq.py.exp
│   │   ├── led.py
│   │   ├── led.py.exp
│   │   ├── modstm.py
│   │   ├── modstm.py.exp
│   │   ├── modtime.py
│   │   ├── modtime.py.exp
│   │   ├── pin.py
│   │   ├── pin.py.exp
│   │   ├── pyb1.py
│   │   ├── pyb1.py.exp
│   │   ├── pyb_f405.py
│   │   ├── pyb_f405.py.exp
│   │   ├── pyb_f411.py
│   │   ├── pyb_f411.py.exp
│   │   ├── rtc.py
│   │   ├── rtc.py.exp
│   │   ├── servo.py
│   │   ├── servo.py.exp
│   │   ├── spi.py
│   │   ├── spi.py.exp
│   │   ├── switch.py
│   │   ├── switch.py.exp
│   │   ├── timer.py
│   │   ├── timer.py.exp
│   │   ├── timer_callback.py
│   │   ├── timer_callback.py.exp
│   │   ├── uart.py
│   │   └── uart.py.exp
│   ├── pybnative/
│   │   ├── while.py
│   │   └── while.py.exp
│   ├── qemu-arm/
│   │   ├── native_test.py
│   │   └── native_test.py.exp
│   ├── run-internalbench.py
│   ├── run-multitests.py
│   ├── run-natmodtests.py
│   ├── run-perfbench.py
│   ├── run-tests-exp.py
│   ├── run-tests-exp.sh
│   ├── run-tests.py
│   ├── stress/
│   │   ├── dict_copy.py
│   │   ├── dict_create.py
│   │   ├── dict_create_max.py
│   │   ├── gc_trace.py
│   │   ├── list_sort.py
│   │   ├── qstr_limit.py
│   │   ├── qstr_limit.py.exp
│   │   ├── recursion.py
│   │   ├── recursive_data.py
│   │   ├── recursive_data.py.exp
│   │   ├── recursive_gen.py
│   │   ├── recursive_iternext.py
│   │   └── recursive_iternext.py.exp
│   ├── strict/
│   │   ├── dir_const.py
│   │   ├── dir_const.py.exp
│   │   ├── it_class_double_fun.py
│   │   ├── it_class_double_fun.py.exp
│   │   ├── it_double_fun.py
│   │   ├── it_double_fun.py.exp
│   │   ├── it_double_fun_global.py
│   │   ├── it_double_fun_global.py.exp
│   │   ├── it_import1.py
│   │   ├── it_import1.py.exp
│   │   ├── it_import2.py
│   │   ├── it_import2.py.exp
│   │   ├── it_import_all.py
│   │   ├── it_import_all.py.exp
│   │   ├── it_import_all_reimport.py
│   │   ├── it_import_all_reimport.py.exp
│   │   ├── it_import_name.py
│   │   ├── it_import_name.py.exp
│   │   ├── it_mod_double_fun.py
│   │   ├── it_mod_double_fun.py.exp
│   │   ├── it_var_to_fun.py
│   │   ├── it_var_to_fun.py.exp
│   │   ├── mod.py
│   │   ├── mod.py.exp
│   │   ├── mod2.py
│   │   ├── mod2.py.exp
│   │   ├── pkg/
│   │   │   ├── __init__.py
│   │   │   ├── mod.py
│   │   │   └── mod2.py
│   │   ├── rt_class_attr_add.py
│   │   ├── rt_class_attr_add.py.exp
│   │   ├── rt_class_attr_del.py
│   │   ├── rt_class_attr_del.py.exp
│   │   ├── rt_global_add.py
│   │   ├── rt_global_add.py.exp
│   │   ├── rt_global_add_via_globals.py
│   │   ├── rt_global_add_via_globals.py.exp
│   │   ├── rt_global_const_override.py
│   │   ├── rt_global_const_override.py.exp
│   │   ├── rt_global_del.py
│   │   ├── rt_global_del.py.exp
│   │   ├── rt_global_del_via_globals.py
│   │   ├── rt_global_del_via_globals.py.exp
│   │   ├── rt_globals.py
│   │   ├── rt_globals.py.exp
│   │   ├── rt_mod_global_add.py
│   │   ├── rt_mod_global_add.py.exp
│   │   ├── rt_mod_global_del.py
│   │   ├── rt_mod_global_del.py.exp
│   │   ├── rt_monkeypatch_mod.py
│   │   ├── rt_monkeypatch_mod.py.exp
│   │   ├── rt_monkeypatch_mod_workaround.py
│   │   └── rt_monkeypatch_mod_workaround.py.exp
│   ├── thread/
│   │   ├── mutate_bytearray.py
│   │   ├── mutate_dict.py
│   │   ├── mutate_instance.py
│   │   ├── mutate_list.py
│   │   ├── mutate_set.py
│   │   ├── stress_aes.py
│   │   ├── stress_create.py
│   │   ├── stress_heap.py
│   │   ├── stress_recurse.py
│   │   ├── stress_schedule.py
│   │   ├── stress_schedule.py.exp
│   │   ├── thread_exc1.py
│   │   ├── thread_exc2.py
│   │   ├── thread_exc2.py.exp
│   │   ├── thread_exit1.py
│   │   ├── thread_exit2.py
│   │   ├── thread_gc1.py
│   │   ├── thread_heap_lock.py
│   │   ├── thread_heap_lock.py.exp
│   │   ├── thread_ident1.py
│   │   ├── thread_lock1.py
│   │   ├── thread_lock2.py
│   │   ├── thread_lock3.py
│   │   ├── thread_lock4.py
│   │   ├── thread_lock5.py
│   │   ├── thread_qstr1.py
│   │   ├── thread_shared1.py
│   │   ├── thread_shared2.py
│   │   ├── thread_sleep1.py
│   │   ├── thread_stacksize1.py
│   │   ├── thread_start1.py
│   │   └── thread_start2.py
│   ├── unicode/
│   │   ├── data/
│   │   │   ├── utf-8_1.txt
│   │   │   └── utf-8_2.txt
│   │   ├── file1.py
│   │   ├── file2.py
│   │   ├── unicode.py
│   │   ├── unicode_chr.py
│   │   ├── unicode_errors.py
│   │   ├── unicode_escape.py
│   │   ├── unicode_id.py
│   │   ├── unicode_index.py
│   │   ├── unicode_iter.py
│   │   ├── unicode_ord.py
│   │   ├── unicode_pos.py
│   │   ├── unicode_slice.py
│   │   ├── unicode_str_format.py
│   │   ├── unicode_str_modulo.py
│   │   └── unicode_subscr.py
│   ├── unix/
│   │   ├── extra_coverage.py
│   │   ├── extra_coverage.py.exp
│   │   ├── ffi_callback.py
│   │   ├── ffi_callback.py.exp
│   │   ├── ffi_float.py
│   │   ├── ffi_float.py.exp
│   │   ├── ffi_float2.py
│   │   ├── ffi_float2.py.exp
│   │   ├── ffi_instances.py
│   │   ├── ffi_instances.py.exp
│   │   ├── ffi_lib.c
│   │   ├── ffi_types.py
│   │   ├── ffi_types.py.exp
│   │   ├── uos_stat.py
│   │   └── uos_stat.py.exp
│   └── wipy/
│       ├── adc.py
│       ├── adc.py.exp
│       ├── i2c.py
│       ├── i2c.py.exp
│       ├── modwipy.py
│       ├── modwipy.py.exp
│       ├── os.py
│       ├── os.py.exp
│       ├── pin.py
│       ├── pin.py.exp
│       ├── pin_irq.py
│       ├── pin_irq.py.exp
│       ├── reset/
│       │   ├── reset.py
│       │   └── reset.py.exp
│       ├── rtc.py
│       ├── rtc.py.exp
│       ├── sd.py
│       ├── sd.py.exp
│       ├── skipped/
│       │   ├── rtc_irq.py
│       │   └── rtc_irq.py.exp
│       ├── spi.py
│       ├── spi.py.exp
│       ├── time.py
│       ├── time.py.exp
│       ├── timer.py
│       ├── timer.py.exp
│       ├── uart.py
│       ├── uart.py.exp
│       ├── uart_irq.py
│       ├── uart_irq.py.exp
│       ├── wdt.py
│       ├── wdt.py.exp
│       └── wlan/
│           ├── machine.py
│           ├── machine.py.exp
│           ├── server.py
│           ├── server.py.exp
│           ├── wlan.py
│           └── wlan.py.exp
└── tools/
    ├── .gitattributes
    ├── .gitignore
    ├── bootstrap_upip.sh
    ├── build-stm-latest.sh
    ├── cc1
    ├── check_code_size.sh
    ├── ci.sh
    ├── codeformat.py
    ├── codestats.sh
    ├── dfu.py
    ├── file2h.py
    ├── gen-changelog.sh
    ├── gen-cpydiff.py
    ├── gendoc.py
    ├── insert-usb-ids.py
    ├── make-frozen.py
    ├── makemanifest.py
    ├── metrics.py
    ├── mpremote/
    │   ├── LICENSE
    │   ├── README.md
    │   ├── mpremote/
    │   │   ├── __init__.py
    │   │   ├── console.py
    │   │   ├── main.py
    │   │   └── pyboardextended.py
    │   ├── mpremote.py
    │   ├── pyproject.toml
    │   └── setup.cfg
    ├── mpy-tool.py
    ├── mpy_bin2res.py
    ├── mpy_cross_all.py
    ├── mpy_ld.py
    ├── pyboard.py
    ├── pydfu.py
    ├── tinytest-codegen.py
    ├── uf2conv.py
    ├── uncrustify.cfg
    ├── upip.py
    ├── upip_utarfile.py
    └── verifygitlog.py
Download .txt
Showing preview only (1,237K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (14561 symbols across 1759 files)

FILE: drivers/bus/qspi.h
  type mp_qspi_proto_t (line 40) | typedef struct _mp_qspi_proto_t {
  type mp_soft_qspi_obj_t (line 48) | typedef struct _mp_soft_qspi_obj_t {
  function mp_spi_set_addr_buff (line 59) | static inline uint8_t mp_spi_set_addr_buff(uint8_t *buf, uint32_t addr) {

FILE: drivers/bus/softqspi.c
  function STATIC (line 52) | STATIC void nibble_write(mp_soft_qspi_obj_t *self, uint8_t v) {
  function STATIC (line 59) | STATIC int mp_soft_qspi_ioctl(void *self_in, uint32_t cmd) {
  function STATIC (line 83) | STATIC void mp_soft_qspi_transfer(mp_soft_qspi_obj_t *self, size_t len, ...
  function STATIC (line 122) | STATIC void mp_soft_qspi_qread(mp_soft_qspi_obj_t *self, size_t len, uin...
  function STATIC (line 140) | STATIC void mp_soft_qspi_qwrite(mp_soft_qspi_obj_t *self, size_t len, co...
  function STATIC (line 161) | STATIC void mp_soft_qspi_write_cmd_data(void *self_in, uint8_t cmd, size...
  function STATIC (line 169) | STATIC void mp_soft_qspi_write_cmd_addr_data(void *self_in, uint8_t cmd,...
  function STATIC (line 179) | STATIC uint32_t mp_soft_qspi_read_cmd(void *self_in, uint8_t cmd, size_t...
  function STATIC (line 188) | STATIC void mp_soft_qspi_read_cmd_qaddr_qdata(void *self_in, uint8_t cmd...

FILE: drivers/bus/softspi.c
  function mp_soft_spi_ioctl (line 29) | int mp_soft_spi_ioctl(void *self_in, uint32_t cmd) {
  function mp_soft_spi_transfer (line 47) | void mp_soft_spi_transfer(void *self_in, size_t len, const uint8_t *src,...

FILE: drivers/bus/spi.h
  type mp_spi_proto_t (line 36) | typedef struct _mp_spi_proto_t {
  type mp_soft_spi_obj_t (line 41) | typedef struct _mp_soft_spi_obj_t {

FILE: drivers/cc3000/inc/cc3000_common.h
  type INT32 (line 168) | typedef INT32 cc3000_time_t;
  type UINT32 (line 169) | typedef UINT32 clock_t;
  type INT32 (line 170) | typedef INT32 suseconds_t;
  type cc3000_timeval (line 172) | typedef struct cc3000_timeval cc3000_timeval;
  type cc3000_timeval (line 174) | struct cc3000_timeval
  type CHAR (line 180) | typedef CHAR *(*tFWPatches)(UINT32 *usLength);
  type CHAR (line 182) | typedef CHAR *(*tDriverPatches)(UINT32 *usLength);
  type CHAR (line 184) | typedef CHAR *(*tBootLoaderPatches)(UINT32 *usLength);
  type INT32 (line 188) | typedef INT32 (*tWlanReadInteruptPin)(void);
  type sSimplLinkInformation (line 196) | typedef struct

FILE: drivers/cc3000/inc/data_types.h
  type INT8 (line 67) | typedef signed char   		INT8;
  type UINT8 (line 72) | typedef unsigned char   	UINT8;
  type INT16 (line 77) | typedef signed short  		INT16;
  type UINT16 (line 82) | typedef unsigned short   	UINT16;
  type BOOLEAN (line 87) | typedef unsigned char   	BOOLEAN;
  type INT32 (line 92) | typedef signed long   		INT32;
  type UINT32 (line 97) | typedef unsigned long   	UINT32;
  type INT (line 100) | typedef int             	INT;
  type CHAR (line 101) | typedef char            	CHAR;

FILE: drivers/cc3000/inc/evnt_handler.h
  type tBsdReturnParams (line 115) | typedef struct _bsd_accept_return_t
  type tBsdReadReturnParams (line 124) | typedef struct _bsd_read_return_t
  type tBsdSelectRecvParams (line 135) | typedef struct _bsd_select_return_t
  type tBsdGetSockOptReturnParams (line 144) | typedef struct _bsd_getsockopt_return_t
  type tBsdGethostbynameParams (line 150) | typedef struct _bsd_gethostbyname_return_t

FILE: drivers/cc3000/inc/netapp.h
  type tNetappDhcpParams (line 57) | typedef struct _netapp_dhcp_ret_args_t
  type tNetappIpconfigRetArgs (line 66) | typedef struct _netapp_ipconfig_ret_args_t
  type netapp_pingreport_args_t (line 79) | typedef struct _netapp_pingreport_args

FILE: drivers/cc3000/inc/socket.h
  type in_addr (line 112) | typedef struct _in_addr_t
  type sockaddr (line 117) | typedef struct _sockaddr_t
  type sockaddr_in (line 123) | typedef struct _sockaddr_in_t
  type UINT32 (line 131) | typedef UINT32 socklen_t;
  type INT32 (line 134) | typedef INT32 __fd_mask;
  type fd_set (line 142) | typedef struct
  type cc3000_timeval (line 419) | struct cc3000_timeval

FILE: drivers/cc3000/src/cc3000_common.c
  function __error__ (line 64) | void __error__(CHAR *pcFilename, UINT32 ulLine)
  function UINT8 (line 85) | UINT8* UINT32_TO_STREAM_f (UINT8 *p, UINT32 u32)
  function UINT8 (line 108) | UINT8* UINT16_TO_STREAM_f (UINT8 *p, UINT16 u16)
  function UINT16 (line 129) | UINT16 STREAM_TO_UINT16_f(CHAR* p, UINT16 offset)
  function UINT32 (line 149) | UINT32 STREAM_TO_UINT32_f(CHAR* p, UINT16 offset)

FILE: drivers/cc3000/src/ccspi.c
  type tSpiInformation (line 87) | typedef struct {
  function SpiInit (line 104) | void SpiInit(void *spi, const void *pin_cs, const void *pin_en, const vo...
  function SpiClose (line 111) | void SpiClose(void)
  function SpiOpen (line 122) | void SpiOpen(gcSpiHandleRx pfRxHandler)
  function ReadWlanInterruptPin (line 181) | long ReadWlanInterruptPin(void)
  function WriteWlanPin (line 186) | void WriteWlanPin(unsigned char val)
  function STATIC (line 192) | STATIC void SpiWriteDataSynchronous(unsigned char *data, unsigned short ...
  function STATIC (line 203) | STATIC void SpiReadDataSynchronous(unsigned char *data, unsigned short s...
  function STATIC (line 213) | STATIC void __delay_cycles(volatile int x)
  function SpiFirstWrite (line 219) | STATIC long SpiFirstWrite(unsigned char *ucBuf, unsigned short usLength)
  function SpiWrite (line 243) | long SpiWrite(unsigned char *pUserBuffer, unsigned short usLength)
  function SpiReadPacket (line 316) | void SpiReadPacket(void)
  function STATIC (line 333) | STATIC void SpiReadHeader(void)
  function STATIC (line 338) | STATIC void SpiTriggerRxProcessing(void)
  function SpiReadDataCont (line 355) | STATIC long SpiReadDataCont(void)
  function STATIC (line 401) | STATIC void SSIContReadOperation(void)
  function STATIC (line 411) | STATIC mp_obj_t irq_callback(mp_obj_t line) {
  function SpiPauseSpi (line 447) | void SpiPauseSpi(void) {
  function SpiResumeSpi (line 452) | void SpiResumeSpi(void) {

FILE: drivers/cc3000/src/evnt_handler.c
  function hci_unsol_handle_patch_request (line 141) | void hci_unsol_handle_patch_request(CHAR *event_hdr)
  function UINT8 (line 227) | UINT8 * hci_event_handler(void *pRetParams, UINT8 *from, UINT8 *fromlen)
  function INT32 (line 502) | INT32 hci_unsol_event_handler(CHAR *event_hdr)
  function INT32 (line 664) | INT32 hci_unsolicited_event_handler(void)
  function set_socket_active_status (line 705) | void set_socket_active_status(INT32 Sd, INT32 Status)
  function INT32 (line 728) | INT32 hci_event_unsol_flowcontrol_handler(CHAR *pEvent)
  function INT32 (line 765) | INT32 get_socket_active_status(INT32 Sd)
  function update_socket_active_status (line 784) | void update_socket_active_status(CHAR *resp_params)
  function SimpleLinkWaitEvent (line 812) | void SimpleLinkWaitEvent(UINT16 usOpcode, void *pRetParams)
  function SimpleLinkWaitData (line 836) | void SimpleLinkWaitData(UINT8 *pBuf, UINT8 *from, UINT8 *fromlen)

FILE: drivers/cc3000/src/hci.c
  function UINT16 (line 66) | UINT16 hci_command_send(UINT16 usOpcode, UINT8 *pucBuff, UINT8 ucArgsLen...
  function INT32 (line 97) | INT32 hci_data_send(UINT8 ucOpcode,
  function hci_data_command_send (line 134) | void hci_data_command_send(UINT16 usOpcode, UINT8 *pucBuff, UINT8 ucArgs...
  function hci_patch_send (line 163) | void hci_patch_send(UINT8 ucOpcode, UINT8 *pucBuff, CHAR *patch, UINT16 ...

FILE: drivers/cc3000/src/inet_pton.c
  function inet_pton (line 52) | int inet_pton(int af, const char *src, void *dst)
  function inet_pton4 (line 78) | static int inet_pton4(const char *src, unsigned char *dst)
  function inet_pton6 (line 134) | static int inet_pton6(const char *src, unsigned char *dst)

FILE: drivers/cc3000/src/netapp.c
  function INT32 (line 70) | INT32 netapp_config_mac_adrress(UINT8 * mac)
  function INT32 (line 101) | INT32 netapp_dhcp(UINT32 *aucIP, UINT32 *aucSubnetMask,UINT32 *aucDefaul...
  function INT32 (line 179) | INT32 netapp_timeout_values(UINT32 *aucDHCP, UINT32 *aucARP,UINT32 *aucK...
  function INT32 (line 234) | INT32
  function netapp_ping_report (line 285) | void netapp_ping_report()
  function INT32 (line 315) | INT32 netapp_ping_stop()
  function netapp_ipconfig (line 360) | void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig )
  function netapp_ipconfig (line 374) | void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig )
  function INT32 (line 393) | INT32 netapp_arp_flush(void)
  function INT32 (line 431) | INT32 netapp_set_debug_level(UINT32 ulLevel)

FILE: drivers/cc3000/src/nvmem.c
  function INT32 (line 83) | INT32 nvmem_read(UINT32 ulFileId, UINT32 ulLength, UINT32 ulOffset, UINT...
  function INT32 (line 134) | INT32 nvmem_write(UINT32 ulFileId, UINT32 ulLength, UINT32 ulEntryOffset...
  function UINT8 (line 177) | UINT8 nvmem_set_mac_address(UINT8 *mac)
  function UINT8 (line 195) | UINT8 nvmem_get_mac_address(UINT8 *mac)
  function UINT8 (line 218) | UINT8 nvmem_write_patch(UINT32 ulFileId, UINT32 spLength, const UINT8 *s...
  function UINT8 (line 262) | UINT8 nvmem_read_sp_version(UINT8* patchVer)
  function INT32 (line 306) | INT32 nvmem_create_entry(UINT32 ulFileId, UINT32 ulNewLen)

FILE: drivers/cc3000/src/patch_prog.c
  function systick_sleep (line 32) | static void systick_sleep(unsigned long ms) {
  function CC3000_UsynchCallback (line 129) | static void CC3000_UsynchCallback(long lEventType, char * data, unsigned...
  function initDriver (line 147) | static int initDriver(unsigned short cRequestPatch)
  function fat_read_content (line 195) | static unsigned char  __attribute__ ((unused))
  function fat_write_content (line 246) | static unsigned char fat_write_content(unsigned short const *file_address,
  function patch_prog_start (line 298) | void patch_prog_start()

FILE: drivers/cc3000/src/security.c
  function expandKey (line 103) | void expandKey(UINT8 *expandedKey, UINT8 *key)
  function UINT8 (line 142) | UINT8 galois_mul2(UINT8 value)
  function aes_encr (line 176) | void aes_encr(UINT8 *state, UINT8 *expandedKey)
  function aes_decr (line 303) | void aes_decr(UINT8 *state, UINT8 *expandedKey)
  function aes_encrypt (line 446) | void aes_encrypt(UINT8 *state, UINT8 *key)
  function aes_decrypt (line 470) | void aes_decrypt(UINT8 *state, UINT8 *key)
  function INT32 (line 491) | INT32 aes_read_key(UINT8 *key)
  function INT32 (line 514) | INT32 aes_write_key(UINT8 *key)

FILE: drivers/cc3000/src/socket.c
  function INT16 (line 111) | static INT16 HostFlowControlConsumeBuff(INT16 sd)
  function INT16 (line 185) | INT16 CC3000_EXPORT(socket)(INT32 domain, INT32 type, INT32 protocol)
  function INT32 (line 225) | INT32 CC3000_EXPORT(closesocket)(INT32 sd)
  function INT32 (line 297) | INT32 CC3000_EXPORT(accept)(INT32 sd, sockaddr *addr, socklen_t *addrlen)
  function INT32 (line 360) | INT32 CC3000_EXPORT(bind)(INT32 sd, const sockaddr *addr, INT32 addrlen)
  function INT32 (line 412) | INT32 CC3000_EXPORT(listen)(INT32 sd, INT32 backlog)
  function INT16 (line 456) | INT16 CC3000_EXPORT(gethostbyname)(CHAR * hostname, UINT16 usNameLen,
  function INT32 (line 522) | INT32 CC3000_EXPORT(connect)(INT32 sd, const sockaddr *addr, INT32 addrlen)
  function INT16 (line 589) | INT16 CC3000_EXPORT(select)(INT32 nfds, fd_set *readsds, fd_set *writesd...
  function INT16 (line 713) | INT16 CC3000_EXPORT(setsockopt)(INT32 sd, INT32 level, INT32 optname, co...
  function INT16 (line 796) | INT16 CC3000_EXPORT(getsockopt) (INT32 sd, INT32 level, INT32 optname, v...
  function INT16 (line 850) | static INT16 simple_link_recv(INT32 sd, void *buf, INT32 len, INT32 flag...
  function INT16 (line 905) | INT16 CC3000_EXPORT(recv)(INT32 sd, void *buf, INT32 len, INT32 flags)
  function INT16 (line 938) | INT16 CC3000_EXPORT(recvfrom)(INT32 sd, void *buf, INT32 len, INT32 flag...
  function INT16 (line 965) | static INT16 simple_link_send(INT32 sd, const void *buf, INT32 len, INT3...
  function INT16 (line 1069) | INT16 CC3000_EXPORT(send)(INT32 sd, const void *buf, INT32 len, INT32 fl...
  function INT16 (line 1100) | INT16 CC3000_EXPORT(sendto)(INT32 sd, const void *buf, INT32 len, INT32 ...
  function INT16 (line 1123) | INT16 CC3000_EXPORT(mdnsAdvertiser)(UINT16 mdnsEnabled, CHAR * deviceSer...
  function UINT16 (line 1164) | UINT16 CC3000_EXPORT(getmssvalue) (INT32 sd)

FILE: drivers/cc3000/src/wlan.c
  function SimpleLink_Init_Start (line 115) | static void SimpleLink_Init_Start(UINT16 usPatchesAvailableAtHost)
  function wlan_init (line 179) | void wlan_init(		tWlanCB	 	sWlanCB,
  function SpiReceiveHandler (line 220) | void SpiReceiveHandler(void *pvBuffer)
  function wlan_start (line 257) | int wlan_start(UINT16 usPatchesAvailableAtHost)
  function wlan_stop (line 338) | void wlan_stop(void)
  function INT32 (line 390) | INT32 wlan_connect(UINT32 ulSecType, CHAR *ssid, INT32 ssid_len,
  function INT32 (line 438) | INT32 wlan_connect(CHAR *ssid, INT32 ssid_len)
  function INT32 (line 485) | INT32 wlan_disconnect()
  function INT32 (line 534) | INT32 wlan_ioctl_set_connection_policy(UINT32 should_connect_to_open_ap,
  function INT32 (line 594) | INT32 wlan_add_profile(UINT32 ulSecType,
  function INT32 (line 715) | INT32 wlan_add_profile(UINT32 ulSecType,
  function INT32 (line 746) | INT32 wlan_ioctl_del_profile(UINT32 ulIndex)
  function INT32 (line 804) | INT32 wlan_ioctl_get_scan_results(UINT32 ulScanTimeout,
  function INT32 (line 865) | INT32 wlan_ioctl_set_scan_params(UINT32 uiEnable, UINT32 uiMinDwellTime,
  function INT32 (line 926) | INT32 wlan_set_event_mask(UINT32 ulMask)
  function INT32 (line 983) | INT32 wlan_ioctl_statusget(void)
  function INT32 (line 1022) | INT32 wlan_smart_config_start(UINT32 algoEncryptedFlag)
  function INT32 (line 1059) | INT32 wlan_smart_config_stop(void)
  function INT32 (line 1092) | INT32 wlan_smart_config_set_prefix(CHAR* cNewPrefix)
  function INT32 (line 1139) | INT32 wlan_smart_config_process()

FILE: drivers/cc3100/inc/device.h
  type SlErrorSender_e (line 97) | typedef enum
  type SlUartIfParams_t (line 242) | typedef struct
  type _SlPartialVersion (line 250) | typedef struct
  type SlVersionFull (line 257) | typedef struct
  type sl_DeviceReportAbort (line 266) | typedef struct
  type sl_DeviceReport (line 273) | typedef struct
  type _SlDeviceEventData_u (line 279) | typedef union
  type SlDeviceEvent_t (line 285) | typedef struct
  type SlDateTime_t (line 291) | typedef struct

FILE: drivers/cc3100/inc/driver.h
  type _SlCmdCtrl_t (line 54) | typedef struct
  type _SlCmdExt_t (line 61) | typedef struct
  type _SlArgsData_t (line 71) | typedef struct _SlArgsData_t
  type _SlPoolObj_t (line 78) | typedef struct _SlPoolObj_t
  type _SlActionID_e (line 89) | typedef enum
  type _SlActionLookup_t (line 118) | typedef struct _SlActionLookup_t
  type _SlFlowContCB_t (line 127) | typedef struct
  type _SlRxMsgClass_e (line 134) | typedef enum
  type AsyncExt_t (line 142) | typedef struct
  type _u8 (line 150) | typedef _u8 _SlSd_t;
  type _SlFunctionParams_t (line 152) | typedef struct
  type _SlDriverCb_t (line 161) | typedef struct

FILE: drivers/cc3100/inc/fs.h
  type SlFsFileInfo_t (line 162) | typedef struct
  type SlFsFileOpenAccessType_e (line 170) | typedef enum
  type SlFileOpenFlags_e (line 178) | typedef enum
  type _SlFsFileOpenMaxSizeGran_e (line 189) | typedef enum

FILE: drivers/cc3100/inc/netapp.h
  type SlPingReport_t (line 194) | typedef struct
  type SlPingStartCommand_t (line 204) | typedef struct
  type slHttpServerString_t (line 217) | typedef struct _slHttpServerString_t
  type slHttpServerData_t (line 223) | typedef struct _slHttpServerData_t
  type slHttpServerPostData_t (line 231) | typedef struct _slHttpServerPostData_t
  type SlHttpServerEventData_u (line 238) | typedef union
  type SlHttpServerResponsedata_u (line 244) | typedef union
  type SlHttpServerEvent_t (line 249) | typedef struct
  type SlHttpServerResponse_t (line 255) | typedef struct
  type SlNetAppDhcpServerBasicOpt_t (line 262) | typedef struct
  type SlNetAppGetServiceListType_e (line 270) | typedef enum
  type SlNetAppGetShortServiceIpv4List_t (line 278) | typedef struct
  type SlNetAppGetFullServiceIpv4List_t (line 285) | typedef struct
  type SlNetAppGetFullServiceWithTextIpv4List_t (line 294) | typedef struct
  type SlNetAppServiceAdvertiseTimingParameters_t (line 304) | typedef struct

FILE: drivers/cc3100/inc/netcfg.h
  type Sl_NetCfg_e (line 75) | typedef enum
  type SlNetCfgIpV4Args_t (line 89) | typedef struct

FILE: drivers/cc3100/inc/nonos.h
  type _i8 (line 72) | typedef _i8 _SlNonOsRetVal_t;
  type _u8 (line 77) | typedef _u8 _SlNonOsTime_t;
  type _u8 (line 88) | typedef _u8 _SlNonOsSemObj_t;

FILE: drivers/cc3100/inc/protocol.h
  type _SlGenericHeader_t (line 78) | typedef struct
  type _SlSyncPattern_t (line 85) | typedef struct
  type _SlGenericHeader_t (line 93) | typedef _SlGenericHeader_t _SlCommandHeader_t;
  type _SlResponseHeader_t (line 95) | typedef struct
  type T_SCMD (line 111) | typedef struct
  type _u32 (line 372) | typedef _u32 InitStatus_t;
  type InitComplete_t (line 375) | typedef struct
  type _BasicResponse_t (line 380) | typedef struct
  type _DevStopCommand_t (line 387) | typedef struct
  type _DevMaskEventSetCommand_t (line 393) | typedef struct
  type _BasicResponse_t (line 399) | typedef _BasicResponse_t _DevMaskEventSetResponse_t;
  type _DevMaskEventGetCommand_t (line 402) | typedef struct
  type _DevMaskEventGetResponse_t (line 408) | typedef struct
  type _DevStatusGetCommand_t (line 415) | typedef struct
  type _DevStatusGetResponse_t (line 421) | typedef struct
  type _Device_VersionReadResponsePart_t (line 427) | typedef struct
  type _Device_VersionReadResponseFull_t (line 434) | typedef struct
  type _DevUartSetModeCommand_t (line 443) | typedef struct
  type _BasicResponse_t (line 449) | typedef _BasicResponse_t _DevUartSetModeResponse_t;
  type _StellarisSsiSizeSet_t (line 453) | typedef struct
  type _WlanConnectCommon_t (line 464) | typedef struct{
  type _WlanConnectEapCommand_t (line 474) | typedef struct{
  type _WlanPoliciySetGet_t (line 488) | typedef struct
  type _WlanScanParamSetCommand_t (line 497) | typedef struct{
  type _WlanAddGetProfile_t (line 509) | typedef struct{
  type _WlanAddGetEapProfile_t (line 519) | typedef struct{
  type _WlanProfileDelGetCommand_t (line 541) | typedef struct
  type _BasicResponse_t (line 547) | typedef _BasicResponse_t _WlanGetNetworkListResponse_t;
  type _WlanGetNetworkListCommand_t (line 549) | typedef struct
  type _WlanSmartConfigStartCommand_t (line 559) | typedef struct
  type _WlanSetMode_t (line 574) | typedef	struct
  type _WlanCfgSetGet_t (line 583) | typedef struct
  type _WlanRxFilterAddCommand_t (line 596) | typedef struct _WlanRxFilterAddCommand_t
  type _WlanRxFilterAddCommandReponse_t (line 617) | typedef struct l_WlanRxFilterAddCommandReponse_t
  type _WlanRxFilterSetCommand_t (line 633) | typedef struct _WlanRxFilterSetCommand_t
  type _WlanRxFilterSetCommandReponse_t (line 644) | typedef struct _WlanRxFilterSetCommandReponse_t
  type _WlanRxFilterGetCommand_t (line 656) | typedef struct _WlanRxFilterGetCommand_t
  type _WlanRxFilterGetCommandReponse_t (line 667) | typedef struct _WlanRxFilterGetCommandReponse_t
  type _NetappIpV6configRetArgs_t (line 684) | typedef struct
  type _NetCfgIpV4AP_Args_t (line 699) | typedef struct
  type _MAC_Address_SetGet_t (line 711) | typedef struct
  type _NetCfgSetGet_t (line 718) | typedef struct
  type _DeviceSetGet_t (line 726) | typedef struct
  type _SocketCommand_t (line 741) | typedef struct
  type _SocketResponse_t (line 750) | typedef struct
  type _AcceptCommand_t (line 757) | typedef struct
  type _SocketAddrAsyncIPv4Response_t (line 766) | typedef struct
  type _SocketAddrAsyncIPv6EUI48Response_t (line 776) | typedef struct
  type _SocketAddrAsyncIPv6Response_t (line 784) | typedef struct
  type _SocketAddrIPv4Command_t (line 795) | typedef struct
  type _SocketAddrIPv6EUI48Command_t (line 805) | typedef struct
  type _SocketAddrIPv6Command_t (line 813) | typedef struct
  type _SocketAddrCommand_u (line 823) | typedef union {
  type _SocketAddrResponse_u (line 831) | typedef union {
  type _ListenCommand_t (line 839) | typedef struct
  type _CloseCommand_t (line 847) | typedef struct
  type _SelectCommand_t (line 856) | typedef struct
  type _SelectAsyncResponse_t (line 869) | typedef struct
  type _setSockOptCommand_t (line 878) | typedef struct
  type _getSockOptCommand_t (line 886) | typedef struct
  type _getSockOptResponse_t (line 894) | typedef struct
  type _sendRecvCommand_t (line 902) | typedef struct
  type _BasicResponse_t (line 914) | typedef _BasicResponse_t _NetAppStartStopResponse_t;
  type _NetAppStartStopCommand_t (line 916) | typedef struct
  type _NetAppSetGet_t (line 921) | typedef struct
  type _NetAppHttpServerGetSet_port_num_t (line 928) | typedef struct
  type _NetAppHttpServerGetSet_auth_enable_t (line 933) | typedef struct
  type sl_NetAppHttpServerGetToken_t (line 938) | typedef struct _sl_NetAppHttpServerGetToken_t
  type sl_NetAppHttpServerSendToken_t (line 945) | typedef struct _sl_NetAppHttpServerSendToken_t
  type sl_NetAppHttpServerPostToken_t (line 953) | typedef struct _sl_NetAppHttpServerPostToken_t
  type _GetHostByNameCommand_t (line 962) | typedef struct
  type _GetHostByNameIPv6AsyncResponse_t (line 969) | typedef struct
  type _GetHostByNameIPv4AsyncResponse_t (line 979) | typedef struct
  type CommTest_e (line 990) | typedef enum
  type _CtestStartCommand_t (line 1008) | typedef struct _sl_protocol_CtestStartCommand_t
  type _CtestAsyncResponse_t (line 1022) | typedef struct
  type _PingStartCommand_t (line 1036) | typedef struct
  type _PingReportResponse_t (line 1049) | typedef struct
  type _IpV4AcquiredAsync_t (line 1061) | typedef struct
  type IpV6AcquiredType_e (line 1069) | typedef enum
  type _IpV6AcquiredAsync_t (line 1076) | typedef struct
  type _device_commands_t (line 1085) | typedef union
  type _FsReadCommand_t (line 1095) | typedef struct
  type _FsOpenCommand_t (line 1103) | typedef struct
  type _FsOpenResponse_t (line 1109) | typedef struct
  type _FsCloseCommand_t (line 1116) | typedef struct
  type _BasicResponse_t (line 1124) | typedef _BasicResponse_t _FsReadResponse_t;
  type _BasicResponse_t (line 1125) | typedef _BasicResponse_t _FsDeleteResponse_t;
  type _BasicResponse_t (line 1126) | typedef _BasicResponse_t _FsCloseResponse_t;
  type _FsGetInfoResponse_t (line 1128) | typedef struct
  type _FsFormatCommand_t (line 1137) | typedef struct
  type _BasicResponse_t (line 1143) | typedef _BasicResponse_t _FsFormatResponse_t;
  type _FsDeleteCommand_t (line 1145) | typedef struct
  type _FsDeleteCommand_t (line 1150) | typedef   _FsDeleteCommand_t  _FsGetInfoCommand_t;
  type _FsWriteCommand_t (line 1152) | typedef struct
  type _BasicResponse_t (line 1160) | typedef _BasicResponse_t _FsWriteResponse_t;

FILE: drivers/cc3100/inc/simplelink.h
  type _u8 (line 350) | typedef unsigned char _u8;
  type _i8 (line 351) | typedef signed char   _i8;
  type _u16 (line 353) | typedef unsigned short _u16;
  type _i16 (line 354) | typedef signed short   _i16;
  type _u32 (line 356) | typedef unsigned long  _u32;
  type _i32 (line 357) | typedef signed long    _i32;
  type _u16 (line 362) | typedef _u16  _SlOpcode_t;
  type _u8 (line 363) | typedef _u8   _SlArgSize_t;
  type _i16 (line 364) | typedef _i16   _SlDataSize_t;
  type _i16 (line 365) | typedef _i16   _SlReturnVal_t;
  type _SlEventPropogationStatus_e (line 379) | typedef enum {

FILE: drivers/cc3100/inc/socket.h
  type SlInAddr_t (line 445) | typedef struct SlInAddr_t
  type SlSockKeepalive_t (line 460) | typedef struct
  type SlSockReuseaddr_t (line 465) | typedef struct
  type SlSockWinsize_t (line 470) | typedef struct
  type SlSockNonblocking_t (line 475) | typedef struct
  type SlSocketAsyncEvent_t (line 481) | typedef struct
  type SlSockTxFailEventData_t (line 489) | typedef struct
  type SlSockEventData_u (line 497) | typedef union
  type SlSockEvent_t (line 504) | typedef struct
  type SlSockSecureMask (line 515) | typedef struct
  type SlSockSecureMethod (line 520) | typedef struct
  type slBsd_secureSocketFilesIndex_e (line 525) | typedef enum
  type SlSockIpMreq (line 533) | typedef struct
  type _u32 (line 541) | typedef _u32   SlTime_t;
  type _u32 (line 542) | typedef _u32   SlSuseconds_t;
  type SlTimeval_t (line 544) | typedef struct SlTimeval_t
  type _u16 (line 550) | typedef _u16 SlSocklen_t;
  type SlSockAddr_t (line 553) | typedef struct SlSockAddr_t
  type SlIn6Addr_t (line 561) | typedef struct SlIn6Addr_t
  type SlSockAddrIn6_t (line 570) | typedef struct SlSockAddrIn6_t
  type SlSockAddrIn_t (line 581) | typedef struct SlSockAddrIn_t
  type SlIpV4AcquiredAsync_t (line 589) | typedef struct
  type SlIpV6AcquiredAsync_t (line 596) | typedef struct
  type SlIpLeasedAsync_t (line 604) | typedef struct
  type SlIpReleasedAsync_t (line 612) | typedef struct
  type SlNetAppEventData_u (line 620) | typedef union
  type SlNetAppEvent_t (line 629) | typedef struct
  type SlSockSecureFiles_t (line 636) | typedef struct sock_secureFiles
  type SlFdSet_t (line 642) | typedef struct SlFdSet_t                    /* The select socket array m...
  type SlTransceiverRxOverHead_t (line 647) | typedef struct
  type SlTimeval_t (line 935) | struct SlTimeval_t

FILE: drivers/cc3100/inc/wlan.h
  type SlRateIndex_e (line 293) | typedef enum
  type sl_p2p_dev_password_method (line 318) | typedef enum {
  type slSmartConfigStartAsyncResponse_t (line 326) | typedef struct
  type slSmartConfigStopAsyncResponse_t (line 335) | typedef struct
  type slWlanConnFailureAsyncResponse_t (line 341) | typedef struct
  type slWlanConnectAsyncResponse_t (line 347) | typedef struct
  type slPeerInfoAsyncResponse_t (line 359) | typedef struct
  type SlWlanEventData_u (line 371) | typedef union
  type SlWlanEvent_t (line 385) | typedef struct
  type SlGetRxStatResponse_t (line 392) | typedef struct
  type Sl_WlanNetworkEntry_t (line 406) | typedef struct
  type SlSecParams_t (line 417) | typedef struct
  type SlSecParamsExt_t (line 424) | typedef struct
  type SlGetSecParamsExt_t (line 434) | typedef struct
  type SlWlanMode_t (line 444) | typedef enum
  type slWlanScanParamCommand_t (line 454) | typedef struct
  type sl_protocol_InfoElement_t (line 461) | typedef struct
  type sl_protocol_WlanSetInfoElement_t (line 469) | typedef struct

FILE: drivers/cc3100/inc/wlan_rx_filters.h
  type _i8 (line 146) | typedef  _i8    SlrxFilterID_t;
  type _u8 (line 153) | typedef _u8   SlrxFilterCompareMask_t;
  type _u8 (line 162) | typedef _u8   SlrxFilterIdMask_t[128/8];
  type _u8 (line 168) | typedef _u8  SlrxFilterPrePreparedFilters_t;
  type _u8 (line 182) | typedef _u8   SlrxFilterPrePreparedFiltersMask_t[SL_RX_FILTER_MAX_PRE_PR...
  type SlrxFilterRegxPattern_t (line 189) | typedef struct SlrxFilterRegxPattern_t
  type _u8 (line 199) | typedef _u8 SlrxFilterAsciiArg_t;
  type _u8 (line 205) | typedef _u8   SlrxFilterBinaryArg_t ;
  type _u8 (line 214) | typedef  _u8 SlrxFilterActionArg_t ;
  type _u32 (line 222) | typedef _u32   SlrxFilterOffset_t;
  type _u8 (line 230) | typedef _u8 SlrxFilterRuleType_t;
  type SlrxFilterFlags_t (line 249) | typedef union SlrxFilterFlags_t
  type _u8 (line 283) | typedef _u8 SlrxFilterCompareFunction_t;
  type _u8 (line 295) | typedef _u8 SlrxTriggerCompareFunction_t;
  type _u8 (line 312) | typedef _u8 SlrxFilterHdrField_t;
  type SlrxFilterHeaderArg_t (line 352) | typedef union SlrxFilterHeaderArg_t
  type SlrxFilterRuleHeaderArgsAndMask_t (line 399) | typedef struct SlrxFilterRuleHeaderArgsAndMask_t
  type SlrxFilterHeaderType_t (line 420) | typedef struct SlrxFilterHeaderType_t
  type SlrxFilterPayloadType_t (line 447) | typedef struct SlrxFilterPayloadType_t
  type _u8 (line 464) | typedef _u8 SlrxFilterCombinationTypeOperator_t;
  type SlrxFilterCombinationType_t (line 480) | typedef struct SlrxFilterCombinationType_t
  type SlrxFilterRule_t (line 499) | typedef union SlrxFilterRule_t
  type SlrxFilterTriggerRoles_t (line 521) | typedef union SlrxFilterTriggerRoles_t
  type SlrxFilterTriggerConnectionStates_t (line 545) | typedef union SlrxFilterTriggerConnectionStates_t
  type _u32 (line 569) | typedef _u32  SlrxFilterDBTriggerArg_t;
  type _u8 (line 576) | typedef _u8 SlrxFilterCounterId_t;
  type _u8 (line 596) | typedef _u8  SlrxFilterActionArgs_t;
  type SlrxFilterTrigger_t (line 624) | typedef struct SlrxFilterTrigger_t
  type SlrxFilterActionType_t (line 671) | typedef union SlrxFilterActionType_t
  type SlrxFilterAction_t (line 705) | typedef struct SlrxFilterAction_t
  type _WlanRxFilterOperationCommandBuff_t (line 737) | typedef struct _WlanRxFilterOperationCommandBuff_t
  type _WlanRxFilterUpdateArgsCommandBuff_t (line 748) | typedef struct _WlanRxFilterUpdateArgsCommandBuff_t
  type _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t (line 770) | typedef struct _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t
  type _WlanRxFilterPrePreparedFiltersCommandBuff_t (line 784) | typedef struct _WlanRxFilterPrePreparedFiltersCommandBuff_t
  type _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t (line 797) | typedef struct _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t
  type _u8 (line 807) | typedef _u8 SLrxFilterOperation_t;

FILE: drivers/cc3100/src/device.c
  function _i16 (line 66) | _i16 _sl_GetStartResponseConvert(_u32 Status)
  function sl_Task (line 81) | void sl_Task(void)
  function _i16 (line 93) | _i16 sl_Start(const void* pIfHdl, _i8*  pDevName, const P_INIT_CALLBACK ...
  function _sl_HandleAsync_InitComplete (line 151) | void _sl_HandleAsync_InitComplete(void *pVoidBuf)
  function _sl_HandleAsync_Stop (line 180) | void _sl_HandleAsync_Stop(void *pVoidBuf)
  type _SlStopMsg_u (line 200) | typedef union
  function _i16 (line 214) | _i16 sl_Stop(const _u16 timeout)
  type _SlEventMaskSetMsg_u (line 263) | typedef union
  function _i16 (line 282) | _i16 sl_EventMaskSet(const _u8 EventClass ,const _u32 Mask)
  type _SlEventMaskGetMsg_u (line 298) | typedef union
  function _i16 (line 316) | _i16 sl_EventMaskGet(const _u8 EventClass,_u32 *pMask)
  type _SlDeviceMsgGet_u (line 335) | typedef union
  function _i32 (line 352) | _i32 sl_DevGet(const _u8 DeviceGetId,_u8 *pOption,_u8 *pConfigLen, _u8 *...
  type _SlDeviceMsgSet_u (line 402) | typedef union
  function _i32 (line 419) | _i32 sl_DevSet(const _u8 DeviceSetId ,const _u8 Option,const _u8 ConfigL...
  function _SlDrvDeviceEventHandler (line 444) | void _SlDrvDeviceEventHandler(void* pArgs)
  type _SlUartSetModeMsg_u (line 492) | typedef union
  function _i16 (line 509) | _i16 sl_UartSetMode(const SlUartIfParams_t* pUartParams)

FILE: drivers/cc3100/src/driver.c
  type _SlEventPropogationStatus_e (line 83) | typedef _SlEventPropogationStatus_e (*general_callback) (SlDeviceEvent_t...
  function _SlDrvHandleGeneralEvents (line 115) | void _SlDrvHandleGeneralEvents(SlDeviceEvent_t *slGeneralEvent)
  type _SlEventPropogationStatus_e (line 143) | typedef _SlEventPropogationStatus_e (*wlan_callback) (SlWlanEvent_t *);
  function _SlDrvHandleWlanEvents (line 175) | void _SlDrvHandleWlanEvents(SlWlanEvent_t *slWlanEvent)
  type _SlEventPropogationStatus_e (line 201) | typedef _SlEventPropogationStatus_e (*netApp_callback) (SlNetAppEvent_t *);
  function _SlDrvHandleNetAppEvents (line 233) | void _SlDrvHandleNetAppEvents(SlNetAppEvent_t *slNetAppEvent)
  type _SlEventPropogationStatus_e (line 259) | typedef _SlEventPropogationStatus_e (*httpServer_callback) (SlHttpServer...
  function _SlDrvHandleHttpServerEvents (line 291) | void _SlDrvHandleHttpServerEvents(SlHttpServerEvent_t *slHttpServerEvent...
  type _SlEventPropogationStatus_e (line 317) | typedef _SlEventPropogationStatus_e (*sock_callback) (SlSockEvent_t *);
  function _SlDrvHandleSockEvents (line 347) | void _SlDrvHandleSockEvents(SlSockEvent_t *slSockEvent)
  type _SlStatMem_t (line 372) | typedef struct
  function _u8 (line 382) | _u8 _SlDrvProtectAsyncRespSetting(_u8 *pAsyncRsp, _u8 ActionID, _u8 Sock...
  type OpcodeKeyVal_t (line 430) | typedef struct
  function _SlDrvDriverCBInit (line 489) | void _SlDrvDriverCBInit(void)
  function _SlDrvDriverCBDeinit (line 539) | void _SlDrvDriverCBDeinit()
  function _SlDrvRxIrqHandler (line 576) | void _SlDrvRxIrqHandler(void *pValue)
  function _SlReturnVal_t (line 595) | _SlReturnVal_t _SlDrvCmdOp(
  function _SlReturnVal_t (line 643) | _SlReturnVal_t _SlDrvDataReadOp(
  function _SlReturnVal_t (line 728) | _SlReturnVal_t _SlDrvDataWriteOp(
  function _SlReturnVal_t (line 793) | _SlReturnVal_t _SlDrvMsgWrite(_SlCmdCtrl_t  *pCmdCtrl,_SlCmdExt_t  *pCmd...
  function _SlReturnVal_t (line 867) | _SlReturnVal_t _SlDrvMsgRead(void)
  function _SlAsyncEventGenericHandler (line 1148) | void _SlAsyncEventGenericHandler(void)
  function _SlReturnVal_t (line 1200) | _SlReturnVal_t _SlDrvMsgReadCmdCtx(void)
  function _SlReturnVal_t (line 1268) | _SlReturnVal_t _SlDrvMsgReadSpawnCtx(void *pValue)
  function _SlDrvClassifyRxMsg (line 1381) | void _SlDrvClassifyRxMsg(
  function _SlReturnVal_t (line 1440) | _SlReturnVal_t   _SlDrvRxHdrRead(_u8 *pBuf, _u8 *pAlignSize)
  type _SlBasicCmdMsg_u (line 1511) | typedef union
  function _i16 (line 1518) | _i16 _SlDrvBasicCmd(_SlOpcode_t Opcode)
  function _SlReturnVal_t (line 1539) | _SlReturnVal_t _SlDrvCmdSend(
  function _u8 (line 1577) | _u8 _SlDrvWaitForPoolObj(_u8 ActionID, _u8 SocketID)
  function _SlDrvReleasePoolObj (line 1648) | void _SlDrvReleasePoolObj(_u8 ObjIdx)
  function _SlRemoveFromList (line 1705) | void _SlRemoveFromList(_u8 *ListIndex, _u8 ItemIndex)
  function _SlReturnVal_t (line 1745) | _SlReturnVal_t _SlFindAndSetActiveObj(_SlOpcode_t  Opcode, _u8 Sd)
  function _SlDrvSyncObjWaitForever (line 1797) | void  _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj)
  function _SlDrvSyncObjSignal (line 1802) | void  _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj)
  function _SlDrvObjLockWaitForever (line 1807) | void _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj)
  function _SlDrvProtectionObjLockWaitForever (line 1812) | void _SlDrvProtectionObjLockWaitForever()
  function _SlDrvObjUnLock (line 1818) | void _SlDrvObjUnLock(_SlLockObj_t *pLockObj)
  function _SlDrvProtectionObjUnLock (line 1824) | void _SlDrvProtectionObjUnLock()
  function _SlDrvMemZero (line 1830) | void _SlDrvMemZero(void* Addr, _u16 size)
  function _SlDrvResetCmdExt (line 1836) | void _SlDrvResetCmdExt(_SlCmdExt_t* pCmdExt)

FILE: drivers/cc3100/src/flowcont.c
  function _SlDrvFlowContInit (line 51) | void _SlDrvFlowContInit(void)
  function _SlDrvFlowContDeinit (line 63) | void _SlDrvFlowContDeinit(void)

FILE: drivers/cc3100/src/fs.c
  function _u16 (line 59) | _u16 _sl_Strlen(const _u8 *buffer)
  function _u32 (line 72) | _u32 _sl_GetCreateFsMode(_u32 maxSizeInBytes,_u32 accessFlags)
  type _SlFsOpenMsg_u (line 96) | typedef union
  function _i32 (line 112) | _i32 sl_FsOpen(const _u8 *pFileName,const _u32 AccessModeAndMaxSize, _u3...
  type _SlFsCloseMsg_u (line 153) | typedef union
  function _i16 (line 169) | _i16 sl_FsClose(const _i32 FileHdl, const _u8*  pCeritificateFileName,co...
  type _SlFsReadMsg_u (line 201) | typedef union
  function _i32 (line 217) | _i32 sl_FsRead(const _i32 FileHdl,_u32 Offset, _u8*  pData,_u32 Len)
  type _SlFsWriteMsg_u (line 273) | typedef union
  function _i32 (line 289) | _i32 sl_FsWrite(const _i32 FileHdl,_u32 Offset, _u8*  pData,_u32 Len)
  type _SlFsGetInfoMsg_u (line 348) | typedef union
  function _i16 (line 365) | _i16 sl_FsGetInfo(const _u8 *pFileName,const _u32 Token,SlFsFileInfo_t* ...
  type _SlFsDeleteMsg_u (line 392) | typedef union
  function _i16 (line 408) | _i16 sl_FsDel(const _u8 *pFileName,const _u32 Token)

FILE: drivers/cc3100/src/netapp.c
  type _SlNetAppStartStopMsg_u (line 80) | typedef union
  function _i16 (line 96) | _i16 sl_NetAppStart(const _u32 AppBitMap)
  function _i16 (line 121) | _i16 sl_NetAppStop(const _u32 AppBitMap)
  type NetappGetServiceListCMD_t (line 135) | typedef struct
  type _SlNetappGetServiceListMsg_u (line 143) | typedef union
  function _i16 (line 159) | _i16 sl_NetAppGetServiceList(const _u8  IndexOffest,
  type NetappMdnsSetService_t (line 249) | typedef struct
  type _SlNetappMdnsRegisterServiceMsg_u (line 258) | typedef union
  function _i16 (line 348) | _i16 sl_NetAppMDNSRegisterUnregisterService(	const _i8* 		pServiceName,
  function _i16 (line 433) | _i16 sl_NetAppMDNSRegisterService(	const _i8* 		pServiceName,
  function _i16 (line 483) | _i16 sl_NetAppMDNSUnRegisterService(	const _i8* 		pServiceName,
  type _GetHostByServiceCommand_t (line 534) | typedef struct
  type _GetHostByServiceIPv4AsyncResponse_t (line 558) | typedef struct
  type _GetHostByServiceIPv6AsyncResponse_t (line 567) | typedef struct
  type _GetHostByServiceAsyncResponseAttribute_u (line 576) | typedef union
  type _GetHostByServiceAsyncResponse_t (line 586) | typedef struct
  type _SlGetHostByServiceMsg_u (line 596) | typedef union
  function _i32 (line 614) | _i32 sl_NetAppDnsGetHostByService(_i8 		*pServiceName,	/* string contain...
  function _sl_HandleAsync_DnsGetHostByService (line 760) | void _sl_HandleAsync_DnsGetHostByService(void *pVoidBuf)
  function _sl_HandleAsync_DnsGetHostByAddr (line 829) | void _sl_HandleAsync_DnsGetHostByAddr(void *pVoidBuf)
  type _GetHostByNameAsyncResponse_u (line 839) | typedef union
  type _SlGetHostByNameMsg_u (line 845) | typedef union
  function _i16 (line 860) | _i16 sl_NetAppDnsGetHostByName(_i8 * hostname,const  _u16 usNameLen, _u3...
  function _sl_HandleAsync_DnsGetHostByName (line 917) | void _sl_HandleAsync_DnsGetHostByName(void *pVoidBuf)
  function CopyPingResultsToReport (line 942) | void CopyPingResultsToReport(_PingReportResponse_t *pResults,SlPingRepor...
  function _sl_HandleAsync_PingResponse (line 955) | void _sl_HandleAsync_PingResponse(void *pVoidBuf)
  type _SlPingStartMsg_u (line 986) | typedef union
  type _SlPingStatus_e (line 993) | typedef enum
  function _i16 (line 1001) | _i16 sl_NetAppPingStart(const SlPingStartCommand_t* pPingParams,const _u...
  type _SlNetAppMsgSet_u (line 1082) | typedef union
  function _i32 (line 1098) | _i32 sl_NetAppSet(const _u8 AppId ,const _u8 Option,const _u8 OptionLen,...
  type _SlNetAppMsgSendTokenValue_u (line 1122) | typedef union
  function _u16 (line 1138) | _u16 _sl_NetAppSendTokenValue(slHttpServerData_t * Token_value)
  type _SlNetAppMsgGet_u (line 1163) | typedef union
  function _i32 (line 1178) | _i32 sl_NetAppGet(const _u8 AppId,const  _u8 Option,_u8 *pOptionLen, _u8...
  function _SlDrvNetAppEventHandler (line 1215) | void _SlDrvNetAppEventHandler(void* pArgs)

FILE: drivers/cc3100/src/netcfg.c
  type _SlNetCfgMsgSet_u (line 49) | typedef union
  function _i32 (line 64) | _i32 sl_NetCfgSet(const _u8 ConfigId ,const _u8 ConfigOpt,const _u8 Conf...
  type _SlNetCfgMsgGet_u (line 89) | typedef union
  function _i32 (line 104) | _i32 sl_NetCfgGet(const _u8 ConfigId, _u8 *pConfigOpt,_u8 *pConfigLen, _...

FILE: drivers/cc3100/src/nonos.c
  type _SlNonOsSpawnEntry_t (line 57) | typedef struct
  type _SlNonOsCB_t (line 63) | typedef struct
  function _SlNonOsRetVal_t (line 71) | _SlNonOsRetVal_t _SlNonOsSemSet(_SlNonOsSemObj_t* pSemObj , _SlNonOsSemO...
  function _SlNonOsRetVal_t (line 77) | _SlNonOsRetVal_t _SlNonOsSemGet(_SlNonOsSemObj_t* pSyncObj, _SlNonOsSemO...
  function _SlNonOsRetVal_t (line 118) | _SlNonOsRetVal_t _SlNonOsSpawn(_SlSpawnEntryFunc_t pEntry , void* pValue...
  function _SlNonOsRetVal_t (line 143) | _SlNonOsRetVal_t _SlNonOsMainLoopTask(void)

FILE: drivers/cc3100/src/socket.c
  function _sl_BuildAddress (line 93) | void _sl_BuildAddress(const SlSockAddr_t *addr, _SocketAddrCommand_u    ...
  function _u16 (line 122) | _u16 _sl_TruncatePayloadByProtocol(const _i16 sd, const _u16 length)
  function _sl_ParseAddress (line 146) | void _sl_ParseAddress(_SocketAddrResponse_u    *pRsp, SlSockAddr_t *addr...
  type _SlSockSocketMsg_u (line 177) | typedef union
  function _i16 (line 195) | _i16 sl_Socket(_i16 Domain, _i16 Type, _i16 Protocol)
  type _SlSockCloseMsg_u (line 219) | typedef union
  function _i16 (line 235) | _i16 sl_Close(_i16 sd)
  type _SlSockBindMsg_u (line 250) | typedef union
  function _i16 (line 257) | _i16 sl_Bind(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
  type _SlSendtoMsg_u (line 302) | typedef union
  function _i16 (line 309) | _i16 sl_SendTo(_i16 sd, const void *pBuf, _i16 Len, _i16 flags, const Sl...
  type _SlRecvfromMsg_u (line 379) | typedef union
  function _i16 (line 395) | _i16 sl_RecvFrom(_i16 sd, void *buf, _i16 Len, _i16 flags, SlSockAddr_t ...
  type _SlSockConnectMsg_u (line 474) | typedef union
  function _i16 (line 481) | _i16 sl_Connect(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
  function _sl_HandleAsync_Connect (line 553) | void _sl_HandleAsync_Connect(void *pVoidBuf)
  type _SlSendMsg_u (line 575) | typedef union
  function _i16 (line 589) | _i16 sl_Send(_i16 sd, const void *pBuf, _i16 Len, _i16 flags)
  type _SlListenMsg_u (line 645) | typedef union
  function _i16 (line 662) | _i16 sl_Listen(_i16 sd, _i16 backlog)
  type _SlSockAcceptMsg_u (line 678) | typedef union
  function _i16 (line 695) | _i16 sl_Accept(_i16 sd, SlSockAddr_t *addr, SlSocklen_t *addrlen)
  function _u32 (line 788) | _u32 sl_Htonl( _u32 val )
  function _u16 (line 809) | _u16 sl_Htons( _u16 val )
  function _sl_HandleAsync_Accept (line 829) | void _sl_HandleAsync_Accept(void *pVoidBuf)
  function _sl_HandleAsync_Select (line 848) | void _sl_HandleAsync_Select(void *pVoidBuf)
  type _SlRecvMsg_u (line 869) | typedef union
  function _i16 (line 886) | _i16 sl_Recv(_i16 sd, void *pBuf, _i16 Len, _i16 flags)
  type _SlSetSockOptMsg_u (line 919) | typedef union
  function _i16 (line 933) | _i16 sl_SetSockOpt(_i16 sd, _i16 level, _i16 optname, const void *optval...
  type _SlGetSockOptMsg_u (line 957) | typedef union
  function _i16 (line 973) | _i16 sl_GetSockOpt(_i16 sd, _i16 level, _i16 optname, void *optval, SlSo...
  type _SlSelectMsg_u (line 1010) | typedef union
  function _i16 (line 1029) | _i16 sl_Select(_i16 nfds, SlFdSet_t *readsds, SlFdSet_t *writesds, SlFdS...
  function SL_FD_SET (line 1116) | void SL_FD_SET(_i16 fd, SlFdSet_t *fdset)
  function SL_FD_CLR (line 1123) | void SL_FD_CLR(_i16 fd, SlFdSet_t *fdset)
  function _i16 (line 1130) | _i16  SL_FD_ISSET(_i16 fd, SlFdSet_t *fdset)
  function SL_FD_ZERO (line 1141) | void SL_FD_ZERO(SlFdSet_t *fdset)

FILE: drivers/cc3100/src/spawn.c
  type _SlInternalSpawnEntry_t (line 49) | typedef struct _SlInternalSpawnEntry_t
  type _SlInternalSpawnCB_t (line 56) | typedef struct
  function _SlInternalSpawnTaskEntry (line 69) | void _SlInternalSpawnTaskEntry()
  function _i16 (line 153) | _i16 _SlInternalSpawn(_SlSpawnEntryFunc_t pEntry , void* pValue , _u32 f...

FILE: drivers/cc3100/src/wlan.c
  type _WlanConnectCmd_t (line 59) | typedef struct
  type _SlWlanConnectMsg_u (line 65) | typedef union
  function _i16 (line 73) | _i16 sl_WlanConnect(const _i8*  pName,const _i16 NameLen,const _u8 *pMac...
  function _i16 (line 213) | _i16 sl_WlanDisconnect(void)
  type _SlPolicyMsg_u (line 222) | typedef union
  function _i16 (line 237) | _i16 sl_WlanPolicySet(const _u8 Type , const _u8 Policy, _u8 *pVal,const...
  type _SlPolicyGetMsg_u (line 262) | typedef union
  function _i16 (line 277) | _i16 sl_WlanPolicyGet(const _u8 Type ,_u8 Policy,_u8 *pVal,_u8 *pValLen)
  type _SlProfileParams_t (line 319) | typedef struct
  type _SlProfileAddMsg_u (line 325) | typedef union
  function _i16 (line 334) | _i16 sl_WlanProfileAdd(const _i8*  pName,const  _i16 NameLen,const  _u8 ...
  type _SlProfileGetMsg_u (line 494) | typedef union
  function _i16 (line 510) | _i16 sl_WlanProfileGet(const _i16 Index,_i8*  pName, _i16 *pNameLen, _u8...
  type _SlProfileDelMsg_u (line 553) | typedef union
  function _i16 (line 569) | _i16 sl_WlanProfileDel(const _i16 Index)
  type _SlWlanGetNetworkListMsg_u (line 585) | typedef union
  function _i16 (line 601) | _i16 sl_WlanGetNetworkList(const _u8 Index,const _u8 Count, Sl_WlanNetwo...
  type _SlrxFilterAddMsg_u (line 635) | typedef union
  type _SlRxFilterSetMsg_u (line 643) | typedef union _SlRxFilterSetMsg_u
  type _SlRxFilterGetMsg_u (line 651) | typedef union _SlRxFilterGetMsg_u
  function SlrxFilterID_t (line 670) | SlrxFilterID_t sl_WlanRxFilterAdd(	SlrxFilterRuleType_t 				RuleType,
  function _i16 (line 708) | _i16 sl_WlanRxFilterSet(const SLrxFilterOperation_t RxFilterOperation,
  function _i16 (line 744) | _i16 sl_WlanRxFilterGet(const SLrxFilterOperation_t RxFilterOperation,
  function _i16 (line 779) | _i16 sl_WlanRxStatStart(void)
  function _i16 (line 786) | _i16 sl_WlanRxStatStop(void)
  function _i16 (line 793) | _i16 sl_WlanRxStatGet(SlGetRxStatResponse_t *pRxStat,const _u32 Flags)
  function _i16 (line 810) | _i16 sl_WlanSmartConfigStop(void)
  type _SlSmartConfigStart_t (line 822) | typedef struct
  type _SlSmartConfigStartMsg_u (line 828) | typedef union
  function _i16 (line 843) | _i16 sl_WlanSmartConfigStart( const _u32    groupIdBitmask,
  type _SlwlanSetModeMsg_u (line 877) | typedef union
  function _i16 (line 896) | _i16 sl_WlanSetMode(const _u8    mode)
  type _SlWlanCfgSetMsg_u (line 914) | typedef union
  function _i16 (line 930) | _i16 sl_WlanSet(const _u16 ConfigId ,const _u16 ConfigOpt,const _u16 Con...
  type _SlWlanCfgMsgGet_u (line 953) | typedef union
  function _i16 (line 968) | _i16 sl_WlanGet(const _u16 ConfigId, _u16 *pConfigOpt,_u16 *pConfigLen, ...

FILE: drivers/cyw43/cyw43.h
  type cyw43_t (line 50) | typedef struct _cyw43_t {
  function cyw43_wifi_scan_active (line 97) | static inline bool cyw43_wifi_scan_active(cyw43_t *self) {
  function cyw43_wifi_ap_get_ssid (line 104) | static inline void cyw43_wifi_ap_get_ssid(cyw43_t *self, size_t *len, co...
  function cyw43_wifi_ap_set_channel (line 109) | static inline void cyw43_wifi_ap_set_channel(cyw43_t *self, uint32_t cha...
  function cyw43_wifi_ap_set_ssid (line 113) | static inline void cyw43_wifi_ap_set_ssid(cyw43_t *self, size_t len, con...
  function cyw43_wifi_ap_set_password (line 118) | static inline void cyw43_wifi_ap_set_password(cyw43_t *self, size_t len,...
  function cyw43_wifi_ap_set_auth (line 123) | static inline void cyw43_wifi_ap_set_auth(cyw43_t *self, uint32_t auth) {

FILE: drivers/cyw43/cyw43_ctrl.c
  function cyw43_get_be16 (line 63) | static inline uint32_t cyw43_get_be16(const uint8_t *buf) {
  function cyw43_get_be32 (line 67) | static inline uint32_t cyw43_get_be32(const uint8_t *buf) {
  function cyw43_delay_ms (line 71) | static inline void cyw43_delay_ms(uint32_t ms) {
  function cyw43_init (line 78) | void cyw43_init(cyw43_t *self) {
  function cyw43_deinit (line 104) | void cyw43_deinit(cyw43_t *self) {
  function STATIC (line 130) | STATIC int cyw43_ensure_up(cyw43_t *self) {
  function STATIC (line 179) | STATIC void cyw43_poll_func(void) {
  function cyw43_cb_read_host_interrupt_pin (line 219) | int cyw43_cb_read_host_interrupt_pin(void *cb_data) {
  function cyw43_cb_ensure_awake (line 227) | void cyw43_cb_ensure_awake(void *cb_data) {
  function STATIC (line 251) | STATIC void cyw43_dump_async_event(const cyw43_async_event_t *ev) {
  function cyw43_cb_process_async_event (line 269) | void cyw43_cb_process_async_event(void *cb_data, const cyw43_async_event...
  function cyw43_ioctl (line 372) | int cyw43_ioctl(cyw43_t *self, uint32_t cmd, size_t len, uint8_t *buf, u...
  function cyw43_send_ethernet (line 385) | int cyw43_send_ethernet(cyw43_t *self, int itf, size_t len, const void *...
  function STATIC (line 401) | STATIC int cyw43_wifi_on(cyw43_t *self, uint32_t country) {
  function cyw43_wifi_pm (line 419) | int cyw43_wifi_pm(cyw43_t *self, uint32_t pm_in) {
  function cyw43_wifi_get_mac (line 439) | int cyw43_wifi_get_mac(cyw43_t *self, int itf, uint8_t mac[6]) {
  function cyw43_wifi_set_up (line 446) | void cyw43_wifi_set_up(cyw43_t *self, int itf, bool up) {
  function cyw43_wifi_scan (line 479) | int cyw43_wifi_scan(cyw43_t *self, cyw43_wifi_scan_options_t *opts, void...
  function cyw43_wifi_link_status (line 501) | int cyw43_wifi_link_status(cyw43_t *self, int itf) {
  function cyw43_wifi_join (line 523) | int cyw43_wifi_join(cyw43_t *self, size_t ssid_len, const uint8_t *ssid,...
  function cyw43_wifi_leave (line 549) | int cyw43_wifi_leave(cyw43_t *self, int itf) {
  function STATIC (line 557) | STATIC void cyw43_wifi_ap_init(cyw43_t *self) {
  function STATIC (line 568) | STATIC void cyw43_wifi_ap_set_up(cyw43_t *self, bool up) {
  function cyw43_wifi_ap_get_stas (line 579) | void cyw43_wifi_ap_get_stas(cyw43_t *self, int *num_stas, uint8_t *macs) {

FILE: drivers/cyw43/cyw43_ll.h
  type cyw43_ev_scan_result_t (line 60) | typedef struct _cyw43_ev_scan_result_t {
  type cyw43_async_event_t (line 73) | typedef struct _cyw43_async_event_t {
  type cyw43_wifi_scan_options_t (line 87) | typedef struct _cyw43_wifi_scan_options_t {
  type cyw43_ll_t (line 104) | typedef struct _cyw43_ll_t {

FILE: drivers/cyw43/cyw43_lwip.c
  function STATIC (line 37) | STATIC void cyw43_ethernet_trace(cyw43_t *self, struct netif *netif, siz...
  function STATIC (line 69) | STATIC err_t cyw43_netif_output(struct netif *netif, struct pbuf *p) {
  function STATIC (line 83) | STATIC err_t cyw43_netif_init(struct netif *netif) {
  function cyw43_tcpip_init (line 93) | void cyw43_tcpip_init(cyw43_t *self, int itf) {
  function cyw43_tcpip_deinit (line 142) | void cyw43_tcpip_deinit(cyw43_t *self, int itf) {
  function cyw43_cb_process_ethernet (line 161) | void cyw43_cb_process_ethernet(void *cb_data, int itf, size_t len, const...
  function cyw43_tcpip_set_link_up (line 178) | void cyw43_tcpip_set_link_up(cyw43_t *self, int itf) {
  function cyw43_tcpip_set_link_down (line 182) | void cyw43_tcpip_set_link_down(cyw43_t *self, int itf) {
  function cyw43_tcpip_link_status (line 186) | int cyw43_tcpip_link_status(cyw43_t *self, int itf) {

FILE: drivers/cyw43/cywbt.c
  function STATIC (line 50) | STATIC void cywbt_wait_cts_low(void) {
  function STATIC (line 93) | STATIC int cywbt_hci_cmd(int ogf, int ocf, size_t param_len, const uint8...
  function STATIC (line 105) | STATIC void put_le16(uint8_t *buf, uint16_t val) {
  function STATIC (line 110) | STATIC void put_le32(uint8_t *buf, uint32_t val) {
  function STATIC (line 117) | STATIC int cywbt_set_baudrate(uint32_t baudrate) {
  function STATIC (line 125) | STATIC int cywbt_download_firmware(const uint8_t *firmware) {
  function mp_bluetooth_hci_controller_init (line 168) | int mp_bluetooth_hci_controller_init(void) {
  function mp_bluetooth_hci_controller_deinit (line 230) | int mp_bluetooth_hci_controller_deinit(void) {
  function mp_bluetooth_hci_controller_sleep_maybe (line 240) | int mp_bluetooth_hci_controller_sleep_maybe(void) {
  function mp_bluetooth_hci_controller_woken (line 251) | bool mp_bluetooth_hci_controller_woken(void) {
  function mp_bluetooth_hci_controller_wakeup (line 268) | int mp_bluetooth_hci_controller_wakeup(void) {

FILE: drivers/dht/dht.c
  function STATIC (line 40) | STATIC mp_obj_t dht_readinto(mp_obj_t pin_in, mp_obj_t buf_in) {

FILE: drivers/dht/dht.py
  class DHTBase (line 10) | class DHTBase:
    method __init__ (line 11) | def __init__(self, pin):
    method measure (line 15) | def measure(self):
  class DHT11 (line 22) | class DHT11(DHTBase):
    method humidity (line 23) | def humidity(self):
    method temperature (line 26) | def temperature(self):
  class DHT22 (line 30) | class DHT22(DHTBase):
    method humidity (line 31) | def humidity(self):
    method temperature (line 34) | def temperature(self):

FILE: drivers/display/lcd160cr.py
  class LCD160CR (line 33) | class LCD160CR:
    method __init__ (line 34) | def __init__(self, connect=None, *, pwr=None, i2c=None, spi=None, i2c_...
    method _send (line 81) | def _send(self, cmd):
    method _fcmd2 (line 93) | def _fcmd2(self, fmt, a0, a1=0, a2=0):
    method _fcmd2b (line 98) | def _fcmd2b(self, fmt, a0, a1, a2, a3, a4=0):
    method _waitfor (line 103) | def _waitfor(self, n, buf):
    method oflush (line 114) | def oflush(self, n=255):
    method iflush (line 125) | def iflush(self):
    method rgb (line 138) | def rgb(r, g, b):
    method clip_line (line 142) | def clip_line(c, w, h):
    method set_power (line 206) | def set_power(self, on):
    method set_orient (line 210) | def set_orient(self, orient):
    method set_brightness (line 219) | def set_brightness(self, value):
    method set_i2c_addr (line 222) | def set_i2c_addr(self, addr):
    method set_uart_baudrate (line 228) | def set_uart_baudrate(self, baudrate):
    method set_startup_deco (line 235) | def set_startup_deco(self, value):
    method save_to_flash (line 238) | def save_to_flash(self):
    method set_pixel (line 243) | def set_pixel(self, x, y, c):
    method get_pixel (line 246) | def get_pixel(self, x, y):
    method get_line (line 258) | def get_line(self, x, y, buf):
    method screen_dump (line 272) | def screen_dump(self, buf, x=0, y=0, w=None, h=None):
    method screen_load (line 295) | def screen_load(self, buf):
    method set_pos (line 312) | def set_pos(self, x, y):
    method set_text_color (line 315) | def set_text_color(self, fg, bg):
    method set_font (line 318) | def set_font(self, font, scale=0, bold=0, trans=0, scroll=0):
    method write (line 326) | def write(self, s):
    method set_pen (line 332) | def set_pen(self, line, fill):
    method erase (line 335) | def erase(self):
    method dot (line 338) | def dot(self, x, y):
    method rect (line 342) | def rect(self, x, y, w, h, cmd=0x72):
    method rect_outline (line 371) | def rect_outline(self, x, y, w, h):
    method rect_interior (line 374) | def rect_interior(self, x, y, w, h):
    method line (line 377) | def line(self, x1, y1, x2, y2):
    method dot_no_clip (line 386) | def dot_no_clip(self, x, y):
    method rect_no_clip (line 389) | def rect_no_clip(self, x, y, w, h):
    method rect_outline_no_clip (line 392) | def rect_outline_no_clip(self, x, y, w, h):
    method rect_interior_no_clip (line 395) | def rect_interior_no_clip(self, x, y, w, h):
    method line_no_clip (line 398) | def line_no_clip(self, x1, y1, x2, y2):
    method poly_dot (line 401) | def poly_dot(self, data):
    method poly_line (line 407) | def poly_line(self, data):
    method touch_config (line 415) | def touch_config(self, calib=False, save=False, irq=None):
    method is_touched (line 418) | def is_touched(self):
    method get_touch (line 424) | def get_touch(self):
    method set_spi_win (line 432) | def set_spi_win(self, x, y, w, h):
    method fast_spi (line 438) | def fast_spi(self, flush=True):
    method show_framebuf (line 444) | def show_framebuf(self, buf):
    method set_scroll (line 447) | def set_scroll(self, on):
    method set_scroll_win (line 450) | def set_scroll_win(self, win, x=-1, y=0, w=0, h=0, vec=0, pat=0, fill=...
    method set_scroll_win_param (line 454) | def set_scroll_win_param(self, win, param, value):
    method set_scroll_buf (line 457) | def set_scroll_buf(self, s):
    method jpeg_start (line 464) | def jpeg_start(self, l):
    method jpeg_data (line 470) | def jpeg_data(self, buf):
    method jpeg (line 473) | def jpeg(self, buf):
    method feed_wdt (line 477) | def feed_wdt(self):
    method reset (line 480) | def reset(self):

FILE: drivers/display/lcd160cr_test.py
  function get_lcd (line 7) | def get_lcd(lcd):
  function show_adc (line 13) | def show_adc(lcd, adc):
  function test_features (line 40) | def test_features(lcd, orient=lcd160cr.PORTRAIT):
  function test_mandel (line 139) | def test_mandel(lcd, orient=lcd160cr.PORTRAIT):
  function test_all (line 179) | def test_all(lcd, orient=lcd160cr.PORTRAIT):

FILE: drivers/display/ssd1306.py
  class SSD1306 (line 29) | class SSD1306(framebuf.FrameBuffer):
    method __init__ (line 30) | def __init__(self, width, height, external_vcc):
    method init_display (line 39) | def init_display(self):
    method poweroff (line 78) | def poweroff(self):
    method poweron (line 81) | def poweron(self):
    method contrast (line 84) | def contrast(self, contrast):
    method invert (line 88) | def invert(self, invert):
    method rotate (line 91) | def rotate(self, rotate):
    method show (line 95) | def show(self):
  class SSD1306_I2C (line 112) | class SSD1306_I2C(SSD1306):
    method __init__ (line 113) | def __init__(self, width, height, i2c, addr=0x3C, external_vcc=False):
    method write_cmd (line 120) | def write_cmd(self, cmd):
    method write_data (line 125) | def write_data(self, buf):
  class SSD1306_SPI (line 130) | class SSD1306_SPI(SSD1306):
    method __init__ (line 131) | def __init__(self, width, height, spi, dc, res, cs, external_vcc=False):
    method write_cmd (line 149) | def write_cmd(self, cmd):
    method write_data (line 157) | def write_data(self, buf):

FILE: drivers/memory/spiflash.c
  function STATIC (line 59) | STATIC void mp_spiflash_acquire_bus(mp_spiflash_t *self) {
  function STATIC (line 66) | STATIC void mp_spiflash_release_bus(mp_spiflash_t *self) {
  function STATIC (line 73) | STATIC void mp_spiflash_write_cmd_data(mp_spiflash_t *self, uint8_t cmd,...
  function STATIC (line 85) | STATIC void mp_spiflash_transfer_cmd_addr_data(mp_spiflash_t *self, uint...
  function STATIC (line 108) | STATIC uint32_t mp_spiflash_read_cmd(mp_spiflash_t *self, uint8_t cmd, s...
  function STATIC (line 122) | STATIC void mp_spiflash_read_data(mp_spiflash_t *self, uint32_t addr, si...
  function STATIC (line 133) | STATIC void mp_spiflash_write_cmd(mp_spiflash_t *self, uint8_t cmd) {
  function STATIC (line 137) | STATIC int mp_spiflash_wait_sr(mp_spiflash_t *self, uint8_t mask, uint8_...
  function STATIC (line 149) | STATIC int mp_spiflash_wait_wel1(mp_spiflash_t *self) {
  function STATIC (line 153) | STATIC int mp_spiflash_wait_wip0(mp_spiflash_t *self) {
  function mp_spiflash_deepsleep_internal (line 157) | static inline void mp_spiflash_deepsleep_internal(mp_spiflash_t *self, i...
  function mp_spiflash_init (line 161) | void mp_spiflash_init(mp_spiflash_t *self) {
  function mp_spiflash_deepsleep (line 200) | void mp_spiflash_deepsleep(mp_spiflash_t *self, int value) {
  function STATIC (line 210) | STATIC int mp_spiflash_erase_block_internal(mp_spiflash_t *self, uint32_...
  function STATIC (line 228) | STATIC int mp_spiflash_write_page(mp_spiflash_t *self, uint32_t addr, si...
  function mp_spiflash_erase_block (line 249) | int mp_spiflash_erase_block(mp_spiflash_t *self, uint32_t addr) {
  function mp_spiflash_read (line 256) | void mp_spiflash_read(mp_spiflash_t *self, uint32_t addr, size_t len, ui...
  function mp_spiflash_write (line 265) | int mp_spiflash_write(mp_spiflash_t *self, uint32_t addr, size_t len, co...
  function mp_spiflash_cached_read (line 292) | void mp_spiflash_cached_read(mp_spiflash_t *self, uint32_t addr, size_t ...
  function STATIC (line 332) | STATIC void mp_spiflash_cache_flush_internal(mp_spiflash_t *self) {
  function mp_spiflash_cache_flush (line 359) | void mp_spiflash_cache_flush(mp_spiflash_t *self) {
  function STATIC (line 365) | STATIC int mp_spiflash_cached_write_part(mp_spiflash_t *self, uint32_t a...
  function mp_spiflash_cached_write (line 444) | int mp_spiflash_cached_write(mp_spiflash_t *self, uint32_t addr, size_t ...

FILE: drivers/memory/spiflash.h
  type _mp_spiflash_t (line 39) | struct _mp_spiflash_t
  type mp_spiflash_cache_t (line 44) | typedef struct _mp_spiflash_cache_t {
  type mp_spiflash_config_t (line 51) | typedef struct _mp_spiflash_config_t {
  type mp_spiflash_t (line 69) | typedef struct _mp_spiflash_t {

FILE: drivers/nrf24l01/nrf24l01.py
  class NRF24L01 (line 53) | class NRF24L01:
    method __init__ (line 54) | def __init__(self, spi, cs, ce, channel=46, payload_size=16):
    method init_spi (line 103) | def init_spi(self, baudrate):
    method reg_read (line 111) | def reg_read(self, reg):
    method reg_write_bytes (line 118) | def reg_write_bytes(self, reg, buf):
    method reg_write (line 125) | def reg_write(self, reg, value):
    method flush_rx (line 133) | def flush_rx(self):
    method flush_tx (line 138) | def flush_tx(self):
    method set_power_speed (line 144) | def set_power_speed(self, power, speed):
    method set_crc (line 149) | def set_crc(self, length):
    method set_channel (line 159) | def set_channel(self, channel):
    method open_tx_pipe (line 163) | def open_tx_pipe(self, address):
    method open_rx_pipe (line 172) | def open_rx_pipe(self, pipe_id, address):
    method start_listening (line 184) | def start_listening(self):
    method stop_listening (line 196) | def stop_listening(self):
    method any (line 202) | def any(self):
    method recv (line 205) | def recv(self):
    method send (line 217) | def send(self, buf, timeout=500):
    method send_start (line 227) | def send_start(self, buf):
    method send_done (line 245) | def send_done(self):

FILE: drivers/nrf24l01/nrf24l01test.py
  function master (line 31) | def master():
  function slave (line 96) | def slave():

FILE: drivers/onewire/ds18x20.py
  class DS18X20 (line 11) | class DS18X20:
    method __init__ (line 12) | def __init__(self, onewire):
    method scan (line 16) | def scan(self):
    method convert_temp (line 19) | def convert_temp(self):
    method read_scratch (line 24) | def read_scratch(self, rom):
    method write_scratch (line 33) | def write_scratch(self, rom, buf):
    method read_temp (line 39) | def read_temp(self, rom):

FILE: drivers/onewire/onewire.py
  class OneWireError (line 8) | class OneWireError(Exception):
  class OneWire (line 12) | class OneWire:
    method __init__ (line 17) | def __init__(self, pin):
    method reset (line 21) | def reset(self, required=False):
    method readbit (line 27) | def readbit(self):
    method readbyte (line 30) | def readbyte(self):
    method readinto (line 33) | def readinto(self, buf):
    method writebit (line 37) | def writebit(self, value):
    method writebyte (line 40) | def writebyte(self, value):
    method write (line 43) | def write(self, buf):
    method select_rom (line 47) | def select_rom(self, rom):
    method scan (line 52) | def scan(self):
    method _search_rom (line 64) | def _search_rom(self, l_rom, diff):
    method crc8 (line 92) | def crc8(self, data):

FILE: drivers/sdcard/sdcard.py
  class SDCard (line 41) | class SDCard:
    method __init__ (line 42) | def __init__(self, spi, cs):
    method init_spi (line 56) | def init_spi(self, baudrate):
    method init_card (line 66) | def init_card(self):
    method init_card_v1 (line 116) | def init_card_v1(self):
    method init_card_v2 (line 125) | def init_card_v2(self):
    method cmd (line 137) | def cmd(self, cmd, arg, crc, final=0, release=True, skip1=False):
    method readinto (line 171) | def readinto(self, buf):
    method write (line 197) | def write(self, token, buf):
    method write_token (line 219) | def write_token(self, token):
    method readblocks (line 230) | def readblocks(self, block_num, buf):
    method writeblocks (line 257) | def writeblocks(self, block_num, buf):
    method ioctl (line 280) | def ioctl(self, op, arg):

FILE: drivers/sdcard/sdtest.py
  function sdtest (line 6) | def sdtest():

FILE: drivers/wiznet5k/ethernet/socket.h
  type sockint_kind (line 339) | typedef enum
  type ctlsock_type (line 353) | typedef enum
  type sockopt_type (line 370) | typedef enum

FILE: drivers/wiznet5k/ethernet/w5200/w5200.c
  function WIZCHIP_READ (line 74) | uint8_t WIZCHIP_READ(uint32_t AddrSel) {
  function WIZCHIP_WRITE (line 94) | void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb) {
  function WIZCHIP_READ_BUF (line 111) | void WIZCHIP_READ_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) {
  function WIZCHIP_WRITE_BUF (line 128) | void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) {
  function getSn_TX_FSR (line 145) | uint16_t getSn_TX_FSR(uint8_t sn) {
  function getSn_RX_RSR (line 156) | uint16_t getSn_RX_RSR(uint8_t sn) {
  function wiz_send_data (line 167) | void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len) {
  function wiz_recv_data (line 189) | void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len) {
  function wiz_recv_ignore (line 211) | void wiz_recv_ignore(uint8_t sn, uint16_t len) {

FILE: drivers/wiznet5k/ethernet/w5500/w5500.c
  function Chip_SSP_ReadFrames_Blocking (line 62) | static void Chip_SSP_ReadFrames_Blocking(int dummy, uint8_t *buf, uint32...
  function Chip_SSP_WriteFrames_Blocking (line 66) | static void Chip_SSP_WriteFrames_Blocking(int dummy, const uint8_t *buf,...
  function WIZCHIP_READ (line 70) | uint8_t  WIZCHIP_READ(uint32_t AddrSel)
  function WIZCHIP_WRITE (line 95) | void     WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb )
  function WIZCHIP_READ_BUF (line 118) | void     WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len)
  function WIZCHIP_WRITE_BUF (line 143) | void     WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len)
  function getSn_TX_FSR (line 169) | uint16_t getSn_TX_FSR(uint8_t sn)
  function getSn_RX_RSR (line 187) | uint16_t getSn_RX_RSR(uint8_t sn)
  function wiz_send_data (line 204) | void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len)
  function wiz_recv_data (line 221) | void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len)
  function wiz_recv_ignore (line 239) | void wiz_recv_ignore(uint8_t sn, uint16_t len)

FILE: drivers/wiznet5k/ethernet/wizchip_conf.c
  function wizchip_cris_enter (line 59) | void 	  wizchip_cris_enter(void)           {}
  function wizchip_cris_exit (line 65) | void 	  wizchip_cris_exit(void)          {}
  function wizchip_cs_select (line 71) | void 	wizchip_cs_select(void)            {}
  function wizchip_cs_deselect (line 77) | void 	wizchip_cs_deselect(void)          {}
  function wizchip_bus_readbyte (line 85) | uint8_t wizchip_bus_readbyte(uint32_t AddrSel) { return * ((volatile uin...
  function wizchip_bus_writebyte (line 94) | void 	wizchip_bus_writebyte(uint32_t AddrSel, uint8_t wb)  { *((volatile...
  function wizchip_spi_readbytes (line 101) | void wizchip_spi_readbytes(uint8_t *buf, uint32_t len) {}
  function wizchip_spi_writebytes (line 107) | void wizchip_spi_writebytes(const uint8_t *buf, uint32_t len) {}
  function reg_wizchip_cris_cbfunc (line 132) | void reg_wizchip_cris_cbfunc(void(*cris_en)(void), void(*cris_ex)(void))
  function reg_wizchip_cs_cbfunc (line 146) | void reg_wizchip_cs_cbfunc(void(*cs_sel)(void), void(*cs_desel)(void))
  function reg_wizchip_bus_cbfunc (line 160) | void reg_wizchip_bus_cbfunc(uint8_t(*bus_rb)(uint32_t addr), void (*bus_...
  function reg_wizchip_spi_cbfunc (line 176) | void reg_wizchip_spi_cbfunc(void (*spi_rb)(uint8_t *, uint32_t), void (*...
  function ctlwizchip (line 192) | int8_t ctlwizchip(ctlwizchip_type cwtype, void* arg)
  function ctlnetwork (line 268) | int8_t ctlnetwork(ctlnetwork_type cntype, void* arg)
  function wizchip_sw_reset (line 296) | void wizchip_sw_reset(void)
  function wizchip_init (line 310) | int8_t wizchip_init(uint8_t* txsize, uint8_t* rxsize)
  function wizchip_clrinterrupt (line 339) | void wizchip_clrinterrupt(intr_kind intr)
  function intr_kind (line 363) | intr_kind wizchip_getinterrupt(void)
  function wizchip_setinterruptmask (line 387) | void wizchip_setinterruptmask(intr_kind intr)
  function intr_kind (line 411) | intr_kind wizchip_getinterruptmask(void)
  function wizphy_getphylink (line 435) | int8_t wizphy_getphylink(void)
  function wizphy_getphypmode (line 456) | int8_t wizphy_getphypmode(void)
  function wizphy_reset (line 477) | void wizphy_reset(void)
  function wizphy_setphyconf (line 487) | void wizphy_setphyconf(wiz_PhyConf* phyconf)
  function wizphy_getphyconf (line 517) | void wizphy_getphyconf(wiz_PhyConf* phyconf)
  function wizphy_getphystat (line 556) | void wizphy_getphystat(wiz_PhyConf* phyconf)
  function wizphy_setphypmode (line 563) | int8_t wizphy_setphypmode(uint8_t pmode)
  function wizchip_setnetinfo (line 589) | void wizchip_setnetinfo(wiz_NetInfo* pnetinfo)
  function wizchip_getnetinfo (line 608) | void wizchip_getnetinfo(wiz_NetInfo* pnetinfo)
  function wizchip_setnetmode (line 633) | int8_t wizchip_setnetmode(netmode_type netmode)
  function netmode_type (line 647) | netmode_type wizchip_getnetmode(void)
  function wizchip_settimeout (line 652) | void wizchip_settimeout(wiz_NetTimeout* nettime)
  function wizchip_gettimeout (line 658) | void wizchip_gettimeout(wiz_NetTimeout* nettime)

FILE: drivers/wiznet5k/ethernet/wizchip_conf.h
  type _WIZCHIP (line 153) | typedef struct __WIZCHIP
  type ctlwizchip_type (line 205) | typedef enum
  type ctlnetwork_type (line 232) | typedef enum
  type intr_kind (line 248) | typedef enum
  type wiz_PhyConf (line 301) | typedef struct wiz_PhyConf_t
  type dhcp_mode (line 316) | typedef enum
  type wiz_NetInfo (line 326) | typedef struct wiz_NetInfo_t
  type netmode_type (line 340) | typedef enum
  type wiz_NetTimeout (line 354) | typedef struct wiz_NetTimeout_t

FILE: drivers/wiznet5k/internet/dhcp/dhcp.c
  type RIP_MSG (line 174) | typedef struct {
  function default_ip_assign (line 256) | void default_ip_assign(void)
  function default_ip_update (line 264) | void default_ip_update(void)
  function default_ip_conflict (line 274) | void default_ip_conflict(void)
  function reg_dhcp_cbfunc (line 283) | void reg_dhcp_cbfunc(void(*ip_assign)(void), void(*ip_update)(void), voi...
  function makeDHCPMSG (line 294) | void makeDHCPMSG(void)
  function send_DHCP_DISCOVER (line 353) | void send_DHCP_DISCOVER(void)
  function send_DHCP_REQUEST (line 415) | void send_DHCP_REQUEST(void)
  function send_DHCP_DECLINE (line 511) | void send_DHCP_DECLINE(void)
  function parseDHCPMSG (line 571) | int8_t parseDHCPMSG(void)
  function DHCP_run (line 672) | uint8_t DHCP_run(void)
  function DHCP_stop (line 802) | void    DHCP_stop(void)
  function check_DHCP_timeout (line 808) | uint8_t check_DHCP_timeout(void)
  function check_DHCP_leasedIP (line 861) | int8_t check_DHCP_leasedIP(void)
  function DHCP_init (line 896) | void DHCP_init(uint8_t s, uint8_t * buf)
  function reset_DHCP_timeout (line 927) | void reset_DHCP_timeout(void)
  function DHCP_time_handler (line 934) | void DHCP_time_handler(void)
  function getIPfromDHCP (line 939) | void getIPfromDHCP(uint8_t* ip)
  function getGWfromDHCP (line 947) | void getGWfromDHCP(uint8_t* ip)
  function getSNfromDHCP (line 955) | void getSNfromDHCP(uint8_t* ip)
  function getDNSfromDHCP (line 963) | void getDNSfromDHCP(uint8_t* ip)
  function getDHCPLeasetime (line 971) | uint32_t getDHCPLeasetime(void)

FILE: drivers/wiznet5k/internet/dns/dns.c
  type dhdr (line 94) | struct dhdr
  function get16 (line 128) | uint16_t get16(uint8_t * s)
  function parse_name (line 155) | int parse_name(uint8_t * msg, uint8_t * compressed, char * buf, int16_t ...
  function parseDNSMSG (line 337) | int8_t parseDNSMSG(struct dhdr * pdhdr, uint8_t * pbuf, uint8_t * ip_fro...
  function dns_makequery (line 422) | int16_t dns_makequery(uint16_t op, char * name, uint8_t * buf, uint16_t ...
  function check_DNS_timeout (line 483) | int8_t check_DNS_timeout(void)
  function DNS_init (line 505) | void DNS_init(uint8_t s, uint8_t * buf)
  function DNS_run (line 513) | int8_t DNS_run(uint8_t * dns_ip, uint8_t * name, uint8_t * ip_from_dns)

FILE: examples/asmled.py
  function flash_led (line 4) | def flash_led(r0):
  function flash_led_v2 (line 48) | def flash_led_v2(r0):

FILE: examples/asmsum.py
  function asm_sum_words (line 2) | def asm_sum_words(r0, r1):
  function asm_sum_bytes (line 27) | def asm_sum_bytes(r0, r1):

FILE: examples/bluetooth/ble_advertising.py
  function advertising_payload (line 24) | def advertising_payload(limited_disc=False, br_edr=False, name=None, ser...
  function decode_field (line 56) | def decode_field(payload, adv_type):
  function decode_name (line 66) | def decode_name(payload):
  function decode_services (line 71) | def decode_services(payload):
  function demo (line 82) | def demo():

FILE: examples/bluetooth/ble_bonding_peripheral.py
  class BLETemperature (line 60) | class BLETemperature:
    method __init__ (line 61) | def __init__(self, ble, name="mpy-temp"):
    method _irq (line 78) | def _irq(self, event, data):
    method set_temperature (line 138) | def set_temperature(self, temp_deg_c, notify=False, indicate=False):
    method _advertise (line 151) | def _advertise(self, interval_us=500000):
    method _load_secrets (line 155) | def _load_secrets(self):
    method _save_secrets (line 165) | def _save_secrets(self):
  function demo (line 177) | def demo():

FILE: examples/bluetooth/ble_simple_central.py
  class BLESimpleCentral (line 44) | class BLESimpleCentral:
    method __init__ (line 45) | def __init__(self, ble):
    method _reset (line 52) | def _reset(self):
    method _irq (line 74) | def _irq(self, event, data):
    method is_connected (line 156) | def is_connected(self):
    method scan (line 164) | def scan(self, callback=None):
    method connect (line 171) | def connect(self, addr_type=None, addr=None, callback=None):
    method disconnect (line 181) | def disconnect(self):
    method write (line 188) | def write(self, v, response=False):
    method on_notify (line 194) | def on_notify(self, callback):
  function demo (line 198) | def demo():

FILE: examples/bluetooth/ble_simple_peripheral.py
  class BLESimplePeripheral (line 35) | class BLESimplePeripheral:
    method __init__ (line 36) | def __init__(self, ble, name="mpy-uart"):
    method _irq (line 46) | def _irq(self, event, data):
    method send (line 64) | def send(self, data):
    method is_connected (line 68) | def is_connected(self):
    method _advertise (line 71) | def _advertise(self, interval_us=500000):
    method on_write (line 75) | def on_write(self, callback):
  function demo (line 79) | def demo():

FILE: examples/bluetooth/ble_temperature.py
  class BLETemperature (line 38) | class BLETemperature:
    method __init__ (line 39) | def __init__(self, ble, name="mpy-temp"):
    method _irq (line 50) | def _irq(self, event, data):
    method set_temperature (line 63) | def set_temperature(self, temp_deg_c, notify=False, indicate=False):
    method _advertise (line 76) | def _advertise(self, interval_us=500000):
  function demo (line 80) | def demo():

FILE: examples/bluetooth/ble_temperature_central.py
  class BLETemperatureCentral (line 55) | class BLETemperatureCentral:
    method __init__ (line 56) | def __init__(self, ble):
    method _reset (line 63) | def _reset(self):
    method _irq (line 87) | def _irq(self, event, data):
    method is_connected (line 177) | def is_connected(self):
    method scan (line 181) | def scan(self, callback=None):
    method connect (line 188) | def connect(self, addr_type=None, addr=None, callback=None):
    method disconnect (line 198) | def disconnect(self):
    method read (line 205) | def read(self, callback):
    method on_notify (line 212) | def on_notify(self, callback):
    method _update_value (line 215) | def _update_value(self, data):
    method value (line 220) | def value(self):
  function demo (line 224) | def demo():

FILE: examples/bluetooth/ble_uart_peripheral.py
  class BLEUART (line 33) | class BLEUART:
    method __init__ (line 34) | def __init__(self, ble, name="mpy-uart", rxbuf=100):
    method irq (line 48) | def irq(self, handler):
    method _irq (line 51) | def _irq(self, event, data):
    method any (line 69) | def any(self):
    method read (line 72) | def read(self, sz=None):
    method write (line 79) | def write(self, data):
    method close (line 83) | def close(self):
    method _advertise (line 88) | def _advertise(self, interval_us=500000):
  function demo (line 92) | def demo():

FILE: examples/bluetooth/ble_uart_repl.py
  function schedule_in (line 24) | def schedule_in(handler, delay_ms):
  class BLEUARTStream (line 35) | class BLEUARTStream(io.IOBase):
    method __init__ (line 36) | def __init__(self, uart):
    method _on_rx (line 41) | def _on_rx(self):
    method read (line 46) | def read(self, sz=None):
    method readinto (line 49) | def readinto(self, buf):
    method ioctl (line 57) | def ioctl(self, op, arg):
    method _flush (line 63) | def _flush(self):
    method write (line 70) | def write(self, buf):
  function start (line 77) | def start():

FILE: examples/conwaylife.py
  function conway_step (line 8) | def conway_step():
  function conway_rand (line 34) | def conway_rand():
  function conway_go (line 42) | def conway_go(num_frames):

FILE: examples/embedding/hello-embed.c
  function mp_obj_t (line 38) | mp_obj_t execute_from_str(const char *str) {
  function main (line 54) | int main() {
  function uint (line 68) | uint mp_import_stat(const char *path) {
  function nlr_jump_fail (line 72) | void nlr_jump_fail(void *val) {

FILE: examples/embedding/mpconfigport_minimal.h
  type _mp_obj_module_t (line 89) | struct _mp_obj_module_t
  type mp_int_t (line 108) | typedef long mp_int_t;
  type mp_uint_t (line 109) | typedef unsigned long mp_uint_t;
  type mp_int_t (line 113) | typedef int mp_int_t;
  type mp_uint_t (line 114) | typedef unsigned int mp_uint_t;
  type mp_off_t (line 119) | typedef long long mp_off_t;
  type mp_off_t (line 121) | typedef long mp_off_t;

FILE: examples/hwapi/hwconfig_console.py
  class LEDClass (line 3) | class LEDClass:
    method __init__ (line 4) | def __init__(self, id):
    method value (line 7) | def value(self, v):
    method on (line 10) | def on(self):
    method off (line 13) | def off(self):

FILE: examples/hwapi/soft_pwm.py
  function pwm_cycle (line 13) | def pwm_cycle(led, duty, cycles):

FILE: examples/hwapi/soft_pwm2_uasyncio.py
  function pwm_cycle (line 7) | async def pwm_cycle(led, duty, cycles):
  function fade_in_out (line 18) | async def fade_in_out(LED):

FILE: examples/hwapi/soft_pwm_uasyncio.py
  function pwm_cycle (line 6) | async def pwm_cycle(led, duty, cycles):
  function fade_in_out (line 17) | async def fade_in_out(LED):

FILE: examples/ledangle.py
  function led_angle (line 4) | def led_angle(seconds_to_run_for):

FILE: examples/mandel.py
  function mandelbrot (line 7) | def mandelbrot():

FILE: examples/micropython.py
  function nodecor (line 6) | def nodecor(x):

FILE: examples/natmod/btree/btree_c.c
  function free (line 34) | void free(void *ptr) {
  function abort_ (line 38) | void abort_(void) {
  function mp_stream_posix_write (line 52) | ssize_t mp_stream_posix_write(void *stream, const void *buf, size_t len) {
  function mp_stream_posix_read (line 63) | ssize_t mp_stream_posix_read(void *stream, void *buf, size_t len) {
  function off_t (line 74) | off_t mp_stream_posix_lseek(void *stream, off_t offset, int whence) {
  function mp_stream_posix_fsync (line 87) | int mp_stream_posix_fsync(void *stream) {
  function STATIC (line 104) | STATIC mp_obj_t btree_open(size_t n_args, const mp_obj_t *args) {
  function mp_obj_t (line 122) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/btree/btree_py.py
  function open (line 2) | def open(stream, *, flags=0, cachesize=0, pagesize=0, minkeypage=0):

FILE: examples/natmod/features0/features0.c
  function STATIC (line 11) | STATIC mp_int_t factorial_helper(mp_int_t x) {
  function STATIC (line 19) | STATIC mp_obj_t factorial(mp_obj_t x_obj) {
  function mp_obj_t (line 31) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/features1/features1.c
  function STATIC (line 28) | STATIC mp_obj_t add(mp_obj_t x_in, mp_obj_t y_in) {
  function STATIC (line 36) | STATIC mp_int_t fibonacci_helper(mp_int_t x) {
  function STATIC (line 45) | STATIC mp_obj_t fibonacci(mp_obj_t x_in) {
  function STATIC (line 55) | STATIC mp_obj_t access(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 77) | STATIC mp_obj_t make_array(void) {
  function mp_obj_t (line 87) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/features2/main.c
  function STATIC (line 25) | STATIC mp_obj_t add(mp_obj_t x, mp_obj_t y) {
  function STATIC (line 31) | STATIC mp_obj_t add_f(mp_obj_t x, mp_obj_t y) {
  function STATIC (line 38) | STATIC mp_obj_t add_d(mp_obj_t x, mp_obj_t y) {
  function STATIC (line 47) | STATIC mp_obj_t productf(mp_obj_fun_bc_t *self, size_t n_args, size_t n_...
  function mp_obj_t (line 67) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/features2/prod.c
  function prod_array (line 3) | float prod_array(int n, float *ar) {

FILE: examples/natmod/features2/test.py
  function isclose (line 6) | def isclose(a, b):
  function test (line 10) | def test():

FILE: examples/natmod/framebuf/framebuf.c
  function mp_obj_t (line 18) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/uheapq/uheapq.c
  function mp_obj_t (line 7) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/urandom/urandom.c
  function mp_obj_t (line 12) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/ure/ure.c
  function mp_stack_check (line 14) | void mp_stack_check(void) {
  function mp_obj_t (line 46) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/natmod/uzlib/uzlib.c
  function mp_obj_t (line 18) | mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_...

FILE: examples/network/http_client.py
  function main (line 7) | def main(use_stream=False):

FILE: examples/network/http_client_ssl.py
  function main (line 11) | def main(use_stream=True):

FILE: examples/network/http_client_ssl_nonblock.py
  function wait_sock (line 16) | def wait_sock(s, poll_flag):
  function write_all (line 25) | def write_all(io_sock, poll_sock, data):
  function read_all (line 41) | def read_all(io_sock, poll_sock, size):
  function main (line 63) | def main():

FILE: examples/network/http_server.py
  function main (line 14) | def main(micropython_optimize=False):

FILE: examples/network/http_server_simplistic.py
  function main (line 16) | def main():

FILE: examples/network/http_server_simplistic_commented.py
  function main (line 24) | def main():

FILE: examples/network/http_server_ssl.py
  function main (line 48) | def main(use_stream=True):

FILE: examples/pins.py
  function af (line 8) | def af():
  function pins (line 23) | def pins():

FILE: examples/pyb.py
  function delay (line 5) | def delay(n):
  function rng (line 13) | def rng():
  class LCD (line 22) | class LCD:
    method __init__ (line 23) | def __init__(self, port):
    method light (line 29) | def light(self, value):
    method fill (line 32) | def fill(self, value):
    method show (line 37) | def show(self):
    method get (line 46) | def get(self, x, y):
    method pixel (line 52) | def pixel(self, x, y, value):

FILE: examples/rp2/pio_1hz.py
  function blink_1hz (line 9) | def blink_1hz():

FILE: examples/rp2/pio_exec.py
  function prog (line 13) | def prog():

FILE: examples/rp2/pio_pinchange.py
  function wait_pin_low (line 17) | def wait_pin_low():
  function handler (line 27) | def handler(sm):

FILE: examples/rp2/pio_pwm.py
  function pwm_prog (line 9) | def pwm_prog():
  class PIOPWM (line 22) | class PIOPWM:
    method __init__ (line 23) | def __init__(self, sm_id, pin, max_count, count_freq):
    method set (line 32) | def set(self, value):

FILE: examples/rp2/pio_uart_rx.py
  function uart_rx_mini (line 27) | def uart_rx_mini():
  function uart_rx (line 45) | def uart_rx():
  function handler (line 74) | def handler(sm):
  function core1_task (line 79) | def core1_task(uart, text):

FILE: examples/rp2/pio_uart_tx.py
  function uart_tx (line 12) | def uart_tx():
  function pio_uart_print (line 37) | def pio_uart_print(sm, s):

FILE: examples/rp2/pio_ws2812.py
  function ws2812 (line 17) | def ws2812():

FILE: examples/switch.py
  function run_loop (line 28) | def run_loop(leds=all_leds):

FILE: examples/unix/ffi_example.py
  function cmp (line 28) | def cmp(pa, pb):

FILE: examples/usercmodule/cexample/examplemodule.c
  function STATIC (line 5) | STATIC mp_obj_t example_add_ints(mp_obj_t a_obj, mp_obj_t b_obj) {

FILE: examples/usercmodule/cppexample/example.cpp
  function mp_obj_t (line 6) | mp_obj_t cppfunc(mp_obj_t a_obj, mp_obj_t b_obj) {

FILE: extmod/btstack/btstack_hci_uart.c
  function STATIC (line 60) | STATIC int btstack_uart_init(const btstack_uart_config_t *uart_config) {
  function STATIC (line 83) | STATIC int btstack_uart_open(void) {
  function STATIC (line 87) | STATIC int btstack_uart_close(void) {
  function STATIC (line 92) | STATIC void btstack_uart_set_block_received(void (*block_handler)(void)) {
  function STATIC (line 96) | STATIC void btstack_uart_set_block_sent(void (*block_handler)(void)) {
  function STATIC (line 100) | STATIC int btstack_uart_set_baudrate(uint32_t baudrate) {
  function STATIC (line 105) | STATIC int btstack_uart_set_parity(int parity) {
  function STATIC (line 110) | STATIC int btstack_uart_set_flowcontrol(int flowcontrol) {
  function STATIC (line 115) | STATIC void btstack_uart_receive_block(uint8_t *buf, uint16_t len) {
  function STATIC (line 120) | STATIC void btstack_uart_send_block(const uint8_t *buf, uint16_t len) {
  function STATIC (line 133) | STATIC int btstack_uart_get_supported_sleep_modes(void) {
  function STATIC (line 137) | STATIC void btstack_uart_set_sleep(btstack_uart_sleep_mode_t sleep_mode) {
  function STATIC (line 142) | STATIC void btstack_uart_set_wakeup_handler(void (*wakeup_handler)(void)) {
  function mp_bluetooth_btstack_hci_uart_process (line 163) | void mp_bluetooth_btstack_hci_uart_process(void) {

FILE: extmod/btstack/modbluetooth_btstack.c
  function STATIC (line 63) | STATIC int btstack_error_to_errno(int err) {
  function STATIC (line 81) | STATIC mp_obj_bluetooth_uuid_t create_mp_uuid(uint16_t uuid16, const uin...
  type _mp_btstack_pending_op_t (line 143) | struct _mp_btstack_pending_op_t {
  function STATIC (line 164) | STATIC void btstack_remove_pending_operation(mp_btstack_pending_op_t *pe...
  function STATIC (line 176) | STATIC void btstack_notify_indicate_ready_handler(void *context) {
  function STATIC (line 198) | STATIC mp_btstack_pending_op_t *btstack_enqueue_pending_operation(uint16...
  function STATIC (line 228) | STATIC mp_btstack_pending_op_t *btstack_finish_pending_operation(uint16_...
  function STATIC (line 251) | STATIC void btstack_packet_handler_att_server(uint8_t packet_type, uint1...
  function STATIC (line 293) | STATIC void btstack_packet_handler(uint8_t packet_type, uint8_t *packet,...
  function STATIC (line 501) | STATIC void btstack_packet_handler_generic(uint8_t packet_type, uint16_t...
  function STATIC (line 513) | STATIC void btstack_packet_handler_discover_services(uint8_t packet_type...
  function STATIC (line 520) | STATIC void btstack_packet_handler_discover_characteristics(uint8_t pack...
  function STATIC (line 527) | STATIC void btstack_packet_handler_discover_descriptors(uint8_t packet_t...
  function STATIC (line 534) | STATIC void btstack_packet_handler_read(uint8_t packet_type, uint16_t ch...
  function STATIC (line 541) | STATIC void btstack_packet_handler_write_with_response(uint8_t packet_ty...
  function STATIC (line 550) | STATIC void btstack_init_deinit_timeout_handler(btstack_timer_source_t *...
  function STATIC (line 560) | STATIC void btstack_static_address_ready(void *arg) {
  function STATIC (line 566) | STATIC bool set_public_address(void) {
  function STATIC (line 579) | STATIC void set_random_address(void) {
  function mp_bluetooth_init (line 628) | int mp_bluetooth_init(void) {
  function mp_bluetooth_deinit (line 732) | void mp_bluetooth_deinit(void) {
  function mp_bluetooth_is_active (line 766) | bool mp_bluetooth_is_active(void) {
  function mp_bluetooth_get_current_address (line 770) | void mp_bluetooth_get_current_address(uint8_t *addr_type, uint8_t *addr) {
  function mp_bluetooth_set_address_mode (line 779) | void mp_bluetooth_set_address_mode(uint8_t addr_mode) {
  function mp_bluetooth_set_bonding (line 806) | void mp_bluetooth_set_bonding(bool enabled) {
  function mp_bluetooth_set_mitm_protection (line 815) | void mp_bluetooth_set_mitm_protection(bool enabled) {
  function mp_bluetooth_set_le_secure (line 824) | void mp_bluetooth_set_le_secure(bool enabled) {
  function mp_bluetooth_set_io_capability (line 833) | void mp_bluetooth_set_io_capability(uint8_t capability) {
  function mp_bluetooth_gap_get_device_name (line 838) | size_t mp_bluetooth_gap_get_device_name(const uint8_t **buf) {
  function mp_bluetooth_gap_set_device_name (line 846) | int mp_bluetooth_gap_set_device_name(const uint8_t *buf, size_t len) {
  function mp_bluetooth_gap_advertise_start (line 850) | int mp_bluetooth_gap_advertise_start(bool connectable, int32_t interval_...
  function mp_bluetooth_gap_advertise_stop (line 886) | void mp_bluetooth_gap_advertise_stop(void) {
  function mp_bluetooth_gatts_register_service_begin (line 893) | int mp_bluetooth_gatts_register_service_begin(bool append) {
  function STATIC (line 913) | STATIC uint16_t att_read_callback(hci_con_handle_t connection_handle, ui...
  function STATIC (line 938) | STATIC int att_write_callback(hci_con_handle_t connection_handle, uint16...
  function STATIC (line 961) | STATIC inline uint16_t get_uuid16(const mp_obj_bluetooth_uuid_t *uuid) {
  function STATIC (line 966) | STATIC void get_characteristic_permissions(uint16_t flags, uint16_t *rea...
  function mp_bluetooth_gatts_register_service (line 988) | int mp_bluetooth_gatts_register_service(mp_obj_bluetooth_uuid_t *service...
  function mp_bluetooth_gatts_register_service_end (line 1059) | int mp_bluetooth_gatts_register_service_end(void) {
  function mp_bluetooth_gatts_read (line 1065) | int mp_bluetooth_gatts_read(uint16_t value_handle, uint8_t **value, size...
  function mp_bluetooth_gatts_write (line 1070) | int mp_bluetooth_gatts_write(uint16_t value_handle, const uint8_t *value...
  function mp_bluetooth_gatts_notify (line 1075) | int mp_bluetooth_gatts_notify(uint16_t conn_handle, uint16_t value_handl...
  function mp_bluetooth_gatts_notify_send (line 1084) | int mp_bluetooth_gatts_notify_send(uint16_t conn_handle, uint16_t value_...
  function mp_bluetooth_gatts_indicate (line 1110) | int mp_bluetooth_gatts_indicate(uint16_t conn_handle, uint16_t value_han...
  function mp_bluetooth_gatts_set_buffer (line 1143) | int mp_bluetooth_gatts_set_buffer(uint16_t value_handle, size_t len, boo...
  function mp_bluetooth_get_preferred_mtu (line 1148) | int mp_bluetooth_get_preferred_mtu(void) {
  function mp_bluetooth_set_preferred_mtu (line 1155) | int mp_bluetooth_set_preferred_mtu(uint16_t mtu) {
  function mp_bluetooth_gap_disconnect (line 1166) | int mp_bluetooth_gap_disconnect(uint16_t conn_handle) {
  function mp_bluetooth_gap_pair (line 1174) | int mp_bluetooth_gap_pair(uint16_t conn_handle) {
  function mp_bluetooth_gap_passkey (line 1180) | int mp_bluetooth_gap_passkey(uint16_t conn_handle, uint8_t action, mp_in...
  function STATIC (line 1190) | STATIC void scan_duration_timeout_handler(btstack_timer_source_t *ds) {
  function mp_bluetooth_gap_scan_start (line 1195) | int mp_bluetooth_gap_scan_start(int32_t duration_ms, int32_t interval_us...
  function mp_bluetooth_gap_scan_stop (line 1210) | int mp_bluetooth_gap_scan_stop(void) {
  function mp_bluetooth_gap_peripheral_connect (line 1218) | int mp_bluetooth_gap_peripheral_connect(uint8_t addr_type, const uint8_t...
  function mp_bluetooth_gattc_discover_primary_services (line 1241) | int mp_bluetooth_gattc_discover_primary_services(uint16_t conn_handle, c...
  function mp_bluetooth_gattc_discover_characteristics (line 1261) | int mp_bluetooth_gattc_discover_characteristics(uint16_t conn_handle, ui...
  function mp_bluetooth_gattc_discover_descriptors (line 1288) | int mp_bluetooth_gattc_discover_descriptors(uint16_t conn_handle, uint16...
  function mp_bluetooth_gattc_read (line 1302) | int mp_bluetooth_gattc_read(uint16_t conn_handle, uint16_t value_handle) {
  function mp_bluetooth_gattc_write (line 1307) | int mp_bluetooth_gattc_write(uint16_t conn_handle, uint16_t value_handle...
  function mp_bluetooth_gattc_exchange_mtu (line 1348) | int mp_bluetooth_gattc_exchange_mtu(uint16_t conn_handle) {
  function mp_bluetooth_l2cap_listen (line 1359) | int mp_bluetooth_l2cap_listen(uint16_t psm, uint16_t mtu) {
  function mp_bluetooth_l2cap_connect (line 1364) | int mp_bluetooth_l2cap_connect(uint16_t conn_handle, uint16_t psm, uint1...
  function mp_bluetooth_l2cap_disconnect (line 1369) | int mp_bluetooth_l2cap_disconnect(uint16_t conn_handle, uint16_t cid) {
  function mp_bluetooth_l2cap_send (line 1374) | int mp_bluetooth_l2cap_send(uint16_t conn_handle, uint16_t cid, const ui...
  function mp_bluetooth_l2cap_recvinto (line 1379) | int mp_bluetooth_l2cap_recvinto(uint16_t conn_handle, uint16_t cid, uint...

FILE: extmod/btstack/modbluetooth_btstack.h
  type mp_btstack_pending_op_t (line 36) | typedef struct _mp_btstack_pending_op_t mp_btstack_pending_op_t;
  type mp_bluetooth_btstack_root_pointers_t (line 38) | typedef struct _mp_bluetooth_btstack_root_pointers_t {

FILE: extmod/crypto-algorithms/sha256.c
  function sha256_transform (line 44) | static void sha256_transform(CRYAL_SHA256_CTX *ctx, const BYTE data[])
  function sha256_init (line 85) | void sha256_init(CRYAL_SHA256_CTX *ctx)
  function sha256_update (line 99) | void sha256_update(CRYAL_SHA256_CTX *ctx, const BYTE data[], size_t len)
  function sha256_final (line 114) | void sha256_final(CRYAL_SHA256_CTX *ctx, BYTE hash[])

FILE: extmod/crypto-algorithms/sha256.h
  type BYTE (line 20) | typedef unsigned char BYTE;
  type WORD (line 21) | typedef unsigned int  WORD;
  type CRYAL_SHA256_CTX (line 23) | typedef struct {

FILE: extmod/lwip-include/arch/cc.h
  type u8_t (line 8) | typedef uint8_t u8_t;
  type s8_t (line 9) | typedef int8_t s8_t;
  type u16_t (line 10) | typedef uint16_t u16_t;
  type s16_t (line 11) | typedef int16_t s16_t;
  type u32_t (line 12) | typedef uint32_t u32_t;
  type s32_t (line 13) | typedef int32_t s32_t;
  type u32_t (line 15) | typedef u32_t mem_ptr_t;

FILE: extmod/lwip-include/lwipopts.h
  type sys_prot_t (line 13) | typedef uint32_t sys_prot_t;

FILE: extmod/machine_i2c.c
  type mp_machine_soft_i2c_obj_t (line 38) | typedef mp_machine_soft_i2c_obj_t machine_i2c_obj_t;
  function STATIC (line 40) | STATIC void mp_hal_i2c_delay(machine_i2c_obj_t *self) {
  function STATIC (line 46) | STATIC void mp_hal_i2c_scl_low(machine_i2c_obj_t *self) {
  function STATIC (line 50) | STATIC int mp_hal_i2c_scl_release(machine_i2c_obj_t *self) {
  function STATIC (line 65) | STATIC void mp_hal_i2c_sda_low(machine_i2c_obj_t *self) {
  function STATIC (line 69) | STATIC void mp_hal_i2c_sda_release(machine_i2c_obj_t *self) {
  function STATIC (line 73) | STATIC int mp_hal_i2c_sda_read(machine_i2c_obj_t *self) {
  function STATIC (line 77) | STATIC int mp_hal_i2c_start(machine_i2c_obj_t *self) {
  function STATIC (line 89) | STATIC int mp_hal_i2c_stop(machine_i2c_obj_t *self) {
  function STATIC (line 99) | STATIC void mp_hal_i2c_init(machine_i2c_obj_t *self, uint32_t freq) {
  function STATIC (line 113) | STATIC int mp_hal_i2c_write_byte(machine_i2c_obj_t *self, uint8_t val) {
  function STATIC (line 149) | STATIC int mp_hal_i2c_read_byte(machine_i2c_obj_t *self, uint8_t *val, i...
  function mp_machine_soft_i2c_transfer (line 185) | int mp_machine_soft_i2c_transfer(mp_obj_base_t *self_in, uint16_t addr, ...
  function mp_machine_i2c_transfer_adaptor (line 247) | int mp_machine_i2c_transfer_adaptor(mp_obj_base_t *self, uint16_t addr, ...
  function STATIC (line 288) | STATIC int mp_machine_i2c_readfrom(mp_obj_base_t *self, uint16_t addr, u...
  function STATIC (line 295) | STATIC int mp_machine_i2c_writeto(mp_obj_base_t *self, uint16_t addr, co...
  function STATIC (line 305) | STATIC mp_obj_t machine_i2c_init(size_t n_args, const mp_obj_t *args, mp...
  function STATIC (line 316) | STATIC mp_obj_t machine_i2c_scan(mp_obj_t self_in) {
  function STATIC (line 330) | STATIC mp_obj_t machine_i2c_start(mp_obj_t self_in) {
  function STATIC (line 344) | STATIC mp_obj_t machine_i2c_stop(mp_obj_t self_in) {
  function STATIC (line 358) | STATIC mp_obj_t machine_i2c_readinto(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 382) | STATIC mp_obj_t machine_i2c_write(mp_obj_t self_in, mp_obj_t buf_in) {
  function STATIC (line 404) | STATIC mp_obj_t machine_i2c_readfrom(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 418) | STATIC mp_obj_t machine_i2c_readfrom_into(size_t n_args, const mp_obj_t ...
  function STATIC (line 432) | STATIC mp_obj_t machine_i2c_writeto(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 447) | STATIC mp_obj_t machine_i2c_writevto(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 493) | STATIC size_t fill_memaddr_buf(uint8_t *memaddr_buf, uint32_t memaddr, u...
  function STATIC (line 504) | STATIC int read_mem(mp_obj_t self_in, uint16_t addr, uint32_t memaddr, u...
  function STATIC (line 520) | STATIC int write_mem(mp_obj_t self_in, uint16_t addr, uint32_t memaddr, ...
  function STATIC (line 545) | STATIC mp_obj_t machine_i2c_readfrom_mem(size_t n_args, const mp_obj_t *...
  function STATIC (line 567) | STATIC mp_obj_t machine_i2c_readfrom_mem_into(size_t n_args, const mp_ob...
  function STATIC (line 587) | STATIC mp_obj_t machine_i2c_writeto_mem(size_t n_args, const mp_obj_t *p...
  function STATIC (line 634) | STATIC void mp_machine_soft_i2c_print(const mp_print_t *print, mp_obj_t ...
  function STATIC (line 640) | STATIC void mp_machine_soft_i2c_init(mp_obj_base_t *self_in, size_t n_ar...
  function STATIC (line 659) | STATIC mp_obj_t mp_machine_soft_i2c_make_new(const mp_obj_type_t *type, ...
  function mp_machine_soft_i2c_read (line 669) | int mp_machine_soft_i2c_read(mp_obj_base_t *self_in, uint8_t *dest, size...
  function mp_machine_soft_i2c_write (line 680) | int mp_machine_soft_i2c_write(mp_obj_base_t *self_in, const uint8_t *src...

FILE: extmod/machine_i2c.h
  type mp_machine_i2c_buf_t (line 35) | typedef struct _mp_machine_i2c_buf_t {
  type mp_machine_i2c_p_t (line 45) | typedef struct _mp_machine_i2c_p_t {
  type mp_machine_soft_i2c_obj_t (line 55) | typedef struct _mp_machine_soft_i2c_obj_t {

FILE: extmod/machine_mem.c
  function STATIC (line 42) | STATIC uintptr_t machine_mem_get_addr(mp_obj_t addr_o, uint align) {
  function STATIC (line 57) | STATIC void machine_mem_print(const mp_print_t *print, mp_obj_t self_in,...
  function STATIC (line 63) | STATIC mp_obj_t machine_mem_subscr(mp_obj_t self_in, mp_obj_t index, mp_...

FILE: extmod/machine_mem.h
  type machine_mem_obj_t (line 31) | typedef struct _machine_mem_obj_t {

FILE: extmod/machine_pinbase.c
  type mp_pinbase_t (line 40) | typedef struct _mp_pinbase_t {
  function STATIC (line 48) | STATIC mp_obj_t pinbase_make_new(const mp_obj_type_t *type, size_t n_arg...
  function mp_uint_t (line 57) | mp_uint_t pinbase_ioctl(mp_obj_t obj, mp_uint_t request, uintptr_t arg, ...

FILE: extmod/machine_pulse.c
  function MP_WEAK (line 33) | MP_WEAK mp_uint_t machine_time_pulse_us(mp_hal_pin_obj_t pin, int pulse_...
  function STATIC (line 49) | STATIC mp_obj_t machine_time_pulse_us_(size_t n_args, const mp_obj_t *ar...

FILE: extmod/machine_signal.c
  type machine_signal_t (line 40) | typedef struct _machine_signal_t {
  function STATIC (line 46) | STATIC mp_obj_t signal_make_new(const mp_obj_type_t *type, size_t n_args...
  function STATIC (line 122) | STATIC mp_uint_t signal_ioctl(mp_obj_t self_in, mp_uint_t request, uintp...
  function STATIC (line 139) | STATIC mp_obj_t signal_call(mp_obj_t self_in, size_t n_args, size_t n_kw...
  function STATIC (line 151) | STATIC mp_obj_t signal_value(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 156) | STATIC mp_obj_t signal_on(mp_obj_t self_in) {
  function STATIC (line 162) | STATIC mp_obj_t signal_off(mp_obj_t self_in) {

FILE: extmod/machine_spi.c
  function STATIC (line 44) | STATIC mp_obj_t machine_spi_init(size_t n_args, const mp_obj_t *args, mp...
  function STATIC (line 52) | STATIC mp_obj_t machine_spi_deinit(mp_obj_t self) {
  function STATIC (line 62) | STATIC void mp_machine_spi_transfer(mp_obj_t self, size_t len, const voi...
  function STATIC (line 68) | STATIC mp_obj_t mp_machine_spi_read(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 77) | STATIC mp_obj_t mp_machine_spi_readinto(size_t n_args, const mp_obj_t *a...
  function STATIC (line 86) | STATIC mp_obj_t mp_machine_spi_write(mp_obj_t self, mp_obj_t wr_buf) {
  function STATIC (line 94) | STATIC mp_obj_t mp_machine_spi_write_readinto(mp_obj_t self, mp_obj_t wr...
  function STATIC (line 124) | STATIC uint32_t baudrate_from_delay_half(uint32_t delay_half) {
  function STATIC (line 135) | STATIC uint32_t baudrate_to_delay_half(uint32_t baudrate) {
  function STATIC (line 151) | STATIC void mp_machine_soft_spi_print(const mp_print_t *print, mp_obj_t ...
  function STATIC (line 159) | STATIC mp_obj_t mp_machine_soft_spi_make_new(const mp_obj_type_t *type, ...
  function STATIC (line 203) | STATIC void mp_machine_soft_spi_init(mp_obj_base_t *self_in, size_t n_ar...
  function STATIC (line 241) | STATIC void mp_machine_soft_spi_transfer(mp_obj_base_t *self_in, size_t ...

FILE: extmod/machine_spi.h
  type mp_machine_spi_p_t (line 34) | typedef struct _mp_machine_spi_p_t {
  type mp_machine_soft_spi_obj_t (line 40) | typedef struct _mp_machine_soft_spi_obj_t {

FILE: extmod/modbluetooth.c
  type mp_obj_bluetooth_ble_t (line 66) | typedef struct {
  function STATIC (line 84) | STATIC mp_obj_t bluetooth_handle_errno(int err) {
  function STATIC (line 95) | STATIC mp_obj_t bluetooth_uuid_make_new(const mp_obj_type_t *type, size_...
  function STATIC (line 152) | STATIC mp_obj_t bluetooth_uuid_unary_op(mp_unary_op_t op, mp_obj_t self_...
  function STATIC (line 164) | STATIC mp_obj_t bluetooth_uuid_binary_op(mp_binary_op_t op, mp_obj_t lhs...
  function STATIC (line 188) | STATIC void bluetooth_uuid_print(const mp_print_t *print, mp_obj_t self_...
  function STATIC (line 205) | STATIC mp_int_t bluetooth_uuid_get_buffer(mp_obj_t self_in, mp_buffer_in...
  function STATIC (line 219) | STATIC void ringbuf_put_uuid(ringbuf_t *ringbuf, mp_obj_bluetooth_uuid_t...
  function STATIC (line 227) | STATIC void ringbuf_get_uuid(ringbuf_t *ringbuf, mp_obj_bluetooth_uuid_t...
  function STATIC (line 252) | STATIC mp_obj_t bluetooth_ble_make_new(const mp_obj_type_t *type, size_t...
  function STATIC (line 282) | STATIC mp_obj_t bluetooth_ble_active(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 297) | STATIC mp_obj_t bluetooth_ble_config(size_t n_args, const mp_obj_t *args...
  function STATIC (line 423) | STATIC mp_obj_t bluetooth_ble_irq(mp_obj_t self_in, mp_obj_t handler_in) {
  function STATIC (line 443) | STATIC mp_obj_t bluetooth_ble_gap_advertise(size_t n_args, const mp_obj_...
  function STATIC (line 476) | STATIC int bluetooth_gatts_register_service(mp_obj_t uuid_in, mp_obj_t c...
  function STATIC (line 574) | STATIC mp_obj_t bluetooth_ble_gatts_register_services(mp_obj_t self_in, ...
  function STATIC (line 632) | STATIC mp_obj_t bluetooth_ble_gap_connect(size_t n_args, const mp_obj_t ...
  function STATIC (line 649) | STATIC mp_obj_t bluetooth_ble_gap_scan(size_t n_args, const mp_obj_t *ar...
  function STATIC (line 676) | STATIC mp_obj_t bluetooth_ble_gap_disconnect(mp_obj_t self_in, mp_obj_t ...
  function STATIC (line 691) | STATIC mp_obj_t bluetooth_ble_gap_pair(mp_obj_t self_in, mp_obj_t conn_h...
  function STATIC (line 698) | STATIC mp_obj_t bluetooth_ble_gap_passkey(size_t n_args, const mp_obj_t ...
  function STATIC (line 711) | STATIC mp_obj_t bluetooth_ble_gatts_read(mp_obj_t self_in, mp_obj_t valu...
  function STATIC (line 720) | STATIC mp_obj_t bluetooth_ble_gatts_write(mp_obj_t self_in, mp_obj_t val...
  function STATIC (line 730) | STATIC mp_obj_t bluetooth_ble_gatts_notify(size_t n_args, const mp_obj_t...
  function STATIC (line 747) | STATIC mp_obj_t bluetooth_ble_gatts_indicate(mp_obj_t self_in, mp_obj_t ...
  function STATIC (line 757) | STATIC mp_obj_t bluetooth_ble_gatts_set_buffer(size_t n_args, const mp_o...
  function STATIC (line 771) | STATIC mp_obj_t bluetooth_ble_gattc_discover_services(size_t n_args, con...
  function STATIC (line 784) | STATIC mp_obj_t bluetooth_ble_gattc_discover_characteristics(size_t n_ar...
  function STATIC (line 799) | STATIC mp_obj_t bluetooth_ble_gattc_discover_descriptors(size_t n_args, ...
  function STATIC (line 808) | STATIC mp_obj_t bluetooth_ble_gattc_read(mp_obj_t self_in, mp_obj_t conn...
  function STATIC (line 816) | STATIC mp_obj_t bluetooth_ble_gattc_write(size_t n_args, const mp_obj_t ...
  function STATIC (line 831) | STATIC mp_obj_t bluetooth_ble_gattc_exchange_mtu(mp_obj_t self_in, mp_ob...
  function STATIC (line 842) | STATIC mp_obj_t bluetooth_ble_l2cap_listen(mp_obj_t self_in, mp_obj_t ps...
  function STATIC (line 850) | STATIC mp_obj_t bluetooth_ble_l2cap_connect(size_t n_args, const mp_obj_...
  function STATIC (line 858) | STATIC mp_obj_t bluetooth_ble_l2cap_disconnect(mp_obj_t self_in, mp_obj_...
  function STATIC (line 866) | STATIC mp_obj_t bluetooth_ble_l2cap_send(size_t n_args, const mp_obj_t *...
  function STATIC (line 878) | STATIC mp_obj_t bluetooth_ble_l2cap_recvinto(size_t n_args, const mp_obj...
  function STATIC (line 894) | STATIC mp_obj_t bluetooth_ble_hci_cmd(size_t n_args, const mp_obj_t *arg...
  function STATIC (line 988) | STATIC void ringbuf_extract(ringbuf_t *ringbuf, mp_obj_tuple_t *data_tup...
  function STATIC (line 1029) | STATIC mp_obj_t bluetooth_ble_invoke_irq(mp_obj_t none_in) {
  function STATIC (line 1114) | STATIC mp_obj_t invoke_irq_handler(uint16_t event,
  function mp_bluetooth_gap_on_connected_disconnected (line 1170) | void mp_bluetooth_gap_on_connected_disconnected(uint8_t event, uint16_t ...
  function mp_bluetooth_gap_on_connection_update (line 1175) | void mp_bluetooth_gap_on_connection_update(uint16_t conn_handle, uint16_...
  function mp_bluetooth_gatts_on_encryption_update (line 1181) | void mp_bluetooth_gatts_on_encryption_update(uint16_t conn_handle, bool ...
  function mp_bluetooth_gap_on_get_secret (line 1186) | bool mp_bluetooth_gap_on_get_secret(uint8_t type, uint8_t index, const u...
  function mp_bluetooth_gap_on_set_secret (line 1199) | bool mp_bluetooth_gap_on_set_secret(uint8_t type, const uint8_t *key, si...
  function mp_bluetooth_gap_on_passkey_action (line 1207) | void mp_bluetooth_gap_on_passkey_action(uint16_t conn_handle, uint8_t ac...
  function mp_bluetooth_gatts_on_write (line 1213) | void mp_bluetooth_gatts_on_write(uint16_t conn_handle, uint16_t value_ha...
  function mp_bluetooth_gatts_on_indicate_complete (line 1218) | void mp_bluetooth_gatts_on_indicate_complete(uint16_t conn_handle, uint1...
  function mp_int_t (line 1223) | mp_int_t mp_bluetooth_gatts_on_read_request(uint16_t conn_handle, uint16...
  function mp_bluetooth_gatts_on_mtu_exchanged (line 1232) | void mp_bluetooth_gatts_on_mtu_exchanged(uint16_t conn_handle, uint16_t ...
  function mp_int_t (line 1238) | mp_int_t mp_bluetooth_on_l2cap_accept(uint16_t conn_handle, uint16_t cid...
  function mp_bluetooth_on_l2cap_connect (line 1247) | void mp_bluetooth_on_l2cap_connect(uint16_t conn_handle, uint16_t cid, u...
  function mp_bluetooth_on_l2cap_disconnect (line 1252) | void mp_bluetooth_on_l2cap_disconnect(uint16_t conn_handle, uint16_t cid...
  function mp_bluetooth_on_l2cap_send_ready (line 1257) | void mp_bluetooth_on_l2cap_send_ready(uint16_t conn_handle, uint16_t cid...
  function mp_bluetooth_on_l2cap_recv (line 1262) | void mp_bluetooth_on_l2cap_recv(uint16_t conn_handle, uint16_t cid) {
  function mp_bluetooth_gap_on_scan_complete (line 1269) | void mp_bluetooth_gap_on_scan_complete(void) {
  function mp_bluetooth_gap_on_scan_result (line 1273) | void mp_bluetooth_gap_on_scan_result(uint8_t addr_type, const uint8_t *a...
  function mp_bluetooth_gattc_on_primary_service_result (line 1280) | void mp_bluetooth_gattc_on_primary_service_result(uint16_t conn_handle, ...
  function mp_bluetooth_gattc_on_characteristic_result (line 1285) | void mp_bluetooth_gattc_on_characteristic_result(uint16_t conn_handle, u...
  function mp_bluetooth_gattc_on_descriptor_result (line 1290) | void mp_bluetooth_gattc_on_descriptor_result(uint16_t conn_handle, uint1...
  function mp_bluetooth_gattc_on_discover_complete (line 1295) | void mp_bluetooth_gattc_on_discover_complete(uint8_t event, uint16_t con...
  function mp_bluetooth_gattc_on_data_available (line 1300) | void mp_bluetooth_gattc_on_data_available(uint8_t event, uint16_t conn_h...
  function mp_bluetooth_gattc_on_read_write_status (line 1332) | void mp_bluetooth_gattc_on_read_write_status(uint8_t event, uint16_t con...
  function STATIC (line 1343) | STATIC bool enqueue_irq(mp_obj_bluetooth_ble_t *o, size_t len, uint8_t e...
  function STATIC (line 1377) | STATIC void schedule_ringbuf(mp_uint_t atomic_state) {
  function mp_bluetooth_gap_on_connected_disconnected (line 1388) | void mp_bluetooth_gap_on_connected_disconnected(uint8_t event, uint16_t ...
  function mp_bluetooth_gap_on_connection_update (line 1401) | void mp_bluetooth_gap_on_connection_update(uint16_t conn_handle, uint16_...
  function mp_bluetooth_gatts_on_write (line 1414) | void mp_bluetooth_gatts_on_write(uint16_t conn_handle, uint16_t value_ha...
  function mp_bluetooth_gatts_on_indicate_complete (line 1424) | void mp_bluetooth_gatts_on_indicate_complete(uint16_t conn_handle, uint1...
  function mp_int_t (line 1435) | mp_int_t mp_bluetooth_gatts_on_read_request(uint16_t conn_handle, uint16...
  function mp_bluetooth_gatts_on_mtu_exchanged (line 1442) | void mp_bluetooth_gatts_on_mtu_exchanged(uint16_t conn_handle, uint16_t ...
  function mp_bluetooth_gap_on_scan_complete (line 1453) | void mp_bluetooth_gap_on_scan_complete(void) {
  function mp_bluetooth_gap_on_scan_result (line 1461) | void mp_bluetooth_gap_on_scan_result(uint8_t addr_type, const uint8_t *a...
  function mp_bluetooth_gattc_on_primary_service_result (line 1486) | void mp_bluetooth_gattc_on_primary_service_result(uint16_t conn_handle, ...
  function mp_bluetooth_gattc_on_characteristic_result (line 1498) | void mp_bluetooth_gattc_on_characteristic_result(uint16_t conn_handle, u...
  function mp_bluetooth_gattc_on_descriptor_result (line 1511) | void mp_bluetooth_gattc_on_descriptor_result(uint16_t conn_handle, uint1...
  function mp_bluetooth_gattc_on_discover_complete (line 1522) | void mp_bluetooth_gattc_on_discover_complete(uint8_t event, uint16_t con...
  function mp_bluetooth_gattc_on_data_available (line 1532) | void mp_bluetooth_gattc_on_data_available(uint8_t event, uint16_t conn_h...
  function mp_bluetooth_gattc_on_read_write_status (line 1563) | void mp_bluetooth_gattc_on_read_write_status(uint8_t event, uint16_t con...
  function mp_bluetooth_gatts_db_create_entry (line 1581) | void mp_bluetooth_gatts_db_create_entry(mp_gatts_db_t db, uint16_t handl...
  function mp_bluetooth_gatts_db_entry_t (line 1591) | mp_bluetooth_gatts_db_entry_t *mp_bluetooth_gatts_db_lookup(mp_gatts_db_...
  function mp_bluetooth_gatts_db_read (line 1599) | int mp_bluetooth_gatts_db_read(mp_gatts_db_t db, uint16_t handle, uint8_...
  function mp_bluetooth_gatts_db_write (line 1613) | int mp_bluetooth_gatts_db_write(mp_gatts_db_t db, uint16_t handle, const...
  function mp_bluetooth_gatts_db_resize (line 1635) | int mp_bluetooth_gatts_db_resize(mp_gatts_db_t db, uint16_t handle, size...

FILE: extmod/modbluetooth.h
  type mp_obj_bluetooth_uuid_t (line 267) | typedef struct {
  type mp_bluetooth_gatts_db_entry_t (line 484) | typedef struct {
  type mp_map_t (line 495) | typedef mp_map_t *mp_gatts_db_t;
  function STATIC (line 497) | STATIC inline void mp_bluetooth_gatts_db_create(mp_gatts_db_t *db) {
  function STATIC (line 501) | STATIC inline void mp_bluetooth_gatts_db_reset(mp_gatts_db_t db) {

FILE: extmod/modbtree.c
  type mp_obj_btree_t (line 40) | typedef struct _mp_obj_btree_t {
  function __dbpanic (line 65) | void __dbpanic(DB *db) {
  function STATIC (line 69) | STATIC mp_obj_btree_t *btree_new(DB *db, mp_obj_t stream) {
  function STATIC (line 80) | STATIC void btree_print(const mp_print_t *print, mp_obj_t self_in, mp_pr...
  function STATIC (line 86) | STATIC mp_obj_t btree_flush(mp_obj_t self_in) {
  function STATIC (line 92) | STATIC mp_obj_t btree_close(mp_obj_t self_in) {
  function STATIC (line 98) | STATIC mp_obj_t btree_put(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 108) | STATIC mp_obj_t btree_get(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 125) | STATIC mp_obj_t btree_seq(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 147) | STATIC mp_obj_t btree_init_iter(size_t n_args, const mp_obj_t *args, byt...
  function STATIC (line 164) | STATIC mp_obj_t btree_keys(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 169) | STATIC mp_obj_t btree_values(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 174) | STATIC mp_obj_t btree_items(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 179) | STATIC mp_obj_t btree_getiter(mp_obj_t self_in, mp_obj_iter_buf_t *iter_...
  function STATIC (line 197) | STATIC mp_obj_t btree_iternext(mp_obj_t self_in) {
  function STATIC (line 253) | STATIC mp_obj_t btree_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t ...
  function STATIC (line 286) | STATIC mp_obj_t btree_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_o...
  function STATIC (line 337) | STATIC mp_obj_t mod_btree_open(size_t n_args, const mp_obj_t *pos_args, ...

FILE: extmod/modframebuf.c
  type mp_obj_framebuf_t (line 36) | typedef struct _mp_obj_framebuf_t {
  type mp_framebuf_p_t (line 52) | typedef struct _mp_framebuf_p_t {
  function STATIC (line 69) | STATIC void mono_horiz_setpixel(const mp_obj_framebuf_t *fb, unsigned in...
  function STATIC (line 75) | STATIC uint32_t mono_horiz_getpixel(const mp_obj_framebuf_t *fb, unsigne...
  function STATIC (line 81) | STATIC void mono_horiz_fill_rect(const mp_obj_framebuf_t *fb, unsigned i...
  function STATIC (line 97) | STATIC void mvlsb_setpixel(const mp_obj_framebuf_t *fb, unsigned int x, ...
  function STATIC (line 103) | STATIC uint32_t mvlsb_getpixel(const mp_obj_framebuf_t *fb, unsigned int...
  function STATIC (line 107) | STATIC void mvlsb_fill_rect(const mp_obj_framebuf_t *fb, unsigned int x,...
  function STATIC (line 121) | STATIC void rgb565_setpixel(const mp_obj_framebuf_t *fb, unsigned int x,...
  function STATIC (line 125) | STATIC uint32_t rgb565_getpixel(const mp_obj_framebuf_t *fb, unsigned in...
  function STATIC (line 129) | STATIC void rgb565_fill_rect(const mp_obj_framebuf_t *fb, unsigned int x...
  function STATIC (line 141) | STATIC void gs2_hmsb_setpixel(const mp_obj_framebuf_t *fb, unsigned int ...
  function STATIC (line 149) | STATIC uint32_t gs2_hmsb_getpixel(const mp_obj_framebuf_t *fb, unsigned ...
  function STATIC (line 155) | STATIC void gs2_hmsb_fill_rect(const mp_obj_framebuf_t *fb, unsigned int...
  function STATIC (line 165) | STATIC void gs4_hmsb_setpixel(const mp_obj_framebuf_t *fb, unsigned int ...
  function STATIC (line 175) | STATIC uint32_t gs4_hmsb_getpixel(const mp_obj_framebuf_t *fb, unsigned ...
  function STATIC (line 183) | STATIC void gs4_hmsb_fill_rect(const mp_obj_framebuf_t *fb, unsigned int...
  function STATIC (line 216) | STATIC void gs8_setpixel(const mp_obj_framebuf_t *fb, unsigned int x, un...
  function STATIC (line 221) | STATIC uint32_t gs8_getpixel(const mp_obj_framebuf_t *fb, unsigned int x...
  function STATIC (line 225) | STATIC void gs8_fill_rect(const mp_obj_framebuf_t *fb, unsigned int x, u...
  function setpixel (line 243) | static inline void setpixel(const mp_obj_framebuf_t *fb, unsigned int x,...
  function getpixel (line 247) | static inline uint32_t getpixel(const mp_obj_framebuf_t *fb, unsigned in...
  function STATIC (line 251) | STATIC void fill_rect(const mp_obj_framebuf_t *fb, int x, int y, int w, ...
  function STATIC (line 266) | STATIC mp_obj_t framebuf_make_new(const mp_obj_type_t *type, size_t n_ar...
  function STATIC (line 316) | STATIC mp_int_t framebuf_get_buffer(mp_obj_t self_in, mp_buffer_info_t *...
  function STATIC (line 325) | STATIC mp_obj_t framebuf_fill(mp_obj_t self_in, mp_obj_t col_in) {
  function STATIC (line 333) | STATIC mp_obj_t framebuf_fill_rect(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 349) | STATIC mp_obj_t framebuf_pixel(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 366) | STATIC mp_obj_t framebuf_hline(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 381) | STATIC mp_obj_t framebuf_vline(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 396) | STATIC mp_obj_t framebuf_rect(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 415) | STATIC mp_obj_t framebuf_line(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 487) | STATIC mp_obj_t framebuf_blit(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 535) | STATIC mp_obj_t framebuf_scroll(mp_obj_t self_in, mp_obj_t xstep_in, mp_...
  function STATIC (line 567) | STATIC mp_obj_t framebuf_text(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 630) | STATIC mp_obj_t legacy_framebuffer1(size_t n_args, const mp_obj_t *args) {

FILE: extmod/modlwip.c
  type lwip_slip_obj_t (line 93) | typedef struct _lwip_slip_obj_t {
  function STATIC (line 105) | STATIC void slip_lwip_poll(void *netif) {
  function sio_fd_t (line 112) | sio_fd_t sio_open(u8_t dvnum) {
  function sio_send (line 117) | void sio_send(u8_t c, sio_fd_t fd) {
  function u32_t (line 123) | u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len) {
  function STATIC (line 138) | STATIC mp_obj_t lwip_slip_make_new(mp_obj_t type_in, size_t n_args, size...
  function STATIC (line 164) | STATIC mp_obj_t lwip_slip_status(mp_obj_t self_in) {
  type lwip_socket_obj_t (line 277) | typedef struct _lwip_socket_obj_t {
  function poll_sockets (line 316) | static inline void poll_sockets(void) {
  function tcp_pcb (line 324) | tcp_pcb *volatile *lwip_socket_incoming_array(lwip_socket_obj_t *socket) {
  function STATIC (line 332) | STATIC void lwip_socket_free_incoming(lwip_socket_obj_t *socket) {
  function exec_user_callback (line 359) | static inline void exec_user_callback(lwip_socket_obj_t *socket) {
  function STATIC (line 369) | STATIC u8_t _lwip_raw_incoming(void *arg, struct raw_pcb *pcb, struct pb...
  function STATIC (line 389) | STATIC void _lwip_udp_incoming(void *arg, struct udp_pcb *upcb, struct p...
  function STATIC (line 407) | STATIC void _lwip_tcp_error(void *arg, err_t err) {
  function STATIC (line 419) | STATIC err_t _lwip_tcp_connected(void *arg, struct tcp_pcb *tpcb, err_t ...
  function STATIC (line 428) | STATIC void _lwip_tcp_err_unaccepted(void *arg, err_t err) {
  function STATIC (line 468) | STATIC err_t _lwip_tcp_recv_unaccepted(void *arg, struct tcp_pcb *pcb, s...
  function STATIC (line 473) | STATIC err_t _lwip_tcp_accept(void *arg, struct tcp_pcb *newpcb, err_t e...
  function STATIC (line 510) | STATIC err_t _lwip_tcp_recv(void *arg, struct tcp_pcb *tcpb, struct pbuf...
  function STATIC (line 541) | STATIC mp_uint_t lwip_raw_udp_send(lwip_socket_obj_t *socket, const byte...
  function STATIC (line 598) | STATIC mp_uint_t lwip_raw_udp_receive(lwip_socket_obj_t *socket, byte *b...
  function STATIC (line 655) | STATIC mp_uint_t lwip_tcp_send(lwip_socket_obj_t *socket, const byte *bu...
  function sys_prot_t (line 1594) | sys_prot_t sys_arch_protect() {
  function sys_arch_unprotect (line 1598) | void sys_arch_unprotect(sys_prot_t state) {
  type nic_poll_t (line 1606) | typedef struct nic_poll {
  function mod_lwip_register_poll (line 1613) | void mod_lwip_register_poll(void (*poll)(void *arg), void *poll_arg) {
  function mod_lwip_deregister_poll (line 1618) | void mod_lwip_deregister_poll(void (*poll)(void *arg), void *poll_arg) {
  function STATIC (line 1625) | STATIC mp_obj_t mod_lwip_reset() {
  function STATIC (line 1632) | STATIC mp_obj_t mod_lwip_callback() {
  type getaddrinfo_state_t (line 1641) | typedef struct _getaddrinfo_state_t {
  function STATIC (line 1648) | STATIC void lwip_getaddrinfo_cb(const char *name, ip_addr_t *ipaddr, voi...
  function STATIC (line 1664) | STATIC mp_obj_t lwip_getaddrinfo(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 1735) | STATIC mp_obj_t lwip_print_pcbs() {

FILE: extmod/modonewire.c
  function STATIC (line 46) | STATIC int onewire_bus_reset(mp_hal_pin_obj_t pin) {
  function STATIC (line 58) | STATIC int onewire_bus_readbit(mp_hal_pin_obj_t pin) {
  function STATIC (line 71) | STATIC void onewire_bus_writebit(mp_hal_pin_obj_t pin, int value) {
  function STATIC (line 87) | STATIC mp_obj_t onewire_reset(mp_obj_t pin_in) {
  function STATIC (line 92) | STATIC mp_obj_t onewire_readbit(mp_obj_t pin_in) {
  function STATIC (line 97) | STATIC mp_obj_t onewire_readbyte(mp_obj_t pin_in) {
  function STATIC (line 107) | STATIC mp_obj_t onewire_writebit(mp_obj_t pin_in, mp_obj_t value_in) {
  function STATIC (line 113) | STATIC mp_obj_t onewire_writebyte(mp_obj_t pin_in, mp_obj_t value_in) {
  function STATIC (line 124) | STATIC mp_obj_t onewire_crc8(mp_obj_t data) {

FILE: extmod/moduasyncio.c
  type mp_obj_task_t (line 42) | typedef struct _mp_obj_task_t {
  type mp_obj_task_queue_t (line 50) | typedef struct _mp_obj_task_queue_t {
  function STATIC (line 63) | STATIC mp_obj_t ticks(void) {
  function STATIC (line 67) | STATIC mp_int_t ticks_diff(mp_obj_t t1_in, mp_obj_t t0_in) {
  function STATIC (line 75) | STATIC int task_lt(mp_pairheap_t *n1, mp_pairheap_t *n2) {
  function STATIC (line 84) | STATIC mp_obj_t task_queue_make_new(const mp_obj_type_t *type, size_t n_...
  function STATIC (line 93) | STATIC mp_obj_t task_queue_peek(mp_obj_t self_in) {
  function STATIC (line 103) | STATIC mp_obj_t task_queue_push_sorted(size_t n_args, const mp_obj_t *ar...
  function STATIC (line 118) | STATIC mp_obj_t task_queue_pop_head(mp_obj_t self_in) {
  function STATIC (line 129) | STATIC mp_obj_t task_queue_remove(mp_obj_t self_in, mp_obj_t task_in) {
  function STATIC (line 159) | STATIC mp_obj_t task_make_new(const mp_obj_type_t *type, size_t n_args, ...
  function STATIC (line 174) | STATIC mp_obj_t task_done(mp_obj_t self_in) {
  function STATIC (line 180) | STATIC mp_obj_t task_cancel(mp_obj_t self_in) {
  function STATIC (line 225) | STATIC void task_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
  function STATIC (line 256) | STATIC mp_obj_t task_getiter(mp_obj_t self_in, mp_obj_iter_buf_t *iter_b...
  function STATIC (line 269) | STATIC mp_obj_t task_iternext(mp_obj_t self_in) {

FILE: extmod/modubinascii.c
  function STATIC (line 36) | STATIC mp_obj_t mod_binascii_hexlify(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 77) | STATIC mp_obj_t mod_binascii_unhexlify(mp_obj_t data) {
  function mod_binascii_sextet (line 109) | static int mod_binascii_sextet(byte ch) {
  function STATIC (line 125) | STATIC mp_obj_t mod_binascii_a2b_base64(mp_obj_t data) {
  function STATIC (line 168) | STATIC mp_obj_t mod_binascii_b2a_base64(mp_obj_t data) {
  function STATIC (line 223) | STATIC mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) {

FILE: extmod/moducryptolib.c
  type ctr_params (line 49) | struct ctr_params {
  type mbedtls_aes_ctx_with_key (line 69) | struct mbedtls_aes_ctx_with_key {
  type mp_obj_aes_t (line 82) | typedef struct _mp_obj_aes_t {
  function is_ctr_mode (line 92) | static inline bool is_ctr_mode(int block_mode) {
  type ctr_params (line 100) | struct ctr_params
  type ctr_params (line 102) | struct ctr_params
  function STATIC (line 106) | STATIC void aes_initial_set_key_impl(AES_CTX_IMPL *ctx, const uint8_t *k...
  function STATIC (line 111) | STATIC void aes_final_set_key_impl(AES_CTX_IMPL *ctx, bool encrypt) {
  function STATIC (line 117) | STATIC void aes_process_ecb_impl(AES_CTX_IMPL *ctx, const uint8_t in[16]...
  function STATIC (line 135) | STATIC void aes_process_cbc_impl(AES_CTX_IMPL *ctx, const uint8_t *in, u...
  function STATIC (line 145) | STATIC void aes_process_ctr_impl(AES_CTX_IMPL *ctx, const uint8_t *in, u...
  function STATIC (line 172) | STATIC void aes_initial_set_key_impl(AES_CTX_IMPL *ctx, const uint8_t *k...
  function STATIC (line 181) | STATIC void aes_final_set_key_impl(AES_CTX_IMPL *ctx, bool encrypt) {
  function STATIC (line 198) | STATIC void aes_process_ecb_impl(AES_CTX_IMPL *ctx, const uint8_t in[16]...
  function STATIC (line 202) | STATIC void aes_process_cbc_impl(AES_CTX_IMPL *ctx, const uint8_t *in, u...
  function STATIC (line 207) | STATIC void aes_process_ctr_impl(AES_CTX_IMPL *ctx, const uint8_t *in, u...
  function STATIC (line 214) | STATIC mp_obj_t ucryptolib_aes_make_new(const mp_obj_type_t *type, size_...
  function STATIC (line 264) | STATIC mp_obj_t aes_process(size_t n_args, const mp_obj_t *args, bool en...
  function STATIC (line 336) | STATIC mp_obj_t ucryptolib_aes_encrypt(size_t n_args, const mp_obj_t *ar...
  function STATIC (line 341) | STATIC mp_obj_t ucryptolib_aes_decrypt(size_t n_args, const mp_obj_t *ar...

FILE: extmod/moductypes.c
  type mp_obj_uctypes_struct_t (line 135) | typedef struct _mp_obj_uctypes_struct_t {
  function syntax_error (line 142) | void syntax_error(void) {
  function STATIC (line 146) | STATIC mp_obj_t uctypes_struct_make_new(const mp_obj_type_t *type, size_...
  function STATIC (line 159) | STATIC void uctypes_struct_print(const mp_print_t *print, mp_obj_t self_...
  function mp_uint_t (line 187) | static inline mp_uint_t uctypes_struct_scalar_size(int val_type) {
  function STATIC (line 196) | STATIC mp_uint_t uctypes_struct_agg_size(mp_obj_tuple_t *t, int layout_t...
  function STATIC (line 256) | STATIC mp_uint_t uctypes_struct_size(mp_obj_t desc_in, int layout_type, ...
  function STATIC (line 335) | STATIC mp_obj_t uctypes_struct_sizeof(size_t n_args, const mp_obj_t *arg...
  function STATIC (line 363) | STATIC mp_obj_t uctypes_struct_calc_offsets(size_t n_args, const mp_obj_...
  function mp_obj_t (line 383) | static inline mp_obj_t get_unaligned(uint val_type, byte *p, int big_end...
  function set_unaligned (line 390) | static inline void set_unaligned(uint val_type, byte *p, int big_endian,...
  function mp_uint_t (line 397) | static inline mp_uint_t get_aligned_basic(uint val_type, void *p) {
  function set_aligned_basic (line 410) | static inline void set_aligned_basic(uint val_type, void *p, mp_uint_t v) {
  function STATIC (line 425) | STATIC mp_obj_t get_aligned(uint val_type, void *p, mp_int_t index) {
  function STATIC (line 455) | STATIC void set_aligned(uint val_type, void *p, mp_int_t index, mp_obj_t...
  function STATIC (line 500) | STATIC mp_obj_t uctypes_struct_attr_op(mp_obj_t self_in, qstr attr, mp_o...
  function STATIC (line 624) | STATIC void uctypes_struct_attr(mp_obj_t self_in, qstr attr, mp_obj_t *d...
  function STATIC (line 637) | STATIC mp_obj_t uctypes_struct_subscr(mp_obj_t self_in, mp_obj_t index_i...
  function STATIC (line 716) | STATIC mp_obj_t uctypes_struct_unary_op(mp_unary_op_t op, mp_obj_t self_...
  function STATIC (line 736) | STATIC mp_int_t uctypes_get_buffer(mp_obj_t self_in, mp_buffer_info_t *b...
  function STATIC (line 767) | STATIC mp_obj_t uctypes_struct_addressof(size_t n_args, const mp_obj_t *...
  function STATIC (line 803) | STATIC mp_obj_t uctypes_struct_bytearray_at(mp_obj_t ptr, mp_obj_t size) {
  function STATIC (line 812) | STATIC mp_obj_t uctypes_struct_bytes_at(size_t n_args, const mp_obj_t *a...

FILE: extmod/moduhashlib.c
  type mp_obj_hash_t (line 61) | typedef struct _mp_obj_hash_t {
  function STATIC (line 77) | STATIC mp_obj_t uhashlib_sha256_make_new(const mp_obj_type_t *type, size...
  function STATIC (line 91) | STATIC mp_obj_t uhashlib_sha256_update(mp_obj_t self_in, mp_obj_t arg) {
  function STATIC (line 99) | STATIC mp_obj_t uhashlib_sha256_digest(mp_obj_t self_in) {
  function STATIC (line 111) | STATIC mp_obj_t uhashlib_sha256_make_new(const mp_obj_type_t *type, size...
  function STATIC (line 124) | STATIC mp_obj_t uhashlib_sha256_update(mp_obj_t self_in, mp_obj_t arg) {
  function STATIC (line 132) | STATIC mp_obj_t uhashlib_sha256_digest(mp_obj_t self_in) {
  function STATIC (line 163) | STATIC mp_obj_t uhashlib_sha1_make_new(const mp_obj_type_t *type, size_t...
  function STATIC (line 176) | STATIC mp_obj_t uhashlib_sha1_update(mp_obj_t self_in, mp_obj_t arg) {
  function STATIC (line 184) | STATIC mp_obj_t uhashlib_sha1_digest(mp_obj_t self_in) {
  function STATIC (line 201) | STATIC mp_obj_t uhashlib_sha1_make_new(const mp_obj_type_t *type, size_t...
  function STATIC (line 215) | STATIC mp_obj_t uhashlib_sha1_update(mp_obj_t self_in, mp_obj_t arg) {
  function STATIC (line 223) | STATIC mp_obj_t uhashlib_sha1_digest(mp_obj_t self_in) {
  function STATIC (line 254) | STATIC mp_obj_t uhashlib_md5_make_new(const mp_obj_type_t *type, size_t ...
  function STATIC (line 267) | STATIC mp_obj_t uhashlib_md5_update(mp_obj_t self_in, mp_obj_t arg) {
  function STATIC (line 275) | STATIC mp_obj_t uhashlib_md5_digest(mp_obj_t self_in) {
  function STATIC (line 292) | STATIC mp_obj_t uhashlib_md5_make_new(const mp_obj_type_t *type, size_t ...
  function STATIC (line 306) | STATIC mp_obj_t uhashlib_md5_update(mp_obj_t self_in, mp_obj_t arg) {
  function STATIC (line 314) | STATIC mp_obj_t uhashlib_md5_digest(mp_obj_t self_in) {

FILE: extmod/moduheapq.c
  function STATIC (line 34) | STATIC mp_obj_list_t *uheapq_get_heap(mp_obj_t heap_in) {
  function STATIC (line 41) | STATIC void uheapq_heap_siftdown(mp_obj_list_t *heap, mp_uint_t start_po...
  function STATIC (line 56) | STATIC void uheapq_heap_siftup(mp_obj_list_t *heap, mp_uint_t pos) {
  function STATIC (line 73) | STATIC mp_obj_t mod_uheapq_heappush(mp_obj_t heap_in, mp_obj_t item) {
  function STATIC (line 81) | STATIC mp_obj_t mod_uheapq_heappop(mp_obj_t heap_in) {
  function STATIC (line 97) | STATIC mp_obj_t mod_uheapq_heapify(mp_obj_t heap_in) {

FILE: extmod/modujson.c
  function STATIC (line 37) | STATIC mp_obj_t mod_ujson_dump(mp_obj_t obj, mp_obj_t stream) {
  function STATIC (line 45) | STATIC mp_obj_t mod_ujson_dumps(mp_obj_t obj) {
  type ujson_stream_t (line 67) | typedef struct _ujson_stream_t {
  function STATIC (line 79) | STATIC byte ujson_stream_next(ujson_stream_t *s) {
  function STATIC (line 90) | STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
  function STATIC (line 302) | STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {

FILE: extmod/modurandom.c
  function STATIC (line 44) | STATIC uint32_t yasmarang(void) {
  function STATIC (line 60) | STATIC uint32_t yasmarang_randbelow(uint32_t n) {
  function STATIC (line 74) | STATIC mp_obj_t mod_urandom_getrandbits(mp_obj_t num_in) {
  function STATIC (line 86) | STATIC mp_obj_t mod_urandom_seed(mp_obj_t seed_in) {
  function STATIC (line 98) | STATIC mp_obj_t mod_urandom_randrange(size_t n_args, const mp_obj_t *arg...
  function STATIC (line 140) | STATIC mp_obj_t mod_urandom_randint(mp_obj_t a_in, mp_obj_t b_in) {
  function STATIC (line 151) | STATIC mp_obj_t mod_urandom_choice(mp_obj_t seq) {
  function STATIC (line 164) | STATIC mp_float_t yasmarang_float(void) {
  function STATIC (line 176) | STATIC mp_obj_t mod_urandom_random(void) {
  function STATIC (line 181) | STATIC mp_obj_t mod_urandom_uniform(mp_obj_t a_in, mp_obj_t b_in) {
  function STATIC (line 193) | STATIC mp_obj_t mod_urandom___init__() {

FILE: extmod/modure.c
  type mp_obj_re_t (line 44) | typedef struct _mp_obj_re_t {
  type mp_obj_match_t (line 49) | typedef struct _mp_obj_match_t {
  function STATIC (line 61) | STATIC void match_print(const mp_print_t *print, mp_obj_t self_in, mp_pr...
  function STATIC (line 67) | STATIC mp_obj_t match_group(mp_obj_t self_in, mp_obj_t no_in) {
  function STATIC (line 86) | STATIC mp_obj_t match_groups(mp_obj_t self_in) {
  function STATIC (line 103) | STATIC void match_span_helper(size_t n_args, const mp_obj_t *args, mp_ob...
  function STATIC (line 128) | STATIC mp_obj_t match_span(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 135) | STATIC mp_obj_t match_start(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 142) | STATIC mp_obj_t match_end(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 174) | STATIC void re_print(const mp_print_t *print, mp_obj_t self_in, mp_print...
  function STATIC (line 180) | STATIC mp_obj_t ure_exec(bool is_anchored, uint n_args, const mp_obj_t *...
  function STATIC (line 208) | STATIC mp_obj_t re_match(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 213) | STATIC mp_obj_t re_search(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 218) | STATIC mp_obj_t re_split(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 265) | STATIC mp_obj_t re_sub_helper(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 402) | STATIC mp_obj_t mod_re_compile(size_t n_args, const mp_obj_t *args) {

FILE: extmod/moduselect.c
  type poll_obj_t (line 47) | typedef struct _poll_obj_t {
  function STATIC (line 57) | STATIC void poll_map_add(mp_map_t *poll_map, const mp_obj_t *obj, mp_uin...
  function STATIC (line 94) | STATIC mp_uint_t poll_map_poll(mp_map_t *poll_map, size_t *rwx_num) {
  function STATIC (line 131) | STATIC mp_obj_t select_select(size_t n_args, const mp_obj_t *args) {
  type mp_obj_poll_t (line 199) | typedef struct _mp_obj_poll_t {
  function STATIC (line 210) | STATIC mp_obj_t poll_register(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 234) | STATIC mp_obj_t poll_unregister(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 254) | STATIC mp_obj_t poll_modify(mp_obj_t self_in, mp_obj_t obj_in, mp_obj_t ...
  function STATIC (line 265) | STATIC mp_uint_t poll_poll_internal(uint n_args, const mp_obj_t *args) {
  function STATIC (line 299) | STATIC mp_obj_t poll_poll(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 324) | STATIC mp_obj_t poll_ipoll(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 343) | STATIC mp_obj_t poll_iternext(mp_obj_t self_in) {
  function STATIC (line 396) | STATIC mp_obj_t select_poll(void) {

FILE: extmod/modussl_axtls.c
  type mp_obj_ssl_context_t (line 46) | typedef struct _mp_obj_ssl_context_t {
  type mp_obj_ssl_socket_t (line 51) | typedef struct _mp_obj_ssl_socket_t {
  type ssl_sock_args (line 63) | struct ssl_sock_args {
  function ussl_raise_error (line 71) | void ussl_raise_error(int code) {
  function STATIC (line 76) | STATIC mp_obj_t ussl_context_make_new(const mp_obj_type_t *type, size_t ...
  function STATIC (line 93) | STATIC mp_obj_t ussl_context_set_cert_key(mp_obj_t self_in, mp_obj_t cer...
  function STATIC (line 113) | STATIC mp_obj_ssl_socket_t *ussl_socket_new(mp_obj_t sock, mp_obj_t ssl_...
  function STATIC (line 161) | STATIC void ussl_socket_print(const mp_print_t *print, mp_obj_t self_in,...
  function STATIC (line 167) | STATIC mp_uint_t ussl_socket_read(mp_obj_t o_in, void *buf, mp_uint_t si...
  function STATIC (line 216) | STATIC mp_uint_t ussl_socket_write(mp_obj_t o_in, const void *buf, mp_ui...
  function STATIC (line 232) | STATIC mp_uint_t ussl_socket_ioctl(mp_obj_t o_in, mp_uint_t request, uin...
  function STATIC (line 242) | STATIC mp_obj_t ussl_socket_setblocking(mp_obj_t self_in, mp_obj_t flag_...
  function STATIC (line 285) | STATIC mp_obj_t ussl_context_wrap_socket(size_t n_args, const mp_obj_t *...

FILE: extmod/modussl_mbedtls.c
  type mp_obj_ssl_context_t (line 61) | typedef struct _mp_obj_ssl_context_t {
  type mp_obj_ssl_socket_t (line 71) | typedef struct _mp_obj_ssl_socket_t {
  type ssl_sock_args (line 80) | struct ssl_sock_args {
  function STATIC (line 90) | STATIC void mbedtls_debug(void *ctx, int level, const char *file, int li...
  function ussl_raise_error (line 97) | void ussl_raise_error(int code) {
  function STATIC (line 102) | STATIC int _mbedtls_ssl_send(void *ctx, const byte *buf, size_t len) {
  function STATIC (line 127) | STATIC int _mbedtls_ssl_recv(void *ctx, byte *buf, size_t len) {
  function STATIC (line 144) | STATIC mp_obj_t ussl_context_make_new(const mp_obj_type_t *type, size_t ...
  function STATIC (line 205) | STATIC mp_obj_t ussl_context_set_cert_key(mp_obj_t self_in, mp_obj_t cer...
  function STATIC (line 232) | STATIC mp_obj_ssl_socket_t *socket_new(mp_obj_t sock, mp_obj_t ssl_ctx_o...
  function STATIC (line 285) | STATIC mp_obj_t mod_ssl_getpeercert(mp_obj_t o_in, mp_obj_t binary_form) {
  function STATIC (line 298) | STATIC void socket_print(const mp_print_t *print, mp_obj_t self_in, mp_p...
  function STATIC (line 304) | STATIC mp_uint_t socket_read(mp_obj_t o_in, void *buf, mp_uint_t size, i...
  function STATIC (line 327) | STATIC mp_uint_t socket_write(mp_obj_t o_in, const void *buf, mp_uint_t ...
  function STATIC (line 346) | STATIC mp_obj_t socket_setblocking(mp_obj_t self_in, mp_obj_t flag_in) {
  function STATIC (line 356) | STATIC mp_uint_t socket_ioctl(mp_obj_t o_in, mp_uint_t request, uintptr_...
  function STATIC (line 398) | STATIC mp_obj_t ussl_context_wrap_socket(size_t n_args, const mp_obj_t *...

FILE: extmod/modutimeq.c
  type qentry (line 44) | struct qentry {
  type mp_obj_utimeq_t (line 57) | typedef struct _mp_obj_utimeq_t {
  function STATIC (line 73) | STATIC mp_obj_utimeq_t *utimeq_get_heap(mp_obj_t heap_in) {
  function STATIC (line 77) | STATIC bool time_less_than(struct qentry *item, struct qentry *parent) {
  function STATIC (line 94) | STATIC mp_obj_t utimeq_make_new(const mp_obj_type_t *type, size_t n_args...
  function STATIC (line 117) | STATIC void utimeq_heap_siftdown(mp_obj_utimeq_t *heap, mp_uint_t start_...
  function STATIC (line 135) | STATIC void utimeq_heap_siftup(mp_obj_utimeq_t *heap, mp_uint_t pos) {
  function STATIC (line 157) | STATIC mp_obj_t mod_utimeq_heappush(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 181) | STATIC mp_obj_t mod_utimeq_heappop(mp_obj_t heap_in, mp_obj_t list_ref) {
  function STATIC (line 209) | STATIC mp_obj_t mod_utimeq_remove(mp_obj_t heap_in, mp_obj_t el_handle) {
  function STATIC (line 242) | STATIC mp_obj_t mod_utimeq_peektime(mp_obj_t heap_in) {
  function STATIC (line 254) | STATIC mp_obj_t mod_utimeq_dump(mp_obj_t heap_in) {
  function STATIC (line 266) | STATIC mp_obj_t utimeq_unary_op(mp_unary_op_t op, mp_obj_t self_in) {

FILE: extmod/moduwebsocket.c
  type mp_obj_websocket_t (line 41) | typedef struct _mp_obj_websocket_t {
  function STATIC (line 60) | STATIC mp_obj_t websocket_make_new(const mp_obj_type_t *type, size_t n_a...
  function STATIC (line 77) | STATIC mp_uint_t websocket_read(mp_obj_t self_in, void *buf, mp_uint_t s...
  function STATIC (line 219) | STATIC mp_uint_t websocket_write(mp_obj_t self_in, const void *buf, mp_u...
  function STATIC (line 257) | STATIC mp_uint_t websocket_ioctl(mp_obj_t self_in, mp_uint_t request, ui...

FILE: extmod/moduzlib.c
  type mp_obj_decompio_t (line 44) | typedef struct _mp_obj_decompio_t {
  function STATIC (line 52) | STATIC int read_src_stream(TINF_DATA *data) {
  function handle_dict_opt (line 70) | STATIC unsigned handle_dict_opt(mp_obj_decompio_t *o) {
  function STATIC (line 96) | STATIC mp_obj_t decompio_make_new(const mp_obj_type_t *type, size_t n_ar...
  function STATIC (line 129) | STATIC mp_uint_t decompio_read(mp_obj_t o_in, void *buf, mp_uint_t size,...
  function STATIC (line 148) | STATIC mp_obj_t decompio_init(mp_obj_t self_in, mp_obj_t stream) {
  function STATIC (line 184) | STATIC mp_obj_t mod_uzlib_decompress(size_t n_args, const mp_obj_t *args) {

FILE: extmod/modwebrepl.c
  type webrepl_file (line 47) | struct webrepl_file {
  type mp_obj_webrepl_t (line 60) | typedef struct _mp_obj_webrepl_t {
  function STATIC (line 76) | STATIC void write_webrepl(mp_obj_t websock, const void *buf, size_t len) {
  function STATIC (line 85) | STATIC void write_webrepl_str(mp_obj_t websock, const char *str, int sz) {
  function STATIC (line 91) | STATIC void write_webrepl_resp(mp_obj_t websock, uint16_t code) {
  function STATIC (line 96) | STATIC mp_obj_t webrepl_make_new(const mp_obj_type_t *type, size_t n_arg...
  function STATIC (line 110) | STATIC void check_file_op_finished(mp_obj_webrepl_t *self) {
  function STATIC (line 119) | STATIC int write_file_chunk(mp_obj_webrepl_t *self) {
  function STATIC (line 134) | STATIC void handle_op(mp_obj_webrepl_t *self) {
  function STATIC (line 179) | STATIC mp_uint_t webrepl_read(mp_obj_t self_in, void *buf, mp_uint_t siz...
  function STATIC (line 187) | STATIC mp_uint_t _webrepl_read(mp_obj_t self_in, void *buf, mp_uint_t si...
  function STATIC (line 296) | STATIC mp_uint_t webrepl_write(mp_obj_t self_in, const void *buf, mp_uin...
  function STATIC (line 306) | STATIC mp_uint_t webrepl_ioctl(mp_obj_t o_in, mp_uint_t request, uintptr...
  function STATIC (line 321) | STATIC mp_obj_t webrepl_set_password(mp_obj_t passwd_in) {

FILE: extmod/network_cyw43.c
  type network_cyw43_obj_t (line 40) | typedef struct _network_cyw43_obj_t {
  function STATIC (line 49) | STATIC void network_cyw43_print(const mp_print_t *print, mp_obj_t self_i...
  function STATIC (line 77) | STATIC mp_obj_t network_cyw43_make_new(const mp_obj_type_t *type, size_t...
  function STATIC (line 86) | STATIC mp_obj_t network_cyw43_send_ethernet(mp_obj_t self_in, mp_obj_t b...
  function STATIC (line 98) | STATIC mp_obj_t network_cyw43_ioctl(mp_obj_t self_in, mp_obj_t cmd_in, m...
  function STATIC (line 110) | STATIC mp_obj_t network_cyw43_deinit(mp_obj_t self_in) {
  function STATIC (line 117) | STATIC mp_obj_t network_cyw43_active(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 128) | STATIC int network_cyw43_scan_cb(void *env, const cyw43_ev_scan_result_t...
  function STATIC (line 165) | STATIC mp_obj_t network_cyw43_scan(size_t n_args, const mp_obj_t *pos_ar...
  function STATIC (line 212) | STATIC mp_obj_t network_cyw43_connect(size_t n_args, const mp_obj_t *pos...
  function STATIC (line 249) | STATIC mp_obj_t network_cyw43_disconnect(mp_obj_t self_in) {
  function STATIC (line 256) | STATIC mp_obj_t network_cyw43_isconnected(mp_obj_t self_in) {
  function STATIC (line 262) | STATIC mp_obj_t network_cyw43_ifconfig(size_t n_args, const mp_obj_t *ar...
  function STATIC (line 268) | STATIC mp_obj_t network_cyw43_status(size_t n_args, const mp_obj_t *args) {
  function nw_get_le32 (line 302) | static inline uint32_t nw_get_le32(const uint8_t *buf) {
  function nw_put_le32 (line 306) | static inline void nw_put_le32(uint8_t *buf, uint32_t x) {
  function STATIC (line 313) | STATIC mp_obj_t network_cyw43_config(size_t n_args, const mp_obj_t *args...

FILE: extmod/nimble/hal/hal_uart.c
  function hal_uart_init_cbs (line 46) | int hal_uart_init_cbs(uint32_t port, hal_uart_tx_cb_t tx_cb, void *tx_ar...
  function hal_uart_config (line 54) | int hal_uart_config(uint32_t port, uint32_t baudrate, uint32_t bits, uin...
  function hal_uart_start_tx (line 58) | void hal_uart_start_tx(uint32_t port) {
  function hal_uart_close (line 79) | int hal_uart_close(uint32_t port) {
  function mp_bluetooth_nimble_hci_uart_process (line 83) | void mp_bluetooth_nimble_hci_uart_process(bool run_events) {

FILE: extmod/nimble/modbluetooth_nimble.c
  type ble_gatt_register_ctxt (line 109) | struct ble_gatt_register_ctxt
  type ble_gap_event (line 112) | struct ble_gap_event
  type ble_gap_event (line 115) | struct ble_gap_event
  type ble_gap_event (line 118) | struct ble_gap_event
  type ble_gap_event (line 122) | struct ble_gap_event
  type os_mbuf (line 127) | struct os_mbuf
  type ble_gatt_error (line 130) | struct ble_gatt_error
  type ble_gatt_svc (line 130) | struct ble_gatt_svc
  type ble_gatt_error (line 131) | struct ble_gatt_error
  type ble_gatt_chr (line 131) | struct ble_gatt_chr
  type ble_gatt_error (line 132) | struct ble_gatt_error
  type ble_gatt_dsc (line 132) | struct ble_gatt_dsc
  type ble_gatt_error (line 135) | struct ble_gatt_error
  type ble_gatt_attr (line 135) | struct ble_gatt_attr
  type ble_gatt_error (line 136) | struct ble_gatt_error
  type ble_gatt_attr (line 136) | struct ble_gatt_attr
  function STATIC (line 146) | STATIC int ble_hs_err_to_errno(int err) {
  function STATIC (line 161) | STATIC ble_uuid_t *create_nimble_uuid(const mp_obj_bluetooth_uuid_t *uui...
  function STATIC (line 183) | STATIC void reverse_addr_byte_order(uint8_t *addr_out, const uint8_t *ad...
  function STATIC (line 191) | STATIC mp_obj_bluetooth_uuid_t create_mp_uuid(const ble_uuid_any_t *uuid) {
  function STATIC (line 217) | STATIC ble_addr_t create_nimble_addr(uint8_t addr_type, const uint8_t *a...
  function STATIC (line 229) | STATIC void reset_cb(int reason) {
  function STATIC (line 233) | STATIC bool has_public_address(void) {
  function STATIC (line 237) | STATIC void set_random_address(bool nrpa) {
  function STATIC (line 281) | STATIC int load_irk(void) {
  function STATIC (line 325) | STATIC void sync_cb(void) {
  function STATIC (line 359) | STATIC void gatts_register_cb(struct ble_gatt_register_ctxt *ctxt, void ...
  function STATIC (line 400) | STATIC int commmon_gap_event_cb(struct ble_gap_event *event, void *arg) {
  function STATIC (line 446) | STATIC int central_gap_event_cb(struct ble_gap_event *event, void *arg) {
  function mp_bluetooth_nimble_port_hci_init (line 531) | void mp_bluetooth_nimble_port_hci_init(void) {
  function mp_bluetooth_nimble_port_hci_deinit (line 538) | void mp_bluetooth_nimble_port_hci_deinit(void) {
  function mp_bluetooth_nimble_port_start (line 544) | void mp_bluetooth_nimble_port_start(void) {
  function STATIC (line 551) | STATIC void ble_hs_shutdown_stop_cb(int status, void *arg) {
  function mp_bluetooth_nimble_port_shutdown (line 559) | void mp_bluetooth_nimble_port_shutdown(void) {
  function nimble_reset_gatts_bss (line 574) | void nimble_reset_gatts_bss(void) {
  function mp_bluetooth_init (line 588) | int mp_bluetooth_init(void) {
  function mp_bluetooth_deinit (line 655) | void mp_bluetooth_deinit(void) {
  function mp_bluetooth_is_active (line 690) | bool mp_bluetooth_is_active(void) {
  function mp_bluetooth_get_current_address (line 694) | void mp_bluetooth_get_current_address(uint8_t *addr_type, uint8_t *addr) {
  function mp_bluetooth_set_address_mode (line 723) | void mp_bluetooth_set_address_mode(uint8_t addr_mode) {
  function mp_bluetooth_set_bonding (line 756) | void mp_bluetooth_set_bonding(bool enabled) {
  function mp_bluetooth_set_mitm_protection (line 760) | void mp_bluetooth_set_mitm_protection(bool enabled) {
  function mp_bluetooth_set_le_secure (line 764) | void mp_bluetooth_set_le_secure(bool enabled) {
  function mp_bluetooth_set_io_capability (line 768) | void mp_bluetooth_set_io_capability(uint8_t capability) {
  function mp_bluetooth_gap_get_device_name (line 773) | size_t mp_bluetooth_gap_get_device_name(const uint8_t **buf) {
  function mp_bluetooth_gap_set_device_name (line 779) | int mp_bluetooth_gap_set_device_name(const uint8_t *buf, size_t len) {
  function mp_bluetooth_gap_advertise_start (line 789) | int mp_bluetooth_gap_advertise_start(bool connectable, int32_t interval_...
  function mp_bluetooth_gap_advertise_stop (line 828) | void mp_bluetooth_gap_advertise_stop(void) {
  function characteristic_access_cb (line 834) | static int characteristic_access_cb(uint16_t conn_handle, uint16_t value...
  function mp_bluetooth_gatts_register_service_begin (line 885) | int mp_bluetooth_gatts_register_service_begin(bool append) {
  function mp_bluetooth_gatts_register_service_end (line 919) | int mp_bluetooth_gatts_register_service_end(void) {
  function mp_bluetooth_gatts_register_service (line 928) | int mp_bluetooth_gatts_register_service(mp_obj_bluetooth_uuid_t *service...
  function mp_bluetooth_gap_disconnect (line 993) | int mp_bluetooth_gap_disconnect(uint16_t conn_handle) {
  function mp_bluetooth_gatts_read (line 1000) | int mp_bluetooth_gatts_read(uint16_t value_handle, uint8_t **value, size...
  function mp_bluetooth_gatts_write (line 1007) | int mp_bluetooth_gatts_write(uint16_t value_handle, const uint8_t *value...
  function mp_bluetooth_gatts_notify (line 1016) | int mp_bluetooth_gatts_notify(uint16_t conn_handle, uint16_t value_handl...
  function mp_bluetooth_gatts_notify_send (line 1025) | int mp_bluetooth_gatts_notify_send(uint16_t conn_handle, uint16_t value_...
  function mp_bluetooth_gatts_indicate (line 1036) | int mp_bluetooth_gatts_indicate(uint16_t conn_handle, uint16_t value_han...
  function mp_bluetooth_gatts_set_buffer (line 1045) | int mp_bluetooth_gatts_set_buffer(uint16_t value_handle, size_t len, boo...
  function mp_bluetooth_get_preferred_mtu (line 1052) | int mp_bluetooth_get_preferred_mtu(void) {
  function mp_bluetooth_set_preferred_mtu (line 1059) | int mp_bluetooth_set_preferred_mtu(uint16_t mtu) {
  function mp_bluetooth_gap_pair (line 1070) | int mp_bluetooth_gap_pair(uint16_t conn_handle) {
  function mp_bluetooth_gap_passkey (line 1075) | int mp_bluetooth_gap_passkey(uint16_t conn_handle, uint8_t action, mp_in...
  function STATIC (line 1105) | STATIC int gap_scan_cb(struct ble_gap_event *event, void *arg) {
  function mp_bluetooth_gap_scan_start (line 1127) | int mp_bluetooth_gap_scan_start(int32_t duration_ms, int32_t interval_us...
  function mp_bluetooth_gap_scan_stop (line 1146) | int mp_bluetooth_gap_scan_stop(void) {
  function STATIC (line 1163) | STATIC int peripheral_gap_event_cb(struct ble_gap_event *event, void *ar...
  function mp_bluetooth_gap_peripheral_connect (line 1196) | int mp_bluetooth_gap_peripheral_connect(uint8_t addr_type, const uint8_t...
  function STATIC (line 1222) | STATIC int ble_gattc_service_cb(uint16_t conn_handle, const struct ble_g...
  function STATIC (line 1240) | STATIC void gattc_on_data_available(uint8_t event, uint16_t conn_handle,...
  function mp_bluetooth_gattc_discover_primary_services (line 1272) | int mp_bluetooth_gattc_discover_primary_services(uint16_t conn_handle, c...
  function STATIC (line 1287) | STATIC int ble_gattc_characteristic_cb(uint16_t conn_handle, const struc...
  function mp_bluetooth_gattc_discover_characteristics (line 1301) | int mp_bluetooth_gattc_discover_characteristics(uint16_t conn_handle, ui...
  function STATIC (line 1316) | STATIC int ble_gattc_descriptor_cb(uint16_t conn_handle, const struct bl...
  function mp_bluetooth_gattc_discover_descriptors (line 1330) | int mp_bluetooth_gattc_discover_descriptors(uint16_t conn_handle, uint16...
  function STATIC (line 1338) | STATIC int ble_gattc_attr_read_cb(uint16_t conn_handle, const struct ble...
  function mp_bluetooth_gattc_read (line 1352) | int mp_bluetooth_gattc_read(uint16_t conn_handle, uint16_t value_handle) {
  function STATIC (line 1360) | STATIC int ble_gattc_attr_write_cb(uint16_t conn_handle, const struct bl...
  function mp_bluetooth_gattc_write (line 1371) | int mp_bluetooth_gattc_write(uint16_t conn_handle, uint16_t value_handle...
  function mp_bluetooth_gattc_exchange_mtu (line 1386) | int mp_bluetooth_gattc_exchange_mtu(uint16_t conn_handle) {
  type mp_bluetooth_nimble_l2cap_channel_t (line 1410) | typedef struct _mp_bluetooth_nimble_l2cap_channel_t {
  type ble_l2cap_event (line 1421) | struct ble_l2cap_event
  function STATIC (line 1425) | STATIC void destroy_l2cap_channel() {
  function STATIC (line 1433) | STATIC int l2cap_channel_event(struct ble_l2cap_event *event, void *arg) {
  function STATIC (line 1550) | STATIC mp_bluetooth_nimble_l2cap_channel_t *get_l2cap_channel_for_conn_c...
  function STATIC (line 1569) | STATIC int create_l2cap_channel(uint16_t mtu, mp_bluetooth_nimble_l2cap_...
  function mp_bluetooth_l2cap_listen (line 1608) | int mp_bluetooth_l2cap_listen(uint16_t psm, uint16_t mtu) {
  function mp_bluetooth_l2cap_connect (line 1622) | int mp_bluetooth_l2cap_connect(uint16_t conn_handle, uint16_t psm, uint1...
  function mp_bluetooth_l2cap_disconnect (line 1636) | int mp_bluetooth_l2cap_disconnect(uint16_t conn_handle, uint16_t cid) {
  function mp_bluetooth_l2cap_send (line 1645) | int mp_bluetooth_l2cap_send(uint16_t conn_handle, uint16_t cid, const ui...
  function mp_bluetooth_l2cap_recvinto (line 1692) | int mp_bluetooth_l2cap_recvinto(uint16_t conn_handle, uint16_t cid, uint...
  function mp_bluetooth_hci_cmd (line 1751) | int mp_bluetooth_hci_cmd(uint16_t ogf, uint16_t ocf, const uint8_t *req,...
  function STATIC (line 1767) | STATIC int ble_store_ram_read(int obj_type, const union ble_store_key *k...
  function STATIC (line 1832) | STATIC int ble_store_ram_write(int obj_type, const union ble_store_value...
  function STATIC (line 1866) | STATIC int ble_store_ram_delete(int obj_type, const union ble_store_key ...
  function ble_store_ram_init (line 1899) | void ble_store_ram_init(void) {

FILE: extmod/nimble/modbluetooth_nimble.h
  type mp_bluetooth_nimble_root_pointers_t (line 34) | typedef struct _mp_bluetooth_nimble_root_pointers_t {

FILE: extmod/nimble/nimble/nimble_npl_os.c
  function ble_npl_os_started (line 46) | bool ble_npl_os_started(void) {
  type mp_bluetooth_nimble_malloc_t (line 62) | typedef struct _mp_bluetooth_nimble_malloc_t {
  function STATIC (line 70) | STATIC void *m_malloc_bluetooth(size_t size) {
  function STATIC (line 82) | STATIC mp_bluetooth_nimble_malloc_t* get_nimble_malloc(void *ptr) {
  function STATIC (line 86) | STATIC void m_free_bluetooth(void *ptr) {
  function STATIC (line 105) | STATIC bool is_valid_nimble_malloc(void *ptr) {
  function nimble_free (line 126) | void nimble_free(void *ptr) {
  function nimble_sprintf (line 172) | int nimble_sprintf(char *str, const char *fmt, ...) {
  type ble_npl_eventq (line 180) | struct ble_npl_eventq
  function mp_bluetooth_nimble_os_eventq_run_all (line 183) | void mp_bluetooth_nimble_os_eventq_run_all(void) {
  function ble_npl_eventq_init (line 232) | void ble_npl_eventq_init(struct ble_npl_eventq *evq) {
  function ble_npl_eventq_put (line 245) | void ble_npl_eventq_put(struct ble_npl_eventq *evq, struct ble_npl_event...
  function ble_npl_event_init (line 278) | void ble_npl_event_init(struct ble_npl_event *ev, ble_npl_event_fn *fn, ...
  type ble_npl_event (line 286) | struct ble_npl_event
  function ble_npl_event_set_arg (line 291) | void ble_npl_event_set_arg(struct ble_npl_event *ev, void *arg) {
  function ble_npl_error_t (line 299) | ble_npl_error_t ble_npl_mutex_init(struct ble_npl_mutex *mu) {
  function ble_npl_error_t (line 305) | ble_npl_error_t ble_npl_mutex_pend(struct ble_npl_mutex *mu, ble_npl_tim...
  function ble_npl_error_t (line 316) | ble_npl_error_t ble_npl_mutex_release(struct ble_npl_mutex *mu) {
  function ble_npl_error_t (line 328) | ble_npl_error_t ble_npl_sem_init(struct ble_npl_sem *sem, uint16_t token...
  function ble_npl_error_t (line 334) | ble_npl_error_t ble_npl_sem_pend(struct ble_npl_sem *sem, ble_npl_time_t...
  function ble_npl_error_t (line 364) | ble_npl_error_t ble_npl_sem_release(struct ble_npl_sem *sem) {
  function ble_npl_sem_get_count (line 370) | uint16_t ble_npl_sem_get_count(struct ble_npl_sem *sem) {
  type ble_npl_callout (line 378) | struct ble_npl_callout
  function mp_bluetooth_nimble_os_callout_process (line 380) | void mp_bluetooth_nimble_os_callout_process(void) {
  function ble_npl_callout_init (line 406) | void ble_npl_callout_init(struct ble_npl_callout *c, struct ble_npl_even...
  function ble_npl_error_t (line 428) | ble_npl_error_t ble_npl_callout_reset(struct ble_npl_callout *c, ble_npl...
  function ble_npl_callout_stop (line 438) | void ble_npl_callout_stop(struct ble_npl_callout *c) {
  function ble_npl_callout_is_active (line 443) | bool ble_npl_callout_is_active(struct ble_npl_callout *c) {
  function ble_npl_time_t (line 448) | ble_npl_time_t ble_npl_callout_get_ticks(struct ble_npl_callout *c) {
  function ble_npl_time_t (line 453) | ble_npl_time_t ble_npl_callout_remaining_ticks(struct ble_npl_callout *c...
  type ble_npl_callout (line 462) | struct ble_npl_callout
  function ble_npl_callout_set_arg (line 467) | void ble_npl_callout_set_arg(struct ble_npl_callout *c, void *arg) {
  function ble_npl_time_get (line 475) | uint32_t ble_npl_time_get(void) {
  function ble_npl_error_t (line 480) | ble_npl_error_t ble_npl_time_ms_to_ticks(uint32_t ms, ble_npl_time_t *ou...
  function ble_npl_time_t (line 486) | ble_npl_time_t ble_npl_time_ms_to_ticks32(uint32_t ms) {
  function ble_npl_time_ticks_to_ms32 (line 491) | uint32_t ble_npl_time_ticks_to_ms32(ble_npl_time_t ticks) {
  function ble_npl_time_delay (line 496) | void ble_npl_time_delay(ble_npl_time_t ticks) {
  function ble_npl_hw_enter_critical (line 511) | uint32_t ble_npl_hw_enter_critical(void) {
  function ble_npl_hw_exit_critical (line 517) | void ble_npl_hw_exit_critical(uint32_t atomic_state) {

FILE: extmod/nimble/nimble/nimble_npl_os.h
  type ble_npl_time_t (line 52) | typedef uint32_t ble_npl_time_t;
  type ble_npl_stime_t (line 53) | typedef int32_t ble_npl_stime_t;
  type ble_npl_event (line 55) | struct ble_npl_event {
  type ble_npl_eventq (line 63) | struct ble_npl_eventq {
  type ble_npl_callout (line 68) | struct ble_npl_callout {
  type ble_npl_mutex (line 76) | struct ble_npl_mutex {
  type ble_npl_sem (line 80) | struct ble_npl_sem {

FILE: extmod/re1.5/charclass.c
  function _re1_5_classmatch (line 3) | int _re1_5_classmatch(const char *pc, const char *sp)
  function _re1_5_namedclassmatch (line 15) | int _re1_5_namedclassmatch(const char *pc, const char *sp)

FILE: extmod/re1.5/compilecode.c
  function _emit_checked (line 14) | static void _emit_checked(int at, char *code, int val, bool *err) {
  function _compilecode (line 21) | static int _compilecode(const char **re_loc, ByteProg *prog, int sizecode)
  function re1_5_sizecode (line 211) | int re1_5_sizecode(const char *re)
  function re1_5_compilecode (line 226) | int re1_5_compilecode(ByteProg *prog, const char *re)
  function main (line 262) | int main(int argc, char *argv[])

FILE: extmod/re1.5/dumpcode.c
  function re1_5_dumpcode (line 7) | void re1_5_dumpcode(ByteProg *prog)

FILE: extmod/re1.5/re1.5.h
  type Regexp (line 18) | typedef struct Regexp Regexp;
  type Prog (line 19) | typedef struct Prog Prog;
  type ByteProg (line 20) | typedef struct ByteProg ByteProg;
  type Inst (line 21) | typedef struct Inst Inst;
  type Subject (line 22) | typedef struct Subject Subject;
  type Regexp (line 24) | struct Regexp
  type Prog (line 56) | struct Prog
  type ByteProg (line 62) | struct ByteProg
  type Inst (line 70) | struct Inst
  type Sub (line 117) | typedef struct Sub Sub;
  type Sub (line 119) | struct Sub
  type Subject (line 132) | struct Subject {

FILE: extmod/re1.5/recursiveloop.c
  function recursiveloop (line 7) | static int
  function re1_5_recursiveloopprog (line 82) | int

FILE: extmod/uasyncio/__init__.py
  function __getattr__ (line 24) | def __getattr__(attr):

FILE: extmod/uasyncio/core.py
  class CancelledError (line 18) | class CancelledError(BaseException):
  class TimeoutError (line 22) | class TimeoutError(Exception):
  class SingletonGenerator (line 34) | class SingletonGenerator:
    method __init__ (line 35) | def __init__(self):
    method __iter__ (line 39) | def __iter__(self):
    method __next__ (line 42) | def __next__(self):
  function sleep_ms (line 54) | def sleep_ms(t, sgen=SingletonGenerator()):
  function sleep (line 61) | def sleep(t):
  class IOQueue (line 69) | class IOQueue:
    method __init__ (line 70) | def __init__(self):
    method _enqueue (line 74) | def _enqueue(self, s, idx):
    method _dequeue (line 89) | def _dequeue(self, s):
    method queue_read (line 93) | def queue_read(self, s):
    method queue_write (line 96) | def queue_write(self, s):
    method remove (line 99) | def remove(self, task):
    method wait_io_event (line 112) | def wait_io_event(self, dt):
  function _promote_to_task (line 136) | def _promote_to_task(aw):
  function create_task (line 141) | def create_task(coro):
  function run_until_complete (line 150) | def run_until_complete(main_task=None):
  function run (line 221) | def run(coro):
  function _stopper (line 229) | async def _stopper():
  class Loop (line 236) | class Loop:
    method create_task (line 239) | def create_task(coro):
    method run_forever (line 242) | def run_forever():
    method run_until_complete (line 248) | def run_until_complete(aw):
    method stop (line 251) | def stop():
    method close (line 258) | def close():
    method set_exception_handler (line 261) | def set_exception_handler(handler):
    method get_exception_handler (line 264) | def get_exception_handler():
    method default_exception_handler (line 267) | def default_exception_handler(loop, context):
    method call_exception_handler (line 272) | def call_exception_handler(context):
  function get_event_loop (line 277) | def get_event_loop(runq_len=0, waitq_len=0):
  function current_task (line 281) | def current_task():
  function new_event_loop (line 285) | def new_event_loop():

FILE: extmod/uasyncio/event.py
  class Event (line 7) | class Event:
    method __init__ (line 8) | def __init__(self):
    method is_set (line 12) | def is_set(self):
    method set (line 15) | def set(self):
    method clear (line 23) | def clear(self):
    method wait (line 26) | async def wait(self):
  class ThreadSafeFlag (line 43) | class ThreadSafeFlag(uio.IOBase):
    method __init__ (line 44) | def __init__(self):
    method ioctl (line 47) | def ioctl(self, req, flags):
    method set (line 52) | def set(self):
    method wait (line 55) | async def wait(self):

FILE: extmod/uasyncio/funcs.py
  function wait_for (line 7) | async def wait_for(aw, timeout, sleep=core.sleep):
  function wait_for_ms (line 52) | def wait_for_ms(aw, timeout):
  function gather (line 56) | async def gather(*aws, return_exceptions=False):

FILE: extmod/uasyncio/lock.py
  class Lock (line 7) | class Lock:
    method __init__ (line 8) | def __init__(self):
    method locked (line 17) | def locked(self):
    method release (line 20) | def release(self):
    method acquire (line 31) | async def acquire(self):
    method __aenter__ (line 49) | async def __aenter__(self):
    method __aexit__ (line 52) | async def __aexit__(self, exc_type, exc, tb):

FILE: extmod/uasyncio/stream.py
  class Stream (line 7) | class Stream:
    method __init__ (line 8) | def __init__(self, s, e={}):
    method get_extra_info (line 13) | def get_extra_info(self, v):
    method __aenter__ (line 16) | async def __aenter__(self):
    method __aexit__ (line 19) | async def __aexit__(self, exc_type, exc, tb):
    method close (line 22) | def close(self):
    method wait_closed (line 25) | async def wait_closed(self):
    method read (line 29) | async def read(self, n):
    method readinto (line 33) | async def readinto(self, buf):
    method readexactly (line 37) | async def readexactly(self, n):
    method readline (line 49) | async def readline(self):
    method write (line 58) | def write(self, buf):
    method drain (line 61) | async def drain(self):
  function open_connection (line 78) | async def open_connection(host, port):
  class Server (line 96) | class Server:
    method __aenter__ (line 97) | async def __aenter__(self):
    method __aexit__ (line 100) | async def __aexit__(self, exc_type, exc, tb):
    method close (line 104) | def close(self):
    method wait_closed (line 107) | async def wait_closed(self):
    method _serve (line 110) | async def _serve(self, cb, host, port, backlog):
  function start_server (line 139) | async def start_server(cb, host, port, backlog=5):
  function stream_awrite (line 149) | async def stream_awrite(self, buf, off=0, sz=-1):

FILE: extmod/uasyncio/task.py
  function ph_meld (line 11) | def ph_meld(h1, h2):
  function ph_pairing (line 36) | def ph_pairing(child):
  function ph_delete (line 52) | def ph_delete(heap, node):
  class TaskQueue (line 95) | class TaskQueue:
    method __init__ (line 96) | def __init__(self):
    method peek (line 99) | def peek(self):
    method push_sorted (line 102) | def push_sorted(self, v, key):
    method push_head (line 109) | def push_head(self, v):
    method pop_head (line 112) | def pop_head(self):
    method remove (line 117) | def remove(self, v):
  class Task (line 122) | class Task:
    method __init__ (line 123) | def __init__(self, coro, globals=None):
    method __iter__ (line 133) | def __iter__(self):
    method __next__ (line 142) | def __next__(self):
    method done (line 152) | def done(self):
    method cancel (line 155) | def cancel(self):

FILE: extmod/uos_dupterm.c
  function mp_uos_deactivate (line 40) | void mp_uos_deactivate(size_t dupterm_idx, const char *msg, mp_obj_t exc) {
  function mp_uos_dupterm_poll (line 56) | uintptr_t mp_uos_dupterm_poll(uintptr_t poll_flags) {
  function mp_uos_dupterm_rx_chr (line 95) | int mp_uos_dupterm_rx_chr(void) {
  function mp_uos_dupterm_tx_strn (line 150) | void mp_uos_dupterm_tx_strn(const char *str, size_t len) {
  function STATIC (line 175) | STATIC mp_obj_t mp_uos_dupterm(size_t n_args, const mp_obj_t *args) {

FILE: extmod/utime_mphal.c
  function STATIC (line 39) | STATIC mp_obj_t time_sleep(mp_obj_t seconds_o) {
  function STATIC (line 49) | STATIC mp_obj_t time_sleep_ms(mp_obj_t arg) {
  function STATIC (line 58) | STATIC mp_obj_t time_sleep_us(mp_obj_t arg) {
  function STATIC (line 67) | STATIC mp_obj_t time_ticks_ms(void) {
  function STATIC (line 72) | STATIC mp_obj_t time_ticks_us(void) {
  function STATIC (line 77) | STATIC mp_obj_t time_ticks_cpu(void) {
  function STATIC (line 82) | STATIC mp_obj_t time_ticks_diff(mp_obj_t end_in, mp_obj_t start_in) {
  function STATIC (line 94) | STATIC mp_obj_t time_ticks_add(mp_obj_t ticks_in, mp_obj_t delta_in) {

FILE: extmod/uzlib/adler32.c
  function uzlib_adler32 (line 44) | uint32_t uzlib_adler32(const void *data, unsigned int length, uint32_t p...

FILE: extmod/uzlib/crc32.c
  function uzlib_crc32 (line 49) | uint32_t uzlib_crc32(const void *data, unsigned int length, uint32_t crc)

FILE: extmod/uzlib/defl_static.h
  type Outbuf (line 33) | struct Outbuf {
  type Outbuf (line 41) | struct Outbuf
  type Outbuf (line 42) | struct Outbuf
  type Outbuf (line 43) | struct Outbuf
  type Outbuf (line 44) | struct Outbuf
  type Outbuf (line 45) | struct Outbuf

FILE: extmod/uzlib/tinfgzip.c
  function tinf_skip_bytes (line 47) | void tinf_skip_bytes(TINF_DATA *d, int num)
  function tinf_get_uint16 (line 52) | uint16_t tinf_get_uint16(TINF_DATA *d)
  function uzlib_gzip_parse_header (line 59) | int uzlib_gzip_parse_header(TINF_DATA *d)

FILE: extmod/uzlib/tinflate.c
  function tinf_build_bits_base (line 107) | static void tinf_build_bits_base(unsigned char *bits, unsigned short *ba...
  function tinf_build_fixed_trees (line 125) | static void tinf_build_fixed_trees(TINF_TREE *lt, TINF_TREE *dt)
  function tinf_build_tree (line 150) | static void tinf_build_tree(TINF_TREE *t, const unsigned char *lengths, ...
  function uzlib_get_byte (line 192) | unsigned char uzlib_get_byte(TINF_DATA *d)
  function tinf_get_le_uint32 (line 218) | uint32_t tinf_get_le_uint32(TINF_DATA *d)
  function tinf_get_be_uint32 (line 228) | uint32_t tinf_get_be_uint32(TINF_DATA *d)
  function tinf_getbit (line 239) | static int tinf_getbit(TINF_DATA *d)
  function tinf_read_bits (line 259) | static unsigned int tinf_read_bits(TINF_DATA *d, int num, int base)
  function tinf_decode_symbol (line 277) | static int tinf_decode_symbol(TINF_DATA *d, TINF_TREE *t)
  function tinf_decode_trees (line 306) | static int tinf_decode_trees(TINF_DATA *d, TINF_TREE *lt, TINF_TREE *dt)
  function tinf_inflate_block_data (line 406) | static int tinf_inflate_block_data(TINF_DATA *d, TINF_TREE *lt, TINF_TRE...
  function tinf_inflate_uncompressed_block (line 489) | static int tinf_inflate_uncompressed_block(TINF_DATA *d)
  function uzlib_init (line 525) | void uzlib_init(void)
  function uzlib_uncompress_init (line 539) | void uzlib_uncompress_init(TINF_DATA *d, void *dict, unsigned int dictLen)
  function uzlib_uncompress (line 552) | int uzlib_uncompress(TINF_DATA *d)
  function uzlib_uncompress_chksum (line 615) | int uzlib_uncompress_chksum(TINF_DATA *d)

FILE: extmod/uzlib/tinfzlib.c
  function uzlib_zlib_parse_header (line 38) | int uzlib_zlib_parse_header(TINF_DATA *d)

FILE: extmod/uzlib/uzlib.h
  type TINF_TREE (line 80) | typedef struct {
  type uzlib_uncomp (line 85) | struct uzlib_uncomp {
  type uzlib_comp (line 148) | struct uzlib_comp {
  type uzlib_comp (line 156) | struct uzlib_comp

FILE: extmod/vfs.c
  function mp_vfs_mount_t (line 57) | mp_vfs_mount_t *mp_vfs_lookup_path(const char *path, const char **path_o...
  function STATIC (line 96) | STATIC mp_vfs_mount_t *lookup_path(mp_obj_t path_in, mp_obj_t *path_out) {
  function STATIC (line 107) | STATIC mp_obj_t mp_vfs_proxy_call(mp_vfs_mount_t *vfs, qstr meth_name, s...
  function mp_import_stat_t (line 125) | mp_import_stat_t mp_vfs_import_stat(const char *path) {
  function STATIC (line 159) | STATIC mp_obj_t mp_vfs_autodetect(mp_obj_t bdev_obj) {
  function mp_obj_t (line 201) | mp_obj_t mp_vfs_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t ...
  function mp_obj_t (line 264) | mp_obj_t mp_vfs_umount(mp_obj_t mnt_in) {
  function mp_obj_t (line 297) | mp_obj_t mp_vfs_open(size_t n_args, const mp_obj_t *pos_args, mp_map_t *...
  function mp_obj_t (line 322) | mp_obj_t mp_vfs_chdir(mp_obj_t path_in) {
  function mp_obj_t (line 345) | mp_obj_t mp_vfs_getcwd(void) {
  type mp_vfs_ilistdir_it_t (line 365) | typedef struct _mp_vfs_ilistdir_it_t {
  function STATIC (line 376) | STATIC mp_obj_t mp_vfs_ilistdir_it_iternext(mp_obj_t self_in) {
  function mp_obj_t (line 407) | mp_obj_t mp_vfs_ilistdir(size_t n_args, const mp_obj_t *args) {
  function mp_obj_t (line 433) | mp_obj_t mp_vfs_listdir(size_t n_args, const mp_obj_t *args) {
  function mp_obj_t (line 444) | mp_obj_t mp_vfs_mkdir(mp_obj_t path_in) {
  function mp_obj_t (line 454) | mp_obj_t mp_vfs_remove(mp_obj_t path_in) {
  function mp_obj_t (line 461) | mp_obj_t mp_vfs_rename(mp_obj_t old_path_in, mp_obj_t new_path_in) {
  function mp_obj_t (line 473) | mp_obj_t mp_vfs_rmdir(mp_obj_t path_in) {
  function mp_obj_t (line 480) | mp_obj_t mp_vfs_stat(size_t n_args, const mp_obj_t *args) {
  function mp_obj_t (line 499) | mp_obj_t mp_vfs_statvfs(mp_obj_t path_in) {
  function mp_vfs_mount_and_chdir_protected (line 533) | int mp_vfs_mount_and_chdir_protected(mp_obj_t bdev, mp_obj_t mount_point) {

FILE: extmod/vfs.h
  type mp_vfs_proto_t (line 56) | typedef struct _mp_vfs_proto_t {
  type mp_vfs_blockdev_t (line 60) | typedef struct _mp_vfs_blockdev_t {
  type mp_vfs_mount_t (line 75) | typedef struct _mp_vfs_mount_t {

FILE: extmod/vfs_blockdev.c
  function mp_vfs_blockdev_init (line 35) | void mp_vfs_blockdev_init(mp_vfs_blockdev_t *self, mp_obj_t bdev) {
  function mp_vfs_blockdev_read (line 49) | int mp_vfs_blockdev_read(mp_vfs_blockdev_t *self, size_t block_num, size...
  function mp_vfs_blockdev_read_ext (line 63) | int mp_vfs_blockdev_read_ext(mp_vfs_blockdev_t *self, size_t block_num, ...
  function mp_vfs_blockdev_write (line 76) | int mp_vfs_blockdev_write(mp_vfs_blockdev_t *self, size_t block_num, siz...
  function mp_vfs_blockdev_write_ext (line 95) | int mp_vfs_blockdev_write_ext(mp_vfs_blockdev_t *self, size_t block_num,...
  function mp_obj_t (line 113) | mp_obj_t mp_vfs_blockdev_ioctl(mp_vfs_blockdev_t *self, uintptr_t cmd, u...

FILE: extmod/vfs_fat.c
  function STATIC (line 50) | STATIC mp_import_stat_t fat_vfs_import_stat(void *vfs_in, const char *pa...
  function STATIC (line 65) | STATIC mp_obj_t fat_vfs_make_new(const mp_obj_type_t *type, size_t n_arg...
  function STATIC (line 91) | STATIC mp_obj_t fat_vfs_del(mp_obj_t self_in) {
  function STATIC (line 100) | STATIC mp_obj_t fat_vfs_mkfs(mp_obj_t bdev_in) {
  type mp_vfs_fat_ilistdir_it_t (line 119) | typedef struct _mp_vfs_fat_ilistdir_it_t {
  function STATIC (line 126) | STATIC mp_obj_t mp_vfs_fat_ilistdir_it_iternext(mp_obj_t self_in) {
  function STATIC (line 166) | STATIC mp_obj_t fat_vfs_ilistdir_func(size_t n_args, const mp_obj_t *arg...
  function STATIC (line 193) | STATIC mp_obj_t fat_vfs_remove_internal(mp_obj_t vfs_in, mp_obj_t path_i...
  function STATIC (line 217) | STATIC mp_obj_t fat_vfs_remove(mp_obj_t vfs_in, mp_obj_t path_in) {
  function STATIC (line 222) | STATIC mp_obj_t fat_vfs_rmdir(mp_obj_t vfs_in, mp_obj_t path_in) {
  function STATIC (line 227) | STATIC mp_obj_t fat_vfs_rename(mp_obj_t vfs_in, mp_obj_t path_in, mp_obj...
  function STATIC (line 247) | STATIC mp_obj_t fat_vfs_mkdir(mp_obj_t vfs_in, mp_obj_t path_o) {
  function STATIC (line 260) | STATIC mp_obj_t fat_vfs_chdir(mp_obj_t vfs_in, mp_obj_t path_in) {
  function STATIC (line 276) | STATIC mp_obj_t fat_vfs_getcwd(mp_obj_t vfs_in) {
  function STATIC (line 289) | STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
  function STATIC (line 338) | STATIC mp_obj_t fat_vfs_statvfs(mp_obj_t vfs_in, mp_obj_t path_in) {
  function STATIC (line 366) | STATIC mp_obj_t vfs_fat_mount(mp_obj_t self_in, mp_obj_t readonly, mp_ob...
  function STATIC (line 392) | STATIC mp_obj_t vfs_fat_umount(mp_obj_t self_in) {

FILE: extmod/vfs_fat.h
  type fs_user_mount_t (line 33) | typedef struct _fs_user_mount_t {

FILE: extmod/vfs_fat_diskio.c
  function STATIC (line 47) | STATIC fs_user_mount_t *disk_get_device(void *bdev) {
  function DRESULT (line 55) | DRESULT disk_read(
  function DRESULT (line 75) | DRESULT disk_write(
  function DRESULT (line 101) | DRESULT disk_ioctl(

FILE: extmod/vfs_fat_file.c
  type pyb_file_obj_t (line 62) | typedef struct _pyb_file_obj_t {
  function STATIC (line 67) | STATIC void file_obj_print(const mp_print_t *print, mp_obj_t self_in, mp...
  function STATIC (line 72) | STATIC mp_uint_t file_obj_read(mp_obj_t self_in, void *buf, mp_uint_t si...
  function STATIC (line 83) | STATIC mp_uint_t file_obj_write(mp_obj_t self_in, const void *buf, mp_ui...
  function STATIC (line 100) | STATIC mp_obj_t file_obj___exit__(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 106) | STATIC mp_uint_t file_obj_ioctl(mp_obj_t o_in, mp_uint_t request, uintpt...
  function STATIC (line 163) | STATIC mp_obj_t file_open(fs_user_mount_t *vfs, const mp_obj_type_t *typ...
  function STATIC (line 214) | STATIC mp_obj_t file_obj_make_new(const mp_obj_type_t *type, size_t n_ar...
  function STATIC (line 277) | STATIC mp_obj_t fatfs_builtin_open_self(mp_obj_t self_in, mp_obj_t path,...

FILE: extmod/vfs_lfs.c
  type mp_obj_vfs_lfs1_t (line 58) | typedef struct _mp_obj_vfs_lfs1_t {
  type mp_obj_vfs_lfs1_file_t (line 66) | typedef struct _mp_obj_vfs_lfs1_file_t {
  type mp_obj_vfs_lfs2_t (line 107) | typedef struct _mp_obj_vfs_lfs2_t {
  type mp_obj_vfs_lfs2_file_t (line 116) | typedef struct _mp_obj_vfs_lfs2_file_t {
  function STATIC (line 129) | STATIC void lfs_get_mtime(uint8_t buf[8]) {

FILE: extmod/vfs_lfsx.c
  function STATIC (line 39) | STATIC int MP_VFS_LFSx(dev_ioctl)(const struct LFSx_API (config) * c, in...
  function STATIC (line 48) | STATIC int MP_VFS_LFSx(dev_read)(const struct LFSx_API (config) * c, LFS...
  function STATIC (line 52) | STATIC int MP_VFS_LFSx(dev_prog)(const struct LFSx_API (config) * c, LFS...
  function STATIC (line 56) | STATIC int MP_VFS_LFSx(dev_erase)(const struct LFSx_API (config) * c, LF...
  function STATIC (line 60) | STATIC int MP_VFS_LFSx(dev_sync)(const struct LFSx_API (config) * c) {
  function STATIC (line 64) | STATIC void MP_VFS_LFSx(init_config)(MP_OBJ_VFS_LFSx * self, mp_obj_t bd...
  function STATIC (line 116) | STATIC mp_obj_t MP_VFS_LFSx(make_new)(const mp_obj_type_t * type, size_t...
  function STATIC (line 136) | STATIC mp_obj_t MP_VFS_LFSx(mkfs)(size_t n_args, const mp_obj_t *pos_arg...
  type MP_VFS_LFSx (line 155) | struct MP_VFS_LFSx
  function STATIC (line 163) | STATIC mp_obj_t MP_VFS_LFSx(ilistdir_it_iternext)(mp_obj_t self_in) {
  function STATIC (line 193) | STATIC mp_obj_t MP_VFS_LFSx(ilistdir_func)(size_t n_args, const mp_obj_t...
  function STATIC (line 219) | STATIC mp_obj_t MP_VFS_LFSx(remove)(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 230) | STATIC mp_obj_t MP_VFS_LFSx(rmdir)(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 241) | STATIC mp_obj_t MP_VFS_LFSx(rename)(mp_obj_t self_in, mp_obj_t path_old_...
  function STATIC (line 260) | STATIC mp_obj_t MP_VFS_LFSx(mkdir)(mp_obj_t self_in, mp_obj_t path_o) {
  function STATIC (line 271) | STATIC mp_obj_t MP_VFS_LFSx(chdir)(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 339) | STATIC mp_obj_t MP_VFS_LFSx(getcwd)(mp_obj_t self_in) {
  function STATIC (line 350) | STATIC mp_obj_t MP_VFS_LFSx(stat)(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 389) | STATIC int LFSx_API(traverse_cb)(void *data, LFSx_API(block_t) bl) {
  function STATIC (line 396) | STATIC mp_obj_t MP_VFS_LFSx(statvfs)(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 425) | STATIC mp_obj_t MP_VFS_LFSx(mount)(mp_obj_t self_in, mp_obj_t readonly, ...
  function STATIC (line 440) | STATIC mp_obj_t MP_VFS_LFSx(umount)(mp_obj_t self_in) {
  function MP_VFS_LFSx (line 465) | MP_VFS_LFSx(import_stat)(void *self_in, const char *path) {

FILE: extmod/vfs_lfsx_file.c
  function STATIC (line 35) | STATIC void MP_VFS_LFSx(check_open)(MP_OBJ_VFS_LFSx_FILE * self) {
  function STATIC (line 41) | STATIC void MP_VFS_LFSx(file_print)(const mp_print_t * print, mp_obj_t s...
  function mp_obj_t (line 47) | mp_obj_t MP_VFS_LFSx(file_open)(mp_obj_t self_in, mp_obj_t path_in, mp_o...
  function STATIC (line 125) | STATIC mp_obj_t MP_VFS_LFSx(file___exit__)(size_t n_args, const mp_obj_t...
  function STATIC (line 131) | STATIC mp_uint_t MP_VFS_LFSx(file_read)(mp_obj_t self_in, void *buf, mp_...
  function STATIC (line 142) | STATIC mp_uint_t MP_VFS_LFSx(file_write)(mp_obj_t self_in, const void *b...
  function STATIC (line 158) | STATIC mp_uint_t MP_VFS_LFSx(file_ioctl)(mp_obj_t self_in, mp_uint_t req...

FILE: extmod/vfs_posix.c
  type mp_obj_vfs_posix_t (line 41) | typedef struct _mp_obj_vfs_posix_t {
  function STATIC (line 48) | STATIC const char *vfs_posix_get_path_str(mp_obj_vfs_posix_t *self, mp_o...
  function STATIC (line 58) | STATIC mp_obj_t vfs_posix_get_path_obj(mp_obj_vfs_posix_t *self, mp_obj_...
  function STATIC (line 68) | STATIC mp_obj_t vfs_posix_fun1_helper(mp_obj_t self_in, mp_obj_t path_in...
  function STATIC (line 77) | STATIC mp_import_stat_t mp_vfs_posix_import_stat(void *self_in, const ch...
  function STATIC (line 95) | STATIC mp_obj_t vfs_posix_make_new(const mp_obj_type_t *type, size_t n_a...
  function STATIC (line 111) | STATIC mp_obj_t vfs_posix_mount(mp_obj_t self_in, mp_obj_t readonly, mp_...
  function STATIC (line 123) | STATIC mp_obj_t vfs_posix_umount(mp_obj_t self_in) {
  function STATIC (line 129) | STATIC mp_obj_t vfs_posix_open(mp_obj_t self_in, mp_obj_t path_in, mp_ob...
  function STATIC (line 143) | STATIC mp_obj_t vfs_posix_chdir(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 148) | STATIC mp_obj_t vfs_posix_getcwd(mp_obj_t self_in) {
  type vfs_posix_ilistdir_it_t (line 160) | typedef struct _vfs_posix_ilistdir_it_t {
  function STATIC (line 167) | STATIC mp_obj_t vfs_posix_ilistdir_it_iternext(mp_obj_t self_in) {
  function STATIC (line 227) | STATIC mp_obj_t vfs_posix_ilistdir(mp_obj_t self_in, mp_obj_t path_in) {
  type mp_obj_listdir_t (line 247) | typedef struct _mp_obj_listdir_t {
  function STATIC (line 253) | STATIC mp_obj_t vfs_posix_mkdir(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 266) | STATIC mp_obj_t vfs_posix_remove(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 271) | STATIC mp_obj_t vfs_posix_rename(mp_obj_t self_in, mp_obj_t old_path_in,...
  function STATIC (line 285) | STATIC mp_obj_t vfs_posix_rmdir(mp_obj_t self_in, mp_obj_t path_in) {
  function STATIC (line 290) | STATIC mp_obj_t vfs_posix_stat(size_t n_args, const mp_obj_t *args) {
  function STATIC (line 337) | STATIC mp_obj_t vfs_posix_statvfs(mp_obj_t self_in, mp_obj_t path_in) {

FILE: extmod/vfs_posix_file.c
  type mp_obj_vfs_posix_file_t (line 42) | typedef struct _mp_obj_vfs_posix_file_t {
  function STATIC (line 48) | STATIC void check_fd_is_open(const mp_obj_vfs_posix_file_t *o) {
  function STATIC (line 57) | STATIC void vfs_posix_file_print(const mp_print_t *print, mp_obj_t self_...
  function mp_obj_t (line 63) | mp_obj_t mp_vfs_posix_file_open(const mp_obj_type_t *type, mp_obj_t file...
  function STATIC (line 112) | STATIC mp_obj_t vfs_posix_file_make_new(const mp_obj_type_t *type, size_...
  function STATIC (line 123) | STATIC mp_obj_t vfs_posix_file_fileno(mp_obj_t self_in) {
  function STATIC (line 130) | STATIC mp_obj_t vfs_posix_file___exit__(size_t n_args, const mp_obj_t *a...
  function STATIC (line 136) | STATIC mp_uint_t vfs_posix_file_read(mp_obj_t o_in, void *buf, mp_uint_t...
  function STATIC (line 147) | STATIC mp_uint_t vfs_posix_file_write(mp_obj_t o_in, const void *buf, mp...
  function STATIC (line 164) | STATIC mp_uint_t vfs_posix_file_ioctl(mp_obj_t o_in, mp_uint_t request, ...

FILE: extmod/vfs_reader.c
  type mp_reader_vfs_t (line 37) | typedef struct _mp_reader_vfs_t {
  function STATIC (line 44) | STATIC mp_uint_t mp_reader_vfs_readbyte(void *data) {
  function STATIC (line 66) | STATIC void mp_reader_vfs_close(void *data) {
  function mp_reader_new_file (line 72) | void mp_reader_new_file(mp_reader_t *reader, const char *filename) {

FILE: extmod/virtpin.c
  function mp_virtual_pin_read (line 29) | int mp_virtual_pin_read(mp_obj_t pin) {
  function mp_virtual_pin_write (line 35) | void mp_virtual_pin_write(mp_obj_t pin, int value) {

FILE: extmod/virtpin.h
  type mp_pin_p_t (line 37) | typedef struct _mp_pin_p_t {

FILE: extmod/webrepl/webrepl.py
  function setup_conn (line 13) | def setup_conn(port, accept_handler):
  function accept_conn (line 32) | def accept_conn(listen_sock):
  function stop (line 53) | def stop():
  function start (line 62) | def start(port=8266, password=None):
  function start_foreground (line 79) | def start_foreground(port=8266):

FILE: extmod/webrepl/webrepl_setup.py
  function input_choice (line 11) | def input_choice(prompt, choices):
  function getpass (line 18) | def getpass(prompt):
  function input_pass (line 22) | def input_pass():
  function exists (line 34) | def exists(fname):
  function get_daemon_status (line 43) | def get_daemon_status():
  function change_daemon (line 53) | def change_daemon(action):
  function main (line 74) | def main():

FILE: extmod/webrepl/websocket_helper.py
  function server_handshake (line 15) | def server_handshake(sock):
  function client_handshake (line 62) | def client_handshake(sock):

FILE: lib/cmsis/inc/cmsis_armcc.h
  function __STATIC_INLINE (line 134) | __STATIC_INLINE uint32_t __get_CONTROL(void)
  function __STATIC_INLINE (line 146) | __STATIC_INLINE void __set_CONTROL(uint32_t control)
  function __STATIC_INLINE (line 158) | __STATIC_INLINE uint32_t __get_IPSR(void)
  function __STATIC_INLINE (line 170) | __STATIC_INLINE uint32_t __get_APSR(void)
  function __STATIC_INLINE (line 182) | __STATIC_INLINE uint32_t __get_xPSR(void)
  function __STATIC_INLINE (line 194) | __STATIC_INLINE uint32_t __get_PSP(void)
  function __STATIC_INLINE (line 206) | __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
  function __STATIC_INLINE (line 218) | __STATIC_INLINE uint32_t __get_MSP(void)
  function __STATIC_INLINE (line 230) | __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
  function __STATIC_INLINE (line 242) | __STATIC_INLINE uint32_t __get_PRIMASK(void)
  function __STATIC_INLINE (line 254) | __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
  function __STATIC_INLINE (line 285) | __STATIC_INLINE uint32_t  __get_BASEPRI(void)
  function __STATIC_INLINE (line 297) | __STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
  function __STATIC_INLINE (line 310) | __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)
  function __STATIC_INLINE (line 322) | __STATIC_INLINE uint32_t __get_FAULTMASK(void)
  function __STATIC_INLINE (line 334) | __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
  function __STATIC_INLINE (line 349) | __STATIC_INLINE uint32_t __get_FPSCR(void)
  function __STATIC_INLINE (line 366) | __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
  function __REV16 (line 467) | uint32_t __REV16(uint32_t value)
  function __REVSH (line 482) | int16_t __REVSH(int16_t value)
  function __STATIC_INLINE (line 520) | __attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t ...
  function __RRX (line 669) | uint32_t __RRX(uint32_t value)
  function __STATIC_INLINE (line 740) | __attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t va...
  function __STATIC_INLINE (line 765) | __attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t v...

FILE: lib/cmsis/inc/cmsis_armclang.h
  type T_UINT32 (line 71) | struct __attribute__((packed)) T_UINT32 { uint32_t v; }
  function __PACKED_STRUCT (line 79) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
  function __PACKED_STRUCT (line 87) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
  function __PACKED_STRUCT (line 95) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
  function __PACKED_STRUCT (line 103) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
  function __STATIC_FORCEINLINE (line 142) | __STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
  function __STATIC_FORCEINLINE (line 157) | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
  function __STATIC_FORCEINLINE (line 172) | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
  function __STATIC_FORCEINLINE (line 184) | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
  function __STATIC_FORCEINLINE (line 196) | __STATIC_FORCEINLINE uint32_t __get_IPSR(void)
  function __STATIC_FORCEINLINE (line 210) | __STATIC_FORCEINLINE uint32_t __get_APSR(void)
  function __STATIC_FORCEINLINE (line 224) | __STATIC_FORCEINLINE uint32_t __get_xPSR(void)
  function __STATIC_FORCEINLINE (line 238) | __STATIC_FORCEINLINE uint32_t __get_PSP(void)
  function __STATIC_FORCEINLINE (line 253) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
  function __STATIC_FORCEINLINE (line 268) | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
  function __STATIC_FORCEINLINE (line 280) | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
  function __STATIC_FORCEINLINE (line 292) | __STATIC_FORCEINLINE uint32_t __get_MSP(void)
  function __STATIC_FORCEINLINE (line 307) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
  function __STATIC_FORCEINLINE (line 322) | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
  function __STATIC_FORCEINLINE (line 334) | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
  function __STATIC_FORCEINLINE (line 347) | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
  function __STATIC_FORCEINLINE (line 361) | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
  function __STATIC_FORCEINLINE (line 373) | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
  function __STATIC_FORCEINLINE (line 388) | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
  function __STATIC_FORCEINLINE (line 403) | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
  function __STATIC_FORCEINLINE (line 415) | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
  function __STATIC_FORCEINLINE (line 446) | __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
  function __STATIC_FORCEINLINE (line 461) | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
  function __STATIC_FORCEINLINE (line 476) | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
  function __STATIC_FORCEINLINE (line 488) | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
  function __STATIC_FORCEINLINE (line 501) | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
  function __STATIC_FORCEINLINE (line 512) | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
  function __STATIC_FORCEINLINE (line 527) | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
  function __STATIC_FORCEINLINE (line 542) | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
  function __STATIC_FORCEINLINE (line 554) | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
  function __STATIC_FORCEINLINE (line 577) | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
  function __STATIC_FORCEINLINE (line 600) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
  function __STATIC_FORCEINLINE (line 623) | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
  function __STATIC_FORCEINLINE (line 645) | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
  function __STATIC_FORCEINLINE (line 665) | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
  function __STATIC_FORCEINLINE (line 688) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
  function __STATIC_FORCEINLINE (line 710) | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
  function __STATIC_FORCEINLINE (line 731) | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
  function __STATIC_FORCEINLINE (line 878) | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 913) | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
  function __STATIC_FORCEINLINE (line 1039) | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
  function __STATIC_FORCEINLINE (line 1054) | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1069) | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1084) | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1099) | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1111) | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1123) | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1139) | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
  function __STATIC_FORCEINLINE (line 1164) | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
  function __STATIC_FORCEINLINE (line 1194) | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1209) | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1224) | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1239) | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1251) | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1263) | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1408) | __STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t ...

FILE: lib/cmsis/inc/cmsis_armclang_ltm.h
  type T_UINT32 (line 71) | struct __attribute__((packed)) T_UINT32 { uint32_t v; }
  function __PACKED_STRUCT (line 79) | __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }
  function __PACKED_STRUCT (line 87) | __PACKED_STRUCT T_UINT16_READ { uint16_t v; }
  function __PACKED_STRUCT (line 95) | __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }
  function __PACKED_STRUCT (line 103) | __PACKED_STRUCT T_UINT32_READ { uint32_t v; }
  function __STATIC_FORCEINLINE (line 142) | __STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
  function __STATIC_FORCEINLINE (line 157) | __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
  function __STATIC_FORCEINLINE (line 172) | __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
  function __STATIC_FORCEINLINE (line 184) | __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
  function __STATIC_FORCEINLINE (line 196) | __STATIC_FORCEINLINE uint32_t __get_IPSR(void)
  function __STATIC_FORCEINLINE (line 210) | __STATIC_FORCEINLINE uint32_t __get_APSR(void)
  function __STATIC_FORCEINLINE (line 224) | __STATIC_FORCEINLINE uint32_t __get_xPSR(void)
  function __STATIC_FORCEINLINE (line 238) | __STATIC_FORCEINLINE uint32_t __get_PSP(void)
  function __STATIC_FORCEINLINE (line 253) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
  function __STATIC_FORCEINLINE (line 268) | __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
  function __STATIC_FORCEINLINE (line 280) | __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
  function __STATIC_FORCEINLINE (line 292) | __STATIC_FORCEINLINE uint32_t __get_MSP(void)
  function __STATIC_FORCEINLINE (line 307) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
  function __STATIC_FORCEINLINE (line 322) | __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
  function __STATIC_FORCEINLINE (line 334) | __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
  function __STATIC_FORCEINLINE (line 347) | __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
  function __STATIC_FORCEINLINE (line 361) | __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
  function __STATIC_FORCEINLINE (line 373) | __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
  function __STATIC_FORCEINLINE (line 388) | __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
  function __STATIC_FORCEINLINE (line 403) | __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
  function __STATIC_FORCEINLINE (line 415) | __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
  function __STATIC_FORCEINLINE (line 446) | __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
  function __STATIC_FORCEINLINE (line 461) | __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
  function __STATIC_FORCEINLINE (line 476) | __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
  function __STATIC_FORCEINLINE (line 488) | __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
  function __STATIC_FORCEINLINE (line 501) | __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
  function __STATIC_FORCEINLINE (line 512) | __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
  function __STATIC_FORCEINLINE (line 527) | __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
  function __STATIC_FORCEINLINE (line 542) | __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
  function __STATIC_FORCEINLINE (line 554) | __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
  function __STATIC_FORCEINLINE (line 577) | __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
  function __STATIC_FORCEINLINE (line 600) | __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
  function __STATIC_FORCEINLINE (line 623) | __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
  function __STATIC_FORCEINLINE (line 645) | __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
  function __STATIC_FORCEINLINE (line 665) | __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
  function __STATIC_FORCEINLINE (line 688) | __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
  function __STATIC_FORCEINLINE (line 710) | __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
  function __STATIC_FORCEINLINE (line 731) | __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
  function __STATIC_FORCEINLINE (line 876) | __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 911) | __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
  function __STATIC_FORCEINLINE (line 1037) | __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
  function __STATIC_FORCEINLINE (line 1052) | __STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1067) | __STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1082) | __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1097) | __STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1109) | __STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1121) | __STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1137) | __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
  function __STATIC_FORCEINLINE (line 1162) | __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
  function __STATIC_FORCEINLINE (line 1192) | __STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1207) | __STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1222) | __STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1237) | __STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
  function __STATIC_FORCEINLINE (line 1249) | __STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
  function __STATIC_FORCEINLINE (line 1261) | __STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
  function __STATIC_FORCEINLINE (line 1340) | __STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1348) | __STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1356) | __STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1364) | __STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1372) | __STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1380) | __STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1389) | __STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1397) | __STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1405) | __STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1413) | __STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1421) | __STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1429) | __STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1438) | __STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1446) | __STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1454) | __STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
  function __STATIC_FORCEINLINE (line 1462) | __STATI
Copy disabled (too large) Download .json
Condensed preview — 4102 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (21,942K chars).
[
  {
    "path": ".git-blame-ignore-revs",
    "chars": 1156,
    "preview": "# tests/run-tests.py: Reformat with Black.\n2a38d7103672580882fb621a5b76e8d26805d593\n\n# all: Update Python code to confor"
  },
  {
    "path": ".gitattributes",
    "chars": 709,
    "preview": "# Per default everything gets normalized and gets LF line endings on checkout.\n* text eol=lf\n\n# These will always have C"
  },
  {
    "path": ".github/workflows/code_formatting.yml",
    "chars": 417,
    "preview": "name: Check code formatting\n\non: [push, pull_request]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: "
  },
  {
    "path": ".github/workflows/code_size.yml",
    "chars": 681,
    "preview": "name: Check code size\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n     "
  },
  {
    "path": ".github/workflows/commit_formatting.yml",
    "chars": 321,
    "preview": "name: Check commit message formatting\n\non: [pull_request]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - us"
  },
  {
    "path": ".github/workflows/docs.yml",
    "chars": 307,
    "preview": "name: Build docs\n\non:\n  pull_request:\n    paths:\n      - docs/**\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n"
  },
  {
    "path": ".github/workflows/ports_cc3200.yml",
    "chars": 442,
    "preview": "name: cc3200 port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - '"
  },
  {
    "path": ".github/workflows/ports_esp32.yml",
    "chars": 685,
    "preview": "name: esp32 port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - 'p"
  },
  {
    "path": ".github/workflows/ports_esp8266.yml",
    "chars": 481,
    "preview": "name: esp8266 port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - "
  },
  {
    "path": ".github/workflows/ports_mimxrt.yml",
    "chars": 441,
    "preview": "name: mimxrt port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - '"
  },
  {
    "path": ".github/workflows/ports_nrf.yml",
    "chars": 429,
    "preview": "name: nrf port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - 'py/"
  },
  {
    "path": ".github/workflows/ports_powerpc.yml",
    "chars": 446,
    "preview": "name: powerpc port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - "
  },
  {
    "path": ".github/workflows/ports_qemu-arm.yml",
    "chars": 607,
    "preview": "name: qemu-arm port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      -"
  },
  {
    "path": ".github/workflows/ports_rp2.yml",
    "chars": 430,
    "preview": "name: rp2 port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - 'py/"
  },
  {
    "path": ".github/workflows/ports_samd.yml",
    "chars": 434,
    "preview": "name: samd port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - 'py"
  },
  {
    "path": ".github/workflows/ports_stm32.yml",
    "chars": 714,
    "preview": "name: stm32 port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - 'p"
  },
  {
    "path": ".github/workflows/ports_teensy.yml",
    "chars": 442,
    "preview": "name: teensy port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - '"
  },
  {
    "path": ".github/workflows/ports_unix.yml",
    "chars": 6758,
    "preview": "name: unix port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - 'py"
  },
  {
    "path": ".github/workflows/ports_windows.yml",
    "chars": 449,
    "preview": "name: windows port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/*.yml'\n      - 'tools/**'\n      - "
  },
  {
    "path": ".github/workflows/ports_zephyr.yml",
    "chars": 510,
    "preview": "name: zephyr port\n\non:\n  push:\n  pull_request:\n    paths:\n      - '.github/workflows/ports_zephyr.yml'\n      - 'tools/**"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1607,
    "preview": "name: Release\n\non:\n#  push:\n  release:\n    types: [created, edited]\n\njobs:\n  build:\n    name: Build\n    runs-on: ubuntu-"
  },
  {
    "path": ".github/workflows/travis-ci.yml",
    "chars": 22567,
    "preview": "on:\n  push:\n  pull_request:\n\nenv:\n  MAKEOPTS: \"-j4\"\n  XTENSA_CROSS_ROOT: \"~/persist/toolchain-xtensa\"\n  XTENSA_CROSS_BIN"
  },
  {
    "path": ".gitignore",
    "chars": 599,
    "preview": "# Compiled Sources\n###################\n*.o\n*.a\n*.elf\n*.bin\n*.map\n*.hex\n*.dis\n*.exe\n\n# Packages\n############\n\n# Logs and "
  },
  {
    "path": ".gitmodules",
    "chars": 1393,
    "preview": "[submodule \"lib/axtls\"]\n\tpath = lib/axtls\n\turl = https://github.com/pfalcon/axtls\n\tbranch = micropython\n[submodule \"lib/"
  },
  {
    "path": "ACKNOWLEDGEMENTS",
    "chars": 43150,
    "preview": "The MicroPython project was proudly and successfully crowdfunded\nvia a Kickstarter campaign which ended on 13th December"
  },
  {
    "path": "CODECONVENTIONS.md",
    "chars": 8676,
    "preview": "Git commit conventions\n======================\n\nEach commit message should start with a directory or full file path\nprefi"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 339,
    "preview": "When reporting an issue and especially submitting a pull request, please\nmake sure that you are acquainted with Contribu"
  },
  {
    "path": "LICENSE",
    "chars": 1128,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2013-2021 Damien P. George\nCopyright (c) 2014-2021 Paul Sokolovsky\n\nPermission is h"
  },
  {
    "path": "README.md",
    "chars": 13644,
    "preview": "[![Build Status](https://github.com/pfalcon/pycopy/actions/workflows/ports_unix.yml/badge.svg)](https://github.com/pfalc"
  },
  {
    "path": "docs/Makefile",
    "chars": 7294,
    "preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nPYTHON        = python3\nSPHI"
  },
  {
    "path": "docs/README.md",
    "chars": 989,
    "preview": "Pycopy Documentation\n====================\n\nThe Pycopy documentation can be found at: https://pycopy.readthedocs.io/ .\n\nT"
  },
  {
    "path": "docs/conf.py",
    "chars": 9906,
    "preview": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# MicroPython documentation build configuration file, created by\n# sphi"
  },
  {
    "path": "docs/develop/cmodules.rst",
    "chars": 9937,
    "preview": ".. _cmodules:\n\nMicroPython external C modules\n==============================\n\nWhen developing modules for use with Micro"
  },
  {
    "path": "docs/develop/compiler.rst",
    "chars": 12045,
    "preview": ".. _compiler:\n\nThe Compiler\n============\n\nThe compilation process in MicroPython involves the following steps:\n\n* The le"
  },
  {
    "path": "docs/develop/extendingmicropython.rst",
    "chars": 677,
    "preview": ".. _extendingmicropython:\n\nExtending MicroPython in C\n==========================\n\nThis chapter describes options for imp"
  },
  {
    "path": "docs/develop/gettingstarted.rst",
    "chars": 10545,
    "preview": ".. _gettingstarted:\n\nGetting Started\n===============\n\nThis guide covers a step-by-step process on setting up version con"
  },
  {
    "path": "docs/develop/index.rst",
    "chars": 842,
    "preview": "Developing and building\n=======================\n\nThis chapter covers a tour of MicroPython from the perspective of a dev"
  },
  {
    "path": "docs/develop/library.rst",
    "chars": 3114,
    "preview": ".. _internals_library:\n\nImplementing a Module\n=====================\n\nThis chapter details how to implement a core module"
  },
  {
    "path": "docs/develop/maps.rst",
    "chars": 2713,
    "preview": ".. _maps:\n\nMaps and Dictionaries\n=====================\n\nMicroPython dictionaries and maps use techniques called open add"
  },
  {
    "path": "docs/develop/memorymgt.rst",
    "chars": 5490,
    "preview": ".. _memorymanagement:\n\nMemory Management\n=================\n\nUnlike programming languages such as C/C++, MicroPython hide"
  },
  {
    "path": "docs/develop/natmod.rst",
    "chars": 8987,
    "preview": ".. _natmod:\n\nNative machine code in .mpy files\n=================================\n\nThis section describes how to build an"
  },
  {
    "path": "docs/develop/optimizations.rst",
    "chars": 2757,
    "preview": ".. _optimizations:\n\nOptimizations\n=============\n\nMicroPython uses several optimizations to save RAM but also ensure the "
  },
  {
    "path": "docs/develop/porting.rst",
    "chars": 9652,
    "preview": ".. _porting_to_a_board:\n\nPorting MicroPython\n===================\n\nThe MicroPython project contains several ports to diff"
  },
  {
    "path": "docs/develop/publiccapi.rst",
    "chars": 936,
    "preview": ".. _publiccapi:\n\nThe public C API\n================\n\nThe public C-API comprises functions defined in all C header files i"
  },
  {
    "path": "docs/develop/qstr.rst",
    "chars": 5451,
    "preview": ".. _qstr:\n\nMicroPython string interning\n============================\n\nMicroPython uses `string interning`_ to save both "
  },
  {
    "path": "docs/develop/writingtests.rst",
    "chars": 1791,
    "preview": ".. _writingtests:\n\nWriting tests\n=============\n\nTests in MicroPython are located at the path ``tests/``. The following i"
  },
  {
    "path": "docs/differences/builtin_types.rst",
    "chars": 22114,
    "preview": ".. This document was generated by tools/gen-cpydiff.py\n\nBuiltin types\n=============\n\nException\n---------\n\n.. _cpydiff_ty"
  },
  {
    "path": "docs/differences/core_language.rst",
    "chars": 13985,
    "preview": ".. This document was generated by tools/gen-cpydiff.py\n\nCore language\n=============\n\nClasses\n-------\n\n.. _cpydiff_core_c"
  },
  {
    "path": "docs/differences/index.rst",
    "chars": 495,
    "preview": ".. This document was generated by tools/gen-cpydiff.py\n\n.. _cpython_diffs:\n\nDifferences from CPython\n==================="
  },
  {
    "path": "docs/differences/index_template.txt",
    "chars": 364,
    "preview": ".. _cpython_diffs:\n\nDifferences from CPython\n========================\n\nThe operations listed in this section produce dif"
  },
  {
    "path": "docs/differences/modules.rst",
    "chars": 9303,
    "preview": ".. This document was generated by tools/gen-cpydiff.py\n\nModules\n=======\n\narray\n-----\n\n.. _cpydiff_module_array_compariso"
  },
  {
    "path": "docs/differences/syntax.rst",
    "chars": 2764,
    "preview": ".. This document was generated by tools/gen-cpydiff.py\n\nSyntax\n======\n\nOperators\n---------\n\n.. _cpydiff_syntax_assign_ex"
  },
  {
    "path": "docs/esp32/general.rst",
    "chars": 2902,
    "preview": ".. _esp32_general:\n\nGeneral information about the ESP32 port\n========================================\n\nThe ESP32 is a po"
  },
  {
    "path": "docs/esp32/quickref.rst",
    "chars": 20710,
    "preview": ".. _esp32_quickref:\n\nQuick reference for the ESP32\n=============================\n\n.. image:: img/esp32.jpg\n    :alt: ESP"
  },
  {
    "path": "docs/esp32/tutorial/intro.rst",
    "chars": 6077,
    "preview": ".. _esp32_intro:\n\nGetting started with MicroPython on the ESP32\n=============================================\n\nUsing Mic"
  },
  {
    "path": "docs/esp8266/general.rst",
    "chars": 9631,
    "preview": ".. _esp8266_general:\n\nGeneral information about the ESP8266 port\n==========================================\n\nESP8266 is "
  },
  {
    "path": "docs/esp8266/quickref.rst",
    "chars": 15173,
    "preview": ".. _esp8266_quickref:\n\nQuick reference for the ESP8266\n===============================\n\n.. image:: img/adafruit_products"
  },
  {
    "path": "docs/esp8266/tutorial/adc.rst",
    "chars": 600,
    "preview": "Analog to Digital Conversion\n============================\n\nThe ESP8266 has a single pin (separate to the GPIO pins) whic"
  },
  {
    "path": "docs/esp8266/tutorial/apa102.rst",
    "chars": 3300,
    "preview": "Controlling APA102 LEDs\n=======================\n\nAPA102 LEDs, also known as DotStar LEDs, are individually addressable\nf"
  },
  {
    "path": "docs/esp8266/tutorial/dht.rst",
    "chars": 2390,
    "preview": "Temperature and Humidity\n========================\n\nDHT (Digital Humidity & Temperature) sensors are low cost digital sen"
  },
  {
    "path": "docs/esp8266/tutorial/filesystem.rst",
    "chars": 2034,
    "preview": "The internal filesystem\n=======================\n\nIf your devices has 1Mbyte or more of storage then it will be set up (u"
  },
  {
    "path": "docs/esp8266/tutorial/index.rst",
    "chars": 997,
    "preview": ".. _esp8266_tutorial:\n\nMicroPython tutorial for ESP8266\n================================\n\nThis tutorial is intended to g"
  },
  {
    "path": "docs/esp8266/tutorial/intro.rst",
    "chars": 9774,
    "preview": ".. _intro:\n\nGetting started with MicroPython on the ESP8266\n===============================================\n\nUsing Micro"
  },
  {
    "path": "docs/esp8266/tutorial/neopixel.rst",
    "chars": 2564,
    "preview": "Controlling NeoPixels\n=====================\n\nNeoPixels, also known as WS2812 LEDs, are full-colour LEDs that are connect"
  },
  {
    "path": "docs/esp8266/tutorial/network_basics.rst",
    "chars": 2623,
    "preview": "Network basics\n==============\n\nThe network module is used to configure the WiFi connection.  There are two WiFi\ninterfac"
  },
  {
    "path": "docs/esp8266/tutorial/network_tcp.rst",
    "chars": 3908,
    "preview": "Network - TCP sockets\n=====================\n\nThe building block of most of the internet is the TCP socket.  These socket"
  },
  {
    "path": "docs/esp8266/tutorial/nextsteps.rst",
    "chars": 449,
    "preview": "Next steps\n==========\n\nThat brings us to the end of the tutorial!  Hopefully by now you have a good\nfeel for the capabil"
  },
  {
    "path": "docs/esp8266/tutorial/onewire.rst",
    "chars": 1256,
    "preview": "Controlling 1-wire devices\n==========================\n\nThe 1-wire bus is a serial bus that uses just a single wire for c"
  },
  {
    "path": "docs/esp8266/tutorial/pins.rst",
    "chars": 2510,
    "preview": "GPIO Pins\n=========\n\nThe way to connect your board to the external world, and control other\ncomponents, is through the G"
  },
  {
    "path": "docs/esp8266/tutorial/powerctrl.rst",
    "chars": 2032,
    "preview": "Power control\n=============\n\nThe ESP8266 provides the ability to change the CPU frequency on the fly, and\nenter a deep-s"
  },
  {
    "path": "docs/esp8266/tutorial/pwm.rst",
    "chars": 2798,
    "preview": "Pulse Width Modulation\n======================\n\nPulse width modulation (PWM) is a way to get an artificial analog output "
  },
  {
    "path": "docs/esp8266/tutorial/repl.rst",
    "chars": 8041,
    "preview": "Getting a MicroPython REPL prompt\n=================================\n\nREPL stands for Read Evaluate Print Loop, and is th"
  },
  {
    "path": "docs/esp8266/tutorial/ssd1306.rst",
    "chars": 3411,
    "preview": ".. _ssd1306:\n\nUsing a SSD1306 OLED display\n============================\n\nThe SSD1306 OLED display uses either a SPI or I"
  },
  {
    "path": "docs/index.rst",
    "chars": 335,
    "preview": "Pycopy documentation and references\n===================================\n\n.. toctree::\n\n    license.rst\n    reference/ind"
  },
  {
    "path": "docs/library/_thread.rst",
    "chars": 351,
    "preview": ":mod:`_thread` -- multithreading support\n========================================\n\n.. module:: _thread\n   :synopsis: mul"
  },
  {
    "path": "docs/library/btree.rst",
    "chars": 5723,
    "preview": ":mod:`btree` -- simple BTree database\n=====================================\n\n.. module:: btree\n   :synopsis: simple BTre"
  },
  {
    "path": "docs/library/builtins.rst",
    "chars": 6428,
    "preview": "Builtin types, functions and exceptions (:mod:`builtins`)\n=========================================================\n\nAll"
  },
  {
    "path": "docs/library/cmath.rst",
    "chars": 1314,
    "preview": ":mod:`cmath` -- mathematical functions for complex numbers\n==========================================================\n\n."
  },
  {
    "path": "docs/library/esp.rst",
    "chars": 3882,
    "preview": ":mod:`esp` --- functions related to the ESP8266 and ESP32\n=========================================================\n\n.. "
  },
  {
    "path": "docs/library/esp32.rst",
    "chars": 12259,
    "preview": ".. currentmodule:: esp32\n\n:mod:`esp32` --- functionality specific to the ESP32\n========================================="
  },
  {
    "path": "docs/library/ffi.rst",
    "chars": 4472,
    "preview": ":mod:`ffi` -- foreign function interface\n========================================\n\n.. module:: ffi\n   :synopsis: FFI (fo"
  },
  {
    "path": "docs/library/framebuf.rst",
    "chars": 5793,
    "preview": ":mod:`framebuf` --- frame buffer manipulation\n=============================================\n\n.. module:: framebuf\n   :sy"
  },
  {
    "path": "docs/library/gc.rst",
    "chars": 2205,
    "preview": ":mod:`gc` -- control the garbage collector\n==========================================\n\n.. module:: gc\n   :synopsis: cont"
  },
  {
    "path": "docs/library/index.rst",
    "chars": 6004,
    "preview": ".. _micropython_lib:\n\nPycopy libraries\n================\n\n.. warning::\n\n   Important summary of this section:\n\n   * Pycop"
  },
  {
    "path": "docs/library/lcd160cr.rst",
    "chars": 15048,
    "preview": ":mod:`lcd160cr` --- control of LCD160CR display\n===============================================\n\n.. module:: lcd160cr\n  "
  },
  {
    "path": "docs/library/machine.ADC.rst",
    "chars": 1018,
    "preview": ".. currentmodule:: machine\n.. _machine.ADC:\n\nclass ADC -- analog to digital conversion\n================================="
  },
  {
    "path": "docs/library/machine.ADCWiPy.rst",
    "chars": 2343,
    "preview": ".. currentmodule:: machine\n.. _machine.ADCWiPy:\n\nclass ADCWiPy -- analog to digital conversion\n========================="
  },
  {
    "path": "docs/library/machine.I2C.rst",
    "chars": 8206,
    "preview": ".. currentmodule:: machine\n.. _machine.I2C:\n\nclass I2C -- a two-wire serial protocol\n==================================="
  },
  {
    "path": "docs/library/machine.PWM.rst",
    "chars": 2364,
    "preview": ".. currentmodule:: machine\n.. _machine.PWM:\n\nclass PWM -- pulse width modulation\n===================================\n\nTh"
  },
  {
    "path": "docs/library/machine.Pin.rst",
    "chars": 10433,
    "preview": ".. currentmodule:: machine\n.. _machine.Pin:\n\nclass Pin -- control I/O pins\n=============================\n\nA pin object i"
  },
  {
    "path": "docs/library/machine.RTC.rst",
    "chars": 2092,
    "preview": ".. currentmodule:: machine\n.. _machine.RTC:\n\nclass RTC -- real time clock\n============================\n\nThe RTC is an in"
  },
  {
    "path": "docs/library/machine.SD.rst",
    "chars": 1387,
    "preview": ".. currentmodule:: machine\n.. _machine.SD:\n\nclass SD -- secure digital memory card (cc3200 port only)\n=================="
  },
  {
    "path": "docs/library/machine.SDCard.rst",
    "chars": 4884,
    "preview": ".. currentmodule:: machine\n.. _machine.SDCard:\n\nclass SDCard -- secure digital memory card\n============================="
  },
  {
    "path": "docs/library/machine.SPI.rst",
    "chars": 4594,
    "preview": ".. currentmodule:: machine\n.. _machine.SPI:\n\nclass SPI -- a Serial Peripheral Interface bus protocol (master side)\n====="
  },
  {
    "path": "docs/library/machine.Signal.rst",
    "chars": 4733,
    "preview": ".. currentmodule:: machine\n.. _machine.Signal:\n\nclass Signal -- control and sense external I/O devices\n================="
  },
  {
    "path": "docs/library/machine.Timer.rst",
    "chars": 2014,
    "preview": ".. currentmodule:: machine\n.. _machine.Timer:\n\nclass Timer -- control hardware timers\n=================================="
  },
  {
    "path": "docs/library/machine.TimerWiPy.rst",
    "chars": 5881,
    "preview": ".. currentmodule:: machine\n.. _machine.TimerWiPy:\n\nclass TimerWiPy -- control hardware timers\n=========================="
  },
  {
    "path": "docs/library/machine.UART.rst",
    "chars": 5592,
    "preview": ".. currentmodule:: machine\n.. _machine.UART:\n\nclass UART -- duplex serial communication bus\n============================"
  },
  {
    "path": "docs/library/machine.WDT.rst",
    "chars": 1222,
    "preview": ".. currentmodule:: machine\n.. _machine.WDT:\n\nclass WDT -- watchdog timer\n===========================\n\nThe WDT is used to"
  },
  {
    "path": "docs/library/machine.rst",
    "chars": 6420,
    "preview": ":mod:`machine` --- functions related to the hardware\n====================================================\n\n.. module:: m"
  },
  {
    "path": "docs/library/math.rst",
    "chars": 3504,
    "preview": ":mod:`math` -- mathematical functions\n=====================================\n\n.. module:: math\n   :synopsis: mathematical"
  },
  {
    "path": "docs/library/micropython.rst",
    "chars": 6728,
    "preview": ":mod:`pycopy` -- access and control Pycopy internals\n====================================================\n\n.. module:: p"
  },
  {
    "path": "docs/library/network.CC3K.rst",
    "chars": 2552,
    "preview": ".. currentmodule:: network\n.. _network.CC3K:\n\nclass CC3K -- control CC3000 WiFi modules\n================================"
  },
  {
    "path": "docs/library/network.WIZNET5K.rst",
    "chars": 2258,
    "preview": ".. currentmodule:: network\n.. _network.WIZNET5K:\n\nclass WIZNET5K -- control WIZnet5x00 Ethernet modules\n================"
  },
  {
    "path": "docs/library/network.WLAN.rst",
    "chars": 5059,
    "preview": ".. currentmodule:: network\n.. _network.WLAN:\n\nclass WLAN -- control built-in WiFi interfaces\n==========================="
  },
  {
    "path": "docs/library/network.WLANWiPy.rst",
    "chars": 5303,
    "preview": ".. currentmodule:: network\n.. _network.WLANWiPy:\n\nclass WLANWiPy -- WiPy specific WiFi control\n========================="
  },
  {
    "path": "docs/library/network.rst",
    "chars": 6864,
    "preview": "****************************************\n:mod:`network` --- network configuration\n**************************************"
  },
  {
    "path": "docs/library/pyb.ADC.rst",
    "chars": 8094,
    "preview": ".. currentmodule:: pyb\n.. _pyb.ADC:\n\nclass ADC -- analog to digital conversion\n========================================="
  },
  {
    "path": "docs/library/pyb.Accel.rst",
    "chars": 1338,
    "preview": ".. currentmodule:: pyb\n.. _pyb.Accel:\n\nclass Accel -- accelerometer control\n====================================\n\nAccel "
  },
  {
    "path": "docs/library/pyb.CAN.rst",
    "chars": 13055,
    "preview": ".. currentmodule:: pyb\n.. _pyb.CAN:\n\nclass CAN -- controller area network communication bus\n============================"
  },
  {
    "path": "docs/library/pyb.DAC.rst",
    "chars": 4204,
    "preview": ".. currentmodule:: pyb\n.. _pyb.DAC:\n\nclass DAC -- digital to analog conversion\n========================================="
  },
  {
    "path": "docs/library/pyb.ExtInt.rst",
    "chars": 3485,
    "preview": ".. currentmodule:: pyb\n.. _pyb.ExtInt:\n\nclass ExtInt -- configure I/O pins to interrupt on external events\n============="
  },
  {
    "path": "docs/library/pyb.Flash.rst",
    "chars": 1867,
    "preview": ".. currentmodule:: pyb\n.. _pyb.Flash:\n\nclass Flash -- access to built-in flash storage\n================================="
  },
  {
    "path": "docs/library/pyb.I2C.rst",
    "chars": 5909,
    "preview": ".. currentmodule:: pyb\n.. _pyb.I2C:\n\nclass I2C -- a two-wire serial protocol\n=======================================\n\nI2"
  },
  {
    "path": "docs/library/pyb.LCD.rst",
    "chars": 2806,
    "preview": ".. currentmodule:: pyb\n.. _pyb.LCD:\n\nclass LCD -- LCD control for the LCD touch-sensor pyskin\n=========================="
  },
  {
    "path": "docs/library/pyb.LED.rst",
    "chars": 1202,
    "preview": ".. currentmodule:: pyb\n.. _pyb.LED:\n\nclass LED -- LED object\n=======================\n\nThe LED object controls an individ"
  },
  {
    "path": "docs/library/pyb.Pin.rst",
    "chars": 7477,
    "preview": ".. currentmodule:: pyb\n.. _pyb.Pin:\n\nclass Pin -- control I/O pins (legacy)\n======================================\n\nA pi"
  },
  {
    "path": "docs/library/pyb.RTC.rst",
    "chars": 2281,
    "preview": ".. currentmodule:: pyb\n.. _pyb.RTC:\n\nclass RTC -- real time clock\n============================\n\nThe RTC is an independen"
  },
  {
    "path": "docs/library/pyb.SPI.rst",
    "chars": 4663,
    "preview": ".. currentmodule:: pyb\n.. _pyb.SPI:\n\nclass SPI -- a master-driven serial protocol\n======================================"
  },
  {
    "path": "docs/library/pyb.Servo.rst",
    "chars": 2733,
    "preview": ".. currentmodule:: pyb\n.. _pyb.Servo:\n\nclass Servo -- 3-wire hobby servo driver\n========================================"
  },
  {
    "path": "docs/library/pyb.Switch.rst",
    "chars": 1141,
    "preview": ".. currentmodule:: pyb\n.. _pyb.Switch:\n\nclass Switch -- switch object\n=============================\n\nA Switch object is "
  },
  {
    "path": "docs/library/pyb.Timer.rst",
    "chars": 11026,
    "preview": ".. currentmodule:: pyb\n.. _pyb.Timer:\n\nclass Timer -- control internal timers\n======================================\n\nTi"
  },
  {
    "path": "docs/library/pyb.UART.rst",
    "chars": 9905,
    "preview": ".. currentmodule:: pyb\n.. _pyb.UART:\n\nclass UART -- duplex serial communication bus\n===================================="
  },
  {
    "path": "docs/library/pyb.USB_HID.rst",
    "chars": 1156,
    "preview": ".. currentmodule:: pyb\n.. _pyb.USB_HID:\n\nclass USB_HID -- USB Human Interface Device (HID)\n============================="
  },
  {
    "path": "docs/library/pyb.USB_VCP.rst",
    "chars": 4089,
    "preview": ".. currentmodule:: pyb\n.. _pyb.USB_VCP:\n\nclass USB_VCP -- USB virtual comm port\n======================================\n\n"
  },
  {
    "path": "docs/library/pyb.rst",
    "chars": 11325,
    "preview": ":mod:`pyb` --- functions related to the board\n=============================================\n\n.. module:: pyb\n   :synopsi"
  },
  {
    "path": "docs/library/rp2.Flash.rst",
    "chars": 1016,
    "preview": ".. currentmodule:: rp2\n.. _rp2.Flash:\n\nclass Flash -- access to built-in flash storage\n================================="
  },
  {
    "path": "docs/library/rp2.PIO.rst",
    "chars": 2397,
    "preview": ".. currentmodule:: rp2\n.. _rp2.PIO:\n\nclass PIO -- advanced PIO usage\n===============================\n\nThe :class:`PIO` c"
  },
  {
    "path": "docs/library/rp2.StateMachine.rst",
    "chars": 4557,
    "preview": ".. currentmodule:: rp2\n.. _rp2.StateMachine:\n\nclass StateMachine -- access to the RP2040's programmable I/O interface\n=="
  },
  {
    "path": "docs/library/rp2.rst",
    "chars": 2845,
    "preview": ".. currentmodule:: rp2\n\n:mod:`rp2` --- functionality specific to the RP2040\n============================================"
  },
  {
    "path": "docs/library/sys.rst",
    "chars": 3957,
    "preview": ":mod:`sys` -- system specific functions\n=======================================\n\n.. module:: sys\n   :synopsis: system sp"
  },
  {
    "path": "docs/library/uarray.rst",
    "chars": 805,
    "preview": ":mod:`uarray` -- arrays of numeric data\n=======================================\n\n.. module:: uarray\n   :synopsis: effici"
  },
  {
    "path": "docs/library/uasyncio.rst",
    "chars": 8886,
    "preview": ":mod:`uasyncio` --- asynchronous I/O scheduler\n==============================================\n\n.. module:: uasyncio\n   :"
  },
  {
    "path": "docs/library/ubinascii.rst",
    "chars": 1156,
    "preview": ":mod:`ubinascii` -- binary/ASCII conversions\n============================================\n\n.. module:: ubinascii\n   :syn"
  },
  {
    "path": "docs/library/ubluetooth.rst",
    "chars": 32626,
    "preview": ":mod:`ubluetooth` --- low-level Bluetooth\n=========================================\n\n.. module:: ubluetooth\n   :synopsis"
  },
  {
    "path": "docs/library/ucollections.rst",
    "chars": 2735,
    "preview": ":mod:`ucollections` -- collection and container types\n=====================================================\n\n.. module::"
  },
  {
    "path": "docs/library/ucryptolib.rst",
    "chars": 1470,
    "preview": ":mod:`ucryptolib` -- cryptographic ciphers\n==========================================\n\n.. module:: ucryptolib\n   :synops"
  },
  {
    "path": "docs/library/uctypes.rst",
    "chars": 14984,
    "preview": ":mod:`uctypes` -- access binary data in a structured way\n========================================================\n\n.. mo"
  },
  {
    "path": "docs/library/uerrno.rst",
    "chars": 1008,
    "preview": ":mod:`uerrno` -- system error codes\n===================================\n\n.. module:: uerrno\n   :synopsis: system error c"
  },
  {
    "path": "docs/library/uhashlib.rst",
    "chars": 1771,
    "preview": ":mod:`uhashlib` -- hashing algorithms\n=====================================\n\n.. module:: uhashlib\n   :synopsis: hashing "
  },
  {
    "path": "docs/library/uheapq.rst",
    "chars": 821,
    "preview": ":mod:`uheapq` -- heap queue algorithm\n=====================================\n\n.. module:: uheapq\n   :synopsis: heap queue"
  },
  {
    "path": "docs/library/uio.rst",
    "chars": 11413,
    "preview": ":mod:`uio` -- input/output streams\n==================================\n\n.. module:: uio\n   :synopsis: input/output stream"
  },
  {
    "path": "docs/library/ujson.rst",
    "chars": 926,
    "preview": ":mod:`ujson` -- JSON encoding and decoding\n==========================================\n\n.. module:: ujson\n   :synopsis: J"
  },
  {
    "path": "docs/library/uos.rst",
    "chars": 13878,
    "preview": ":mod:`uos` -- basic \"operating system\" services\n===============================================\n\n.. module:: uos\n   :syn"
  },
  {
    "path": "docs/library/urandom.rst",
    "chars": 2089,
    "preview": ":mod:`urandom` -- pseudo-random number generation\n=================================================\n\n.. module:: urandom"
  },
  {
    "path": "docs/library/ure.rst",
    "chars": 6384,
    "preview": ":mod:`ure` -- simple regular expressions\n========================================\n\n.. module:: ure\n   :synopsis: regular"
  },
  {
    "path": "docs/library/uselect.rst",
    "chars": 5584,
    "preview": ":mod:`uselect` -- wait for events on a set of streams\n=================================================================="
  },
  {
    "path": "docs/library/usocket.rst",
    "chars": 13649,
    "preview": "*******************************\n:mod:`usocket` -- socket module\n*******************************\n\n.. module:: usocket\n   "
  },
  {
    "path": "docs/library/ussl.rst",
    "chars": 3202,
    "preview": ":mod:`ussl` -- SSL/TLS module\n=============================\n\n.. module:: ussl\n   :synopsis: TLS/SSL wrapper for socket o"
  },
  {
    "path": "docs/library/ustruct.rst",
    "chars": 1398,
    "preview": ":mod:`ustruct` -- pack and unpack primitive data types\n======================================================\n\n.. module"
  },
  {
    "path": "docs/library/utime.rst",
    "chars": 11183,
    "preview": ":mod:`utime` -- time related functions\n======================================\n\n.. module:: utime\n   :synopsis: time rela"
  },
  {
    "path": "docs/library/uzlib.rst",
    "chars": 2259,
    "preview": ":mod:`uzlib` -- zlib decompression\n==================================\n\n.. module:: uzlib\n   :synopsis: zlib decompressio"
  },
  {
    "path": "docs/library/wipy.rst",
    "chars": 466,
    "preview": "*************************************\n:mod:`wipy` -- WiPy specific features\n*************************************\n\n.. mo"
  },
  {
    "path": "docs/license.rst",
    "chars": 1158,
    "preview": "License information\n===================\n\nThe MIT License (MIT)\n\nCopyright (c) 2013-2020 Damien P. George, Paul Sokolovsk"
  },
  {
    "path": "docs/make.bat",
    "chars": 6711,
    "preview": "@ECHO OFF\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\n"
  },
  {
    "path": "docs/pyboard/general.rst",
    "chars": 3501,
    "preview": ".. _pyboard_general:\n\nGeneral information about the pyboard\n=====================================\n\n.. contents::\n\nLocal "
  },
  {
    "path": "docs/pyboard/hardware/index.rst",
    "chars": 1784,
    "preview": "The pyboard hardware\n--------------------\n\nFor the pyboard:\n\n* v1.1\n    * `PYBv1.1 schematics and layout <https://microp"
  },
  {
    "path": "docs/pyboard/quickref.rst",
    "chars": 6120,
    "preview": ".. _pyboard_quickref:\n\nQuick reference for the pyboard\n===============================\n\nThe below pinout is for PYBv1.1."
  },
  {
    "path": "docs/pyboard/tutorial/accel.rst",
    "chars": 3173,
    "preview": "The accelerometer\n=================\n\nHere you will learn how to read the accelerometer and signal using LEDs states like"
  },
  {
    "path": "docs/pyboard/tutorial/amp_skin.rst",
    "chars": 3339,
    "preview": "The AMP audio skin\n==================\n\nSoldering and using the AMP audio skin.\n\n.. image:: img/skin_amp_1.jpg\n    :alt: "
  },
  {
    "path": "docs/pyboard/tutorial/assembler.rst",
    "chars": 3984,
    "preview": ".. _pyboard_tutorial_assembler:\n\nInline assembler\n================\n\nHere you will learn how to write inline assembler in"
  },
  {
    "path": "docs/pyboard/tutorial/debounce.rst",
    "chars": 1209,
    "preview": "Debouncing a pin input\n======================\n\nA pin used as input from a switch or other mechanical device can have a l"
  },
  {
    "path": "docs/pyboard/tutorial/fading_led.rst",
    "chars": 3723,
    "preview": "Fading LEDs\n===========\n\nIn addition to turning LEDs on and off, it is also possible to control the brightness of an LED"
  },
  {
    "path": "docs/pyboard/tutorial/index.rst",
    "chars": 897,
    "preview": ".. _pyboard_tutorial:\n\nMicroPython tutorial for the pyboard\n====================================\n\nThis tutorial is inten"
  },
  {
    "path": "docs/pyboard/tutorial/intro.rst",
    "chars": 2274,
    "preview": "Introduction to the pyboard\n===========================\n\nTo get the most out of your pyboard, there are a few basic thin"
  },
  {
    "path": "docs/pyboard/tutorial/lcd160cr_skin.rst",
    "chars": 5015,
    "preview": "The LCD160CR skin\n=================\n\nThis tutorial shows how to get started using the LCD160CR skin.\n\n.. image:: http://"
  },
  {
    "path": "docs/pyboard/tutorial/lcd_skin.rst",
    "chars": 2719,
    "preview": "The LCD and touch-sensor skin\n=============================\n\nSoldering and using the LCD and touch-sensor skin.\n\n.. imag"
  },
  {
    "path": "docs/pyboard/tutorial/leds.rst",
    "chars": 4754,
    "preview": "Turning on LEDs and basic Python concepts\n=========================================\n\nThe easiest thing to do on the pybo"
  },
  {
    "path": "docs/pyboard/tutorial/pass_through.rst",
    "chars": 451,
    "preview": "Making a UART - USB pass through\n================================\n\nIt's as simple as::\n\n    import pyb\n    import select"
  },
  {
    "path": "docs/pyboard/tutorial/power_ctrl.rst",
    "chars": 342,
    "preview": "Power control\n=============\n\n:meth:`pyb.wfi` is used to reduce power consumption while waiting for an\nevent such as an i"
  },
  {
    "path": "docs/pyboard/tutorial/repl.rst",
    "chars": 4353,
    "preview": "Getting a MicroPython REPL prompt\n=================================\n\nREPL stands for Read Evaluate Print Loop, and is th"
  },
  {
    "path": "docs/pyboard/tutorial/reset.rst",
    "chars": 2592,
    "preview": "Safe mode and factory reset\n===========================\n\nIf something goes wrong with your pyboard, don't panic!  It is "
  },
  {
    "path": "docs/pyboard/tutorial/script.rst",
    "chars": 4423,
    "preview": "Running your first script\n=========================\n\nLet's jump right in and get a Python script running on the pyboard."
  },
  {
    "path": "docs/pyboard/tutorial/servo.rst",
    "chars": 5789,
    "preview": "Controlling hobby servo motors\n==============================\n\nThere are 4 dedicated connection points on the pyboard fo"
  },
  {
    "path": "docs/pyboard/tutorial/switch.rst",
    "chars": 4633,
    "preview": ".. _pyboard_tutorial_switch:\n\nSwitches, callbacks and interrupts\n==================================\n\nThe pyboard has 2 s"
  },
  {
    "path": "docs/pyboard/tutorial/timer.rst",
    "chars": 3720,
    "preview": "The Timers\n==========\n\nThe pyboard has 14 timers which each consist of an independent counter\nrunning at a user-defined "
  },
  {
    "path": "docs/pyboard/tutorial/usb_mouse.rst",
    "chars": 5130,
    "preview": "Making the pyboard act as a USB mouse\n=====================================\n\nThe pyboard is a USB device, and can config"
  },
  {
    "path": "docs/readthedocs/settings/local_settings.py",
    "chars": 320,
    "preview": "import os\n\n# Directory that the project lives in, aka ../..\nSITE_ROOT = '/'.join(os.path.dirname(__file__).split('/')[0:"
  },
  {
    "path": "docs/reference/asm_thumb2_arith.rst",
    "chars": 1414,
    "preview": "Arithmetic instructions\n=======================\n\nDocument conventions\n--------------------\n\nNotation: ``Rd, Rm, Rn`` den"
  },
  {
    "path": "docs/reference/asm_thumb2_compare.rst",
    "chars": 2897,
    "preview": "Comparison instructions\n=======================\n\nThese perform an arithmetic or logical instruction on two arguments, di"
  },
  {
    "path": "docs/reference/asm_thumb2_directives.rst",
    "chars": 1185,
    "preview": "Assembler directives\n====================\n\nLabels\n------\n\n* label(INNER1)\n\nThis defines a label for use in a branch inst"
  },
  {
    "path": "docs/reference/asm_thumb2_float.rst",
    "chars": 2675,
    "preview": "Floating point instructions\n===========================\n\nThese instructions support the use of the ARM floating point co"
  },
  {
    "path": "docs/reference/asm_thumb2_hints_tips.rst",
    "chars": 7860,
    "preview": "Hints and tips\n==============\n\nThe following are some examples of the use of the inline assembler and some\ninformation o"
  },
  {
    "path": "docs/reference/asm_thumb2_index.rst",
    "chars": 3058,
    "preview": ".. _asm_thumb2_index:\n\nInline assembler for Thumb2 architectures\n=========================================\n\nThis documen"
  },
  {
    "path": "docs/reference/asm_thumb2_label_branch.rst",
    "chars": 3111,
    "preview": "Branch instructions\n===================\n\nThese cause execution to jump to a target location usually specified by a label"
  },
  {
    "path": "docs/reference/asm_thumb2_ldr.rst",
    "chars": 1064,
    "preview": "Load register from memory\n=========================\n\nDocument conventions\n--------------------\n\nNotation: ``Rt, Rn`` den"
  },
  {
    "path": "docs/reference/asm_thumb2_logical_bit.rst",
    "chars": 1918,
    "preview": "Logical & bitwise instructions\n==============================\n\nDocument conventions\n--------------------\n\nNotation: ``Rd"
  },
  {
    "path": "docs/reference/asm_thumb2_misc.rst",
    "chars": 820,
    "preview": "Miscellaneous instructions\n==========================\n\n* nop() ``pass`` no operation.\n* wfi() Suspend execution in a low"
  },
  {
    "path": "docs/reference/asm_thumb2_mov.rst",
    "chars": 850,
    "preview": "Register move instructions\n==========================\n\nDocument conventions\n--------------------\n\nNotation: ``Rd, Rn`` d"
  },
  {
    "path": "docs/reference/asm_thumb2_stack.rst",
    "chars": 725,
    "preview": "Stack push and pop\n==================\n\nDocument conventions\n--------------------\n\nThe ``push()`` and ``pop()`` instructi"
  },
  {
    "path": "docs/reference/asm_thumb2_str.rst",
    "chars": 1021,
    "preview": "Store register to memory\n========================\n\nDocument conventions\n--------------------\n\nNotation: ``Rt, Rn`` denot"
  },
  {
    "path": "docs/reference/constrained.rst",
    "chars": 18049,
    "preview": ".. _constrained:\n\nUsage on Microcontrollers\n=========================\n\nMicroPython is designed to be capable of running "
  },
  {
    "path": "docs/reference/filesystem.rst",
    "chars": 9803,
    "preview": ".. _filesystem:\n\nWorking with filesystems\n========================\n\n.. contents::\n\nThis tutorial describes how MicroPyth"
  },
  {
    "path": "docs/reference/glossary.rst",
    "chars": 14281,
    "preview": "Glossary\n========\n\n.. glossary::\n\n    baremetal\n        A system without a (full-fledged) OS, for example an\n        :te"
  },
  {
    "path": "docs/reference/index.rst",
    "chars": 968,
    "preview": "Pycopy language and implementation\n==================================\n\nPycopy aims to implement the Python 3.4 standard "
  },
  {
    "path": "docs/reference/isr_rules.rst",
    "chars": 21815,
    "preview": ".. _isr_rules:\n\nWriting interrupt handlers\n==========================\n\nOn suitable hardware MicroPython offers the abili"
  },
  {
    "path": "docs/reference/mpyfiles.rst",
    "chars": 7040,
    "preview": ".. _mpy_files:\n\nMicroPython .mpy files\n======================\n\nMicroPython defines the concept of an .mpy file which is "
  },
  {
    "path": "docs/reference/packages.rst",
    "chars": 13309,
    "preview": "Distribution packages, package management, and deploying applications\n=================================================="
  },
  {
    "path": "docs/reference/pyboard.py.rst",
    "chars": 5271,
    "preview": ".. _pyboard_py:\n\nThe pyboard.py tool\n===================\n\nThis is a standalone Python tool that runs on your PC that pro"
  },
  {
    "path": "docs/reference/repl.rst",
    "chars": 10264,
    "preview": "Interactive Interpreter Mode (aka REPL)\n=======================================\n\nThis section covers some characteristic"
  }
]

// ... and 3902 more files (download for full content)

About this extraction

This page contains the full source code of the pfalcon/pycopy GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4102 files (19.9 MB), approximately 5.4M tokens, and a symbol index with 14561 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!