gitextract_h4wb0_nf/ ├── .codechecker.yml ├── .codex ├── .devcontainer/ │ ├── Dockerfile │ └── devcontainer.json ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .vscode/ │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── LICENSE ├── Makefile ├── README.md ├── agents.md ├── app/ │ ├── CMakeLists.txt │ ├── Kconfig │ ├── boards/ │ │ ├── README.md │ │ ├── opendeck/ │ │ │ ├── bergamot/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── blackpill411/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── discovery/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── dubfocus16t/ │ │ │ │ └── opendeck.overlay │ │ │ ├── nrf52840dk/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── nrf54h20dk/ │ │ │ │ └── opendeck.overlay │ │ │ ├── opendeck2/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── opendeck21/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── opendeck22/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── opendeck31/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── pico/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── pico2/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── rooibos/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── teensy4/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ ├── teensy41/ │ │ │ │ ├── firmware.overlay │ │ │ │ └── opendeck.overlay │ │ │ └── ws_core405r/ │ │ │ ├── firmware.overlay │ │ │ └── opendeck.overlay │ │ └── zephyr/ │ │ ├── blackpill_f411ce_stm32f411xe/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ ├── nrf52840dk_nrf52840/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ ├── nrf54h20dk_nrf54h20_cpuapp/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ ├── sysbuild.cmake │ │ │ └── test.overlay │ │ ├── rpi_pico2_rp2350a_m33/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ ├── rpi_pico_rp2040/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ ├── stm32f4_disco_stm32f407xx/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ ├── teensy40_mimxrt1062/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ ├── teensy41_mimxrt1062/ │ │ │ ├── bootloader.conf │ │ │ ├── bootloader.overlay │ │ │ ├── firmware.conf │ │ │ ├── firmware.overlay │ │ │ ├── partitions.overlay │ │ │ └── test.overlay │ │ └── weact_stm32f405_core_stm32f405xx/ │ │ ├── bootloader.conf │ │ ├── bootloader.overlay │ │ ├── firmware.conf │ │ ├── firmware.overlay │ │ ├── partitions.overlay │ │ └── test.overlay │ ├── bootloader/ │ │ ├── CMakeLists.txt │ │ ├── bootloader.conf │ │ └── src/ │ │ ├── fw_selector/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.h │ │ │ ├── deps.h │ │ │ ├── fw_selector.cpp │ │ │ ├── fw_selector.h │ │ │ └── hwa_hw.h │ │ ├── indicators/ │ │ │ ├── CMakeLists.txt │ │ │ ├── indicators.cpp │ │ │ └── indicators.h │ │ ├── main.cpp │ │ ├── updater/ │ │ │ ├── CMakeLists.txt │ │ │ ├── builder.h │ │ │ ├── builder_hw.h │ │ │ ├── builder_test.h │ │ │ ├── common.h │ │ │ ├── deps.h │ │ │ ├── hwa_hw.h │ │ │ ├── hwa_test.h │ │ │ ├── updater.cpp │ │ │ └── updater.h │ │ └── webusb/ │ │ ├── transport.cpp │ │ └── transport.h │ ├── common/ │ │ ├── metadata/ │ │ │ └── CMakeLists.txt │ │ └── retained/ │ │ ├── common.h │ │ └── retained.h │ ├── common.conf │ ├── debug.conf │ ├── dts/ │ │ └── bindings/ │ │ ├── opendeck/ │ │ │ ├── opendeck-analog.yaml │ │ │ ├── opendeck-bootloader.yaml │ │ │ ├── opendeck-bulk-build.yaml │ │ │ ├── opendeck-buttons.yaml │ │ │ ├── opendeck-display-i2c.yaml │ │ │ ├── opendeck-leds.yaml │ │ │ ├── opendeck-metadata.yaml │ │ │ ├── opendeck-midi-indicators.yaml │ │ │ ├── opendeck-midi-uart.yaml │ │ │ ├── opendeck-tests.yaml │ │ │ └── opendeck-touchscreen.yaml │ │ └── vendor-prefixes.txt │ ├── firmware/ │ │ ├── CMakeLists.txt │ │ ├── Kconfig │ │ ├── firmware.conf │ │ └── src/ │ │ ├── Kconfig │ │ ├── atomic_compat.cpp │ │ ├── database/ │ │ │ ├── CMakeLists.txt │ │ │ ├── builder.h │ │ │ ├── builder_hw.h │ │ │ ├── builder_test.h │ │ │ ├── config.h │ │ │ ├── custom_init.cpp │ │ │ ├── database.cpp │ │ │ ├── database.h │ │ │ ├── deps.h │ │ │ ├── hwa_hw.h │ │ │ ├── hwa_test.h │ │ │ └── layout.h │ │ ├── global/ │ │ │ ├── bpm.h │ │ │ └── midi_program.h │ │ ├── io/ │ │ │ ├── Kconfig │ │ │ ├── analog/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Kconfig │ │ │ │ ├── analog.cpp │ │ │ │ ├── analog.h │ │ │ │ ├── analog_stub.h │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ ├── builder_stub.h │ │ │ │ ├── builder_test.h │ │ │ │ ├── common.h │ │ │ │ ├── deps.h │ │ │ │ ├── drivers/ │ │ │ │ │ ├── count.h │ │ │ │ │ ├── driver.h │ │ │ │ │ ├── driver_base.h │ │ │ │ │ ├── multiplexer/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── multiplexer_driver.h │ │ │ │ │ ├── mux_on_mux/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── mux_on_mux_driver.h │ │ │ │ │ ├── native/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── native_driver.h │ │ │ │ │ └── scan_driver_base.h │ │ │ │ ├── filter_hw.h │ │ │ │ ├── filter_stub.h │ │ │ │ ├── filter_test.h │ │ │ │ ├── hwa_hw.h │ │ │ │ ├── hwa_stub.h │ │ │ │ ├── hwa_test.h │ │ │ │ └── remap.h │ │ │ ├── base.h │ │ │ ├── common/ │ │ │ │ └── common.h │ │ │ ├── digital/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Kconfig │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ ├── builder_stub.h │ │ │ │ ├── builder_test.h │ │ │ │ ├── buttons/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── builder.h │ │ │ │ │ ├── builder_hw.h │ │ │ │ │ ├── builder_stub.h │ │ │ │ │ ├── builder_test.h │ │ │ │ │ ├── buttons.cpp │ │ │ │ │ ├── buttons.h │ │ │ │ │ ├── buttons_stub.h │ │ │ │ │ ├── common.h │ │ │ │ │ ├── deps.h │ │ │ │ │ ├── filter_hw.h │ │ │ │ │ ├── filter_stub.h │ │ │ │ │ ├── filter_test.h │ │ │ │ │ ├── hwa_hw.h │ │ │ │ │ ├── hwa_stub.h │ │ │ │ │ └── hwa_test.h │ │ │ │ ├── digital.cpp │ │ │ │ ├── digital.h │ │ │ │ ├── drivers/ │ │ │ │ │ ├── count.h │ │ │ │ │ ├── driver.h │ │ │ │ │ ├── driver_base.h │ │ │ │ │ ├── matrix_native_rows/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── matrix_native_rows_driver.h │ │ │ │ │ ├── matrix_shift_register_rows/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── matrix_shift_register_rows_driver.h │ │ │ │ │ ├── native/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── native_driver.h │ │ │ │ │ └── shift_register/ │ │ │ │ │ ├── count.h │ │ │ │ │ └── shift_register_driver.h │ │ │ │ ├── encoders/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── builder.h │ │ │ │ │ ├── builder_hw.h │ │ │ │ │ ├── builder_stub.h │ │ │ │ │ ├── builder_test.h │ │ │ │ │ ├── common.h │ │ │ │ │ ├── deps.h │ │ │ │ │ ├── encoders.cpp │ │ │ │ │ ├── encoders.h │ │ │ │ │ ├── encoders_stub.h │ │ │ │ │ ├── filter_hw.h │ │ │ │ │ ├── filter_stub.h │ │ │ │ │ ├── filter_test.h │ │ │ │ │ ├── hwa_hw.h │ │ │ │ │ ├── hwa_stub.h │ │ │ │ │ └── hwa_test.h │ │ │ │ ├── frame_store.h │ │ │ │ └── remap.h │ │ │ ├── i2c/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Kconfig │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ ├── builder_stub.h │ │ │ │ ├── builder_test.h │ │ │ │ ├── deps.h │ │ │ │ ├── hwa_hw.h │ │ │ │ ├── hwa_stub.h │ │ │ │ ├── hwa_test.h │ │ │ │ ├── i2c.cpp │ │ │ │ ├── i2c.h │ │ │ │ ├── i2c_stub.h │ │ │ │ └── peripherals/ │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ └── display/ │ │ │ │ ├── common.h │ │ │ │ ├── deps.h │ │ │ │ ├── display.cpp │ │ │ │ ├── display.h │ │ │ │ ├── element.h │ │ │ │ ├── elements.cpp │ │ │ │ └── strings.h │ │ │ ├── indicators/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ ├── builder_stub.h │ │ │ │ ├── builder_test.h │ │ │ │ ├── common.h │ │ │ │ ├── deps.h │ │ │ │ ├── hwa_hw.h │ │ │ │ ├── hwa_stub.h │ │ │ │ ├── hwa_test.h │ │ │ │ ├── indicators.cpp │ │ │ │ └── indicators.h │ │ │ ├── leds/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Kconfig │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ ├── builder_stub.h │ │ │ │ ├── builder_test.h │ │ │ │ ├── common.h │ │ │ │ ├── deps.h │ │ │ │ ├── drivers/ │ │ │ │ │ ├── count.h │ │ │ │ │ ├── driver.h │ │ │ │ │ ├── driver_base.h │ │ │ │ │ ├── matrix_native_rows/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── matrix_native_rows_driver.h │ │ │ │ │ ├── max7219/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── max7219_driver.h │ │ │ │ │ ├── native/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── native_driver.h │ │ │ │ │ ├── shift_register/ │ │ │ │ │ │ ├── count.h │ │ │ │ │ │ └── shift_register_driver.h │ │ │ │ │ └── stub/ │ │ │ │ │ └── stub_driver.h │ │ │ │ ├── hwa_hw.h │ │ │ │ ├── hwa_stub.h │ │ │ │ ├── hwa_test.h │ │ │ │ ├── leds.cpp │ │ │ │ ├── leds.h │ │ │ │ ├── leds_stub.h │ │ │ │ └── remap.h │ │ │ └── touchscreen/ │ │ │ ├── CMakeLists.txt │ │ │ ├── builder.h │ │ │ ├── builder_hw.h │ │ │ ├── builder_stub.h │ │ │ ├── builder_test.h │ │ │ ├── common.h │ │ │ ├── count.h │ │ │ ├── deps.h │ │ │ ├── hwa_hw.h │ │ │ ├── hwa_stub.h │ │ │ ├── hwa_test.h │ │ │ ├── models/ │ │ │ │ ├── builder.h │ │ │ │ ├── builder_hw.h │ │ │ │ └── nextion/ │ │ │ │ ├── nextion.cpp │ │ │ │ └── nextion.h │ │ │ ├── touchscreen.cpp │ │ │ ├── touchscreen.h │ │ │ └── touchscreen_stub.h │ │ ├── main.cpp │ │ ├── messaging/ │ │ │ └── messaging.h │ │ ├── protocol/ │ │ │ ├── base.h │ │ │ └── midi/ │ │ │ ├── CMakeLists.txt │ │ │ ├── ble_service.cpp │ │ │ ├── ble_service.h │ │ │ ├── builder.h │ │ │ ├── builder_hw.h │ │ │ ├── builder_test.h │ │ │ ├── common.h │ │ │ ├── deps.h │ │ │ ├── hwa_hw.h │ │ │ ├── hwa_test.h │ │ │ ├── midi.cpp │ │ │ └── midi.h │ │ ├── system/ │ │ │ ├── CMakeLists.txt │ │ │ ├── builder.h │ │ │ ├── builder_hw.h │ │ │ ├── builder_test.h │ │ │ ├── common.h │ │ │ ├── config.h │ │ │ ├── custom_ids.h │ │ │ ├── deps.h │ │ │ ├── hwa_hw.h │ │ │ ├── hwa_test.h │ │ │ ├── layout.h │ │ │ ├── system.cpp │ │ │ └── system.h │ │ ├── threads.h │ │ └── util/ │ │ ├── cinfo/ │ │ │ ├── CMakeLists.txt │ │ │ ├── cinfo.cpp │ │ │ └── cinfo.h │ │ ├── configurable/ │ │ │ ├── CMakeLists.txt │ │ │ ├── configurable.cpp │ │ │ └── configurable.h │ │ ├── conversion/ │ │ │ └── conversion.h │ │ ├── incdec/ │ │ │ └── inc_dec.h │ │ └── thread_sleep.h │ ├── presets.yml │ ├── release.conf │ └── sysbuild.cmake ├── bin/ │ └── touchscreen/ │ └── design/ │ ├── corel/ │ │ ├── bergamot.cdr │ │ └── cardamom.cdr │ └── nextion-gui/ │ └── rooibos.hmi ├── cmake/ │ ├── bluetooth_device_name.conf.in │ ├── dfu_bin.cmake │ ├── helpers.cmake │ ├── opendeck_library.cmake │ ├── opendeck_test_suite.cmake │ ├── opendeck_test_target.cmake │ ├── usb_midi_label.overlay.in │ └── usb_product.conf.in ├── sch/ │ ├── bergamot/ │ │ ├── MBO/ │ │ │ ├── MBO.brd │ │ │ └── MBO.sch │ │ ├── Pots/ │ │ │ ├── Pots.brd │ │ │ └── Pots.sch │ │ └── USB/ │ │ ├── USB.brd │ │ └── USB.sch │ ├── dmx/ │ │ └── DMX.sch │ ├── dubfocus/ │ │ ├── 12sr/ │ │ │ ├── ButtonsLEDs/ │ │ │ │ ├── ButtonsLEDs.brd │ │ │ │ └── ButtonsLEDs.sch │ │ │ ├── MBO/ │ │ │ │ ├── MBO.brd │ │ │ │ └── MBO.sch │ │ │ ├── Pots/ │ │ │ │ ├── Pots.brd │ │ │ │ └── Pots.sch │ │ │ └── USB/ │ │ │ ├── USB.brd │ │ │ └── USB.sch │ │ ├── 16c/ │ │ │ ├── ButtonsLEDs/ │ │ │ │ ├── ButtonsLEDs.brd │ │ │ │ └── ButtonsLEDs.sch │ │ │ ├── MBO/ │ │ │ │ ├── MBO.brd │ │ │ │ └── MBO.sch │ │ │ ├── Pots/ │ │ │ │ ├── Pots.brd │ │ │ │ └── Pots.sch │ │ │ └── USB/ │ │ │ ├── USB.brd │ │ │ └── USB.sch │ │ └── 16t/ │ │ ├── ButtonsLEDs/ │ │ │ ├── Buttons.kicad_sch │ │ │ ├── ButtonsLEDs.kicad_pcb │ │ │ ├── ButtonsLEDs.kicad_pro │ │ │ ├── ButtonsLEDs.kicad_sch │ │ │ ├── LEDs.kicad_sch │ │ │ └── prod/ │ │ │ ├── ButtonsLEDs-BOM.csv │ │ │ ├── ButtonsLEDs-all-pos.csv │ │ │ └── gerbers/ │ │ │ ├── ButtonsLEDs-B_Cu.gbl │ │ │ ├── ButtonsLEDs-B_Mask.gbs │ │ │ ├── ButtonsLEDs-B_Paste.gbp │ │ │ ├── ButtonsLEDs-B_Silkscreen.gbo │ │ │ ├── ButtonsLEDs-Edge_Cuts.gm1 │ │ │ ├── ButtonsLEDs-F_Cu.gtl │ │ │ ├── ButtonsLEDs-F_Mask.gts │ │ │ ├── ButtonsLEDs-F_Paste.gtp │ │ │ ├── ButtonsLEDs-F_Silkscreen.gto │ │ │ ├── ButtonsLEDs-NPTH-drl_map.gbr │ │ │ ├── ButtonsLEDs-NPTH.drl │ │ │ ├── ButtonsLEDs-PTH-drl_map.gbr │ │ │ └── ButtonsLEDs-PTH.drl │ │ ├── MBO/ │ │ │ ├── Connections.kicad_sch │ │ │ ├── MBO.kicad_dru │ │ │ ├── MBO.kicad_pcb │ │ │ ├── MBO.kicad_pro │ │ │ ├── MBO.kicad_sch │ │ │ ├── MCU.kicad_sch │ │ │ ├── Pots.kicad_sch │ │ │ ├── Power.kicad_sch │ │ │ └── prod/ │ │ │ ├── MBO-BOM.csv │ │ │ ├── MBO-all-pos.csv │ │ │ └── gerbers/ │ │ │ ├── MBO-B_Cu.gbl │ │ │ ├── MBO-B_Mask.gbs │ │ │ ├── MBO-B_Paste.gbp │ │ │ ├── MBO-B_Silkscreen.gbo │ │ │ ├── MBO-Edge_Cuts.gm1 │ │ │ ├── MBO-F_Cu.gtl │ │ │ ├── MBO-F_Mask.gts │ │ │ ├── MBO-F_Paste.gtp │ │ │ ├── MBO-F_Silkscreen.gto │ │ │ ├── MBO-NPTH-drl_map.gbr │ │ │ ├── MBO-NPTH.drl │ │ │ ├── MBO-PTH-drl_map.gbr │ │ │ └── MBO-PTH.drl │ │ ├── Pots/ │ │ │ ├── Mux.kicad_sch │ │ │ ├── Pots.kicad_pcb │ │ │ ├── Pots.kicad_pro │ │ │ ├── Pots.kicad_sch │ │ │ └── prod/ │ │ │ ├── Pots-BOM.csv │ │ │ ├── Pots-all-pos.csv │ │ │ └── gerbers/ │ │ │ ├── Pots-B_Cu.gbl │ │ │ ├── Pots-B_Mask.gbs │ │ │ ├── Pots-B_Paste.gbp │ │ │ ├── Pots-B_Silkscreen.gbo │ │ │ ├── Pots-Edge_Cuts.gm1 │ │ │ ├── Pots-F_Cu.gtl │ │ │ ├── Pots-F_Mask.gts │ │ │ ├── Pots-F_Paste.gtp │ │ │ ├── Pots-F_Silkscreen.gto │ │ │ ├── Pots-NPTH-drl_map.gbr │ │ │ ├── Pots-NPTH.drl │ │ │ ├── Pots-PTH-drl_map.gbr │ │ │ └── Pots-PTH.drl │ │ └── USB/ │ │ ├── USB.kicad_pcb │ │ ├── USB.kicad_pro │ │ ├── USB.kicad_sch │ │ └── prod/ │ │ ├── USB-BOM.csv │ │ ├── USB-all-pos.csv │ │ └── gerbers/ │ │ ├── USB-B_Cu.gbl │ │ ├── USB-B_Mask.gbs │ │ ├── USB-B_Paste.gbp │ │ ├── USB-B_Silkscreen.gbo │ │ ├── USB-Edge_Cuts.gm1 │ │ ├── USB-F_Cu.gtl │ │ ├── USB-F_Mask.gts │ │ ├── USB-F_Paste.gtp │ │ ├── USB-F_Silkscreen.gto │ │ ├── USB-NPTH-drl_map.gbr │ │ ├── USB-NPTH.drl │ │ ├── USB-PTH-drl_map.gbr │ │ └── USB-PTH.drl │ ├── opendeck/ │ │ ├── v1.2.2/ │ │ │ ├── OpenDeck-r1.2.2-BOM.csv │ │ │ ├── OpenDeck-r1.2.2.brd │ │ │ └── OpenDeck-r1.2.2.sch │ │ ├── v2.0.1/ │ │ │ ├── OpenDeck-r2.0.1-BOM.csv │ │ │ ├── OpenDeck-r2.0.1.brd │ │ │ └── OpenDeck-r2.0.1.sch │ │ ├── v2.1.0/ │ │ │ ├── OpenDeck-r2.1.0.brd │ │ │ ├── OpenDeck-r2.1.0.sch │ │ │ └── prod/ │ │ │ ├── OpenDeck-r2.1.0-BOM.csv │ │ │ ├── OpenDeck-r2.1.0-top-pos.csv │ │ │ └── gerbers/ │ │ │ ├── OpenDeck-r2.1.0.GBL │ │ │ ├── OpenDeck-r2.1.0.GBO │ │ │ ├── OpenDeck-r2.1.0.GBS │ │ │ ├── OpenDeck-r2.1.0.GKO │ │ │ ├── OpenDeck-r2.1.0.GTL │ │ │ ├── OpenDeck-r2.1.0.GTO │ │ │ ├── OpenDeck-r2.1.0.GTS │ │ │ └── OpenDeck-r2.1.0.TXT │ │ ├── v2.2.1/ │ │ │ ├── Analog.kicad_sch │ │ │ ├── Buttons.kicad_sch │ │ │ ├── DIN_MIDI.kicad_sch │ │ │ ├── Indicators.kicad_sch │ │ │ ├── LEDs.kicad_sch │ │ │ ├── OpenDeck-r2.2.1.kicad_pcb │ │ │ ├── OpenDeck-r2.2.1.kicad_pro │ │ │ ├── OpenDeck-r2.2.1.kicad_sch │ │ │ └── prod/ │ │ │ ├── OpenDeck-r2.2.1-BOM.csv │ │ │ ├── OpenDeck-r2.2.1-top-pos.csv │ │ │ └── gerbers/ │ │ │ ├── OpenDeck-r2.2.1-B_Cu.gbl │ │ │ ├── OpenDeck-r2.2.1-B_Mask.gbs │ │ │ ├── OpenDeck-r2.2.1-B_Paste.gbp │ │ │ ├── OpenDeck-r2.2.1-B_Silkscreen.gbo │ │ │ ├── OpenDeck-r2.2.1-Edge_Cuts.gm1 │ │ │ ├── OpenDeck-r2.2.1-F_Cu.gtl │ │ │ ├── OpenDeck-r2.2.1-F_Mask.gts │ │ │ ├── OpenDeck-r2.2.1-F_Paste.gtp │ │ │ ├── OpenDeck-r2.2.1-F_Silkscreen.gto │ │ │ ├── OpenDeck-r2.2.1-NPTH-drl_map.gbr │ │ │ ├── OpenDeck-r2.2.1-NPTH.drl │ │ │ ├── OpenDeck-r2.2.1-PTH-drl_map.gbr │ │ │ └── OpenDeck-r2.2.1-PTH.drl │ │ ├── v3.0.1/ │ │ │ ├── Analog.kicad_sch │ │ │ ├── Analog_Multiplexer.kicad_sch │ │ │ ├── Buttons.kicad_sch │ │ │ ├── Buttons_Rows.kicad_sch │ │ │ ├── DIN_MIDI.kicad_sch │ │ │ ├── DMX.kicad_sch │ │ │ ├── Indicators.kicad_sch │ │ │ ├── LEDs.kicad_sch │ │ │ ├── OpenDeck-r3.0.1.kicad_pcb │ │ │ ├── OpenDeck-r3.0.1.kicad_pro │ │ │ ├── OpenDeck-r3.0.1.kicad_sch │ │ │ ├── Touchscreen.kicad_sch │ │ │ └── prod/ │ │ │ ├── OpenDeck-r3.0.1-BOM.csv │ │ │ ├── OpenDeck-r3.0.1-top-pos.csv │ │ │ └── gerbers/ │ │ │ ├── OpenDeck-r3.0.1-B_Cu.gbl │ │ │ ├── OpenDeck-r3.0.1-B_Mask.gbs │ │ │ ├── OpenDeck-r3.0.1-B_Paste.gbp │ │ │ ├── OpenDeck-r3.0.1-B_Silkscreen.gbo │ │ │ ├── OpenDeck-r3.0.1-Edge_Cuts.gm1 │ │ │ ├── OpenDeck-r3.0.1-F_Cu.gtl │ │ │ ├── OpenDeck-r3.0.1-F_Mask.gts │ │ │ ├── OpenDeck-r3.0.1-F_Paste.gtp │ │ │ ├── OpenDeck-r3.0.1-F_Silkscreen.gto │ │ │ ├── OpenDeck-r3.0.1-NPTH-drl_map.gbr │ │ │ ├── OpenDeck-r3.0.1-NPTH.drl │ │ │ ├── OpenDeck-r3.0.1-PTH-drl_map.gbr │ │ │ └── OpenDeck-r3.0.1-PTH.drl │ │ └── v3.1.x/ │ │ ├── Analog.kicad_sch │ │ ├── Analog_Multiplexer.kicad_sch │ │ ├── Buttons.kicad_sch │ │ ├── Buttons_Rows.kicad_sch │ │ ├── DIN_MIDI.kicad_sch │ │ ├── DMX.kicad_sch │ │ ├── Indicators.kicad_sch │ │ ├── LEDs.kicad_sch │ │ ├── OpenDeck-r3.1.2.kicad_pcb │ │ ├── OpenDeck-r3.1.2.kicad_pro │ │ ├── OpenDeck-r3.1.2.kicad_sch │ │ ├── Touchscreen.kicad_sch │ │ └── prod/ │ │ ├── OpenDeck-r3.1.2-BOM.csv │ │ ├── OpenDeck-r3.1.2-top-pos.csv │ │ └── gerbers/ │ │ ├── OpenDeck-r3.1.2-B_Cu.gbl │ │ ├── OpenDeck-r3.1.2-B_Mask.gbs │ │ ├── OpenDeck-r3.1.2-B_Paste.gbp │ │ ├── OpenDeck-r3.1.2-B_Silkscreen.gbo │ │ ├── OpenDeck-r3.1.2-Edge_Cuts.gm1 │ │ ├── OpenDeck-r3.1.2-F_Cu.gtl │ │ ├── OpenDeck-r3.1.2-F_Mask.gts │ │ ├── OpenDeck-r3.1.2-F_Paste.gtp │ │ ├── OpenDeck-r3.1.2-F_Silkscreen.gto │ │ ├── OpenDeck-r3.1.2-NPTH-drl_map.gbr │ │ ├── OpenDeck-r3.1.2-NPTH.drl │ │ ├── OpenDeck-r3.1.2-PTH-drl_map.gbr │ │ ├── OpenDeck-r3.1.2-PTH.drl │ │ └── OpenDeck-r3.1.2-bottom-pos.csv │ ├── opendeck_mini/ │ │ ├── opendeck_mini.brd │ │ └── opendeck_mini.sch │ └── rooibos/ │ ├── MBO/ │ │ ├── MBO.brd │ │ └── MBO.sch │ ├── Pots/ │ │ ├── Pots.brd │ │ └── Pots.sch │ ├── SingleFader/ │ │ ├── SingleFader.brd │ │ └── SingleFader.sch │ └── USB/ │ ├── USBboard.brd │ └── USBboard.sch ├── scripts/ │ ├── bulk_build.sh │ ├── code_format.sh │ ├── copy_release_binaries.sh │ ├── gen/ │ │ └── gen_fw_uid.sh │ └── query_test_metadata.sh ├── tests/ │ ├── global.conf │ ├── include/ │ │ └── tests/ │ │ ├── common.h │ │ └── helpers/ │ │ ├── database.h │ │ ├── midi.h │ │ └── misc.h │ └── src/ │ ├── bootloader/ │ │ ├── CMakeLists.txt │ │ ├── Kconfig │ │ ├── bootloader_test.cpp │ │ ├── prj.conf │ │ └── testcase.yaml │ ├── database/ │ │ ├── CMakeLists.txt │ │ ├── Kconfig │ │ ├── database_test.cpp │ │ ├── prj.conf │ │ └── testcase.yaml │ ├── hw/ │ │ ├── CMakeLists.txt │ │ ├── Kconfig │ │ ├── hw_test.cpp │ │ ├── prj.conf │ │ └── testcase.yaml │ ├── io/ │ │ ├── analog/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig │ │ │ ├── analog_test.cpp │ │ │ ├── prj.conf │ │ │ └── testcase.yaml │ │ ├── analog_filter/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig │ │ │ ├── analog_filter_test.cpp │ │ │ ├── prj.conf │ │ │ └── testcase.yaml │ │ ├── digital/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig │ │ │ ├── digital_buttons_test.cpp │ │ │ ├── digital_encoders_test.cpp │ │ │ ├── prj.conf │ │ │ └── testcase.yaml │ │ └── leds/ │ │ ├── CMakeLists.txt │ │ ├── Kconfig │ │ ├── leds_test.cpp │ │ ├── prj.conf │ │ └── testcase.yaml │ ├── protocol/ │ │ └── midi/ │ │ ├── CMakeLists.txt │ │ ├── Kconfig │ │ ├── midi_test.cpp │ │ ├── prj.conf │ │ └── testcase.yaml │ └── system/ │ ├── CMakeLists.txt │ ├── Kconfig │ ├── prj.conf │ ├── system_test.cpp │ └── testcase.yaml ├── west.yml └── zephyr/ └── patch/ ├── README.md └── zephyr/ ├── adc_rp2xx0_01_polled_read.patch ├── adc_rp2xx0_02_configurable_clkdiv.patch ├── adc_stm32_polled_read.patch ├── blackpill411_dfu_util_with_sysbuild.patch ├── dfu_util_reset_cap.patch ├── teensy_loader_reset_cap.patch ├── usb_midi2_01_configurable_buffer_size.patch ├── usb_midi2_02_ump_burst.patch └── west_runner_handle_no_flash_load_offset.patch