A small footprint MQTT library

Dependents:   STM32F746_iothub_client_sample_mqtt FXOS8700CQ_To_Azure_IoT f767zi_mqtt FXOS8700CQ_To_Azure_IoT ... more

Revision:
1:8dba42ff9701
Parent:
0:ef4901974abc
Child:
3:9b4e7158ca0d
--- a/mqtt_client.c	Fri Apr 08 12:01:23 2016 -0700
+++ b/mqtt_client.c	Sun Apr 24 16:40:45 2016 -0700
@@ -9,6 +9,7 @@
 
 #include "azure_umqtt_c/mqtt_client.h"
 #include "azure_umqtt_c/mqtt_codec.h"
+#include <time.h>
 
 #define KEEP_ALIVE_BUFFER_SEC           10
 #define VARIABLE_HEADER_OFFSET          2
@@ -17,6 +18,7 @@
 #define QOS_EXACTLY_ONCE_FLAG_MASK      0x4
 #define DUPLICATE_FLAG_MASK             0x8
 #define CONNECT_PACKET_MASK             0xf0
+#define TIME_MAX_BUFFER                 16
 
 static const char* FORMAT_HEX_CHAR = "0x%02x ";
 
@@ -129,14 +131,30 @@
     }
 }
 
+static void getLogTime(char* timeResult, size_t len)
+{
+    if (timeResult != NULL)
+    {
+        time_t localTime = time(NULL);
+        struct tm* tmInfo = localtime(&localTime);
+        if (strftime(timeResult, len, "%H:%M:%S", tmInfo) == 0)
+        {
+            timeResult[0] = '\0';
+        }
+    }
+}
+
 static void logOutgoingingMsgTrace(MQTT_CLIENT* clientData, const uint8_t* data, size_t length)
 {
     if (clientData != NULL && data != NULL && length > 0 && clientData->logTrace)
     {
-        LOG(clientData->logFunc, 0, "-> %s: ", retrievePacketType((unsigned char)data[0]));
+        char tmBuffer[TIME_MAX_BUFFER];
+        getLogTime(tmBuffer, TIME_MAX_BUFFER);
+
+        LOG(clientData->logFunc, 0, "-> %s %s: ", tmBuffer, retrievePacketType((unsigned char)data[0]));
         for (size_t index = 0; index < length; index++)
         {
-            LOG(clientData->logFunc, 0, (char*)FORMAT_HEX_CHAR, (unsigned char)data[index]);
+            LOG(clientData->logFunc, 0, (char*)FORMAT_HEX_CHAR, data[index]);
         }
         LOG(clientData->logFunc, LOG_LINE, "");
     }
@@ -146,10 +164,13 @@
 {
     if (clientData != NULL && data != NULL && length > 0 && clientData->logTrace)
     {
-        LOG(clientData->logFunc, 0, "<- %s: 0x%02x 0x%02x ", retrievePacketType((unsigned char)packet), (unsigned char)(packet | flags), length);
+        char tmBuffer[TIME_MAX_BUFFER];
+        getLogTime(tmBuffer, TIME_MAX_BUFFER);
+
+        LOG(clientData->logFunc, 0, "<- %s %s: 0x%02x 0x%02x ", tmBuffer, retrievePacketType((unsigned char)packet), (unsigned char)(packet | flags), length);
         for (size_t index = 0; index < length; index++)
         {
-            LOG(clientData->logFunc, 0, (char*)FORMAT_HEX_CHAR, (unsigned char)data[index]);
+            LOG(clientData->logFunc, 0, (char*)FORMAT_HEX_CHAR, data[index]);
         }
         LOG(clientData->logFunc, LOG_LINE, "");
     }