Fixes
This commit is contained in:
parent
bdd5720c28
commit
b0c1d41fcc
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -659,6 +659,7 @@ dependencies = [
|
||||||
"drogue-device",
|
"drogue-device",
|
||||||
"embassy",
|
"embassy",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
|
"heapless",
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -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" }
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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())),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user