diff --git a/pico/src/main.rs b/pico/src/main.rs index 6aaaa54..830daeb 100644 --- a/pico/src/main.rs +++ b/pico/src/main.rs @@ -3,6 +3,7 @@ use core::net::SocketAddrV4; use core::str::FromStr; +use embassy_net::tcp::TcpSocket; use embassy_net::udp::{PacketMetadata, UdpMetadata, UdpSocket}; use crate::buffer::{WriteBuffer, wait_for_config}; @@ -95,15 +96,15 @@ async fn main(spawner: Spawner) { let edelay = &mut Delay; let mut lcd: LcdDisplay<_, _> = LcdDisplay::new( - Output::new(p.PIN_14, Level::Low), Output::new(p.PIN_15, Level::Low), + Output::new(p.PIN_14, Level::Low), edelay, ) .with_half_bus( - Output::new(p.PIN_10, Level::Low), - Output::new(p.PIN_11, Level::Low), - Output::new(p.PIN_12, Level::Low), Output::new(p.PIN_13, Level::Low), + Output::new(p.PIN_12, Level::Low), + Output::new(p.PIN_11, Level::Low), + Output::new(p.PIN_10, Level::Low), ) .with_display(Display::On) .with_blink(Blink::On) @@ -165,22 +166,29 @@ async fn main(spawner: Spawner) { let in4 = Input::new(p.PIN_21, embassy_rp::gpio::Pull::Up); let mut rx_buffer = [0; 4096]; - let mut rx_meta = [PacketMetadata::EMPTY; 16]; + // let mut rx_meta = [PacketMetadata::EMPTY; 16]; let mut tx_buffer = [0; 4096]; - let mut tx_meta = [PacketMetadata::EMPTY; 16]; + // let mut tx_meta = [PacketMetadata::EMPTY; 16]; - let mut socket = UdpSocket::new( - stack, - &mut rx_meta, - &mut rx_buffer, - &mut tx_meta, - &mut tx_buffer, - ); - socket.bind(7070).unwrap(); + // let mut socket = UdpSocket::new( + // stack, + // &mut rx_meta, + // &mut rx_buffer, + // &mut tx_meta, + // &mut tx_buffer, + // ); + // socket.bind(7070).unwrap(); let host_addr = embassy_net::Ipv4Address::from_str("84.238.32.253").unwrap(); - let target = UdpMetadata::from(SocketAddrV4::new(host_addr, 7070)); - uwrite!(lcd, "udp."); + // let target = UdpMetadata::from(SocketAddrV4::new(host_addr, 7070)); + let mut socket = TcpSocket::new(stack, &mut rx_buffer, &mut tx_buffer); + socket.set_timeout(Some(Duration::from_secs(10))); + if let Err(e) = socket.connect(SocketAddrV4::new(host_addr, 7070)).await { + uwrite!(lcd, "tcperr"); + error!("tcp connect error: {}", e); + } else { + uwrite!(lcd, "tcpok"); + } let delay = Duration::from_millis(100); let mut buffer = WriteBuffer::<1024>::new(); @@ -203,12 +211,12 @@ async fn main(spawner: Spawner) { ); } { - let _ = socket.send_to(&*buffer, target).await; + let _ = socket.write(&*buffer).await; buffer.clear(); } if socket.may_recv() { let mut rx_buffer = [0; 4096]; - let (n, ep) = socket.recv_from(&mut rx_buffer).await.unwrap(); + let n = socket.read(&mut rx_buffer).await.unwrap(); if n > 0 { lcd.clear(); lcd.home();