Low level MQTTSN packet library, part of the Eclipse Paho project: http://eclipse.org/paho

Dependents:   MQTTSN sara-n200-hello-mqtt-sn MQTTSN_2

The master source for this project is held at: https://github.com/eclipse/paho.mqtt-sn.embedded-c

Revision:
1:7fa362fa563f
Parent:
0:c524a894b5e8
--- a/MQTTSNPacket.h	Thu Feb 26 15:59:36 2015 +0000
+++ b/MQTTSNPacket.h	Wed Jan 06 14:19:27 2016 +0000
@@ -1,151 +1,151 @@
-/*******************************************************************************
- * Copyright (c) 2014 IBM Corp.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * and Eclipse Distribution License v1.0 which accompany this distribution.
- *
- * The Eclipse Public License is available at
- *    http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- *   http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *    Ian Craggs - initial API and implementation and/or initial documentation
- *******************************************************************************/
-
-#ifndef MQTTSNPACKET_H_
-#define MQTTSNPACKET_H_
-
-#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
-extern "C" {
-#endif
-
-enum errors
-{
-	MQTTSNPACKET_BUFFER_TOO_SHORT = -2,
-	MQTTSNPACKET_READ_ERROR = -1,
-	MQTTSNPACKET_READ_COMPLETE,
-};
-
-#define MQTTSN_PROTOCOL_VERSION 0x01
-
-enum MQTTSN_connackCodes
-{
-	MQTTSN_RC_ACCEPTED,
-	MQTTSN_RC_REJECTED_CONGESTED,
-	MQTTSN_RC_REJECTED_INVALID_TOPIC_ID,
-};
-
-enum MQTTSN_topicTypes
-{
-	MQTTSN_TOPIC_TYPE_NORMAL, /* topic id in publish, topic name in subscribe */
-	MQTTSN_TOPIC_TYPE_PREDEFINED,
-	MQTTSN_TOPIC_TYPE_SHORT,
-};
-
-
-enum MQTTSN_msgTypes
-{
-	MQTTSN_ADVERTISE, MQTTSN_SEARCHGW, MQTTSN_GWINFO, MQTTSN_RESERVED1, 
-	MQTTSN_CONNECT, MQTTSN_CONNACK,
-	MQTTSN_WILLTOPICREQ, MQTTSN_WILLTOPIC, MQTTSN_WILLMSGREQ, MQTTSN_WILLMSG, 
-	MQTTSN_REGISTER, MQTTSN_REGACK,
-	MQTTSN_PUBLISH, MQTTSN_PUBACK, MQTTSN_PUBCOMP, MQTTSN_PUBREC, MQTTSN_PUBREL, MQTTSN_RESERVED2,
-	MQTTSN_SUBSCRIBE, MQTTSN_SUBACK, MQTTSN_UNSUBSCRIBE, MQTTSN_UNSUBACK, 
-	MQTTSN_PINGREQ, MQTTSN_PINGRESP,
-	MQTTSN_DISCONNECT, MQTTSN_RESERVED3, 
-	MQTTSN_WILLTOPICUPD, MQTTSN_WILLTOPICRESP, MQTTSN_WILLMSGUPD, MQTTSN_WILLMSGRESP,
-};
-
-typedef struct
-{
-	enum MQTTSN_topicTypes type;
-	union
-	{
-		unsigned short id;
-		char short_name[2];
-		struct
-		{
-			char* name;
-			int len;
-		} long_;
-	} data;
-} MQTTSN_topicid;
-
-
-/**
- * Bitfields for the MQTT-SN flags byte.
- */
-typedef union
-{
-	unsigned char all;
-#if defined(REVERSED)
-	struct
-	{
-		int dup: 1;
-		unsigned int QoS : 2;
-		unsigned int retain : 1;
-		unsigned int will : 1;
-		unsigned int cleanSession : 1;
-		unsigned int topicIdType : 2;
-	} bits;
-#else
-	struct
-	{
-		unsigned int topicIdType : 2;
-		unsigned int cleanSession : 1;
-		unsigned int will : 1;
-		unsigned int retain : 1;
-		unsigned int QoS : 2;
-		int dup: 1;
-	} bits;
-#endif
-} MQTTSNFlags;
-
-
-typedef struct
-{
-	int len;
-	char* data;
-} MQTTSNLenString;
-
-typedef struct
-{
-	char* cstring;
-	MQTTSNLenString lenstring;
-} MQTTSNString;
-
-#define MQTTSNString_initializer {NULL, {0, NULL}}
-
-int MQTTSNstrlen(MQTTSNString mqttsnstring);
-
-#include "MQTTSNConnect.h"
-#include "MQTTSNPublish.h"
-#include "MQTTSNSubscribe.h"
-#include "MQTTSNUnsubscribe.h"
-#include "MQTTSNSearch.h"
-
-char* MQTTSNPacket_name(int ptype);
-int MQTTSNPacket_len(int length);
-
-int MQTTSNPacket_encode(unsigned char* buf, int length);
-int MQTTSNPacket_decode(unsigned char* buf, int buflen, int* value);
-
-int readInt(unsigned char** pptr);
-char readChar(unsigned char** pptr);
-void writeChar(unsigned char** pptr, char c);
-void writeInt(unsigned char** pptr, int anInt);
-int readMQTTSNString(MQTTSNString* mqttstring, unsigned char** pptr, unsigned char* enddata);
-void writeCString(unsigned char** pptr, char* string);
-void writeMQTTSNString(unsigned char** pptr, MQTTSNString mqttstring);
-
-int MQTTSNPacket_read(unsigned char* buf, int buflen, int (*getfn)(unsigned char*, int));
-
-#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */
-}
-#endif
-
-
-#endif /* MQTTSNPACKET_H_ */
+/*******************************************************************************
+ * Copyright (c) 2014 IBM Corp.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Eclipse Distribution License v1.0 which accompany this distribution.
+ *
+ * The Eclipse Public License is available at
+ *    http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ *   http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *    Ian Craggs - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+
+#ifndef MQTTSNPACKET_H_
+#define MQTTSNPACKET_H_
+
+#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
+extern "C" {
+#endif
+
+enum MQTTSN_errors
+{
+	MQTTSNPACKET_BUFFER_TOO_SHORT = -2,
+	MQTTSNPACKET_READ_ERROR = -1,
+	MQTTSNPACKET_READ_COMPLETE,
+};
+
+#define MQTTSN_PROTOCOL_VERSION 0x01
+
+enum MQTTSN_connackCodes
+{
+	MQTTSN_RC_ACCEPTED,
+	MQTTSN_RC_REJECTED_CONGESTED,
+	MQTTSN_RC_REJECTED_INVALID_TOPIC_ID,
+};
+
+enum MQTTSN_topicTypes
+{
+	MQTTSN_TOPIC_TYPE_NORMAL, /* topic id in publish, topic name in subscribe */
+	MQTTSN_TOPIC_TYPE_PREDEFINED,
+	MQTTSN_TOPIC_TYPE_SHORT,
+};
+
+
+enum MQTTSN_msgTypes
+{
+	MQTTSN_ADVERTISE, MQTTSN_SEARCHGW, MQTTSN_GWINFO, MQTTSN_RESERVED1, 
+	MQTTSN_CONNECT, MQTTSN_CONNACK,
+	MQTTSN_WILLTOPICREQ, MQTTSN_WILLTOPIC, MQTTSN_WILLMSGREQ, MQTTSN_WILLMSG, 
+	MQTTSN_REGISTER, MQTTSN_REGACK,
+	MQTTSN_PUBLISH, MQTTSN_PUBACK, MQTTSN_PUBCOMP, MQTTSN_PUBREC, MQTTSN_PUBREL, MQTTSN_RESERVED2,
+	MQTTSN_SUBSCRIBE, MQTTSN_SUBACK, MQTTSN_UNSUBSCRIBE, MQTTSN_UNSUBACK, 
+	MQTTSN_PINGREQ, MQTTSN_PINGRESP,
+	MQTTSN_DISCONNECT, MQTTSN_RESERVED3, 
+	MQTTSN_WILLTOPICUPD, MQTTSN_WILLTOPICRESP, MQTTSN_WILLMSGUPD, MQTTSN_WILLMSGRESP,
+};
+
+typedef struct
+{
+	enum MQTTSN_topicTypes type;
+	union
+	{
+		unsigned short id;
+		char short_name[2];
+		struct
+		{
+			char* name;
+			int len;
+		} long_;
+	} data;
+} MQTTSN_topicid;
+
 
+/**
+ * Bitfields for the MQTT-SN flags byte.
+ */
+typedef union
+{
+	unsigned char all;
+#if defined(REVERSED)
+	struct
+	{
+		int dup: 1;
+		unsigned int QoS : 2;
+		unsigned int retain : 1;
+		unsigned int will : 1;
+		unsigned int cleanSession : 1;
+		unsigned int topicIdType : 2;
+	} bits;
+#else
+	struct
+	{
+		unsigned int topicIdType : 2;
+		unsigned int cleanSession : 1;
+		unsigned int will : 1;
+		unsigned int retain : 1;
+		unsigned int QoS : 2;
+		int dup: 1;
+	} bits;
+#endif
+} MQTTSNFlags;
+
+
+typedef struct
+{
+	int len;
+	char* data;
+} MQTTSNLenString;
+
+typedef struct
+{
+	char* cstring;
+	MQTTSNLenString lenstring;
+} MQTTSNString;
+
+#define MQTTSNString_initializer {NULL, {0, NULL}}
+
+int MQTTSNstrlen(MQTTSNString mqttsnstring);
+
+#include "MQTTSNConnect.h"
+#include "MQTTSNPublish.h"
+#include "MQTTSNSubscribe.h"
+#include "MQTTSNUnsubscribe.h"
+#include "MQTTSNSearch.h"
+
+char* MQTTSNPacket_name(int ptype);
+int MQTTSNPacket_len(int length);
+
+int MQTTSNPacket_encode(unsigned char* buf, int length);
+int MQTTSNPacket_decode(unsigned char* buf, int buflen, int* value);
+
+int MQTTSNPacket_readInt(unsigned char** pptr);
+char MQTTSNPacket_readChar(unsigned char** pptr);
+void MQTTSNPacket_writeChar(unsigned char** pptr, char c);
+void MQTTSNPacket_writeInt(unsigned char** pptr, int anInt);
+int readMQTTSNString(MQTTSNString* mqttstring, unsigned char** pptr, unsigned char* enddata);
+void MQTTSNPacket_writeCString(unsigned char** pptr, char* string);
+void writeMQTTSNString(unsigned char** pptr, MQTTSNString mqttstring);
+
+int MQTTSNPacket_read(unsigned char* buf, int buflen, int (*getfn)(unsigned char*, int));
+
+#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */
+}
+#endif
+
+
+#endif /* MQTTSNPACKET_H_ */
+