Finally compiles

This commit is contained in:
Wyatt Marchand
2026-08-24 19:30:05 -07:00
commit 777c72cbfb
7 changed files with 121 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
use std::thread;
use std::time::Duration;
use esp_idf_svc::eth::{BlockingEth, EspEth, EthDriver, SpiEthChipset};
use esp_idf_svc::eventloop::EspSystemEventLoop;
use esp_idf_svc::hal::peripherals::Peripherals;
use esp_idf_svc::hal::prelude::*;
use esp_idf_svc::hal::spi::{config::DriverConfig, SpiDriver};
use esp_idf_svc::http::server::{Configuration as HttpServerConfig, EspHttpServer};
use esp_idf_svc::http::Method;
use esp_idf_svc::io::Write;
use log::info;
fn main() -> anyhow::Result<()> {
esp_idf_svc::sys::link_patches();
esp_idf_svc::log::EspLogger::initialize_default();
let peripherals = Peripherals::take()?;
let sysloop = EspSystemEventLoop::take()?;
let pins = peripherals.pins;
let spi_driver = SpiDriver::new(
peripherals.spi2,
pins.gpio13, // SCLK
pins.gpio11, // MOSI (sdo)
Some(pins.gpio12), // MISO (sdi)
&DriverConfig::new(),
)?;
let eth_driver = EthDriver::new_spi(
spi_driver,
pins.gpio10, // INT
Some(pins.gpio14), // CS
Some(pins.gpio9), // RST
SpiEthChipset::W5500,
20.MHz().into(),
Some(&[0x02, 0x00, 0x00, 0x12, 0x34, 0x56]), // locally-administered MAC
None, // phy addr — default
sysloop.clone(),
)?;
let eth = EspEth::wrap(eth_driver)?;
let mut eth = BlockingEth::wrap(eth, sysloop)?;
info!("Starting eth...");
eth.start()?;
info!("Waiting for DHCP lease...");
eth.wait_netif_up()?;
let ip_info = eth.eth().netif().get_ip_info()?;
info!("Got IP: {:?}", ip_info);
let mut server = EspHttpServer::new(&HttpServerConfig::default())?;
server.fn_handler("/", Method::Get, |req| {
let html = "<html><body><h1>Hello World</h1></body></html>";
req.into_ok_response()?.write_all(html.as_bytes())?;
anyhow::Ok(())
})?;
info!("Server up. Browse to http://{}/", ip_info.ip);
loop {
thread::sleep(Duration::from_secs(1));
}
}