Repository navigation
Add Seeed Studio Wio Tracker L2 Pro - #676
Conversation
Reset and interrupt pins on an IO expander were passed to esp_lcd_touch as native GPIO numbers. The driver now resets the controller itself for such pins, holding INT low so it comes up at address 0x5D. Native pins behave as before.
New driver modules: - nv3031b-module: NV3031B display over QSPI. The esp_lcd panel is adapted from Espressif's esp_lcd_sh8601 (Apache-2.0), the init sequence is from LovyanGFX (BSD-2-Clause). - lp5814-module: TI LP5814 LED driver as display backlight. The device folder is dts-only. Working, tested on hardware: display (320x240 landscape), touch, backlight brightness, SD card (SDMMC 1-bit), WiFi, GPS detection (L76K on UART1). Not implemented yet: battery voltage (ADS1115), buttons (BOOT, WAKE), audio (ES8311 speaker, ES7243E microphone), LoRa (SX1262), user LED, Grove port, USB-C controller (AW35615).
New driver modules: - ads1115-module: TI ADS1115 ADC, written from the datasheet. The device uses it with battery-sense for the battery voltage. - es7243e-module: ES7243E microphone ADC, wraps the esp_codec_dev implementation. Device additions: ES8311 speaker and ES7243E microphone on I2S, battery voltage, SX1262 LoRa radio, Grove port, WAKE and BOOT buttons as navigation keys. Tested on hardware: speaker and microphone (audio recorder app), battery voltage and charge level, both buttons, SX1262 probe. Not tested: LoRa transmit and receive, Grove port.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (14)
🚧 Files skipped from review as they are similar to previous changes (5)
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review. 📝 WalkthroughWalkthroughAdds device-tree and module configuration for the Seeed Studio Wio Tracker L2 Pro. Adds ADS1115, ES7243E, LP5814, and NV3031B driver modules. Updates GT911 startup to handle reset and interrupt pins on GPIO expanders. Changes TCA95xx GPIO handling to invert active-low output levels and accept active-low output flags. Adds license files and third-party notices for the new modules and adapted display code. Priority: ➖ Normal Merge Risk: 🟡 Moderate · up to Short audio-read deadlines can be exceeded, and display orientation queries can be stale after a runtime change. Resolve or explicitly accept these limitations before merging. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The changes are primarily confined to hardware support. Failed initialization can leave reset or interrupt pins configured without an owner, but no expanded remote access or credential authority is demonstrated. Remaining uncertainty concerns hardware recovery and integrations outside the reviewed code. Retained concerns
Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 15.71% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 70 functions across 25 files. (6 skipped: 6 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Organization UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
2935f7dd-f59e-42c4-ba83-f1ad00320082
📒 Files selected for processing (51)
Devices/seeed-wio-tracker-l2-pro/LICENSE-Apache-2.0.mdDevices/seeed-wio-tracker-l2-pro/device.propertiesDevices/seeed-wio-tracker-l2-pro/module.yamlDevices/seeed-wio-tracker-l2-pro/seeed,wio-tracker-l2-pro.dtsDrivers/ads1115-module/CMakeLists.txtDrivers/ads1115-module/LICENSE-Apache-2.0.mdDrivers/ads1115-module/README.mdDrivers/ads1115-module/bindings/ti,ads1115.yamlDrivers/ads1115-module/include/ads1115_module.hDrivers/ads1115-module/include/bindings/ads1115.hDrivers/ads1115-module/include/drivers/ads1115.hDrivers/ads1115-module/module.yamlDrivers/ads1115-module/source/ads1115.cppDrivers/ads1115-module/source/module.cppDrivers/es7243e-module/CMakeLists.txtDrivers/es7243e-module/LICENSE-Apache-2.0.mdDrivers/es7243e-module/README.mdDrivers/es7243e-module/bindings/everest,es7243e.yamlDrivers/es7243e-module/include/bindings/es7243e.hDrivers/es7243e-module/include/drivers/es7243e.hDrivers/es7243e-module/include/es7243e_module.hDrivers/es7243e-module/module.yamlDrivers/es7243e-module/source/es7243e.cppDrivers/es7243e-module/source/module.cppDrivers/gt911-module/bindings/goodix,gt911.yamlDrivers/gt911-module/source/gt911.cppDrivers/lp5814-module/CMakeLists.txtDrivers/lp5814-module/LICENSE-Apache-2.0.mdDrivers/lp5814-module/README.mdDrivers/lp5814-module/bindings/ti,lp5814.yamlDrivers/lp5814-module/include/bindings/lp5814.hDrivers/lp5814-module/include/drivers/lp5814.hDrivers/lp5814-module/include/lp5814_module.hDrivers/lp5814-module/module.yamlDrivers/lp5814-module/source/lp5814.cppDrivers/lp5814-module/source/module.cppDrivers/nv3031b-module/CMakeLists.txtDrivers/nv3031b-module/LICENSE-Apache-2.0.mdDrivers/nv3031b-module/LICENSE-BSD-2-Clause.mdDrivers/nv3031b-module/README.mdDrivers/nv3031b-module/bindings/newvision,nv3031b.yamlDrivers/nv3031b-module/include/bindings/nv3031b.hDrivers/nv3031b-module/include/drivers/nv3031b.hDrivers/nv3031b-module/include/esp_lcd_nv3031b.hDrivers/nv3031b-module/include/nv3031b_module.hDrivers/nv3031b-module/module.yamlDrivers/nv3031b-module/source/esp_lcd_nv3031b.cDrivers/nv3031b-module/source/module.cppDrivers/nv3031b-module/source/nv3031b.cppDrivers/nv3031b-module/source/nv3031b_init_cmds.hTHIRD-PARTY-NOTICES.md
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.
A native reset pin combined with an expander interrupt pin now keeps its configured polarity and the reset is pulsed reset-pulses times like on the native path.
…otes - TCA95xx: active-low outputs are inverted in software. The GT911 and NV3031B drivers use that for their reset pins instead of driving physical levels and the device sets GPIO_FLAG_ACTIVE_LOW on the touch reset pin. ideas.md notes the same limitation in xl9555 and tca9534. - LP5814: document the units of the current settings. - New drivers use constexpr for TAG. - Device: drive expander pin 4 high like the vendor firmware. Without it the audio codecs do not answer after a cold boot.
|
Thank you! |
Adds the Seeed Studio Wio Tracker L2 Pro: ESP32-S3 (16 MB flash, 8 MB PSRAM), 3.2" 320x240 IPS display with an NV3031B controller on QSPI, GT911 touch, SD card, L76K GPS, SX1262 LoRa, ES8311 speaker codec, ES7243E microphone ADC and an ADS1115 for the battery voltage. A PCA9555 IO expander switches the power and reset lines of most parts. Product page: https://wiki.seeedstudio.com/meshtastic_wio_tracker_l2_intro/
The device folder is dts-only. New driver modules:
nv3031b-module: NV3031B display over QSPI (esp_lcd panel plus Tactility display driver). The reset pin can be on an IO expander.lp5814-module: TI LP5814 LED driver used as the display backlight.ads1115-module: TI ADS1115 ADC, used withbattery-sensefor the battery voltage.es7243e-module: ES7243E microphone ADC, a wrapper around theesp_codec_devimplementation (same approach ases7210-module).One change to an existing driver:
gt911-modulenow handles reset and interrupt pins on an IO expander. Before, such pins were passed toesp_lcd_touchas native GPIO numbers (on this board that would have toggled GPIO8 and GPIO3). For expander pins the driver now does the reset itself and holds INT low, so the GT911 comes up at 0x5D. That matters here because the ES7243E already uses 0x14. Boards with native pins behave exactly as before.Licensing
nv3031b-module/source/nv3031b_init_cmds.hcontains the init sequence from LovyanGFX (FreeBSD / BSD-2-Clause). It has its own SPDX header and license file in the module.esp_lcd_nv3031b.cis adapted from Espressif'sesp_lcd_sh8601(Apache-2.0), which uses the same QSPI command format.THIRD-PARTY-NOTICES.md. Everything else is Apache-2.0. The LP5814 and ADS1115 drivers are written from the TI datasheets. No code from the Meshtastic firmware was copied, it was only used as a reference for the expander pins and the power-up order.Testing
button-control.Known gaps
Summary by CodeRabbit
New Features
Bug Fixes
Documentation