Skip to content

Commit

Permalink
WIP: v3 cleansession -> v5 cleanstart
Browse files Browse the repository at this point in the history
  • Loading branch information
CIPop committed Jul 25, 2023
1 parent d097202 commit 6b00baa
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 5 deletions.
1 change: 1 addition & 0 deletions MQTTClient-C/src/MQTTClient.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ int cycle(MQTTClient* c, Timer* timer)
#if defined(MQTTV5)
case DISCONNECT:
// TODO: not implemented.
break;
#endif
}

Expand Down
4 changes: 2 additions & 2 deletions MQTTClient-C/src/V5/MQTTV5Client.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ DLLExport void MQTTV5ClientInit(MQTTClient* client, Network* network, unsigned i
* @param options - connect options
* @return success code
*/
DLLExport int MQTTV5ConnectWithResults(MQTTClient* client, MQTTV5Packet_connectData* options,
DLLExport int MQTTV5ConnectWithResults(MQTTClient* client, MQTTPacket_connectData* options,
MQTTConnackData* data);

/** MQTT Connect - send an MQTT connect packet down the network and wait for a Connack
* The nework object must be connected to the network endpoint before calling this
* @param options - connect options
* @return success code
*/
DLLExport int MQTTV5Connect(MQTTClient* client, MQTTV5Packet_connectData* options);
DLLExport int MQTTV5Connect(MQTTClient* client, MQTTPacket_connectData* options);

/** MQTT Publish - send an MQTT publish packet and wait for all acks to complete for all QoSs
* @param client - the client object to use
Expand Down
8 changes: 6 additions & 2 deletions MQTTPacket/src/MQTTConnect.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@ typedef union
unsigned int willRetain : 1; /**< will retain setting */
unsigned int willQoS : 2; /**< will QoS value */
unsigned int will : 1; /**< will flag */
unsigned int cleansession : 1; /**< clean session flag */
unsigned int cleansession : 1; /**< V3 clean session or V5 clean start flag */
unsigned int : 1; /**< unused */
} bits;
#else
struct
{
unsigned int : 1; /**< unused */
unsigned int cleansession : 1; /**< cleansession flag */
unsigned int cleansession : 1; /**< V3 clean session or V5 cleanstart flag */
unsigned int will : 1; /**< will flag */
unsigned int willQoS : 2; /**< will QoS value */
unsigned int willRetain : 1; /**< will retain setting */
Expand Down Expand Up @@ -110,7 +110,11 @@ typedef struct
unsigned char MQTTVersion;
MQTTString clientID;
unsigned short keepAliveInterval;
#if defined(MQTTV5)
unsigned char cleanstart;
#else
unsigned char cleansession;
#endif
unsigned char willFlag;
MQTTPacket_willOptions will;
MQTTString username;
Expand Down
5 changes: 5 additions & 0 deletions MQTTPacket/src/MQTTConnectClient.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,12 @@ int MQTTSerialize_connect(unsigned char* buf, int32_t buflen, MQTTPacket_connect
writeChar(&ptr, (char)options->MQTTVersion);

flags.all = 0;
#if defined(MQTTV5)
flags.bits.cleansession = options->cleanstart;
#else
flags.bits.cleansession = options->cleansession;
#endif

flags.bits.will = (options->willFlag) ? 1 : 0;
if (flags.bits.will)
{
Expand Down
5 changes: 5 additions & 0 deletions MQTTPacket/src/MQTTConnectServer.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,12 @@ int32_t MQTTDeserialize_connect(MQTTPacket_connectData* data, unsigned char* buf
if (MQTTPacket_checkVersion(&Protocol, data->MQTTVersion))
{
flags.all = readChar(&curdata);
#if defined(MQTTV5)
data->cleanstart = flags.bits.cleansession;
#else
data->cleansession = flags.bits.cleansession;
#endif

data->keepAliveInterval = readInt(&curdata);
#if defined(MQTTV5)
if (data->MQTTVersion == 5)
Expand Down
8 changes: 7 additions & 1 deletion MQTTPacket/src/MQTTFormat.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,13 @@ int MQTTStringFormat_connect(char* strbuf, int strbuflen, MQTTPacket_connectData
strindex = snprintf(strbuf, strbuflen,
"CONNECT MQTT version %d, client id %.*s, clean session %d, keep alive %d",
(int)data->MQTTVersion, (int) data->clientID.lenstring.len, data->clientID.lenstring.data,
(int)data->cleansession, data->keepAliveInterval);
#if defined(MQTTV5)
(int)data->cleanstart,
#else
(int)data->cleansession,
#endif
data->keepAliveInterval);

if (data->willFlag)
strindex += snprintf(&strbuf[strindex], strbuflen - strindex,
", will QoS %d, will retain %d, will topic %.*s, will message %.*s",
Expand Down

0 comments on commit 6b00baa

Please sign in to comment.