mirror of
https://github.com/storytold/xsens-packet-send.git
synced 2026-10-09 00:09:59 +00:00
cleanup, infinite play
This commit is contained in:
+12
-15
@@ -13,42 +13,39 @@ const REMOTE_ADDR : &'static str = "192.168.50.31:9763";
|
|||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
pub async fn main() -> AnyhowResult<()> {
|
pub async fn main() -> AnyhowResult<()> {
|
||||||
old_format().await?;
|
let socket = UdpSocket::bind(LOCAL_ADDR).await?;
|
||||||
|
socket.connect(REMOTE_ADDR).await?;
|
||||||
|
|
||||||
|
loop {
|
||||||
|
play_legacy_pcap_file_format(&socket).await?;
|
||||||
|
tokio::time::sleep(Duration::from_millis(500)).await;
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn old_format() -> AnyhowResult<()> {
|
pub async fn play_legacy_pcap_file_format(socket: &UdpSocket) -> AnyhowResult<()> {
|
||||||
let path = "animation.pcap";
|
let path = "animation.pcap";
|
||||||
let file = File::open(path)?;
|
let file = File::open(path)?;
|
||||||
|
|
||||||
let mut num_blocks = 0;
|
let mut num_blocks = 0;
|
||||||
let mut reader = LegacyPcapReader::new(65536, file)?;
|
let mut reader = LegacyPcapReader::new(65536, file)?;
|
||||||
|
|
||||||
let sock = UdpSocket::bind(LOCAL_ADDR).await?;
|
|
||||||
|
|
||||||
sock.connect(REMOTE_ADDR).await?;
|
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
match reader.next() {
|
match reader.next() {
|
||||||
Ok((offset, block)) => {
|
Ok((offset, block)) => {
|
||||||
//println!("got new block");
|
|
||||||
num_blocks += 1;
|
num_blocks += 1;
|
||||||
|
|
||||||
match block {
|
match block {
|
||||||
PcapBlockOwned::LegacyHeader(header) => {
|
PcapBlockOwned::LegacyHeader(header) => {
|
||||||
// save hdr.network (linktype)
|
|
||||||
println!("Header: {:?}", header)
|
|
||||||
},
|
},
|
||||||
PcapBlockOwned::Legacy(block) => {
|
PcapBlockOwned::Legacy(block) => {
|
||||||
// use linktype to parse b.data()
|
// NB(brandon): The first 32 bytes seem to be the UDP packet metadata.
|
||||||
//println!("Block: {:?}", block);
|
|
||||||
|
|
||||||
let slice = &block.data[32..];
|
let slice = &block.data[32..];
|
||||||
let len = sock.send(slice).await?;
|
let len = socket.send(slice).await?;
|
||||||
//println!("Sent: {}", len);
|
//println!("Sent: {}", len);
|
||||||
|
|
||||||
tokio::time::sleep(Duration::from_millis(5)).await;
|
tokio::time::sleep(Duration::from_millis(5)).await;
|
||||||
|
|
||||||
},
|
},
|
||||||
PcapBlockOwned::NG(_) => unreachable!(),
|
PcapBlockOwned::NG(_) => unreachable!(),
|
||||||
}
|
}
|
||||||
@@ -61,7 +58,7 @@ pub async fn old_format() -> AnyhowResult<()> {
|
|||||||
Err(e) => panic!("error while reading: {:?}", e),
|
Err(e) => panic!("error while reading: {:?}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
println!("num_blocks: {}", num_blocks);
|
|
||||||
|
|
||||||
|
println!("num_blocks: {}", num_blocks);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user