Use builder struct instead of 20 arguments

This commit is contained in:
2026-08-23 12:11:26 +02:00
parent dbbc93b528
commit 537692d348
2 changed files with 76 additions and 62 deletions
+16 -18
View File
@@ -10,7 +10,7 @@
use alloc::boxed::Box;
use creaturedex::card::decoder::split_nfc_hex;
use creaturedex::card::model::Card;
use creaturedex::display::shared_bus::{DualSecondaryDisplay, init_dual_displays};
use creaturedex::display::shared_bus::{self, DualSecondaryDisplay};
use creaturedex::display::tertiary_lcd::{TertiaryI2cLcd, init_tertiary_lcd, write_wrapped};
use creaturedex::drivers::nfc_pn532::NfcPn532Driver;
use creaturedex::navigation::inputs::Inputs;
@@ -29,7 +29,7 @@ use embedded_hal_bus::i2c::AtomicDevice;
use embedded_hal_bus::util::AtomicCell;
use esp_hal::Blocking;
use esp_hal::clock::CpuClock;
use esp_hal::gpio::{Input, InputConfig, Level, Output, OutputConfig, Pull};
use esp_hal::gpio::{Input, InputConfig, Pull};
use esp_hal::i2c::master::{Config as I2cConfig, I2c};
use esp_hal::timer::timg::TimerGroup;
use log::error;
@@ -66,22 +66,20 @@ async fn main(spawner: Spawner) {
let timg0 = TimerGroup::new(peripherals.TIMG0);
esp_rtos::start(timg0.timer0, sw_interrupt.software_interrupt0);
let (display, mut oled) = init_dual_displays(
peripherals.SPI2,
peripherals.GPIO36, // sck
peripherals.GPIO35, // mosi
peripherals.GPIO37, // miso
peripherals.GPIO11, // primary cs
peripherals.GPIO13, // oled cs
peripherals.GPIO10, // primary reset
peripherals.GPIO47, // secondary reset
peripherals.GPIO12, // shared dc
);
let _secondary_oled_cs_2 =
Output::new(peripherals.GPIO14, Level::High, OutputConfig::default());
let _secondary_oled_cs_3 =
Output::new(peripherals.GPIO21, Level::High, OutputConfig::default());
let (display, mut oled) = shared_bus::DisplayPinConfiguration {
spi_peripheral: peripherals.SPI2,
sck: peripherals.GPIO36,
mosi: peripherals.GPIO35,
miso: peripherals.GPIO37,
cs_primary: peripherals.GPIO11,
cs_secondary_1: peripherals.GPIO13,
cs_secondary_2: peripherals.GPIO14,
cs_secondary_3: peripherals.GPIO21,
reset_primary: peripherals.GPIO10,
reset_secondary: peripherals.GPIO47,
dc_pin: peripherals.GPIO12,
}
.build();
let config = I2cConfig::default().with_frequency(esp_hal::time::Rate::from_khz(400));
let i2c = match I2c::new(peripherals.I2C0, config) {