better type management

This commit is contained in:
hsaturn
2022-01-05 01:59:16 +01:00
parent a5b8afc0bd
commit 710503663a
2 changed files with 6 additions and 4 deletions

View File

@@ -418,11 +418,11 @@ if (mesg->type() != MqttMessage::Type::PingReq && mesg->type() != MqttMessage::T
uint16_t len; uint16_t len;
bool bclose=true; bool bclose=true;
switch(mesg->type() & 0XF0)
#ifdef EPOXY_DUINO #ifdef EPOXY_DUINO
counters[mesg->type()]++; counters[mesg->type()]++;
#endif #endif
switch(mesg->type())
{ {
case MqttMessage::Type::Connect: case MqttMessage::Type::Connect:
if (mqtt_connected) if (mqtt_connected)
@@ -532,7 +532,7 @@ if (mesg->type() != MqttMessage::Type::PingReq && mesg->type() != MqttMessage::T
Topic topic(payload, len); Topic topic(payload, len);
payload += len; payload += len;
if ((mesg->type() & 0XF0) == MqttMessage::Type::Subscribe) if (mesg->type() == MqttMessage::Type::Subscribe)
{ {
uint8_t qos = *payload++; uint8_t qos = *payload++;
if (qos != 0) if (qos != 0)
@@ -584,7 +584,7 @@ if (mesg->type() != MqttMessage::Type::PingReq && mesg->type() != MqttMessage::T
#endif #endif
if (mqtt_connected or client == nullptr) if (mqtt_connected or client == nullptr)
{ {
uint8_t qos = mesg->type() & 0x6; uint8_t qos = mesg->flags();
payload = header; payload = header;
mesg->getString(payload, len); mesg->getString(payload, len);
Topic published(payload, len); Topic published(payload, len);

View File

@@ -114,9 +114,11 @@ class MqttMessage
return state == Complete ? static_cast<Type>(buffer[0]) : Unknown; return state == Complete ? static_cast<Type>(buffer[0]) : Unknown;
} }
uint8_t flags() const { return static_cast<uint8_t>(buffer[0] & 0x0F); }
void create(Type type) void create(Type type)
{ {
buffer=(char)type; buffer=(decltype(buffer)::value_type)type;
buffer+='\0'; // reserved for msg length byte 1/2 buffer+='\0'; // reserved for msg length byte 1/2
buffer+='\0'; // reserved for msg length byte 2/2 (fixed) buffer+='\0'; // reserved for msg length byte 2/2 (fixed)
vheader=3; // Should never change vheader=3; // Should never change