This commit is contained in:
Ondrej Babec 2022-02-10 14:04:21 +01:00
parent bdd5720c28
commit b0c1d41fcc
No known key found for this signature in database
GPG Key ID: 13E577E3769B2079
4 changed files with 15 additions and 9 deletions

1
Cargo.lock generated
View File

@ -659,6 +659,7 @@ dependencies = [
"drogue-device", "drogue-device",
"embassy", "embassy",
"env_logger", "env_logger",
"heapless",
"log", "log",
] ]

View File

@ -12,6 +12,7 @@ embassy = { version = "0.1.0", default-features = false, features = ["std"] }
drogue-device = { version = "0.1.0", default-features = false, features = ["log", "std"] } drogue-device = { version = "0.1.0", default-features = false, features = ["log", "std"] }
env_logger = "0.9.0" env_logger = "0.9.0"
log = "0.4.14" log = "0.4.14"
heapless = "0.7.10"
[patch.crates-io] [patch.crates-io]
embassy = { git = "https://github.com/embassy-rs/embassy.git", rev = "d76cd5ceaf5140c48ef97180beae156c0c0e07c8" } embassy = { git = "https://github.com/embassy-rs/embassy.git", rev = "d76cd5ceaf5140c48ef97180beae156c0c0e07c8" }

View File

@ -56,7 +56,7 @@ impl<'a> PacketBuilder<'a> {
// Tutaj se cely packet dokonci - spocita se remaining len co chybi v hlavicce atd... // Tutaj se cely packet dokonci - spocita se remaining len co chybi v hlavicce atd...
} }
pub fn decode_packet(& mut self, buff_reader: &'a mut BuffReader) { pub fn decode_packet(& mut self, buff_reader: & mut BuffReader<'a>) {
self.decodeFixedHeader(buff_reader); self.decodeFixedHeader(buff_reader);
if self.currentPacket.fixed_header & 0xF0 == (PacketType::Connect).into() { if self.currentPacket.fixed_header & 0xF0 == (PacketType::Connect).into() {
self.decodeControllPacket(buff_reader); self.decodeControllPacket(buff_reader);
@ -70,7 +70,7 @@ impl<'a> PacketBuilder<'a> {
return PacketType::from(self.currentPacket.fixed_header); return PacketType::from(self.currentPacket.fixed_header);
} }
pub fn decodeControllPacket(& mut self, buff_reader: &'a mut BuffReader) { pub fn decodeControllPacket(& mut self, buff_reader: & mut BuffReader<'a>) {
self.currentPacket.packet_identifier = 0; self.currentPacket.packet_identifier = 0;
self.currentPacket.protocol_name_len = buff_reader.readU16().unwrap(); self.currentPacket.protocol_name_len = buff_reader.readU16().unwrap();
self.currentPacket.protocol_name = buff_reader.readU32().unwrap(); self.currentPacket.protocol_name = buff_reader.readU32().unwrap();
@ -80,17 +80,21 @@ impl<'a> PacketBuilder<'a> {
self.currentPacket.property_len = buff_reader.readVariableByteInt().unwrap(); self.currentPacket.property_len = buff_reader.readVariableByteInt().unwrap();
let mut x: u32 = 0; let mut x: u32 = 0;
let mut prop: Result<Property, ProperyParseError>; let mut prop: Result<Property, ProperyParseError>;
let mut res; let mut res: Property;
loop { loop {
prop = Property::decode(buff_reader); prop = Property::decode(buff_reader);
if prop.is_ok() { if let Ok(res) = prop {
res = prop.unwrap(); x = x + res.len() as u32 + 1;
self.currentPacket.properties.push(res); self.currentPacket.properties.push(res);
}
/*if prop.is_ok() {
} else { } else {
log::error!("Decoding property did not went well!"); log::error!("Decoding property did not went well!");
} }*/
x = x + res.len() as u32 + 1;
if x == self.currentPacket.property_len { if x == self.currentPacket.property_len {
break; break;
} }

View File

@ -37,7 +37,7 @@ pub enum Property<'a> {
} }
impl<'a> Property<'a> { impl<'a> Property<'a> {
pub fn len(mut self) -> u16 { pub fn len(self) -> u16 {
match self { match self {
Property::PayloadFormat(u) => return 1, Property::PayloadFormat(u) => return 1,
Property::MessageExpiryInterval(u) => return 4, Property::MessageExpiryInterval(u) => return 4,
@ -69,7 +69,7 @@ impl<'a> Property<'a> {
} }
} }
pub fn decode(buff_reader: &'a mut BuffReader) -> Result<Property<'a>, ProperyParseError> { pub fn decode(buff_reader: & mut BuffReader<'a>) -> Result<Property<'a>, ProperyParseError> {
let propertyIdentifier = buff_reader.readU8(); let propertyIdentifier = buff_reader.readU8();
match propertyIdentifier { match propertyIdentifier {
Ok(0x01) => return Ok(Property::PayloadFormat(buff_reader.readU8())), Ok(0x01) => return Ok(Property::PayloadFormat(buff_reader.readU8())),