use esp_idf_svc::hal::prelude::*;
use esp_idf_svc::hal::uart::config::{DataBits, Config, Parity, StopBits, FlowControl};
use esp_idf_svc::hal::uart::UartDriver;
use esp_idf_svc::hal::gpio::{Gpio18, Gpio32};
fn main() {
esp_idf_svc::sys::link_patches();
esp_idf_svc::log::EspLogger::initialize_default();
log::info!("Initializing UART for GPS data...");
let peripherals = Peripherals::take().unwrap();
let pins = peripherals.pins;
// Replace these with the actual pins used for UART
let tx_pin = pins.gpio18;
let rx_pin = pins.gpio32;
// UART configuration: Adjust as per your GPS module specs
let config = Config {
baudrate: Hertz(115200),
data_bits: DataBits::DataBits8,
parity: Parity::ParityNone,
stop_bits: StopBits::STOP1,
flow_control: FlowControl::None,
..Default::default()
};
// Initialize UART driver
let uart = UartDriver::new(peripherals.uart1,
tx_pin,
rx_pin,
Option::<Gpio18>::None,
Option::<Gpio32>::None,
&config,).unwrap();
loop {
// Buffer to store received data
let mut buffer = [0u8; 1024];
// Read data from UART
match uart.read(&mut buffer, 5000) {
Ok(bytes_read) => {
// Convert to string for logging
if let Ok(str) = core::str::from_utf8(&buffer[..bytes_read]) {
log::info!("Received GPS Data: {}", str);
}
}
Err(e) => {
log::error!("Failed to read from UART: {:?}", e);
}
}
}
}