working version with spinning tracker reporting

This commit is contained in:
Hartmut Seichter 2022-12-13 20:35:22 +01:00
parent a0f80fef96
commit 13349c9920

View file

@ -5,18 +5,18 @@ extern crate vrpn;
use bytes::{Bytes, BytesMut};
use std::{
io::{Read,self},
io::{self, Read},
net::{SocketAddr, TcpStream},
};
use vrpn::{
codec::peek_u32,
constants::MAGIC_DATA,
cookie::check_ver_nonfile_compatible,
message::MessageSize,
sync_io::{read_cookie, write_cookie},
CookieData, Message, Result, SequencedGenericMessage, Unbuffer,
tracker::PoseReport,
unbuffer, CookieData, Message, Result, SequencedGenericMessage, Unbuffer,
};
#[derive(Component)]
@ -73,24 +73,19 @@ impl Tracker {
}
pub fn update(&mut self) -> vrpn::Result<()> {
let mut buf = BytesMut::new();
// Read the message header and padding
buf.resize(24, 0);
self.stream.read_exact(buf.as_mut())?;
// Peek the size field, to compute the MessageSize.
// let buf = buf.freeze();
// let buf = buf.freeze();
let total_len = peek_u32(&buf.clone().freeze())?.unwrap();
// let total_len = peek_u32(&buf)?.unwrap();
let size = MessageSize::from_length_field(total_len);
// Read the body of the message
let mut body_buf = BytesMut::new();
@ -99,14 +94,20 @@ impl Tracker {
// Combine the body with the header
buf.extend_from_slice(&body_buf[..]);
let mut buf = buf.freeze();
let mut buf = buf.clone().freeze();
// eprintln!("{:?}", Message::from(unbuffered));
// info!("{:?}", Message::from(unbuffered));
let pose = PoseReport::unbuffer_ref(&mut body_buf.clone().freeze())?;
info!("{:?}", pose);
// Unbuffer the message.
let unbuffered = SequencedGenericMessage::unbuffer_ref(&mut buf)?;
// eprintln!("{:?}", Message::from(unbuffered));
info!("{:?}", Message::from(unbuffered));
// let unbuffered = SequencedGenericMessage::unbuffer_ref(&mut buf)?;
// let message = Message::from(unbuffered);
// info!("{:?}",message.header);
Ok(())
}
}
@ -115,10 +116,8 @@ pub fn setup_tracker(mut commands: Commands) {
commands.spawn(Tracker::from_info("127.0.0.1", 3883));
}
pub fn update_tracker(mut query:Query<&mut Tracker>)
{
pub fn update_tracker(mut query: Query<&mut Tracker>) {
for mut tracker in query.iter_mut() {
tracker.update();
// tracker.connection.poll_endpoints();