├── .clang-format
├── .editorconfig
├── .gitattributes
├── .github
└── workflows
│ ├── compile-all.yml
│ ├── deploy-docs.yml
│ ├── linux.yml
│ ├── macos.yml
│ └── windows.yml
├── .gitignore
├── .gitmodules
├── .mailmap
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs
├── .gitignore
├── coding_convention.md
├── config.md.in
├── index.md.in
├── mkdocs.yml
├── module.md.in
├── release
│ ├── 2018q3.md
│ ├── 2018q4.md
│ ├── 2019q1.md
│ ├── 2019q2.md
│ ├── 2019q3.md
│ ├── 2019q4.md
│ ├── 2020q1.md
│ ├── 2020q2.md
│ ├── 2020q3.md
│ ├── 2020q4.md
│ ├── 2021q1.md
│ ├── 2021q2.md
│ ├── 2021q3.md
│ ├── 2021q4.md
│ ├── 2022q1.md
│ ├── 2022q2.md
│ ├── 2022q3.md
│ ├── 2022q4.md
│ ├── 2023q1.md
│ ├── 2023q2.md
│ ├── 2023q3.md
│ ├── 2023q4.md
│ ├── 2024q1.md
│ ├── 2024q2.md
│ ├── 2024q3.md
│ ├── 2024q4.md
│ └── 2025q1.md
├── src
│ ├── CNAME
│ ├── extra.css
│ ├── guide
│ │ ├── custom-project.md
│ │ ├── discover.md
│ │ └── installation.md
│ ├── how-modm-works.md
│ ├── images
│ │ ├── logo.svg
│ │ ├── system-overview.dot
│ │ ├── system-overview.svg
│ │ ├── uart-dep-graph.dot
│ │ └── uart-dep-graph.svg
│ └── reference
│ │ ├── build-systems.md
│ │ └── documentation.md
├── targets.md.in
└── who-we-are.md.in
├── examples
├── README.md
├── arduino_nano
│ ├── color
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── encoder_input_bitbang
│ │ ├── main.cpp
│ │ └── project.xml
│ └── printf
│ │ ├── main.cpp
│ │ └── project.xml
├── arduino_uno
│ └── basic
│ │ ├── analog_read_serial
│ │ ├── main.cpp
│ │ └── project.xml
│ │ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ │ ├── digital_read_serial
│ │ ├── main.cpp
│ │ └── project.xml
│ │ └── read_analog_voltage
│ │ ├── main.cpp
│ │ └── project.xml
├── avr
│ ├── 1-wire
│ │ └── ds18b20
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── adc
│ │ ├── basic
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── oversample
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── app_can2usb
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── assert
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── block_device_mirror
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── mcp2515
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── mcp2515_uart
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── display
│ │ ├── dogm128
│ │ │ ├── benchmark
│ │ │ │ ├── images
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── rca_logo_128x64.pbm
│ │ │ │ ├── main.cpp
│ │ │ │ └── project.xml
│ │ │ ├── caged_ball
│ │ │ │ ├── main.cpp
│ │ │ │ └── project.xml
│ │ │ ├── draw
│ │ │ │ ├── main.cpp
│ │ │ │ └── project.xml
│ │ │ ├── image
│ │ │ │ ├── images
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── image_64x64_0.pbm
│ │ │ │ │ ├── image_64x64_1.pbm
│ │ │ │ │ ├── image_64x64_2.pbm
│ │ │ │ │ ├── image_64x64_3.pbm
│ │ │ │ │ ├── image_64x64_4.pbm
│ │ │ │ │ ├── image_64x64_5.pbm
│ │ │ │ │ ├── image_64x64_6.pbm
│ │ │ │ │ ├── image_64x64_7.pbm
│ │ │ │ │ ├── image_64x64_8.pbm
│ │ │ │ │ └── image_64x64_9.pbm
│ │ │ │ ├── main.cpp
│ │ │ │ └── project.xml
│ │ │ ├── text
│ │ │ │ ├── main.cpp
│ │ │ │ └── project.xml
│ │ │ └── touch
│ │ │ │ ├── main.cpp
│ │ │ │ └── project.xml
│ │ ├── dogm132
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── dogm163
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── hd44780
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── siemens_s65
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── fiber
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fiber_benchmark
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── flash
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── gpio
│ │ ├── basic
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── blinking
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── button_group
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── logger
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── mega_pro
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ports
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── pwm
│ │ └── pca9685
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── qmc5883l
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── sab
│ │ ├── master
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── slave
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── timeout
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── timer
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── uart
│ │ ├── basic
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── extended
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ └── xpcc
│ │ ├── receiver
│ │ ├── component_receiver
│ │ │ ├── receiver.cpp
│ │ │ └── receiver.hpp
│ │ ├── main.cpp
│ │ └── project.xml
│ │ └── sender
│ │ ├── component_sender
│ │ ├── sender.cpp
│ │ └── sender.hpp
│ │ ├── main.cpp
│ │ └── project.xml
├── black_pill_f103
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── black_pill_f401
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── uart_freertos
│ │ ├── main.cpp
│ │ └── project.xml
├── black_pill_f411
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbfatfs
│ │ ├── ffconf_local.h
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── ramdisk.cpp
├── blue_pill_f103
│ ├── adns_9800
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── encoder_input
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── encoder_input_bitbang
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── environment
│ │ ├── hardware.hpp
│ │ ├── log.py
│ │ ├── main.cpp
│ │ ├── plot.gnuplot
│ │ ├── project.xml
│ │ ├── thread_blink.cpp
│ │ ├── thread_bme280.cpp
│ │ ├── thread_bme280.hpp
│ │ ├── thread_bmp180.cpp
│ │ ├── thread_bmp180.hpp
│ │ └── threads.hpp
│ ├── flash
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── graphics
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── itm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── logger
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtt
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── servo_pwm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── tlc594x
│ │ ├── main.cpp
│ │ └── project.xml
│ └── weight_scale_hx711
│ │ ├── main.cpp
│ │ └── project.xml
├── feather_m4
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── neopixel
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbserial
│ │ ├── main.cpp
│ │ └── project.xml
├── feather_rp2040
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── generic
│ ├── README.md
│ ├── blinky
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── delay
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── etl
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fiber
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fiber_overflow
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── i2c_multiplex
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ros
│ │ ├── README.md
│ │ ├── can_bridge
│ │ │ ├── README.md
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── environment
│ │ │ ├── hardware.hpp
│ │ │ ├── main.cpp
│ │ │ ├── project.xml
│ │ │ ├── thread_bme280.cpp
│ │ │ ├── thread_bme280.hpp
│ │ │ ├── thread_display.cpp
│ │ │ └── thread_display.hpp
│ │ └── sub_pub
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── rtc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtc_ds1302
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usb
│ │ ├── main.cpp
│ │ ├── msc_disk.c
│ │ └── project.xml
├── lbuild.xml
├── linux
│ ├── assert
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── block_device
│ │ ├── file
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── mirror
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── ram
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── build_info
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can_debugger
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── etl
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fiber
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── git
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── logger
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── printf
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── serial_interface
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── static_serial_interface
│ │ ├── main.cpp
│ │ └── project.xml
│ └── threads
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_c031c6
│ ├── adc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── adc_sequence
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── timer
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f031k6
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── sk6812
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f042k6
│ ├── adc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── lis3mdl
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── lp503x
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── lsm6ds33
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ms5837
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── tmp12x
│ │ ├── main.cpp
│ │ └── project.xml
│ └── vector_table_ram
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f072rb
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── iwdg
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f091rc
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f103rb
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── hard_fault
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── itm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtos
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── stts22h
│ │ ├── main.cpp
│ │ └── project.xml
│ └── undefined_irq
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f303k8
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── rtos
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f303re
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── itm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtos
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ └── temperature_mcp990x
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f334r8
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f401re
│ ├── adc_dma
│ │ ├── adc_dma.hpp
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── timer_handler.hpp
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── distance_vl53l0
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dw3110-communication
│ │ ├── main.cpp
│ │ └── project.xml
│ └── timer_register_count
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f411re
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── imu_bno055
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── radio
│ │ ├── lbuild.xml
│ │ ├── nrf24-basic-comm
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── nrf24-data
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── nrf24-phy-test
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── nrf24-scanner
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── radio.hpp
│ ├── rtos
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── sx1276_rx
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── sx1276_tx
│ │ ├── main.cpp
│ │ └── project.xml
│ └── ws2812b
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f429zi
│ ├── adc_ads816x
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── cmsis_dsp
│ │ ├── bayes
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── class_marks
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── convolution
│ │ │ ├── main.cpp
│ │ │ ├── math_helper.h
│ │ │ └── project.xml
│ │ ├── dotproduct
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── fft_bin
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── fir
│ │ │ ├── main.cpp
│ │ │ ├── math_helper.h
│ │ │ └── project.xml
│ │ ├── graphic_equalizer
│ │ │ ├── main.cpp
│ │ │ ├── math_helper.h
│ │ │ └── project.xml
│ │ ├── linear_interp
│ │ │ ├── main.cpp
│ │ │ ├── math_helper.h
│ │ │ └── project.xml
│ │ ├── matrix
│ │ │ ├── main.cpp
│ │ │ ├── math_helper.h
│ │ │ └── project.xml
│ │ ├── runner.cpp
│ │ ├── signal_converge
│ │ │ ├── main.cpp
│ │ │ ├── math_helper.h
│ │ │ └── project.xml
│ │ ├── sin_cos
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── svm
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── variance
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── ethernet
│ │ ├── FreeRTOSIPConfigLocal.h
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── freertos_static
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── imu_adis16470
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── nanopb
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── protocol
│ │ │ ├── complex.proto
│ │ │ └── simple.proto
│ ├── pat9125el
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtc_mcp7941x
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi_flash
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi_flash_fatfs
│ │ ├── ffconf_local.h
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── spiflash_disk.cpp
│ ├── spistack_flash
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── usb_freertos
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbfatfs
│ │ ├── ffconf_local.h
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── ramdisk.cpp
├── nucleo_f439zi
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── spi_dma
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f446re
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── color
│ │ ├── main.cpp
│ │ └── project.xml
│ └── flash
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f446ze
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac_basic
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbserial
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f746zg
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_f767zi
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ethernet
│ │ ├── FreeRTOSIPConfigLocal.h
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── freertos_blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── spi_dma
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_g070rb
│ ├── adc_dma
│ │ ├── adc_dma.hpp
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── timer_handler.hpp
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_g071rb
│ ├── adc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── amnb
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── apa102
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── custom_allocator
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── flash
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── matrix
│ │ ├── main.cpp
│ │ └── project.xml
│ └── rtos
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_g431kb
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── flash
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_g431rb
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── flash
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_g474re
│ ├── adc_basic
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── adc_sequence_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ads101x
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ads7828
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── as5047
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac_basic
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fdcan
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── flash
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── flash_json
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── imu_lsm6dso
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ixm42xxx
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ixm42xxx_fifo
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── max31855
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ms5611
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── servo_pwm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── sx128x_lora
│ │ ├── main.cpp
│ │ └── project.xml
│ └── timer_input_capture
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_h723zg
│ ├── adc_injected_conversion
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── adc_simple
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── bmi088
│ │ ├── i2c
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── spi
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ └── dac_dma
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_h743zi
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l031k6
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── vector_table_ram
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l053r8
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l152re
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l432kc
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── comp
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── gyroscope
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── pwm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── pwm_advanced
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ └── uart_spi
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l452re
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── graphics_touch
│ │ ├── main.cpp
│ │ └── project.xml
│ └── lvgl
│ │ ├── lv_conf_local.h
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l476rg
│ ├── adc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── i2c_test
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── itm
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── lvgl
│ │ ├── lv_conf_local.h
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ ├── test_screen.cpp
│ │ └── test_screen.h
│ └── rtt
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l496zg-p
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_l552ze-q
│ ├── adc_basic
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ └── freertos_blink
│ │ ├── main.cpp
│ │ └── project.xml
├── nucleo_u575zi-q
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── olimexino_stm32
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── rp_pico
│ ├── adc_simple
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fiber
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── interrupt
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── logger
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── mcblink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── mclogger
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtc_mcp7941x
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi_dma
│ │ ├── main.cpp
│ │ └── project.xml
│ └── st7789
│ │ ├── main.cpp
│ │ └── project.xml
├── samd
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── interrupt
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbserial
│ │ ├── main.cpp
│ │ └── project.xml
├── samd21_xplained_pro
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbserial
│ │ ├── main.cpp
│ │ └── project.xml
├── same54_xplained_pro
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbserial
│ │ ├── main.cpp
│ │ └── project.xml
├── same70_xplained
│ ├── adc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── pwm
│ │ ├── main.cpp
│ │ └── project.xml
│ └── timer
│ │ ├── main.cpp
│ │ └── project.xml
├── samg55_xplained_pro
│ ├── adc-uart
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi-loopback
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── timer
│ │ ├── main.cpp
│ │ └── project.xml
│ └── usbserial
│ │ ├── main.cpp
│ │ └── project.xml
├── samv
│ └── blink
│ │ ├── main.cpp
│ │ ├── openocd.cfg
│ │ └── project.xml
├── samv71_xplained_ultra
│ ├── adc
│ │ ├── dma
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── multi-channel
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── simple
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dac
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── dma
│ │ ├── block_transfer
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── linked_list_transfer
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── fdcan
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── i2c-eeprom
│ │ ├── at24mac402
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── generic
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── mcp3008
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── pwm
│ │ ├── main.cpp
│ │ └── project.xml
│ └── timer
│ │ ├── main.cpp
│ │ └── project.xml
├── srxe
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── display
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32_f4ve
│ ├── flash
│ │ ├── main.cpp
│ │ └── project.xml
│ └── gui
│ │ ├── .gitignore
│ │ ├── images
│ │ ├── bake.pbm
│ │ ├── battery_empty.pbm
│ │ ├── battery_full.pbm
│ │ ├── battery_good.pbm
│ │ ├── battery_low.pbm
│ │ ├── battery_not_connected.pbm
│ │ ├── bluetooth_12x16.pbm
│ │ ├── bluetooth_24x32.pbm
│ │ ├── charge.pbm
│ │ ├── discharge.pbm
│ │ ├── plug.pbm
│ │ ├── warning.pbm
│ │ └── warning_32x32.pbm
│ │ ├── main.cpp
│ │ ├── project.xml
│ │ └── touchscreen_calibrator.hpp
├── stm32f030f4p6_demo_board
│ ├── adc
│ │ ├── main.cpp
│ │ └── project.xml
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f072_discovery
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── hard_fault
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rotation
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── stusb4500
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── tmp102
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── uart
│ │ ├── main.cpp
│ │ └── project.xml
│ └── unaligned_access
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f0_discovery
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── logger
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f1_discovery
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ └── logger
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f3_discovery
│ ├── accelerometer
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── adc
│ │ ├── continous
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── interrupt
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── simple
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── comp
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ft245
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── gdb
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rotation
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtt
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── timer
│ │ └── basic
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── uart
│ │ ├── hal
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── logger
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ └── usb_dfu
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f401_discovery
│ ├── accelerometer
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── gyroscope
│ │ ├── main.cpp
│ │ └── project.xml
│ └── uart
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f407vet6_devebox
│ ├── blinky
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── flash
│ │ ├── main.cpp
│ │ └── project.xml
│ └── logger
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f429_discovery
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f469_discovery
│ ├── assert
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── display
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── exceptions_rtti
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── game_of_life
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── hard_fault
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── lvgl
│ │ ├── lv_conf_local.h
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── max31865
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── ports
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── printf
│ │ ├── main.cpp
│ │ ├── modm_config_printf.h
│ │ └── project.xml
│ ├── threadsafe_statics
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── tlsf-allocator
│ │ ├── main.cpp
│ │ └── project.xml
│ └── touchscreen
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f4_discovery
│ ├── accelerometer
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── adc
│ │ ├── interrupt
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── oversample
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── simple
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── app_uart_sniffer
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── barometer_bmp085_bmp180
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── can2
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── colour_tcs3414
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── display
│ │ ├── hd44780
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ ├── nokia_5110
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ │ └── ssd1306
│ │ │ ├── main.cpp
│ │ │ └── project.xml
│ ├── distance_vl6180
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── encoder_output
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── exti
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fpu
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── fsmc
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── led_matrix_display
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── open407v-d
│ │ ├── gui
│ │ │ ├── .gitignore
│ │ │ ├── images
│ │ │ │ ├── .gitignore
│ │ │ │ ├── bake.pbm
│ │ │ │ ├── battery_empty.pbm
│ │ │ │ ├── battery_full.pbm
│ │ │ │ ├── battery_good.pbm
│ │ │ │ ├── battery_low.pbm
│ │ │ │ ├── battery_not_connected.pbm
│ │ │ │ ├── bluetooth_12x16.pbm
│ │ │ │ ├── bluetooth_24x32.pbm
│ │ │ │ ├── charge.pbm
│ │ │ │ ├── discharge.pbm
│ │ │ │ ├── plug.pbm
│ │ │ │ ├── warning.pbm
│ │ │ │ └── warning_32x32.pbm
│ │ │ ├── main.cpp
│ │ │ ├── project.xml
│ │ │ ├── touchscreen_calibrator.cpp
│ │ │ └── touchscreen_calibrator.hpp
│ │ └── touchscreen
│ │ │ ├── main.cpp
│ │ │ ├── project.xml
│ │ │ ├── touchscreen_calibrator.cpp
│ │ │ └── touchscreen_calibrator.hpp
│ ├── pressure_ams5915
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── sab2
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── spi
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── temperature_ltc2984
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── timer
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── timer_test
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── tmp102
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── uart
│ │ ├── main.cpp
│ │ └── project.xml
│ └── uart_spi
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f746g_discovery
│ ├── adc_ad7928
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── blink
│ │ ├── main.cpp
│ │ └── project.xml
│ ├── rtos
│ │ ├── main.cpp
│ │ └── project.xml
│ └── tmp102
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32f769i_discovery
│ ├── blink
│ │ ├── calc.cpp
│ │ ├── calc.hpp
│ │ ├── main.cpp
│ │ └── project.xml
│ └── dac_dma
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32h750vbt6_devebox
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32l1_discovery
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── stm32l476_discovery
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
├── thingplus_rp2040
│ └── blink
│ │ ├── main.cpp
│ │ └── project.xml
└── xpcc
│ └── xml
│ ├── communication.dtd
│ └── communication.xml
├── ext
├── adamgreen
│ └── catcher.lb
├── arm
│ ├── arm_math.h.in
│ ├── arm_math_f16.h.in
│ ├── cmsis.lb
│ ├── cmsis.md
│ ├── core.lb
│ ├── core.md
│ ├── dsp.lb
│ └── dsp.md
├── aws
│ ├── FreeRTOSConfig.h.in
│ ├── FreeRTOSIPConfig.h.in
│ ├── freertos.md
│ ├── freertos_tcp.md
│ ├── modm_lan8720a.cpp
│ ├── modm_port.cpp.in
│ ├── module.lb
│ └── uart_buffer_freertos.hpp
├── chan
│ ├── ffconf.h
│ ├── module.lb
│ ├── module_petit.lb
│ └── pffconf.h
├── etlcpp
│ ├── error_handler.h
│ ├── module.lb
│ └── platform.h.in
├── eyalroz
│ ├── module.lb
│ ├── module.md
│ ├── no_printf.c.in
│ └── printf_config.h.in
├── gcc
│ ├── assert.cpp.in
│ ├── atomic
│ ├── atomic.cpp.in
│ ├── cabi_cortex.c
│ ├── cxxabi.cpp.in
│ ├── modm_atomic.hpp.in
│ ├── module_c++.lb
│ ├── module_c.lb
│ └── new_delete.cpp.in
├── hathach
│ ├── module.lb
│ ├── module.md
│ ├── tusb_config.h.in
│ ├── tusb_descriptors.c.in
│ ├── tusb_port.cpp.in
│ └── uart.hpp
├── lvgl
│ ├── lv_conf.h.in
│ ├── lv_modm_port.cpp.in
│ └── lvgl.lb
├── microchip
│ ├── device.hpp.in
│ └── module.lb
├── nanopb
│ └── nanopb.lb
├── nlohmann
│ └── json.lb
├── nxp
│ ├── README.md
│ ├── device.hpp.in
│ ├── lpc11xx
│ │ ├── Include
│ │ │ ├── LPC11xx.h
│ │ │ └── system_LPC11xx.h
│ │ └── driver
│ │ │ ├── rom_driver_CAN.h
│ │ │ └── rom_drivers.h
│ └── module.lb
├── ros
│ └── module.lb
├── rp
│ ├── README.md
│ ├── address_mapped.h
│ ├── device.hpp.in
│ ├── irq.h
│ ├── module.lb
│ ├── pico.cpp.in
│ ├── pico.h
│ ├── resets.h
│ ├── sync.h
│ └── timer.h
├── st
│ ├── device.hpp.in
│ ├── module.lb
│ ├── module.md
│ └── peripherals.hpp.in
└── tlsf
│ ├── README.md
│ ├── module.lb
│ ├── tlsf.c.in
│ └── tlsf.h
├── repo.lb
├── src
├── modm
│ ├── architecture
│ │ ├── architecture.hpp
│ │ ├── detect.hpp
│ │ ├── driver
│ │ │ ├── atomic.hpp
│ │ │ └── atomic
│ │ │ │ ├── container.hpp
│ │ │ │ ├── flag.cpp
│ │ │ │ ├── flag.hpp
│ │ │ │ ├── queue.hpp
│ │ │ │ └── queue_impl.hpp
│ │ ├── interface.hpp.in
│ │ ├── interface
│ │ │ ├── accessor.hpp
│ │ │ ├── accessor_flash.hpp
│ │ │ ├── accessor_ram.hpp
│ │ │ ├── adc.hpp
│ │ │ ├── adc_interrupt.hpp
│ │ │ ├── assert.h.in
│ │ │ ├── assert.hpp.in
│ │ │ ├── assert.md
│ │ │ ├── atomic_lock.hpp
│ │ │ ├── block_device.hpp
│ │ │ ├── build_id.hpp
│ │ │ ├── can.cpp
│ │ │ ├── can.hpp
│ │ │ ├── can.md
│ │ │ ├── can_filter.hpp
│ │ │ ├── can_message.hpp.in
│ │ │ ├── clock.hpp
│ │ │ ├── clock.md
│ │ │ ├── delay.hpp
│ │ │ ├── delay.md
│ │ │ ├── fiber.hpp
│ │ │ ├── fiber.md
│ │ │ ├── gpio.hpp
│ │ │ ├── gpio.md
│ │ │ ├── gpio_expander.hpp
│ │ │ ├── i2c.hpp
│ │ │ ├── i2c_device.hpp
│ │ │ ├── i2c_master.hpp
│ │ │ ├── i2c_multiplexer.hpp
│ │ │ ├── i2c_transaction.hpp
│ │ │ ├── interrupt.hpp
│ │ │ ├── memory.hpp
│ │ │ ├── memory.md
│ │ │ ├── one_wire.hpp
│ │ │ ├── one_wire.md
│ │ │ ├── peripheral.hpp
│ │ │ ├── register.hpp
│ │ │ ├── register.md
│ │ │ ├── spi.hpp
│ │ │ ├── spi_device.hpp
│ │ │ ├── spi_lock.hpp
│ │ │ ├── spi_master.hpp
│ │ │ ├── uart.hpp
│ │ │ ├── uart_device.hpp
│ │ │ └── unaligned.hpp
│ │ ├── module.lb
│ │ └── utils.hpp
│ ├── board
│ │ ├── al_avreb_can
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ ├── board_fuses.cpp
│ │ │ └── module.lb
│ │ ├── arduino_nano
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── arduino_uno
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ ├── board_fuses.cpp
│ │ │ └── module.lb
│ │ ├── black_pill_f103
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── black_pill_f401
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── black_pill_f411
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── blue_pill_f103
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── board.cpp.in
│ │ ├── board.hpp
│ │ ├── devebox_stm32f4xx
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── devebox_stm32h750vb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f051r8
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f072rb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f100rb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f303vc
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f401vc
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f407vg
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f411ve
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f429zi
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f469ni
│ │ │ ├── board.hpp.in
│ │ │ ├── board.xml
│ │ │ ├── board_display.cpp
│ │ │ ├── board_dsi.cpp
│ │ │ ├── board_init.cpp
│ │ │ ├── board_otm8009a.cpp
│ │ │ ├── board_sdram.cpp
│ │ │ ├── module.lb
│ │ │ └── module.md
│ │ ├── disco_f723ie
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f746ng
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_f769ni
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_l152rc
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── disco_l476vg
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── feather_m0
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── feather_m4
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ ├── module.lb
│ │ │ └── module.md
│ │ ├── feather_rp2040
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── mega_2560_pro
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ ├── board_fuses.cpp
│ │ │ └── module.lb
│ │ ├── module.lb
│ │ ├── module.md
│ │ ├── nucleo144_arduino.hpp
│ │ ├── nucleo144_arduino_l4.hpp
│ │ ├── nucleo144_arduino_l5.hpp
│ │ ├── nucleo144_arduino_u5.hpp
│ │ ├── nucleo32_arduino.hpp.in
│ │ ├── nucleo64_arduino.hpp
│ │ ├── nucleo64_arduino_c0.hpp
│ │ ├── nucleo_c031c6
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f031k6
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f042k6
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f072rb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f091rc
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f103rb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f303k8
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f303re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f334r8
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f401re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f411re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f429zi
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f439zi
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f446re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f446ze
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f746zg
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_f767zi
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_g070rb
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_g071rb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_g431kb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_g431rb
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_g474re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_h723zg
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ ├── module.lb
│ │ │ └── startup.cpp
│ │ ├── nucleo_h743zi
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l031k6
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l053r8
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l152re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l432kc
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l452re
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l476rg
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l496zg-p
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_l552ze-q
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── nucleo_u575zi-q
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── olimexino_stm32
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── rp_pico
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── samd21_mini
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── samd21_xplained_pro
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── same54_xplained_pro
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── same70_xplained
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── samg55_xplained_pro
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── samv71_xplained_ultra
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── srxe
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ ├── board_display.cpp
│ │ │ └── module.lb
│ │ ├── stm32_f4ve
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── stm32f030f4p6_demo
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ ├── thingplus_rp2040
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ │ └── weact_c011f6
│ │ │ ├── board.hpp
│ │ │ ├── board.xml
│ │ │ └── module.lb
│ ├── communication
│ │ ├── amnb.hpp
│ │ ├── amnb
│ │ │ ├── handler.hpp
│ │ │ ├── interface.hpp
│ │ │ ├── message.hpp.in
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ └── node.hpp
│ │ ├── module.lb
│ │ ├── ros.hpp
│ │ ├── ros
│ │ │ ├── module.lb
│ │ │ └── ros_modm_hardware.hpp
│ │ ├── rpr.hpp
│ │ ├── rpr
│ │ │ ├── constants.hpp
│ │ │ ├── interface.cpp
│ │ │ ├── interface.hpp
│ │ │ ├── interface_impl.hpp
│ │ │ ├── node.hpp
│ │ │ └── node_impl.hpp
│ │ ├── sab.hpp
│ │ ├── sab
│ │ │ ├── constants.hpp
│ │ │ ├── interface.cpp
│ │ │ ├── interface.hpp
│ │ │ ├── interface_impl.hpp
│ │ │ ├── master.hpp
│ │ │ ├── master_impl.hpp
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── slave.cpp
│ │ │ ├── slave.hpp
│ │ │ └── slave_impl.hpp
│ │ ├── sab2.hpp
│ │ ├── sab2
│ │ │ ├── constants.hpp
│ │ │ ├── interface.cpp
│ │ │ ├── interface.hpp
│ │ │ ├── interface_impl.hpp
│ │ │ └── module.lb
│ │ ├── xpcc.hpp
│ │ └── xpcc
│ │ │ ├── abstract_component.hpp
│ │ │ ├── abstract_component_impl.hpp
│ │ │ ├── backend
│ │ │ ├── backend_interface.hpp
│ │ │ ├── can.hpp
│ │ │ ├── can
│ │ │ │ ├── connector.cpp
│ │ │ │ ├── connector.hpp
│ │ │ │ └── connector_impl.hpp
│ │ │ ├── header.cpp
│ │ │ └── header.hpp
│ │ │ ├── communicatable.hpp
│ │ │ ├── communicatable_task.hpp
│ │ │ ├── communicator.cpp
│ │ │ ├── communicator.hpp
│ │ │ ├── communicator_impl.hpp
│ │ │ ├── dispatcher.cpp
│ │ │ ├── dispatcher.hpp.in
│ │ │ ├── module.lb
│ │ │ ├── postman
│ │ │ ├── dynamic_postman.hpp
│ │ │ ├── dynamic_postman
│ │ │ │ └── dynamic_postman.cpp
│ │ │ ├── dynamic_postman_impl.hpp
│ │ │ ├── postman.cpp
│ │ │ ├── postman.hpp
│ │ │ └── response.hpp
│ │ │ ├── response_callback.hpp
│ │ │ └── response_handle.hpp
│ ├── container
│ │ ├── container.hpp
│ │ ├── deque.hpp
│ │ ├── deque_impl.hpp
│ │ ├── doubly_linked_list.hpp
│ │ ├── dynamic_array.hpp
│ │ ├── linked_list.hpp
│ │ ├── module.lb
│ │ ├── module.md
│ │ ├── pair.hpp
│ │ ├── queue.hpp
│ │ ├── smart_pointer.cpp
│ │ ├── smart_pointer.hpp
│ │ └── stack.hpp
│ ├── debug
│ │ ├── debug.hpp
│ │ ├── logger.hpp
│ │ ├── logger
│ │ │ ├── hosted
│ │ │ │ └── default_style.cpp
│ │ │ ├── level.hpp
│ │ │ ├── logger.hpp
│ │ │ ├── style.hpp
│ │ │ ├── style
│ │ │ │ ├── prefix.hpp
│ │ │ │ ├── prefix_impl.hpp
│ │ │ │ ├── std_colour.hpp
│ │ │ │ └── std_colour_impl.hpp
│ │ │ ├── style_impl.hpp
│ │ │ └── style_wrapper.hpp
│ │ ├── module.lb
│ │ └── module.md
│ ├── driver
│ │ ├── adc
│ │ │ ├── ad7280a.hpp
│ │ │ ├── ad7280a.lb
│ │ │ ├── ad7280a_impl.hpp
│ │ │ ├── ad7928.hpp
│ │ │ ├── ad7928.lb
│ │ │ ├── ad7928_impl.hpp
│ │ │ ├── adc_sampler.hpp
│ │ │ ├── adc_sampler.lb
│ │ │ ├── adc_sampler_impl.hpp
│ │ │ ├── ads101x.hpp
│ │ │ ├── ads101x.lb
│ │ │ ├── ads101x_impl.hpp
│ │ │ ├── ads7828.hpp
│ │ │ ├── ads7828.lb
│ │ │ ├── ads7828_impl.hpp
│ │ │ ├── ads816x.hpp
│ │ │ ├── ads816x.lb
│ │ │ ├── ads816x_impl.hpp
│ │ │ ├── hx711.hpp
│ │ │ ├── hx711.lb
│ │ │ ├── hx711_impl.hpp
│ │ │ ├── mcp3008.hpp
│ │ │ ├── mcp3008.lb
│ │ │ └── mcp3008_impl.hpp
│ │ ├── bus
│ │ │ ├── bitbang_memory_interface.hpp
│ │ │ ├── bitbang_memory_interface_impl.hpp
│ │ │ ├── memory_bus.lb
│ │ │ └── tft_memory_bus.hpp
│ │ ├── can
│ │ │ ├── can_lawicel_formatter.cpp
│ │ │ ├── can_lawicel_formatter.hpp
│ │ │ ├── lawicel.lb
│ │ │ ├── mcp2515.cpp.in
│ │ │ ├── mcp2515.hpp
│ │ │ ├── mcp2515.lb
│ │ │ ├── mcp2515_bit_timings.hpp
│ │ │ ├── mcp2515_definitions.hpp
│ │ │ └── mcp2515_impl.hpp
│ │ ├── color
│ │ │ ├── tcs3414.hpp
│ │ │ ├── tcs3414.lb
│ │ │ ├── tcs3414_impl.hpp
│ │ │ ├── tcs3472.hpp
│ │ │ ├── tcs3472.lb
│ │ │ └── tcs3472_impl.hpp
│ │ ├── dac
│ │ │ ├── mcp4922.hpp
│ │ │ └── mcp4922_impl.hpp
│ │ ├── display
│ │ │ ├── dogm132.cpp
│ │ │ ├── dogs102.cpp
│ │ │ ├── dogx128.cpp
│ │ │ ├── ea_dog.hpp
│ │ │ ├── ea_dog.lb
│ │ │ ├── hd44780.hpp
│ │ │ ├── hd44780.lb
│ │ │ ├── hd44780_base.hpp
│ │ │ ├── hd44780_base_impl.hpp
│ │ │ ├── hd44780_impl.hpp
│ │ │ ├── ili9341.hpp
│ │ │ ├── ili9341.lb
│ │ │ ├── ili9341_impl.hpp
│ │ │ ├── ili9341_parallel.hpp
│ │ │ ├── ili9341_spi.hpp
│ │ │ ├── is31fl3733.hpp
│ │ │ ├── is31fl3733.lb
│ │ │ ├── ks0108.hpp
│ │ │ ├── ks0108_impl.hpp
│ │ │ ├── max7219.hpp
│ │ │ ├── max7219.lb
│ │ │ ├── max7219_matrix.hpp
│ │ │ ├── max7219_matrix_horizontal.hpp
│ │ │ ├── nokia5110.hpp
│ │ │ ├── nokia5110.lb
│ │ │ ├── nokia5110_impl.hpp
│ │ │ ├── nokia6610.hpp
│ │ │ ├── nokia6610_defines.hpp
│ │ │ ├── nokia6610_impl.hpp
│ │ │ ├── parallel_tft.hpp
│ │ │ ├── parallel_tft.lb
│ │ │ ├── parallel_tft_impl.hpp
│ │ │ ├── seven_segment.hpp
│ │ │ ├── seven_segment_impl.hpp
│ │ │ ├── sh1106.hpp
│ │ │ ├── sh1106.lb
│ │ │ ├── siemens_m55.hpp
│ │ │ ├── siemens_m55_impl.hpp
│ │ │ ├── siemens_s65.hpp
│ │ │ ├── siemens_s65.lb
│ │ │ ├── siemens_s65_impl.hpp
│ │ │ ├── siemens_s75.hpp
│ │ │ ├── siemens_s75.lb
│ │ │ ├── siemens_s75.md
│ │ │ ├── siemens_s75_impl.hpp
│ │ │ ├── ssd1306.hpp
│ │ │ ├── ssd1306.lb
│ │ │ ├── ssd1306_i2c_transaction_impl.cpp
│ │ │ ├── ssd1306_impl.hpp
│ │ │ ├── ssd1306_register.hpp
│ │ │ ├── st7036.cpp.in
│ │ │ ├── st7036.hpp
│ │ │ ├── st7036_impl.hpp
│ │ │ ├── st7565.hpp
│ │ │ ├── st7565_defines.hpp
│ │ │ ├── st7565_impl.hpp
│ │ │ ├── st7586s.hpp
│ │ │ ├── st7586s.lb
│ │ │ ├── st7586s_impl.hpp
│ │ │ ├── st7586s_protocol.hpp
│ │ │ ├── st7789.hpp
│ │ │ ├── st7789.lb
│ │ │ └── st7789
│ │ │ │ ├── st7789_driver.hpp
│ │ │ │ ├── st7789_driver_impl.hpp
│ │ │ │ ├── st7789_protocol.hpp
│ │ │ │ └── st7789_spi_interface.hpp
│ │ ├── encoder
│ │ │ ├── as5047.hpp
│ │ │ ├── as5047.lb
│ │ │ ├── as5047_impl.hpp
│ │ │ ├── as5600.hpp
│ │ │ ├── as5600.lb
│ │ │ ├── bitbang_encoder_input.hpp
│ │ │ ├── bitbang_encoder_input.lb
│ │ │ ├── bitbang_encoder_input_impl.hpp
│ │ │ ├── bitbang_encoder_output.hpp
│ │ │ ├── bitbang_encoder_output.lb
│ │ │ ├── bitbang_encoder_output_impl.hpp
│ │ │ ├── encoder_input.hpp
│ │ │ └── encoder_input.lb
│ │ ├── ethernet
│ │ │ ├── lan8720a.hpp
│ │ │ └── lan8720a.lb
│ │ ├── fpga
│ │ │ ├── fpga_type.hpp
│ │ │ ├── xilinx_spartan3.hpp
│ │ │ ├── xilinx_spartan3_impl.hpp
│ │ │ ├── xilinx_spartan6.hpp
│ │ │ └── xilinx_spartan6_impl.hpp
│ │ ├── gpio
│ │ │ ├── gpio_sampler.cpp.in
│ │ │ ├── gpio_sampler.hpp.in
│ │ │ ├── gpio_sampler.lb
│ │ │ ├── gpio_sampler_impl.hpp.in
│ │ │ ├── mcp23_transport.hpp
│ │ │ ├── mcp23_transport_impl.hpp
│ │ │ ├── mcp23s08.hpp
│ │ │ ├── mcp23s08_impl.hpp
│ │ │ ├── mcp23x17.hpp
│ │ │ ├── mcp23x17.lb
│ │ │ ├── mcp23x17_impl.hpp
│ │ │ ├── pca8574.hpp
│ │ │ ├── pca8574.lb
│ │ │ ├── pca8574_impl.hpp
│ │ │ ├── pca9535.hpp
│ │ │ ├── pca9535.lb
│ │ │ ├── pca9535_impl.hpp
│ │ │ ├── pca9548a.hpp
│ │ │ ├── pca9548a.lb
│ │ │ ├── pca9548a_impl.hpp
│ │ │ ├── shift_register_input.hpp
│ │ │ ├── shift_register_input_impl.hpp
│ │ │ ├── shift_register_output.hpp
│ │ │ └── shift_register_output_impl.hpp
│ │ ├── inertial
│ │ │ ├── adis16470.cpp
│ │ │ ├── adis16470.hpp
│ │ │ ├── adis16470.lb
│ │ │ ├── adis16470_impl.hpp
│ │ │ ├── adis16470_io.hpp.in
│ │ │ ├── adxl345.hpp
│ │ │ ├── adxl345_impl.hpp
│ │ │ ├── bma180.hpp
│ │ │ ├── bma180_impl.hpp
│ │ │ ├── bmi088.hpp
│ │ │ ├── bmi088.lb
│ │ │ ├── bmi088_impl.hpp
│ │ │ ├── bmi088_transport.hpp
│ │ │ ├── bmi088_transport_impl.hpp
│ │ │ ├── bno055.hpp
│ │ │ ├── bno055.lb
│ │ │ ├── hmc5843.hpp
│ │ │ ├── hmc5883l.hpp
│ │ │ ├── hmc58x.lb
│ │ │ ├── hmc58x3.hpp
│ │ │ ├── hmc58x3_impl.hpp
│ │ │ ├── hmc6343.hpp
│ │ │ ├── hmc6343.lb
│ │ │ ├── hmc6343_impl.hpp
│ │ │ ├── itg3200.hpp
│ │ │ ├── itg3200.lb
│ │ │ ├── itg3200_impl.hpp
│ │ │ ├── ixm42xxx.hpp
│ │ │ ├── ixm42xxx.lb
│ │ │ ├── ixm42xxx_data.hpp
│ │ │ ├── ixm42xxx_data_impl.hpp
│ │ │ ├── ixm42xxx_definitions.hpp
│ │ │ ├── ixm42xxx_impl.hpp
│ │ │ ├── ixm42xxx_transport.hpp
│ │ │ ├── ixm42xxx_transport_impl.hpp
│ │ │ ├── l3gd20.hpp
│ │ │ ├── l3gd20.lb
│ │ │ ├── l3gd20_impl.hpp
│ │ │ ├── lis302dl.hpp
│ │ │ ├── lis302dl.lb
│ │ │ ├── lis302dl_impl.hpp
│ │ │ ├── lis3_transport.hpp
│ │ │ ├── lis3_transport.lb
│ │ │ ├── lis3_transport_impl.hpp
│ │ │ ├── lis3dsh.hpp
│ │ │ ├── lis3dsh.lb
│ │ │ ├── lis3dsh_impl.hpp
│ │ │ ├── lis3mdl.hpp
│ │ │ ├── lis3mdl.lb
│ │ │ ├── lis3mdl_impl.hpp
│ │ │ ├── lsm303a.hpp
│ │ │ ├── lsm303a.lb
│ │ │ ├── lsm303a_impl.hpp
│ │ │ ├── lsm6ds33.hpp
│ │ │ ├── lsm6ds33.lb
│ │ │ ├── lsm6ds33_impl.hpp
│ │ │ ├── lsm6dso.hpp
│ │ │ ├── lsm6dso.lb
│ │ │ ├── lsm6dso_impl.hpp
│ │ │ ├── mmc5603.hpp
│ │ │ ├── mmc5603.lb
│ │ │ ├── qmc5883l.hpp
│ │ │ └── qmc5883l.lb
│ │ ├── io
│ │ │ ├── terminal.cpp
│ │ │ ├── terminal.hpp
│ │ │ └── terminal.lb
│ │ ├── module.lb
│ │ ├── motion
│ │ │ ├── adns9800.hpp
│ │ │ ├── adns9800.lb
│ │ │ ├── adns9800_impl.hpp
│ │ │ ├── adns9800_srom_a4.hpp
│ │ │ ├── adns9800_srom_a4b.hpp
│ │ │ ├── adns9800_srom_a5.hpp
│ │ │ ├── adns9800_srom_a6.hpp
│ │ │ ├── pat9125el.hpp
│ │ │ ├── pat9125el.lb
│ │ │ ├── pat9125el_impl.hpp
│ │ │ ├── pat9125el_transport.hpp
│ │ │ └── pat9125el_transport_impl.hpp
│ │ ├── motor
│ │ │ ├── drv832x_spi.cpp
│ │ │ ├── drv832x_spi.hpp
│ │ │ ├── drv832x_spi.lb
│ │ │ └── drv832x_spi_impl.hpp
│ │ ├── other
│ │ │ ├── ad840x.hpp
│ │ │ └── ad840x_impl.hpp
│ │ ├── position
│ │ │ ├── vl53l0.cpp
│ │ │ ├── vl53l0.hpp
│ │ │ ├── vl53l0.lb
│ │ │ ├── vl53l0_impl.hpp
│ │ │ ├── vl6180.cpp
│ │ │ ├── vl6180.hpp
│ │ │ ├── vl6180.lb
│ │ │ └── vl6180_impl.hpp
│ │ ├── pressure
│ │ │ ├── ams5915.hpp
│ │ │ ├── ams5915.lb
│ │ │ ├── bme280.hpp
│ │ │ ├── bme280.lb
│ │ │ ├── bme280_data.hpp
│ │ │ ├── bme280_data_impl_double.hpp
│ │ │ ├── bme280_data_impl_fp.hpp
│ │ │ ├── bme280_impl.hpp
│ │ │ ├── bmp085.hpp
│ │ │ ├── bmp085.lb
│ │ │ ├── bmp085_data.hpp
│ │ │ ├── bmp085_data_impl_double.hpp
│ │ │ ├── bmp085_data_impl_fp.hpp
│ │ │ ├── bmp085_impl.hpp
│ │ │ ├── hclax.hpp
│ │ │ ├── hclax.lb
│ │ │ ├── ms5611.hpp
│ │ │ ├── ms5611.lb
│ │ │ ├── ms5611_data.hpp
│ │ │ ├── ms5611_data_impl.hpp
│ │ │ ├── ms5611_impl.hpp
│ │ │ ├── ms5837.hpp
│ │ │ ├── ms5837.lb
│ │ │ ├── ms5837_data.hpp
│ │ │ ├── ms5837_data_impl.hpp
│ │ │ ├── ms5837_impl.hpp
│ │ │ ├── scp1000.hpp
│ │ │ └── scp1000_impl.hpp
│ │ ├── pwm
│ │ │ ├── apa102.hpp
│ │ │ ├── apa102.lb
│ │ │ ├── lp503x.hpp.in
│ │ │ ├── lp503x.lb
│ │ │ ├── lp503x_impl.hpp.in
│ │ │ ├── max6966.hpp
│ │ │ ├── max6966.lb
│ │ │ ├── max6966_impl.hpp
│ │ │ ├── pca9685.hpp
│ │ │ ├── pca9685.lb
│ │ │ ├── pca9685_impl.hpp
│ │ │ ├── sk6812.lb
│ │ │ ├── sk6812w.hpp
│ │ │ ├── sk9822.hpp
│ │ │ ├── sk9822.lb
│ │ │ ├── tlc594x.hpp
│ │ │ ├── tlc594x.lb
│ │ │ ├── tlc594x_impl.hpp
│ │ │ ├── ws2812.lb
│ │ │ └── ws2812b.hpp
│ │ ├── radio
│ │ │ ├── dw3110
│ │ │ │ ├── dw3110.lb
│ │ │ │ ├── dw3110_definitions.hpp
│ │ │ │ ├── dw3110_phy.hpp
│ │ │ │ └── dw3110_phy_impl.hpp
│ │ │ ├── nrf24.hpp
│ │ │ ├── nrf24
│ │ │ │ ├── nrf24.lb
│ │ │ │ ├── nrf24_config.hpp
│ │ │ │ ├── nrf24_config_impl.hpp
│ │ │ │ ├── nrf24_data.hpp
│ │ │ │ ├── nrf24_data_impl.hpp
│ │ │ │ ├── nrf24_definitions.hpp
│ │ │ │ ├── nrf24_phy.hpp
│ │ │ │ └── nrf24_phy_impl.hpp
│ │ │ ├── sx1276.hpp
│ │ │ ├── sx1276.lb
│ │ │ ├── sx1276_definitions.hpp
│ │ │ ├── sx1276_impl.hpp
│ │ │ ├── sx128x.hpp
│ │ │ ├── sx128x.lb
│ │ │ ├── sx128x_definitions.hpp
│ │ │ ├── sx128x_impl.hpp
│ │ │ ├── sx128x_transport.hpp
│ │ │ └── sx128x_transport_impl.hpp
│ │ ├── rtc
│ │ │ ├── ds1302.hpp
│ │ │ ├── ds1302.lb
│ │ │ ├── ds1302_impl.hpp
│ │ │ ├── mcp7941x.hpp
│ │ │ ├── mcp7941x.lb
│ │ │ └── mcp7941x_impl.hpp
│ │ ├── storage
│ │ │ ├── at24mac402.hpp
│ │ │ ├── at24mac402.lb
│ │ │ ├── at24mac402_impl.hpp
│ │ │ ├── at45db0x1d.hpp
│ │ │ ├── at45db0x1d_impl.hpp
│ │ │ ├── block_allocator.hpp
│ │ │ ├── block_allocator.lb
│ │ │ ├── block_allocator_impl.hpp
│ │ │ ├── block_device.lb
│ │ │ ├── block_device_file.hpp
│ │ │ ├── block_device_file_impl.hpp
│ │ │ ├── block_device_heap.hpp
│ │ │ ├── block_device_heap_impl.hpp
│ │ │ ├── block_device_mirror.hpp
│ │ │ ├── block_device_mirror_impl.hpp
│ │ │ ├── block_device_spiflash.hpp
│ │ │ ├── block_device_spiflash_impl.hpp
│ │ │ ├── block_device_spistack_flash.hpp
│ │ │ ├── block_device_spistack_flash_impl.hpp
│ │ │ ├── cat24aa.cpp
│ │ │ ├── cat24aa.hpp
│ │ │ ├── cat24aa.lb
│ │ │ ├── cat24aa_impl.hpp
│ │ │ ├── i2c_eeprom.hpp
│ │ │ ├── i2c_eeprom.lb
│ │ │ ├── i2c_eeprom_impl.hpp
│ │ │ ├── sd.hpp
│ │ │ ├── sd_constants.hpp
│ │ │ ├── spi_ram.hpp
│ │ │ └── spi_ram_impl.hpp
│ │ ├── temperature
│ │ │ ├── ds1631.hpp
│ │ │ ├── ds1631.lb
│ │ │ ├── ds1631_impl.hpp
│ │ │ ├── ds18b20.hpp
│ │ │ ├── ds18b20.lb
│ │ │ ├── ds18b20_impl.hpp
│ │ │ ├── lm75.hpp
│ │ │ ├── lm75.lb
│ │ │ ├── lm75_impl.hpp
│ │ │ ├── ltc2984.cpp
│ │ │ ├── ltc2984.hpp
│ │ │ ├── ltc2984.lb
│ │ │ ├── ltc2984_impl.hpp
│ │ │ ├── max31855.hpp
│ │ │ ├── max31855.lb
│ │ │ ├── max31855_impl.hpp
│ │ │ ├── max31865.hpp
│ │ │ ├── max31865.lb
│ │ │ ├── max31865_impl.hpp
│ │ │ ├── mcp990x.hpp
│ │ │ ├── mcp990x.lb
│ │ │ ├── mcp990x_impl.hpp
│ │ │ ├── stts22h.hpp
│ │ │ ├── stts22h.lb
│ │ │ ├── stts22h_impl.hpp
│ │ │ ├── tmp102.hpp
│ │ │ ├── tmp102.lb
│ │ │ ├── tmp102_impl.hpp
│ │ │ ├── tmp12x.hpp
│ │ │ ├── tmp12x.lb
│ │ │ ├── tmp175.hpp
│ │ │ ├── tmp175.lb
│ │ │ └── tmp175_impl.hpp
│ │ ├── time
│ │ │ ├── cycle_counter.hpp.in
│ │ │ └── cycle_counter.lb
│ │ ├── touch
│ │ │ ├── ads7843.hpp
│ │ │ ├── ads7843.lb
│ │ │ ├── ads7843_impl.hpp
│ │ │ ├── ft6x06.hpp
│ │ │ ├── ft6x06.lb
│ │ │ ├── ft6x06_impl.hpp
│ │ │ ├── touch2046.hpp
│ │ │ ├── touch2046.lb
│ │ │ └── touch2046_impl.hpp
│ │ └── usb
│ │ │ ├── ft245.hpp
│ │ │ ├── ft245.lb
│ │ │ ├── ft245_impl.hpp
│ │ │ ├── stusb4500.hpp
│ │ │ └── stusb4500.lb
│ ├── io
│ │ ├── io.hpp
│ │ ├── iodevice.hpp
│ │ ├── iodevice_wrapper.hpp
│ │ ├── iostream.cpp
│ │ ├── iostream.hpp.in
│ │ ├── iostream_chrono.hpp.in
│ │ ├── iostream_printf.cpp.in
│ │ ├── module.lb
│ │ └── module.md
│ ├── math
│ │ ├── algorithm.hpp
│ │ ├── algorithm
│ │ │ ├── enumerate.hpp
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── prescaler.hpp
│ │ │ ├── prescaler_counter.hpp
│ │ │ └── range.hpp
│ │ ├── calendar
│ │ │ ├── date_time.hpp
│ │ │ └── module.lb
│ │ ├── filter.hpp
│ │ ├── filter
│ │ │ ├── debounce.hpp
│ │ │ ├── debounce_impl.hpp
│ │ │ ├── fir.hpp
│ │ │ ├── fir_impl.hpp
│ │ │ ├── median.hpp
│ │ │ ├── median_3_impl.hpp
│ │ │ ├── median_5_impl.hpp
│ │ │ ├── median_7_impl.hpp
│ │ │ ├── median_9_impl.hpp
│ │ │ ├── median_impl.hpp
│ │ │ ├── module.lb
│ │ │ ├── moving_average.hpp
│ │ │ ├── pid.hpp
│ │ │ ├── pid_impl.hpp
│ │ │ ├── ramp.hpp
│ │ │ ├── ramp_impl.hpp
│ │ │ ├── s_curve_controller.hpp
│ │ │ ├── s_curve_controller_impl.hpp
│ │ │ ├── s_curve_generator.hpp
│ │ │ └── s_curve_generator_impl.hpp
│ │ ├── geometry.hpp
│ │ ├── geometry
│ │ │ ├── angle.cpp
│ │ │ ├── angle.hpp
│ │ │ ├── angle_int.hpp
│ │ │ ├── circle_2d.hpp
│ │ │ ├── circle_2d_impl.hpp
│ │ │ ├── geometric_traits.hpp
│ │ │ ├── line_2d.hpp
│ │ │ ├── line_2d_impl.hpp
│ │ │ ├── line_segment_2d.hpp
│ │ │ ├── line_segment_2d_impl.hpp
│ │ │ ├── location_2d.hpp
│ │ │ ├── location_2d_impl.hpp
│ │ │ ├── module.lb
│ │ │ ├── point_set_2d.hpp
│ │ │ ├── point_set_2d_impl.hpp
│ │ │ ├── polygon_2d.hpp
│ │ │ ├── polygon_2d_impl.hpp
│ │ │ ├── quaternion.hpp
│ │ │ ├── quaternion_impl.hpp
│ │ │ ├── ray_2d.hpp
│ │ │ ├── ray_2d_impl.hpp
│ │ │ ├── vector.hpp
│ │ │ ├── vector1.hpp
│ │ │ ├── vector1_impl.hpp
│ │ │ ├── vector2.cpp
│ │ │ ├── vector2.hpp
│ │ │ ├── vector2_impl.hpp
│ │ │ ├── vector3.hpp
│ │ │ ├── vector3_impl.hpp
│ │ │ ├── vector4.hpp
│ │ │ ├── vector4_impl.hpp
│ │ │ └── vector_impl.hpp
│ │ ├── interpolation.hpp
│ │ ├── interpolation
│ │ │ ├── lagrange.hpp
│ │ │ ├── lagrange_impl.hpp
│ │ │ ├── linear.hpp
│ │ │ ├── linear_impl.hpp
│ │ │ ├── module.lb
│ │ │ └── module.md
│ │ ├── lu_decomposition.hpp
│ │ ├── lu_decomposition_impl.hpp
│ │ ├── math.hpp.in
│ │ ├── math.lb
│ │ ├── matrix.hpp
│ │ ├── matrix.lb
│ │ ├── matrix_impl.hpp
│ │ ├── saturation
│ │ │ ├── saturated.hpp
│ │ │ └── saturation.lb
│ │ ├── tolerance.hpp
│ │ ├── units.hpp
│ │ ├── units.lb
│ │ ├── utils.hpp
│ │ └── utils
│ │ │ ├── arithmetic_traits.hpp
│ │ │ ├── avr
│ │ │ └── sqrt32.sx
│ │ │ ├── bcd.hpp
│ │ │ ├── bit_constants.hpp
│ │ │ ├── bit_operation.cpp
│ │ │ ├── bit_operation.hpp
│ │ │ ├── crc.hpp
│ │ │ ├── endianness.hpp
│ │ │ ├── integer_traits.hpp
│ │ │ ├── misc.hpp
│ │ │ ├── module.lb
│ │ │ ├── operator.hpp
│ │ │ ├── operator_avr_impl.hpp
│ │ │ ├── operator_impl.hpp
│ │ │ └── pc
│ │ │ └── operator.cpp
│ ├── platform
│ │ ├── adc
│ │ │ ├── at90_tiny_mega
│ │ │ │ ├── adc_interrupt.cpp.in
│ │ │ │ ├── adc_interrupt.hpp.in
│ │ │ │ ├── adc_mega.hpp.in
│ │ │ │ ├── adc_tiny.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── lpc
│ │ │ │ ├── adc.cpp
│ │ │ │ └── adc.hpp
│ │ │ ├── rp
│ │ │ │ ├── adc.hpp.in
│ │ │ │ ├── adc_impl.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── samg
│ │ │ │ ├── adc.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── stm32
│ │ │ │ ├── adc.hpp.in
│ │ │ │ ├── adc_impl.hpp.in
│ │ │ │ ├── adc_interrupt.cpp.in
│ │ │ │ ├── adc_interrupt.hpp.in
│ │ │ │ ├── adc_shared_interrupts.cpp.in
│ │ │ │ └── module.lb
│ │ │ ├── stm32f0
│ │ │ │ ├── adc.hpp.in
│ │ │ │ ├── adc_impl.hpp.in
│ │ │ │ ├── adc_interrupt.cpp.in
│ │ │ │ ├── adc_interrupt.hpp.in
│ │ │ │ └── module.lb
│ │ │ └── stm32f3
│ │ │ │ ├── adc.hpp.in
│ │ │ │ ├── adc_impl.hpp.in
│ │ │ │ ├── adc_interrupt.cpp.in
│ │ │ │ ├── adc_interrupt.hpp.in
│ │ │ │ ├── adc_shared_interrupts.cpp.in
│ │ │ │ └── module.lb
│ │ ├── can
│ │ │ ├── canusb
│ │ │ │ ├── canusb.hpp
│ │ │ │ ├── canusb_impl.hpp
│ │ │ │ └── module.lb
│ │ │ ├── common
│ │ │ │ ├── can_bit_timings.hpp
│ │ │ │ ├── fdcan
│ │ │ │ │ ├── message_ram.hpp
│ │ │ │ │ └── module.lb
│ │ │ │ └── module.lb
│ │ │ ├── lpc
│ │ │ │ ├── c_can.cpp.in
│ │ │ │ ├── c_can.hpp.in
│ │ │ │ ├── c_can_filter.cpp
│ │ │ │ ├── c_can_filter.hpp
│ │ │ │ ├── c_can_registers.h
│ │ │ │ ├── error_code.hpp
│ │ │ │ └── module.lb
│ │ │ ├── sam-mcan
│ │ │ │ ├── can.hpp
│ │ │ │ ├── can_impl.hpp
│ │ │ │ ├── can_instance.hpp.in
│ │ │ │ ├── can_interrupt.cpp.in
│ │ │ │ ├── can_message_ram_defaults.hpp
│ │ │ │ └── module.lb
│ │ │ ├── socketcan
│ │ │ │ ├── module.lb
│ │ │ │ ├── socketcan.cpp
│ │ │ │ └── socketcan.hpp
│ │ │ ├── stm32-fdcan
│ │ │ │ ├── can.cpp.in
│ │ │ │ ├── can.hpp.in
│ │ │ │ ├── can_message_ram_config.hpp.in
│ │ │ │ ├── can_shared_irqs.cpp.in
│ │ │ │ └── module.lb
│ │ │ └── stm32
│ │ │ │ ├── can.cpp.in
│ │ │ │ ├── can.hpp.in
│ │ │ │ ├── can_filter.cpp.in
│ │ │ │ ├── can_filter.hpp.in
│ │ │ │ └── module.lb
│ │ ├── clock
│ │ │ ├── avr
│ │ │ │ ├── clock.cpp.in
│ │ │ │ ├── clock.hpp
│ │ │ │ └── module.lb
│ │ │ ├── lpc
│ │ │ │ ├── clock.cpp.in
│ │ │ │ ├── clock.hpp.in
│ │ │ │ ├── common_clock.cpp
│ │ │ │ ├── module.lb
│ │ │ │ ├── pll_calculator.hpp
│ │ │ │ ├── static.hpp.in
│ │ │ │ └── static.macros
│ │ │ ├── rp
│ │ │ │ ├── clocks.cpp
│ │ │ │ ├── clocks.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── sam
│ │ │ │ ├── gclk.cpp.in
│ │ │ │ ├── gclk.hpp.in
│ │ │ │ ├── gclk_impl.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── sam_pmc
│ │ │ │ ├── clockgen.cpp.in
│ │ │ │ ├── clockgen.hpp.in
│ │ │ │ ├── clockgen_impl.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── stm32
│ │ │ │ ├── module.lb
│ │ │ │ ├── rcc.cpp.in
│ │ │ │ ├── rcc.hpp.in
│ │ │ │ └── rcc_impl.hpp.in
│ │ │ └── systick
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── systick_timer.cpp.in
│ │ │ │ └── systick_timer.hpp.in
│ │ ├── comp
│ │ │ └── stm32
│ │ │ │ ├── base.hpp.in
│ │ │ │ ├── comp.hpp.in
│ │ │ │ └── module.lb
│ │ ├── core
│ │ │ ├── avr
│ │ │ │ ├── atomic_lock_impl.hpp
│ │ │ │ ├── delay_impl.hpp.in
│ │ │ │ ├── flash_reader_impl.hpp
│ │ │ │ ├── interrupts.hpp.in
│ │ │ │ ├── linkerscript.ld
│ │ │ │ ├── main.hpp
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── unaligned_impl.hpp
│ │ │ │ ├── utils.cpp
│ │ │ │ └── utils.hpp
│ │ │ ├── cortex
│ │ │ │ ├── assert.cpp.in
│ │ │ │ ├── assert_impl.hpp.in
│ │ │ │ ├── atomic_lock_impl.hpp.in
│ │ │ │ ├── build_id.cpp
│ │ │ │ ├── delay.cpp.in
│ │ │ │ ├── delay_impl.hpp.in
│ │ │ │ ├── delay_ns.cpp.in
│ │ │ │ ├── delay_ns.hpp.in
│ │ │ │ ├── flash_reader_impl.hpp
│ │ │ │ ├── hardware_init.hpp
│ │ │ │ ├── heap_table.cpp.in
│ │ │ │ ├── heap_table.hpp.in
│ │ │ │ ├── linker.macros
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── option
│ │ │ │ │ ├── flash_offset.md
│ │ │ │ │ ├── main_stack_size.md
│ │ │ │ │ └── vector_table_location.md
│ │ │ │ ├── ram.ld.in
│ │ │ │ ├── reset_handler.sx.in
│ │ │ │ ├── startup.c.in
│ │ │ │ ├── unaligned_impl.hpp.in
│ │ │ │ ├── vectors.c.in
│ │ │ │ └── vectors.hpp.in
│ │ │ ├── hosted
│ │ │ │ ├── atomic_lock_impl.hpp
│ │ │ │ ├── clock.cpp
│ │ │ │ ├── delay_impl.hpp.in
│ │ │ │ ├── memory.cpp
│ │ │ │ └── module.lb
│ │ │ ├── rp
│ │ │ │ ├── flash.ld.in
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── multicore.cpp
│ │ │ │ ├── multicore.hpp.in
│ │ │ │ ├── multicore.lb
│ │ │ │ ├── multicore.md
│ │ │ │ ├── resets.hpp
│ │ │ │ └── startup_platform.cpp.in
│ │ │ ├── sam
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ └── startup_platform.c.in
│ │ │ ├── stm32
│ │ │ │ ├── dccm.ld.in
│ │ │ │ ├── iccm.ld.in
│ │ │ │ ├── idtcm.ld.in
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── option
│ │ │ │ │ └── vector_table_location.md
│ │ │ │ ├── ram_remap_vector_table.ld.in
│ │ │ │ └── startup_platform.c.in
│ │ │ └── windows
│ │ │ │ ├── windows.cpp
│ │ │ │ └── windows.hpp
│ │ ├── dac
│ │ │ ├── sam_x7x
│ │ │ │ ├── dac.hpp
│ │ │ │ ├── dac_impl.hpp.in
│ │ │ │ └── module.lb
│ │ │ └── stm32
│ │ │ │ ├── dac.cpp.in
│ │ │ │ ├── dac.hpp.in
│ │ │ │ ├── dac_dma.hpp.in
│ │ │ │ ├── dac_dma_impl.hpp.in
│ │ │ │ └── module.lb
│ │ ├── dma
│ │ │ ├── rp
│ │ │ │ ├── dma.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── samx7x
│ │ │ │ ├── base.hpp.in
│ │ │ │ ├── base_impl.hpp
│ │ │ │ ├── channel.cpp
│ │ │ │ ├── channel.hpp
│ │ │ │ ├── channel_impl.hpp
│ │ │ │ ├── dma.cpp
│ │ │ │ ├── dma.hpp
│ │ │ │ ├── module.lb
│ │ │ │ ├── transfer.hpp
│ │ │ │ └── transfer_impl.hpp
│ │ │ ├── stm32-bdma
│ │ │ │ ├── bdma.cpp.in
│ │ │ │ ├── bdma.hpp.in
│ │ │ │ ├── bdma_base.hpp.in
│ │ │ │ ├── bdma_hal.hpp
│ │ │ │ └── module.lb
│ │ │ └── stm32
│ │ │ │ ├── dma.cpp.in
│ │ │ │ ├── dma.hpp.in
│ │ │ │ ├── dma_base.hpp.in
│ │ │ │ ├── dma_hal.hpp.in
│ │ │ │ ├── dma_hal_impl.hpp.in
│ │ │ │ └── module.lb
│ │ ├── eth
│ │ │ └── stm32
│ │ │ │ ├── eth.hpp
│ │ │ │ ├── eth_impl.hpp
│ │ │ │ └── module.lb
│ │ ├── extint
│ │ │ ├── rp
│ │ │ │ ├── int_handler.cpp.in
│ │ │ │ ├── int_handler.hpp.in
│ │ │ │ ├── int_priority.hpp
│ │ │ │ ├── module.lb
│ │ │ │ └── module.md
│ │ │ ├── sam
│ │ │ │ ├── extint.cpp
│ │ │ │ ├── extint.hpp
│ │ │ │ ├── extint_impl.hpp
│ │ │ │ └── module.lb
│ │ │ └── stm32
│ │ │ │ ├── exti.cpp.in
│ │ │ │ ├── exti.hpp.in
│ │ │ │ ├── module.lb
│ │ │ │ └── module.md
│ │ ├── fault
│ │ │ └── crashcatcher
│ │ │ │ ├── crashcatcher_dump.cpp
│ │ │ │ ├── crashcatcher_regions.c.in
│ │ │ │ ├── fault.hpp
│ │ │ │ ├── fault_storage.cpp
│ │ │ │ ├── fault_storage.hpp
│ │ │ │ ├── module.lb
│ │ │ │ └── module.md
│ │ ├── flash
│ │ │ └── stm32
│ │ │ │ ├── flash.cpp.in
│ │ │ │ ├── flash.hpp.in
│ │ │ │ └── module.lb
│ │ ├── fsmc
│ │ │ └── stm32
│ │ │ │ ├── fsmc.cpp.in
│ │ │ │ ├── fsmc.hpp.in
│ │ │ │ └── module.lb
│ │ ├── gpio
│ │ │ ├── at90_tiny_mega
│ │ │ │ ├── base.hpp.in
│ │ │ │ ├── data.hpp.in
│ │ │ │ ├── define.h
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── port.hpp.in
│ │ │ │ ├── set.hpp.in
│ │ │ │ ├── software_port.hpp.in
│ │ │ │ └── static.hpp.in
│ │ │ ├── common
│ │ │ │ ├── connector.hpp.in
│ │ │ │ ├── inverted.hpp
│ │ │ │ ├── open_drain.hpp
│ │ │ │ ├── pins.hpp.in
│ │ │ │ ├── port_shim.hpp.in
│ │ │ │ └── unused.hpp.in
│ │ │ ├── hosted
│ │ │ │ ├── module.lb
│ │ │ │ └── unused.hpp.in
│ │ │ ├── lpc
│ │ │ │ ├── gpio.hpp.in
│ │ │ │ ├── gpio_enable.cpp
│ │ │ │ └── module.lb
│ │ │ ├── rp
│ │ │ │ ├── base.hpp.in
│ │ │ │ ├── data.hpp.in
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── peripherals.hpp.in
│ │ │ │ ├── port.hpp.in
│ │ │ │ ├── set.hpp.in
│ │ │ │ ├── software_port.hpp.in
│ │ │ │ └── static.hpp.in
│ │ │ ├── sam
│ │ │ │ ├── config.hpp.in
│ │ │ │ ├── connector.hpp
│ │ │ │ ├── enable.cpp.in
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── pin.hpp.in
│ │ │ │ ├── software_port.hpp.in
│ │ │ │ └── unused.hpp
│ │ │ ├── stm32
│ │ │ │ ├── base.hpp.in
│ │ │ │ ├── data.hpp.in
│ │ │ │ ├── enable.cpp.in
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── port.hpp.in
│ │ │ │ ├── set.hpp.in
│ │ │ │ ├── software_port.hpp.in
│ │ │ │ └── static.hpp.in
│ │ │ └── xmega
│ │ │ │ └── gpio.hpp.in
│ │ ├── heap
│ │ │ ├── avr
│ │ │ │ ├── module.lb
│ │ │ │ └── ram.cpp.in
│ │ │ └── cortex
│ │ │ │ ├── heap_block.cpp
│ │ │ │ ├── heap_newlib.cpp
│ │ │ │ ├── heap_tlsf.cpp
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ └── no_heap.c.in
│ │ ├── i2c
│ │ │ ├── at90_tiny_mega
│ │ │ │ ├── i2c.hpp.in
│ │ │ │ ├── i2c_master.cpp.in
│ │ │ │ ├── i2c_master.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── bitbang
│ │ │ │ ├── bitbang_i2c_master.hpp.in
│ │ │ │ ├── bitbang_i2c_master_impl.hpp
│ │ │ │ └── module.lb
│ │ │ ├── rp
│ │ │ │ ├── i2c_master.cpp.in
│ │ │ │ ├── i2c_master.hpp.in
│ │ │ │ ├── i2c_master_impl.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── sam_x7x
│ │ │ │ ├── i2c_master.cpp.in
│ │ │ │ ├── i2c_master.hpp.in
│ │ │ │ └── module.lb
│ │ │ ├── stm32-extended
│ │ │ │ ├── i2c_master.cpp.in
│ │ │ │ ├── i2c_master.hpp.in
│ │ │ │ ├── i2c_shared_irqs.cpp.in
│ │ │ │ ├── i2c_timing_calculator.hpp
│ │ │ │ └── module.lb
│ │ │ ├── stm32
│ │ │ │ ├── i2c_master.cpp.in
│ │ │ │ ├── i2c_master.hpp.in
│ │ │ │ └── module.lb
│ │ │ └── xmega
│ │ │ │ ├── i2c_master.cpp.in
│ │ │ │ ├── i2c_master.hpp.in
│ │ │ │ └── module.lb
│ │ ├── id
│ │ │ └── stm32
│ │ │ │ ├── id.hpp
│ │ │ │ └── module.lb
│ │ ├── iwdg
│ │ │ └── stm32
│ │ │ │ ├── iwdg.hpp.in
│ │ │ │ └── module.lb
│ │ ├── module.lb
│ │ ├── one_wire
│ │ │ └── bitbang
│ │ │ │ ├── bitbang_master.hpp.in
│ │ │ │ ├── bitbang_master_impl.hpp.in
│ │ │ │ └── module.lb
│ │ ├── platform.hpp.in
│ │ ├── pwm
│ │ │ └── sam_x7x
│ │ │ │ ├── module.lb
│ │ │ │ ├── pwm.hpp.in
│ │ │ │ ├── pwm_base.hpp.in
│ │ │ │ ├── pwm_base_impl.hpp.in
│ │ │ │ └── pwm_impl.hpp.in
│ │ ├── random
│ │ │ └── stm32
│ │ │ │ ├── module.lb
│ │ │ │ └── random_number_generator.hpp
│ │ ├── rtc
│ │ │ └── stm32
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── rtc.cpp
│ │ │ │ ├── rtc.hpp.in
│ │ │ │ └── rtc_impl.hpp.in
│ │ ├── spi
│ │ │ ├── at90_tiny_mega
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi.hpp.in
│ │ │ │ ├── spi_master.cpp.in
│ │ │ │ └── spi_master.hpp.in
│ │ │ ├── at90_tiny_mega_uart
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart_spi_master.cpp.in
│ │ │ │ └── uart_spi_master.hpp.in
│ │ │ ├── bitbang
│ │ │ │ ├── bitbang_spi_master.hpp
│ │ │ │ ├── bitbang_spi_master_impl.hpp
│ │ │ │ └── module.lb
│ │ │ ├── lpc
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi.cpp.in
│ │ │ │ ├── spi.hpp.in
│ │ │ │ ├── spi_0.cpp
│ │ │ │ ├── spi_0.hpp
│ │ │ │ ├── spi_1.cpp
│ │ │ │ ├── spi_1.hpp
│ │ │ │ └── spi_registers.h
│ │ │ ├── rp
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi_master.cpp.in
│ │ │ │ ├── spi_master.hpp.in
│ │ │ │ ├── spi_master_dma.hpp.in
│ │ │ │ └── spi_master_dma_impl.hpp.in
│ │ │ ├── sam
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi_master.cpp.in
│ │ │ │ └── spi_master.hpp.in
│ │ │ ├── sam_x7x
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi_base.hpp.in
│ │ │ │ ├── spi_hal.hpp.in
│ │ │ │ ├── spi_hal_impl.hpp.in
│ │ │ │ ├── spi_master.cpp.in
│ │ │ │ └── spi_master.hpp.in
│ │ │ ├── stm32
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi_base.hpp.in
│ │ │ │ ├── spi_hal.hpp.in
│ │ │ │ ├── spi_hal_impl.hpp.in
│ │ │ │ ├── spi_master.cpp.in
│ │ │ │ ├── spi_master.hpp.in
│ │ │ │ ├── spi_master_dma.hpp.in
│ │ │ │ └── spi_master_dma_impl.hpp.in
│ │ │ ├── stm32_uart
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart_spi_master.cpp.in
│ │ │ │ └── uart_spi_master.hpp.in
│ │ │ ├── stm32h7
│ │ │ │ ├── module.lb
│ │ │ │ ├── spi_base.hpp.in
│ │ │ │ ├── spi_hal.hpp.in
│ │ │ │ ├── spi_hal_impl.hpp.in
│ │ │ │ ├── spi_master.cpp.in
│ │ │ │ ├── spi_master.hpp.in
│ │ │ │ ├── spi_master_dma.hpp.in
│ │ │ │ └── spi_master_dma_impl.hpp.in
│ │ │ └── xmega
│ │ │ │ └── module.lb
│ │ ├── timer
│ │ │ ├── lpc
│ │ │ │ ├── module.lb
│ │ │ │ ├── timer.hpp.in
│ │ │ │ └── timer_registers.hpp
│ │ │ ├── samg
│ │ │ │ ├── module.lb
│ │ │ │ ├── timer_channel.hpp.in
│ │ │ │ └── timer_channel_base.hpp.in
│ │ │ ├── stm32
│ │ │ │ ├── advanced.cpp.in
│ │ │ │ ├── advanced.hpp.in
│ │ │ │ ├── advanced_base.hpp.in
│ │ │ │ ├── basic.cpp.in
│ │ │ │ ├── basic.hpp.in
│ │ │ │ ├── basic_base.hpp.in
│ │ │ │ ├── general_purpose.cpp.in
│ │ │ │ ├── general_purpose.hpp.in
│ │ │ │ ├── general_purpose_base.hpp.in
│ │ │ │ └── module.lb
│ │ │ └── xmega
│ │ │ │ └── module.lb
│ │ ├── uart
│ │ │ ├── at90_tiny_mega
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart.hpp.in
│ │ │ │ ├── uart_defines.h
│ │ │ │ ├── uart_rx.cpp.in
│ │ │ │ └── uart_tx.cpp.in
│ │ │ ├── cortex
│ │ │ │ ├── itm.cpp.in
│ │ │ │ ├── itm.hpp.in
│ │ │ │ ├── module.lb
│ │ │ │ └── module.md
│ │ │ ├── hosted
│ │ │ │ ├── module.lb
│ │ │ │ ├── serial_interface.cpp
│ │ │ │ ├── serial_interface.hpp
│ │ │ │ ├── serial_port.cpp
│ │ │ │ ├── serial_port.hpp
│ │ │ │ ├── static_serial_interface.hpp
│ │ │ │ └── static_serial_interface_impl.hpp
│ │ │ ├── lpc
│ │ │ │ ├── lpc11_uart_registers.hpp
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart.cpp.in
│ │ │ │ └── uart.hpp.in
│ │ │ ├── rp
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart.cpp.in
│ │ │ │ └── uart.hpp.in
│ │ │ ├── rtt
│ │ │ │ ├── module.lb
│ │ │ │ ├── module.md
│ │ │ │ ├── rtt.cpp.in
│ │ │ │ └── rtt.hpp.in
│ │ │ ├── sam-sercom
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart.cpp.in
│ │ │ │ ├── uart.hpp.in
│ │ │ │ ├── uart_base.hpp.in
│ │ │ │ ├── uart_hal.hpp.in
│ │ │ │ └── uart_hal_impl.hpp.in
│ │ │ ├── sam
│ │ │ │ ├── uart.cpp.in
│ │ │ │ ├── uart.hpp.in
│ │ │ │ ├── uart
│ │ │ │ │ └── module.lb
│ │ │ │ ├── uart_base.hpp.in
│ │ │ │ └── usart
│ │ │ │ │ └── module.lb
│ │ │ ├── stm32
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart.cpp.in
│ │ │ │ ├── uart.hpp
│ │ │ │ ├── uart_base.hpp.in
│ │ │ │ ├── uart_buffer.hpp
│ │ │ │ ├── uart_hal.hpp.in
│ │ │ │ ├── uart_hal_impl.hpp.in
│ │ │ │ └── uart_shared.cpp.in
│ │ │ └── xmega
│ │ │ │ ├── module.lb
│ │ │ │ ├── uart.cpp.in
│ │ │ │ ├── uart.hpp.in
│ │ │ │ ├── uart_baudrate.hpp
│ │ │ │ ├── uart_buffered_rx.cpp.in
│ │ │ │ ├── uart_buffered_tx.cpp.in
│ │ │ │ └── uart_flow.cpp.in
│ │ └── usb
│ │ │ ├── rp
│ │ │ ├── module.lb
│ │ │ └── usb.hpp
│ │ │ ├── sam
│ │ │ ├── module.lb
│ │ │ └── usb.hpp.in
│ │ │ └── stm32
│ │ │ ├── module.lb
│ │ │ └── usb.hpp.in
│ ├── processing
│ │ ├── fiber.hpp.in
│ │ ├── fiber
│ │ │ ├── barrier.hpp
│ │ │ ├── condition_variable.hpp
│ │ │ ├── context.h
│ │ │ ├── context_arm64.cpp
│ │ │ ├── context_arm_m.cpp.in
│ │ │ ├── context_avr.cpp
│ │ │ ├── context_x86_64.cpp.in
│ │ │ ├── latch.hpp
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── mutex.hpp
│ │ │ ├── no_yield.hpp
│ │ │ ├── scheduler.cpp
│ │ │ ├── scheduler.hpp.in
│ │ │ ├── semaphore.hpp
│ │ │ ├── shared_mutex.hpp
│ │ │ ├── stack.hpp.in
│ │ │ ├── stop_token.hpp
│ │ │ ├── task.hpp
│ │ │ └── task_impl.hpp
│ │ ├── module.lb
│ │ ├── processing.hpp.in
│ │ ├── protothread.hpp
│ │ ├── protothread
│ │ │ ├── macros.hpp
│ │ │ ├── macros_fiber.hpp
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── protothread.hpp
│ │ │ ├── protothread_fiber.hpp
│ │ │ └── semaphore.hpp
│ │ ├── resumable.hpp
│ │ ├── resumable
│ │ │ ├── macros.hpp
│ │ │ ├── macros_fiber.hpp
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── nested_resumable.hpp.in
│ │ │ ├── resumable.hpp
│ │ │ └── resumable_fiber.hpp
│ │ ├── rtos.hpp
│ │ ├── rtos
│ │ │ ├── freertos
│ │ │ │ ├── mutex.cpp
│ │ │ │ ├── mutex.hpp
│ │ │ │ ├── queue.cpp
│ │ │ │ ├── queue.hpp
│ │ │ │ ├── scheduler.hpp
│ │ │ │ ├── semaphore.cpp
│ │ │ │ ├── semaphore.hpp
│ │ │ │ ├── thread.cpp
│ │ │ │ └── thread.hpp
│ │ │ ├── module.lb
│ │ │ └── stdlib
│ │ │ │ ├── mutex.cpp
│ │ │ │ ├── mutex.hpp
│ │ │ │ ├── queue.hpp
│ │ │ │ ├── queue_impl.hpp
│ │ │ │ ├── scheduler.cpp
│ │ │ │ ├── scheduler.hpp
│ │ │ │ ├── semaphore.cpp
│ │ │ │ ├── semaphore.hpp
│ │ │ │ ├── thread.cpp
│ │ │ │ └── thread.hpp
│ │ ├── scheduler
│ │ │ ├── module.lb
│ │ │ ├── scheduler.cpp
│ │ │ ├── scheduler.hpp
│ │ │ └── scheduler_impl.hpp
│ │ ├── task.hpp
│ │ ├── timer.hpp
│ │ └── timer
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── periodic_timer.hpp
│ │ │ ├── timeout.hpp
│ │ │ ├── timeout_impl.hpp
│ │ │ └── timestamp.hpp
│ ├── ui
│ │ ├── animation.hpp
│ │ ├── animation
│ │ │ ├── base.hpp
│ │ │ ├── base_impl.hpp
│ │ │ ├── indicator.hpp
│ │ │ ├── interpolation.hpp
│ │ │ ├── key_frame.hpp
│ │ │ ├── key_frame_impl.hpp
│ │ │ ├── module.lb
│ │ │ ├── pulse.hpp
│ │ │ └── strobe.hpp
│ │ ├── button.hpp
│ │ ├── button.lb
│ │ ├── button.md
│ │ ├── button_group.hpp
│ │ ├── button_impl.hpp
│ │ ├── color.cpp
│ │ ├── color.hpp
│ │ ├── color
│ │ │ ├── brightness.hpp
│ │ │ ├── color.lb
│ │ │ ├── hsv.hpp
│ │ │ ├── hsv_impl.hpp
│ │ │ ├── rgb.hpp
│ │ │ ├── rgb565.hpp
│ │ │ ├── rgb_impl.hpp
│ │ │ └── rgbhtml.hpp
│ │ ├── color_impl.hpp
│ │ ├── display.hpp
│ │ ├── display
│ │ │ ├── character_display.cpp
│ │ │ ├── character_display.hpp
│ │ │ ├── color_graphic_display.hpp
│ │ │ ├── font.hpp
│ │ │ ├── font
│ │ │ │ ├── SConscript.generate
│ │ │ │ ├── all_caps_3x5.cpp
│ │ │ │ ├── all_caps_3x5.font
│ │ │ │ ├── all_caps_3x5.hpp
│ │ │ │ ├── arcade_classic.cpp
│ │ │ │ ├── arcade_classic.font
│ │ │ │ ├── arcade_classic.hpp
│ │ │ │ ├── assertion.cpp
│ │ │ │ ├── assertion.font
│ │ │ │ ├── assertion.hpp
│ │ │ │ ├── fixed_width_5x8.cpp
│ │ │ │ ├── fixed_width_5x8.font
│ │ │ │ ├── fixed_width_5x8.hpp
│ │ │ │ ├── matrix_8x8.cpp
│ │ │ │ ├── matrix_8x8.font
│ │ │ │ ├── matrix_8x8.hpp
│ │ │ │ ├── numbers_14x32.cpp
│ │ │ │ ├── numbers_14x32.font
│ │ │ │ ├── numbers_14x32.hpp
│ │ │ │ ├── numbers_40x56.cpp
│ │ │ │ ├── numbers_40x56.font
│ │ │ │ ├── numbers_40x56.hpp
│ │ │ │ ├── numbers_46x64.cpp
│ │ │ │ ├── numbers_46x64.font
│ │ │ │ ├── numbers_46x64.hpp
│ │ │ │ ├── scripto_narrow.cpp
│ │ │ │ ├── scripto_narrow.font
│ │ │ │ ├── scripto_narrow.hpp
│ │ │ │ ├── ubuntu_36.cpp
│ │ │ │ ├── ubuntu_36.font
│ │ │ │ └── ubuntu_36.hpp
│ │ │ ├── graphic_display.cpp
│ │ │ ├── graphic_display.hpp
│ │ │ ├── graphic_display_fill.cpp
│ │ │ ├── graphic_display_text.cpp
│ │ │ ├── image.hpp
│ │ │ ├── image
│ │ │ │ ├── home_16x16.cpp
│ │ │ │ ├── home_16x16.hpp
│ │ │ │ ├── home_16x16.pbm
│ │ │ │ ├── logo_eurobot_90x64.cpp
│ │ │ │ ├── logo_eurobot_90x64.hpp
│ │ │ │ ├── logo_eurobot_90x64.pbm
│ │ │ │ ├── logo_rca_90x64.cpp
│ │ │ │ ├── logo_rca_90x64.hpp
│ │ │ │ ├── logo_rca_90x64.pbm
│ │ │ │ ├── skull_64x64.cpp
│ │ │ │ ├── skull_64x64.hpp
│ │ │ │ └── skull_64x64.pbm
│ │ │ ├── module.lb
│ │ │ ├── monochrome_graphic_display.hpp
│ │ │ ├── monochrome_graphic_display_horizontal.hpp
│ │ │ ├── monochrome_graphic_display_horizontal_impl.hpp
│ │ │ ├── monochrome_graphic_display_impl.hpp
│ │ │ ├── monochrome_graphic_display_vertical.hpp
│ │ │ ├── monochrome_graphic_display_vertical_impl.hpp
│ │ │ ├── orientation.hpp
│ │ │ ├── virtual_graphic_display.cpp
│ │ │ └── virtual_graphic_display.hpp
│ │ ├── gui.hpp
│ │ ├── gui
│ │ │ ├── colorpalette.cpp
│ │ │ ├── colorpalette.hpp
│ │ │ ├── module.lb
│ │ │ ├── types.hpp
│ │ │ ├── view.cpp
│ │ │ ├── view.hpp
│ │ │ ├── view_stack.cpp
│ │ │ ├── view_stack.hpp
│ │ │ ├── widgets.hpp
│ │ │ └── widgets
│ │ │ │ ├── button.cpp
│ │ │ │ ├── button.hpp
│ │ │ │ ├── checkbox.cpp
│ │ │ │ ├── checkbox.hpp
│ │ │ │ ├── composed_widgets
│ │ │ │ ├── stringrocker.cpp
│ │ │ │ ├── stringrocker.hpp
│ │ │ │ ├── tab_panel.cpp
│ │ │ │ └── tab_panel.hpp
│ │ │ │ ├── label.cpp
│ │ │ │ ├── label.hpp
│ │ │ │ ├── numberfield.cpp
│ │ │ │ ├── numberfield.hpp
│ │ │ │ ├── numberfield_impl.hpp
│ │ │ │ ├── numberrocker.hpp
│ │ │ │ ├── numberrocker_impl.hpp
│ │ │ │ ├── stringfield.cpp
│ │ │ │ ├── stringfield.hpp
│ │ │ │ ├── widget.cpp
│ │ │ │ └── widget.hpp
│ │ ├── led.hpp
│ │ ├── led
│ │ │ ├── led.hpp
│ │ │ ├── module.lb
│ │ │ ├── module.md
│ │ │ ├── rgb.hpp
│ │ │ ├── table.cpp.in
│ │ │ └── tables.hpp.in
│ │ ├── menu.hpp
│ │ ├── menu
│ │ │ ├── abstract_menu.hpp
│ │ │ ├── abstract_view.hpp
│ │ │ ├── choice_menu.hpp
│ │ │ ├── choice_menu_entry.cpp
│ │ │ ├── choice_menu_entry.hpp
│ │ │ ├── choice_menu_impl.hpp
│ │ │ ├── communicating_view.hpp
│ │ │ ├── communicating_view_stack.hpp
│ │ │ ├── iabstract_view.hpp
│ │ │ ├── menu_buttons.hpp
│ │ │ ├── menu_entry_callback.hpp
│ │ │ ├── module.lb
│ │ │ ├── scrollable_text.cpp
│ │ │ ├── scrollable_text.hpp
│ │ │ ├── standard_menu.hpp
│ │ │ ├── standard_menu_impl.hpp
│ │ │ └── view_stack.hpp
│ │ ├── time
│ │ │ ├── module.lb
│ │ │ ├── time.cpp
│ │ │ └── time.hpp
│ │ └── ui.lb
│ └── utils
│ │ ├── aligned_storage.hpp
│ │ ├── allocator.hpp
│ │ ├── inplace_any.hpp
│ │ ├── inplace_function.hpp
│ │ ├── module.lb
│ │ ├── type_traits.hpp
│ │ └── utils.hpp
└── unittest
│ ├── harness.cpp
│ ├── harness.hpp
│ ├── module.lb
│ ├── reporter.cpp
│ ├── reporter.hpp
│ ├── testsuite.cpp
│ ├── testsuite.hpp
│ ├── type
│ ├── count_type.cpp
│ └── count_type.hpp
│ └── unittest.hpp
├── test
├── Makefile
├── README.md
├── all
│ ├── .gitignore
│ ├── Makefile
│ ├── avr.cpp
│ ├── avr.xml
│ ├── cortex-m.cpp
│ ├── cortex-m.xml
│ ├── ignored.txt
│ └── run_all.py
├── config
│ ├── al-avreb-can.xml
│ ├── arduino-nano_A.xml
│ ├── arduino-nano_B.xml
│ ├── arduino-nano_C.xml
│ ├── arduino-nano_D.xml
│ ├── arduino-nano_E.xml
│ ├── arduino-nano_F.xml
│ ├── arduino-nano_G.xml
│ ├── arduino-nano_H.xml
│ ├── arduino-nano_I.xml
│ ├── arduino-uno.xml
│ ├── hosted.xml
│ ├── lbuild.xml
│ ├── mega-2560-pro_A.xml
│ ├── mega-2560-pro_B.xml
│ ├── mega-2560-pro_C.xml
│ ├── nucleo-f091rc_A.xml
│ ├── nucleo-f091rc_B.xml
│ ├── nucleo-f103rb_A.xml
│ ├── nucleo-f103rb_B.xml
│ ├── nucleo-f401re.xml
│ ├── nucleo-f411re.xml
│ ├── nucleo-f429zi.xml
│ ├── nucleo-f446re.xml
│ ├── nucleo-f446ze.xml
│ ├── nucleo-f767zi.xml
│ ├── nucleo-g071rb_A.xml
│ ├── nucleo-g071rb_B.xml
│ ├── nucleo-g474re.xml
│ ├── nucleo-h723zg.xml
│ ├── nucleo-l432kc.xml
│ ├── nucleo-l496zg-p.xml
│ ├── nucleo-l552ze-q.xml
│ ├── nucleo-u575zi-q.xml
│ └── samv71-xplained-ultra.xml
├── modm
│ ├── architecture
│ │ ├── driver
│ │ │ ├── accessor
│ │ │ │ ├── flash_test.cpp
│ │ │ │ └── flash_test.hpp
│ │ │ ├── atomic
│ │ │ │ ├── atomic_queue_test.cpp
│ │ │ │ └── atomic_queue_test.hpp
│ │ │ ├── clock_test.cpp
│ │ │ └── clock_test.hpp
│ │ ├── interface
│ │ │ ├── can_message_test.cpp
│ │ │ ├── can_message_test.hpp
│ │ │ ├── i2c_test.cpp
│ │ │ ├── i2c_test.hpp
│ │ │ ├── register_test.cpp
│ │ │ └── register_test.hpp
│ │ └── module.lb
│ ├── communication
│ │ ├── amnb
│ │ │ ├── interface_test.cpp
│ │ │ ├── interface_test.hpp
│ │ │ ├── message_test.cpp
│ │ │ ├── message_test.hpp
│ │ │ ├── node_test.cpp
│ │ │ └── node_test.hpp
│ │ ├── module.lb
│ │ ├── sab
│ │ │ ├── interface_test.cpp
│ │ │ ├── interface_test.hpp
│ │ │ ├── slave_test.cpp
│ │ │ └── slave_test.hpp
│ │ └── xpcc
│ │ │ ├── backend
│ │ │ └── can
│ │ │ │ ├── can_connector_base_test.cpp
│ │ │ │ ├── can_connector_base_test.hpp
│ │ │ │ ├── can_connector_test.cpp
│ │ │ │ ├── can_connector_test.hpp
│ │ │ │ ├── testing_can_connector.cpp
│ │ │ │ └── testing_can_connector.hpp
│ │ │ ├── dispatcher_test.cpp
│ │ │ ├── dispatcher_test.hpp
│ │ │ ├── fake_backend.cpp
│ │ │ ├── fake_backend.hpp
│ │ │ ├── fake_postman.cpp
│ │ │ ├── fake_postman.hpp
│ │ │ ├── message.hpp
│ │ │ ├── testing_component_1.cpp
│ │ │ ├── testing_component_1.hpp
│ │ │ ├── testing_component_2.cpp
│ │ │ ├── testing_component_2.hpp
│ │ │ ├── timeline.cpp
│ │ │ └── timeline.hpp
│ ├── container
│ │ ├── bounded_deque_test.cpp
│ │ ├── bounded_deque_test.hpp
│ │ ├── bounded_queue_test.cpp
│ │ ├── bounded_queue_test.hpp
│ │ ├── bounded_stack_test.cpp
│ │ ├── bounded_stack_test.hpp
│ │ ├── doubly_linked_list_test.cpp
│ │ ├── doubly_linked_list_test.hpp
│ │ ├── dynamic_array_test.cpp
│ │ ├── dynamic_array_test.hpp
│ │ ├── linked_list_test.cpp
│ │ ├── linked_list_test.hpp
│ │ ├── module.lb
│ │ ├── pair_test.cpp
│ │ └── pair_test.hpp
│ ├── driver
│ │ ├── adc
│ │ │ ├── ad7280a_test.cpp
│ │ │ ├── ad7280a_test.hpp
│ │ │ ├── spi_device_test.cpp
│ │ │ └── spi_device_test.hpp
│ │ ├── can
│ │ │ ├── can_lawicel_formatter_test.cpp
│ │ │ ├── can_lawicel_formatter_test.hpp
│ │ │ ├── mcp2515_can_bit_timings_test.cpp
│ │ │ └── mcp2515_can_bit_timings_test.hpp
│ │ ├── module.lb
│ │ ├── motor
│ │ │ ├── drv832x_spi_test.cpp
│ │ │ └── drv832x_spi_test.hpp
│ │ ├── pressure
│ │ │ ├── bme280_test.cpp
│ │ │ ├── bme280_test.hpp
│ │ │ ├── bmp085_test.cpp
│ │ │ └── bmp085_test.hpp
│ │ ├── storage
│ │ │ ├── block_allocator_test.cpp
│ │ │ └── block_allocator_test.hpp
│ │ └── temperature
│ │ │ ├── ltc2984_test.cpp
│ │ │ ├── ltc2984_test.hpp
│ │ │ ├── tmp12x_test.cpp
│ │ │ └── tmp12x_test.hpp
│ ├── ext
│ │ ├── atomics_test.cpp
│ │ ├── atomics_test.hpp
│ │ ├── cxa_guard_test.cpp
│ │ ├── cxa_guard_test.hpp
│ │ └── module.lb
│ ├── io
│ │ ├── io_stream_test.cpp
│ │ ├── io_stream_test.hpp
│ │ └── module.lb
│ ├── math
│ │ ├── LUDecomposition_test.cpp
│ │ ├── LUDecomposition_test.hpp
│ │ ├── algorithm
│ │ │ ├── prescaler_counter_test.cpp
│ │ │ ├── prescaler_counter_test.hpp
│ │ │ ├── prescaler_test.cpp
│ │ │ ├── prescaler_test.hpp
│ │ │ ├── range_test.cpp
│ │ │ └── range_test.hpp
│ │ ├── calendar
│ │ │ ├── datetime_test.cpp
│ │ │ └── datetime_test.hpp
│ │ ├── filter
│ │ │ ├── debounce_test.cpp
│ │ │ ├── debounce_test.hpp
│ │ │ ├── fir_test.cpp
│ │ │ ├── fir_test.hpp
│ │ │ ├── median_test.cpp
│ │ │ ├── median_test.hpp
│ │ │ ├── moving_average_test.cpp
│ │ │ ├── moving_average_test.hpp
│ │ │ ├── pid_test.cpp
│ │ │ ├── pid_test.hpp
│ │ │ ├── ramp_test.cpp
│ │ │ ├── ramp_test.hpp
│ │ │ ├── s_curve_controller_test.cpp
│ │ │ ├── s_curve_controller_test.hpp
│ │ │ ├── s_curve_generator_test.cpp
│ │ │ └── s_curve_generator_test.hpp
│ │ ├── geometry
│ │ │ ├── angle_test.cpp
│ │ │ ├── angle_test.hpp
│ │ │ ├── circle_2d_test.cpp
│ │ │ ├── circle_2d_test.hpp
│ │ │ ├── line_2d_test.cpp
│ │ │ ├── line_2d_test.hpp
│ │ │ ├── line_segment_2d_test.cpp
│ │ │ ├── line_segment_2d_test.hpp
│ │ │ ├── location_2d_test.cpp
│ │ │ ├── location_2d_test.hpp
│ │ │ ├── point_set_2d_test.cpp
│ │ │ ├── point_set_2d_test.hpp
│ │ │ ├── polygon_2d_test.cpp
│ │ │ ├── polygon_2d_test.hpp
│ │ │ ├── polygon_2d_testPointContainedCW.svg
│ │ │ ├── quaternion_test.cpp
│ │ │ ├── quaternion_test.hpp
│ │ │ ├── ray_2d_test.cpp
│ │ │ ├── ray_2d_test.hpp
│ │ │ ├── vector1_test.cpp
│ │ │ ├── vector1_test.hpp
│ │ │ ├── vector2_test.cpp
│ │ │ ├── vector2_test.hpp
│ │ │ ├── vector3_test.cpp
│ │ │ ├── vector3_test.hpp
│ │ │ ├── vector4_test.cpp
│ │ │ ├── vector4_test.hpp
│ │ │ ├── vector_test.cpp
│ │ │ └── vector_test.hpp
│ │ ├── interpolation
│ │ │ ├── lagrange_interpolation_test.cpp
│ │ │ ├── lagrange_interpolation_test.hpp
│ │ │ ├── linear_interpolation_test.cpp
│ │ │ └── linear_interpolation_test.hpp
│ │ ├── matrix_test.cpp
│ │ ├── matrix_test.hpp
│ │ ├── matrix_vector_test.cpp
│ │ ├── matrix_vector_test.hpp
│ │ ├── module.lb
│ │ ├── saturation
│ │ │ ├── saturation_test.cpp
│ │ │ └── saturation_test.hpp
│ │ └── utils
│ │ │ ├── arithmetic_traits_test.cpp
│ │ │ ├── arithmetic_traits_test.hpp
│ │ │ ├── bcd_test.cpp
│ │ │ ├── bcd_test.hpp
│ │ │ ├── bit_operation_test.cpp
│ │ │ ├── bit_operation_test.hpp
│ │ │ ├── endianness_test.cpp
│ │ │ ├── endianness_test.hpp
│ │ │ ├── operator_test.cpp
│ │ │ └── operator_test.hpp
│ ├── mock
│ │ ├── can_driver.cpp
│ │ ├── can_driver.hpp
│ │ ├── clock.cpp
│ │ ├── clock.hpp
│ │ ├── io_device.cpp
│ │ ├── io_device.hpp
│ │ ├── iodevice.hpp
│ │ ├── logic_analyzer.hpp
│ │ ├── module.lb
│ │ ├── shared_medium.hpp
│ │ ├── spi_device.cpp
│ │ ├── spi_device.hpp
│ │ ├── spi_master.cpp.in
│ │ └── spi_master.hpp
│ ├── platform
│ │ ├── bitbang
│ │ │ ├── module.lb
│ │ │ ├── spi_bitbang_test.cpp
│ │ │ └── spi_bitbang_test.hpp
│ │ ├── can_bit_timings_test.cpp
│ │ ├── can_bit_timings_test.hpp
│ │ ├── delay
│ │ │ ├── delay_test.cpp
│ │ │ ├── delay_test.hpp
│ │ │ └── module.lb
│ │ ├── fdcan
│ │ │ ├── fdcan_test.cpp
│ │ │ ├── fdcan_test.hpp
│ │ │ └── module.lb
│ │ ├── gpio
│ │ │ ├── module.lb
│ │ │ ├── platform_gpio_test.hpp
│ │ │ ├── platform_gpio_test_avr.cpp.in
│ │ │ └── platform_gpio_test_stm32.cpp.in
│ │ ├── gpio_sampler
│ │ │ ├── gpio_sampler_test.cpp
│ │ │ ├── gpio_sampler_test.hpp
│ │ │ └── module.lb
│ │ ├── i2c
│ │ │ └── samx7x
│ │ │ │ ├── i2c_platform_test.cpp
│ │ │ │ ├── i2c_platform_test.hpp
│ │ │ │ └── module.lb
│ │ ├── module.lb
│ │ ├── software_gpio_port
│ │ │ ├── gpio_port_test.hpp
│ │ │ ├── gpio_port_test_samv71.cpp
│ │ │ └── module.lb
│ │ └── spi
│ │ │ ├── samx7x
│ │ │ ├── module.lb
│ │ │ ├── spi_test.cpp
│ │ │ └── spi_test.hpp
│ │ │ └── stm32h7
│ │ │ ├── module.lb
│ │ │ ├── spi_bdma_test.cpp
│ │ │ └── spi_bdma_test.hpp
│ ├── processing
│ │ ├── fiber
│ │ │ ├── fiber_condition_variable_test.cpp
│ │ │ ├── fiber_condition_variable_test.hpp
│ │ │ ├── fiber_guard_test.cpp
│ │ │ ├── fiber_guard_test.hpp
│ │ │ ├── fiber_latch_barrier_test.cpp
│ │ │ ├── fiber_latch_barrier_test.hpp
│ │ │ ├── fiber_mutex_test.cpp
│ │ │ ├── fiber_mutex_test.hpp
│ │ │ ├── fiber_semaphore_test.cpp
│ │ │ ├── fiber_semaphore_test.hpp
│ │ │ ├── fiber_test.cpp
│ │ │ ├── fiber_test.hpp
│ │ │ └── shared.hpp
│ │ ├── module.lb
│ │ ├── protothread
│ │ │ ├── protothread_test.cpp
│ │ │ └── protothread_test.hpp
│ │ ├── resumable
│ │ │ ├── resumable_test.cpp
│ │ │ └── resumable_test.hpp
│ │ ├── scheduler
│ │ │ ├── scheduler_test.cpp
│ │ │ └── scheduler_test.hpp
│ │ └── timer
│ │ │ ├── periodic_timer_test.cpp
│ │ │ ├── periodic_timer_test.hpp
│ │ │ ├── timeout_test.cpp
│ │ │ ├── timeout_test.hpp
│ │ │ ├── timestamp_test.cpp
│ │ │ └── timestamp_test.hpp
│ ├── ui
│ │ ├── button_group_test.cpp
│ │ ├── button_group_test.hpp
│ │ ├── button_test.cpp
│ │ ├── button_test.hpp
│ │ ├── color
│ │ │ ├── color_test.cpp
│ │ │ └── color_test.hpp
│ │ ├── module.lb
│ │ └── time
│ │ │ ├── time_test.cpp
│ │ │ └── time_test.hpp
│ └── utils
│ │ ├── inplace_any_test.cpp
│ │ ├── inplace_any_test.hpp
│ │ └── module.lb
├── module.lb
├── repo.lb
├── runner
│ ├── avr.cpp
│ ├── cortex-m.cpp
│ └── hosted.cpp
└── stdc++
│ ├── compile_test.cpp
│ ├── math
│ ├── math_test.cpp
│ └── math_test.hpp
│ ├── module.lb
│ └── vector
│ ├── std_vector_test.cpp
│ └── std_vector_test.hpp
└── tools
├── bitmap
├── pbm2c.py
└── rca_logo.pbm
├── build_script_generator
├── cmake
│ ├── module.lb
│ ├── module.md
│ └── resources
│ │ ├── CMakeLists.txt.in
│ │ ├── ModmConfiguration.cmake.in
│ │ └── ci_CMakeLists.txt.in
├── common.py
├── compilation_db
│ ├── module.lb
│ ├── module.md
│ └── resources
│ │ ├── builder_compilation_db.py.in
│ │ └── compilation_db.py.in
├── gdbinit.in
├── gitignore.in
├── info_build.h
├── info_git.h
├── make
│ ├── module.lb
│ ├── module.md
│ └── resources
│ │ ├── Makefile.in
│ │ ├── compiler.mk.in
│ │ ├── config.mk.in
│ │ └── repo.mk.in
├── module.lb
├── module.md
├── openocd.cfg.in
├── probe_gdbinit.in
└── scons
│ ├── module.lb
│ ├── module.md
│ ├── resources
│ ├── SConscript.in
│ ├── SConstruct.in
│ └── build_target.py.in
│ └── site_tools
│ ├── artifact.py
│ ├── avrdude.py
│ ├── bitmap.py
│ ├── bmp.py
│ ├── bossac.py
│ ├── comstr.py
│ ├── crashdebug.py
│ ├── dfu.py
│ ├── elf2uf2.py
│ ├── find_files.py
│ ├── font.py
│ ├── gcc_retarget.py
│ ├── gdb.py
│ ├── info.py
│ ├── jlink.py
│ ├── lpclink.py
│ ├── nanopb.py
│ ├── nanopb_builder
│ └── __init__.py
│ ├── openocd.py
│ ├── qtcreator.py
│ ├── qtcreator
│ ├── project.config.in
│ ├── project.creator.in
│ ├── project.files.in
│ └── project.includes.in
│ ├── size.py
│ ├── stlink.py
│ ├── template.py
│ ├── unittestm.py
│ ├── utils.py
│ ├── utils_buildpath.py
│ └── xpcc_generator.py
├── devices
├── hosted
│ ├── darwin-arm64.xml
│ ├── darwin-x86_64.xml
│ ├── linux-arm64.xml
│ ├── linux-x86_64.xml
│ └── windows.xml
└── lpc
│ ├── lpc111.xml
│ └── lpc11c24.xml
├── doc_generator
├── custom.css
├── custom_dark_theme.css
├── doxyfile.cfg.in
├── doxypress.json.in
├── footer.html
├── group.dox.in
├── module.lb
└── module.md
├── font_creator
├── .gitignore
├── SConstruct
├── font.template
├── font_export.py
├── fonts
│ ├── all_caps_3x5.font
│ ├── arcade_classic.font
│ ├── assertion.font
│ ├── fixed_width_5x8.font
│ ├── numbers_14x32.font
│ ├── numbers_40x56.font
│ ├── numbers_46x64.font
│ ├── scripto_narrow.font
│ └── standard_10x16.font
├── manifest.txt
└── source
│ ├── FontCreator.java
│ ├── gui
│ ├── CharEditor.java
│ ├── CharTable.java
│ ├── FontCreatorColorChooser.java
│ ├── FontCreatorColorChooserFrame.java
│ ├── FontEditor.java
│ ├── MainWindow.java
│ ├── NewFontDialog.java
│ └── util
│ │ ├── CharTableModel.java
│ │ ├── CharTablePopupMenu.java
│ │ ├── ColorTableModel.java
│ │ ├── EditorPopupMenu.java
│ │ ├── FontCreatorMenuBar.java
│ │ ├── FontCreatorSideToolBar.java
│ │ └── FontCreatorTopToolBar.java
│ └── util
│ ├── Font.java
│ ├── FontCharacter.java
│ ├── FontExport.java
│ ├── ImageTransferHandler.java
│ ├── IndexColorModelUtils.java
│ ├── SerializableFont.java
│ ├── SerializableFontCharacter.java
│ └── TransferActionListener.java
├── ide
├── module.lb
└── vscode
│ ├── c_cpp_properties.json.in
│ ├── launch.json.in
│ ├── module.lb
│ ├── module.md
│ └── tasks.json.in
├── modm_tools
├── __init__.py
├── __init__.py.in
├── avrdude.py
├── backend.py
├── bitmap.py
├── bmp.py
├── bossac.py
├── build_id.py
├── crashdebug.py
├── elf2uf2.py
├── find_files.py
├── gdb.md
├── gdb.py
├── info.c.in
├── info.py
├── itm.py
├── jlink.py
├── openocd.py
├── rtt.py
├── size.py
├── unit_test.py
└── utils.py
├── openocd
└── modm
│ ├── atmel_same54_xplained_pro.cfg
│ ├── atmel_same70_xplained.cfg
│ ├── atmel_samg55_xplained_pro.cfg
│ ├── atmel_samv71_xplained_ultra.cfg
│ ├── st_nucleo_dap.cfg.in
│ ├── st_nucleo_swd.cfg.in
│ └── stm32_swd.cfg.in
├── scripts
├── authors.py
├── clang-format.sh
├── copyright.py
├── docs_modm_io_generator.py
├── docs_modm_io_index.html.in
├── examples_check.py
├── examples_cleanup.sh
├── examples_compile.py
├── generate_hal_matrix.py
├── generate_module_docs.py
├── rm_whitespace.py
└── synchronize_docs.py
├── syntax-highlighter
└── gtksourceview
│ └── in.lang
└── xpcc_generator
├── builder
├── __init__.py
├── builder_base.py
├── cpp_communication.py
├── cpp_identifier.py
├── cpp_packets.py
├── cpp_postman.py
├── cpp_xpcc_task_caller.py
├── filter
│ ├── __init__.py
│ ├── cpp.py
│ └── java.py
├── generate_include_graph.py
├── java_communication.py
├── java_generator.py
├── java_identifier.py
├── java_meta_communication.py
├── java_meta_packets.py
├── java_packets.py
├── java_packets_jaxb_index.py
├── system_layout.py
└── templates
│ ├── cpp_caller.tpl
│ ├── cpp_communication.tpl
│ ├── include_graph.dot.tpl
│ ├── java_communication.tpl
│ ├── java_components.tpl
│ ├── java_generator.tpl
│ ├── java_identifier.tpl
│ ├── java_meta_communication.tpl
│ ├── java_meta_packets.tpl
│ ├── java_packets.tpl
│ ├── java_packets_jaxb_index.tpl
│ ├── postman.cpp.tpl
│ ├── postman.hpp.tpl
│ ├── robot_identifier.tpl
│ ├── robot_packets.cpp.tpl
│ └── robot_packets.hpp.tpl
├── module.lb
├── xml
└── dtd
│ ├── rca_components.dtd
│ ├── rca_container.dtd
│ ├── rca_events.dtd
│ └── rca_packets.dtd
└── xmlparser
├── __init__.py
├── action.py
├── component.py
├── container.py
├── domain.py
├── event.py
├── exception.py
├── parser.py
├── parser_exception.py
├── structure.gaphor
├── structure.pdf
├── type.py
├── utils.py
└── xml_utils.py
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | indent_size = 4
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [*.{lb,py}]
16 | indent_style = space
17 | indent_size = 4
18 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | ext/**/* -text
3 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # ignored since these are generated by tools/scripts/synchronize_docs.py
2 | src/index.md
3 | src/who-we-are.md
4 | src/guide/examples.md
5 | src/reference/module
6 | src/reference/config
7 | src/reference/targets.md
8 |
9 | # ignored since this is generated by mkdocs
10 | modm.io/
11 |
--------------------------------------------------------------------------------
/docs/config.md.in:
--------------------------------------------------------------------------------
1 | # {{ config.title if config.title else config.name }}
2 |
3 | lbuild config: `{{config.name}}`
4 |
5 | {{config.description}}
6 |
7 | %% if config.default != ""
8 | Default: `{{config.default}}`
9 | Revisions: `[{{config.revisions}}]`
10 | %% endif
11 | %#
12 | ## Configuration
13 |
14 | ```xml
15 | {{config.configs[config.default]}}
16 | ```
17 |
--------------------------------------------------------------------------------
/docs/index.md.in:
--------------------------------------------------------------------------------
1 |
2 | # modm: a barebone embedded library generator
3 |
4 |
5 |
6 | {{content}}
7 |
8 | ### Examples
9 |
10 | We have a [huge number of examples][examples] which are always up-to-date and
11 | compilable as enforced by our CI.
12 |
13 |