working version with spinning tracker reporting
This commit is contained in:
parent
a0f80fef96
commit
13349c9920
1 changed files with 17 additions and 18 deletions
|
@ -5,18 +5,18 @@ extern crate vrpn;
|
||||||
|
|
||||||
use bytes::{Bytes, BytesMut};
|
use bytes::{Bytes, BytesMut};
|
||||||
use std::{
|
use std::{
|
||||||
io::{Read,self},
|
io::{self, Read},
|
||||||
net::{SocketAddr, TcpStream},
|
net::{SocketAddr, TcpStream},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
use vrpn::{
|
use vrpn::{
|
||||||
codec::peek_u32,
|
codec::peek_u32,
|
||||||
constants::MAGIC_DATA,
|
constants::MAGIC_DATA,
|
||||||
cookie::check_ver_nonfile_compatible,
|
cookie::check_ver_nonfile_compatible,
|
||||||
message::MessageSize,
|
message::MessageSize,
|
||||||
sync_io::{read_cookie, write_cookie},
|
sync_io::{read_cookie, write_cookie},
|
||||||
CookieData, Message, Result, SequencedGenericMessage, Unbuffer,
|
tracker::PoseReport,
|
||||||
|
unbuffer, CookieData, Message, Result, SequencedGenericMessage, Unbuffer,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
|
@ -73,16 +73,12 @@ impl Tracker {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update(&mut self) -> vrpn::Result<()> {
|
pub fn update(&mut self) -> vrpn::Result<()> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let mut buf = BytesMut::new();
|
let mut buf = BytesMut::new();
|
||||||
|
|
||||||
// Read the message header and padding
|
// Read the message header and padding
|
||||||
buf.resize(24, 0);
|
buf.resize(24, 0);
|
||||||
self.stream.read_exact(buf.as_mut())?;
|
self.stream.read_exact(buf.as_mut())?;
|
||||||
|
|
||||||
|
|
||||||
// Peek the size field, to compute the MessageSize.
|
// Peek the size field, to compute the MessageSize.
|
||||||
|
|
||||||
// let buf = buf.freeze();
|
// let buf = buf.freeze();
|
||||||
|
@ -91,7 +87,6 @@ impl Tracker {
|
||||||
// let total_len = peek_u32(&buf)?.unwrap();
|
// let total_len = peek_u32(&buf)?.unwrap();
|
||||||
let size = MessageSize::from_length_field(total_len);
|
let size = MessageSize::from_length_field(total_len);
|
||||||
|
|
||||||
|
|
||||||
// Read the body of the message
|
// Read the body of the message
|
||||||
let mut body_buf = BytesMut::new();
|
let mut body_buf = BytesMut::new();
|
||||||
body_buf.resize(size.padded_body_size(), 0);
|
body_buf.resize(size.padded_body_size(), 0);
|
||||||
|
@ -99,13 +94,19 @@ impl Tracker {
|
||||||
|
|
||||||
// Combine the body with the header
|
// Combine the body with the header
|
||||||
buf.extend_from_slice(&body_buf[..]);
|
buf.extend_from_slice(&body_buf[..]);
|
||||||
let mut buf = buf.freeze();
|
let mut buf = buf.clone().freeze();
|
||||||
|
|
||||||
// Unbuffer the message.
|
|
||||||
let unbuffered = SequencedGenericMessage::unbuffer_ref(&mut buf)?;
|
|
||||||
|
|
||||||
// eprintln!("{:?}", Message::from(unbuffered));
|
// eprintln!("{:?}", Message::from(unbuffered));
|
||||||
info!("{:?}", 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)?;
|
||||||
|
|
||||||
|
// let message = Message::from(unbuffered);
|
||||||
|
// info!("{:?}",message.header);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -115,10 +116,8 @@ pub fn setup_tracker(mut commands: Commands) {
|
||||||
commands.spawn(Tracker::from_info("127.0.0.1", 3883));
|
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() {
|
for mut tracker in query.iter_mut() {
|
||||||
|
|
||||||
tracker.update();
|
tracker.update();
|
||||||
|
|
||||||
// tracker.connection.poll_endpoints();
|
// tracker.connection.poll_endpoints();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue