Embedded
This commit is contained in:
@@ -46,7 +46,7 @@ pub struct AuthPacket<'a, const MAX_PROPERTIES: usize> {
|
||||
impl<'a, const MAX_PROPERTIES: usize> AuthPacket<'a, MAX_PROPERTIES> {
|
||||
pub fn add_reason_code(&mut self, code: u8) {
|
||||
if code != 0 && code != 24 && code != 25 {
|
||||
log::error!("Provided reason code is not supported!");
|
||||
error!("Provided reason code is not supported!");
|
||||
return;
|
||||
}
|
||||
self.auth_reason = code;
|
||||
@@ -56,7 +56,7 @@ impl<'a, const MAX_PROPERTIES: usize> AuthPacket<'a, MAX_PROPERTIES> {
|
||||
if p.auth_property() {
|
||||
self.push_to_properties(p);
|
||||
} else {
|
||||
log::error!("Provided property is not correct AUTH packet property!");
|
||||
error!("Provided property is not correct AUTH packet property!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -73,7 +74,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for ConnackPacket<'a, MAX_PROPE
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Connack).into() {
|
||||
log::error!("Packet you are trying to decode is not CONNACK packet!");
|
||||
error!("Packet you are trying to decode is not CONNACK packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.ack_flags = buff_reader.read_u8()?;
|
||||
|
||||
@@ -187,7 +187,7 @@ impl<'a, const MAX_PROPERTIES: usize, const MAX_WILL_PROPERTIES: usize> Packet<'
|
||||
}
|
||||
|
||||
fn decode(&mut self, _buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
log::error!("Decode function is not available for control packet!");
|
||||
error!("Decode function is not available for control packet!");
|
||||
Err(BufferError::WrongPacketToDecode)
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -79,7 +80,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for DisconnectPacket<'a, MAX_PR
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Disconnect).into() {
|
||||
log::error!("Packet you are trying to decode is not DISCONNECT packet!");
|
||||
error!("Packet you are trying to decode is not DISCONNECT packet!");
|
||||
return Err(BufferError::WrongPacketToDecode);
|
||||
}
|
||||
self.disconnect_reason = buff_reader.read_u8()?;
|
||||
|
||||
@@ -82,7 +82,7 @@ pub trait Packet<'a> {
|
||||
if self.get_property_len() != 0 {
|
||||
loop {
|
||||
prop = Property::decode(buff_reader)?;
|
||||
log::debug!("Parsed property {:?}", prop);
|
||||
//debug!("Parsed property {:?}", prop);
|
||||
x = x + prop.len() as u32 + 1;
|
||||
self.push_to_properties(prop);
|
||||
|
||||
@@ -100,6 +100,7 @@ pub trait Packet<'a> {
|
||||
buff_reader: &mut BuffReader,
|
||||
) -> Result<PacketType, BufferError> {
|
||||
let first_byte: u8 = buff_reader.read_u8()?;
|
||||
trace!("First byte of accepted packet: {:02X}", first_byte);
|
||||
self.set_fixed_header(first_byte);
|
||||
self.set_remaining_len(buff_reader.read_variable_byte_int()?);
|
||||
return Ok(PacketType::from(first_byte));
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use crate::packet::v5::mqtt_packet::Packet;
|
||||
use crate::utils::buffer_reader::BuffReader;
|
||||
use crate::utils::buffer_writer::BuffWriter;
|
||||
@@ -53,21 +54,21 @@ impl<'a> Packet<'a> for PingreqPacket {
|
||||
}
|
||||
|
||||
fn decode(&mut self, _buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
log::error!("Pingreq Packet packet does not support decode funtion on client!");
|
||||
error!("Pingreq Packet packet does not support decode funtion on client!");
|
||||
Err(BufferError::WrongPacketToDecode)
|
||||
}
|
||||
|
||||
fn set_property_len(&mut self, _value: u32) {
|
||||
log::error!("PINGREQ packet does not contain any properties!");
|
||||
error!("PINGREQ packet does not contain any properties!");
|
||||
}
|
||||
|
||||
fn get_property_len(&mut self) -> u32 {
|
||||
log::error!("PINGREQ packet does not contain any properties!");
|
||||
error!("PINGREQ packet does not contain any properties!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
fn push_to_properties(&mut self, _property: Property<'a>) {
|
||||
log::error!("PINGREQ packet does not contain any properties!");
|
||||
error!("PINGREQ packet does not contain any properties!");
|
||||
}
|
||||
|
||||
fn property_allowed(&mut self, property: &Property<'a>) -> bool {
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use crate::packet::v5::mqtt_packet::Packet;
|
||||
use crate::utils::buffer_reader::BuffReader;
|
||||
use crate::utils::buffer_writer::BuffWriter;
|
||||
@@ -55,27 +56,27 @@ impl<'a> Packet<'a> for PingrespPacket {
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
let x = self.decode_fixed_header(buff_reader)?;
|
||||
if x != (PacketType::Pingresp).into() {
|
||||
log::error!("Packet you are trying to decode is not PINGRESP packet!");
|
||||
error!("Packet you are trying to decode is not PINGRESP packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
if self.remain_len != 0 {
|
||||
log::error!("PINGRESP packet does not have 0 lenght!");
|
||||
error!("PINGRESP packet does not have 0 lenght!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn set_property_len(&mut self, _value: u32) {
|
||||
log::error!("PINGRESP packet does not contain any properties!");
|
||||
error!("PINGRESP packet does not contain any properties!");
|
||||
}
|
||||
|
||||
fn get_property_len(&mut self) -> u32 {
|
||||
log::error!("PINGRESP packet does not contain any properties!");
|
||||
error!("PINGRESP packet does not contain any properties!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
fn push_to_properties(&mut self, _property: Property<'a>) {
|
||||
log::error!("PINGRESP packet does not contain any properties!");
|
||||
error!("PINGRESP packet does not contain any properties!");
|
||||
}
|
||||
|
||||
fn property_allowed(&mut self, property: &Property<'a>) -> bool {
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -75,7 +76,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for PubackPacket<'a, MAX_PROPER
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Puback).into() {
|
||||
log::error!("Packet you are trying to decode is not PUBACK packet!");
|
||||
error!("Packet you are trying to decode is not PUBACK packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.packet_identifier = buff_reader.read_u16()?;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -75,7 +76,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for PubcompPacket<'a, MAX_PROPE
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Pubcomp).into() {
|
||||
log::error!("Packet you are trying to decode is not PUBCOMP packet!");
|
||||
error!("Packet you are trying to decode is not PUBCOMP packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.packet_identifier = buff_reader.read_u16()?;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -136,7 +137,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for PublishPacket<'a, MAX_PROPE
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Publish).into() {
|
||||
log::error!("Packet you are trying to decode is not PUBLISH packet!");
|
||||
error!("Packet you are trying to decode is not PUBLISH packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.topic_name = buff_reader.read_string()?;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -75,7 +76,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for PubrecPacket<'a, MAX_PROPER
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Pubrec).into() {
|
||||
log::error!("Packet you are trying to decode is not PUBREC packet!");
|
||||
error!("Packet you are trying to decode is not PUBREC packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.packet_identifier = buff_reader.read_u16()?;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -75,7 +76,7 @@ impl<'a, const MAX_PROPERTIES: usize> Packet<'a> for PubrelPacket<'a, MAX_PROPER
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Pubrel).into() {
|
||||
log::error!("Packet you are trying to decode is not PUBREL packet!");
|
||||
error!("Packet you are trying to decode is not PUBREL packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.packet_identifier = buff_reader.read_u16()?;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
use core::fmt::{Display, Formatter};
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
|
||||
pub enum ReasonCode {
|
||||
Success,
|
||||
GrantedQoS1,
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::packet::v5::mqtt_packet::Packet;
|
||||
@@ -80,13 +81,13 @@ impl<'a, const MAX_REASONS: usize, const MAX_PROPERTIES: usize> Packet<'a>
|
||||
}
|
||||
|
||||
fn encode(&mut self, _buffer: &mut [u8], _buffer_len: usize) -> Result<usize, BufferError> {
|
||||
log::error!("SUBACK packet does not support encoding!");
|
||||
error!("SUBACK packet does not support encoding!");
|
||||
return Err(BufferError::WrongPacketToEncode);
|
||||
}
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Suback).into() {
|
||||
log::error!("Packet you are trying to decode is not SUBACK packet!");
|
||||
error!("Packet you are trying to decode is not SUBACK packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.packet_identifier = buff_reader.read_u16()?;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use super::packet_type::PacketType;
|
||||
@@ -106,7 +107,7 @@ impl<'a, const MAX_FILTERS: usize, const MAX_PROPERTIES: usize> Packet<'a>
|
||||
}
|
||||
|
||||
fn decode(&mut self, _buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
log::error!("Subscribe packet does not support decode funtion on client!");
|
||||
error!("Subscribe packet does not support decode funtion on client!");
|
||||
Err(BufferError::WrongPacketToDecode)
|
||||
}
|
||||
fn set_property_len(&mut self, value: u32) {
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::packet::v5::mqtt_packet::Packet;
|
||||
@@ -74,13 +75,13 @@ impl<'a, const MAX_REASONS: usize, const MAX_PROPERTIES: usize> Packet<'a>
|
||||
}
|
||||
|
||||
fn encode(&mut self, _buffer: &mut [u8], _buffer_len: usize) -> Result<usize, BufferError> {
|
||||
log::error!("UNSUBACK packet does not support encoding!");
|
||||
error!("UNSUBACK packet does not support encoding!");
|
||||
Err(BufferError::WrongPacketToEncode)
|
||||
}
|
||||
|
||||
fn decode(&mut self, buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
if self.decode_fixed_header(buff_reader)? != (PacketType::Unsuback).into() {
|
||||
log::error!("Packet you are trying to decode is not UNSUBACK packet!");
|
||||
error!("Packet you are trying to decode is not UNSUBACK packet!");
|
||||
return Err(BufferError::PacketTypeMismatch);
|
||||
}
|
||||
self.packet_identifier = buff_reader.read_u16()?;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
use heapless::Vec;
|
||||
|
||||
use crate::encoding::variable_byte_integer::VariableByteIntegerEncoder;
|
||||
@@ -105,7 +106,7 @@ impl<'a, const MAX_FILTERS: usize, const MAX_PROPERTIES: usize> Packet<'a>
|
||||
}
|
||||
|
||||
fn decode(&mut self, _buff_reader: &mut BuffReader<'a>) -> Result<(), BufferError> {
|
||||
log::error!("Unsubscribe packet does not support decode funtion on client!");
|
||||
error!("Unsubscribe packet does not support decode funtion on client!");
|
||||
Err(BufferError::WrongPacketToDecode)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user