Pavle Radojkovic / mbed-mqtt
Committer:
pavleradojkovic
Date:
Mon Jun 20 16:24:43 2022 +0000
Revision:
0:ba7e439238ab
Inital commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pavleradojkovic 0:ba7e439238ab 1 /**************************************************************************************
pavleradojkovic 0:ba7e439238ab 2 * Copyright (c) 2016, Tomoaki Yamaguchi
pavleradojkovic 0:ba7e439238ab 3 *
pavleradojkovic 0:ba7e439238ab 4 * All rights reserved. This program and the accompanying materials
pavleradojkovic 0:ba7e439238ab 5 * are made available under the terms of the Eclipse Public License v1.0
pavleradojkovic 0:ba7e439238ab 6 * and Eclipse Distribution License v1.0 which accompany this distribution.
pavleradojkovic 0:ba7e439238ab 7 *
pavleradojkovic 0:ba7e439238ab 8 * The Eclipse Public License is available at
pavleradojkovic 0:ba7e439238ab 9 * http://www.eclipse.org/legal/epl-v10.html
pavleradojkovic 0:ba7e439238ab 10 * and the Eclipse Distribution License is available at
pavleradojkovic 0:ba7e439238ab 11 * http://www.eclipse.org/org/documents/edl-v10.php.
pavleradojkovic 0:ba7e439238ab 12 *
pavleradojkovic 0:ba7e439238ab 13 * Contributors:
pavleradojkovic 0:ba7e439238ab 14 * Tomoaki Yamaguchi - initial API and implementation and/or initial documentation
pavleradojkovic 0:ba7e439238ab 15 **************************************************************************************/
pavleradojkovic 0:ba7e439238ab 16 #ifndef MQTTSNGWPACKET_H_
pavleradojkovic 0:ba7e439238ab 17 #define MQTTSNGWPACKET_H_
pavleradojkovic 0:ba7e439238ab 18
pavleradojkovic 0:ba7e439238ab 19 #include "MQTTSNGWDefines.h"
pavleradojkovic 0:ba7e439238ab 20 #include "MQTTSNPacket.h"
pavleradojkovic 0:ba7e439238ab 21 #include "SensorNetwork.h"
pavleradojkovic 0:ba7e439238ab 22
pavleradojkovic 0:ba7e439238ab 23 namespace MQTTSNGW
pavleradojkovic 0:ba7e439238ab 24 {
pavleradojkovic 0:ba7e439238ab 25
pavleradojkovic 0:ba7e439238ab 26 class MQTTSNPacket
pavleradojkovic 0:ba7e439238ab 27 {
pavleradojkovic 0:ba7e439238ab 28 public:
pavleradojkovic 0:ba7e439238ab 29 MQTTSNPacket(void);
pavleradojkovic 0:ba7e439238ab 30 MQTTSNPacket(MQTTSNPacket &packet);
pavleradojkovic 0:ba7e439238ab 31 ~MQTTSNPacket(void);
pavleradojkovic 0:ba7e439238ab 32 int unicast(SensorNetwork* network, SensorNetAddress* sendTo);
pavleradojkovic 0:ba7e439238ab 33 int broadcast(SensorNetwork* network);
pavleradojkovic 0:ba7e439238ab 34 int recv(SensorNetwork* network);
pavleradojkovic 0:ba7e439238ab 35 int serialize(uint8_t* buf);
pavleradojkovic 0:ba7e439238ab 36 int desirialize(unsigned char* buf, unsigned short len);
pavleradojkovic 0:ba7e439238ab 37 int getType(void);
pavleradojkovic 0:ba7e439238ab 38 unsigned char* getPacketData(void);
pavleradojkovic 0:ba7e439238ab 39 int getPacketLength(void);
pavleradojkovic 0:ba7e439238ab 40 const char* getName();
pavleradojkovic 0:ba7e439238ab 41
pavleradojkovic 0:ba7e439238ab 42 int setConnect(void); // Debug
pavleradojkovic 0:ba7e439238ab 43 int setADVERTISE(uint8_t gatewayid, uint16_t duration);
pavleradojkovic 0:ba7e439238ab 44 int setGWINFO(uint8_t gatewayId);
pavleradojkovic 0:ba7e439238ab 45 int setCONNACK(uint8_t returnCode);
pavleradojkovic 0:ba7e439238ab 46 int setWILLTOPICREQ(void);
pavleradojkovic 0:ba7e439238ab 47 int setWILLMSGREQ(void);
pavleradojkovic 0:ba7e439238ab 48 int setREGISTER(uint16_t topicId, uint16_t msgId, MQTTSNString* TopicName);
pavleradojkovic 0:ba7e439238ab 49 int setREGACK(uint16_t topicId, uint16_t msgId, uint8_t returnCode);
pavleradojkovic 0:ba7e439238ab 50 int setPUBLISH(uint8_t dup, int qos, uint8_t retained, uint16_t msgId,
pavleradojkovic 0:ba7e439238ab 51 MQTTSN_topicid topic, uint8_t* payload, uint16_t payloadlen);
pavleradojkovic 0:ba7e439238ab 52 int setPUBACK(uint16_t topicId, uint16_t msgId, uint8_t returnCode);
pavleradojkovic 0:ba7e439238ab 53 int setPUBREC(uint16_t msgId);
pavleradojkovic 0:ba7e439238ab 54 int setPUBREL(uint16_t msgId);
pavleradojkovic 0:ba7e439238ab 55 int setPUBCOMP(uint16_t msgId);
pavleradojkovic 0:ba7e439238ab 56 int setSUBACK(int qos, uint16_t topicId, uint16_t msgId, uint8_t returnCode);
pavleradojkovic 0:ba7e439238ab 57 int setUNSUBACK(uint16_t msgId);
pavleradojkovic 0:ba7e439238ab 58 int setPINGRESP(void);
pavleradojkovic 0:ba7e439238ab 59 int setDISCONNECT(uint16_t duration);
pavleradojkovic 0:ba7e439238ab 60 int setWILLTOPICRESP(uint8_t returnCode);
pavleradojkovic 0:ba7e439238ab 61 int setWILLMSGRESP(uint8_t returnCode);
pavleradojkovic 0:ba7e439238ab 62
pavleradojkovic 0:ba7e439238ab 63 int setCONNECT(MQTTSNPacket_connectData* options);
pavleradojkovic 0:ba7e439238ab 64 int setPINGREQ(MQTTSNString* clientId);
pavleradojkovic 0:ba7e439238ab 65
pavleradojkovic 0:ba7e439238ab 66 int getSERCHGW(uint8_t* radius);
pavleradojkovic 0:ba7e439238ab 67 int getCONNECT(MQTTSNPacket_connectData* option);
pavleradojkovic 0:ba7e439238ab 68 int getCONNACK(uint8_t* returnCode);
pavleradojkovic 0:ba7e439238ab 69 int getWILLTOPIC(int* willQoS, uint8_t* willRetain, MQTTSNString* willTopic);
pavleradojkovic 0:ba7e439238ab 70 int getWILLMSG(MQTTSNString* willmsg);
pavleradojkovic 0:ba7e439238ab 71 int getREGISTER(uint16_t* topicId, uint16_t* msgId, MQTTSNString* topicName);
pavleradojkovic 0:ba7e439238ab 72 int getREGACK(uint16_t* topicId, uint16_t* msgId, uint8_t* returnCode);
pavleradojkovic 0:ba7e439238ab 73 int getPUBLISH(uint8_t* dup, int* qos, uint8_t* retained, uint16_t* msgId,
pavleradojkovic 0:ba7e439238ab 74 MQTTSN_topicid* topic, unsigned char** payload, int* payloadlen);
pavleradojkovic 0:ba7e439238ab 75 int getPUBACK(uint16_t* topicId, uint16_t* msgId, uint8_t* returnCode);
pavleradojkovic 0:ba7e439238ab 76 int getACK(uint16_t* msgId);
pavleradojkovic 0:ba7e439238ab 77 int getSUBSCRIBE(uint8_t* dup, int* qos, uint16_t* msgId, MQTTSN_topicid* topicFilter);
pavleradojkovic 0:ba7e439238ab 78 int getUNSUBSCRIBE(uint16_t* msgId, MQTTSN_topicid* topicFilter);
pavleradojkovic 0:ba7e439238ab 79 int getPINGREQ(void);
pavleradojkovic 0:ba7e439238ab 80 int getDISCONNECT(uint16_t* duration);
pavleradojkovic 0:ba7e439238ab 81 int getWILLTOPICUPD(uint8_t* willQoS, uint8_t* willRetain, MQTTSNString* willTopic);
pavleradojkovic 0:ba7e439238ab 82 int getWILLMSGUPD(MQTTSNString* willMsg);
pavleradojkovic 0:ba7e439238ab 83
pavleradojkovic 0:ba7e439238ab 84 bool isAccepted(void);
pavleradojkovic 0:ba7e439238ab 85 bool isDuplicate(void);
pavleradojkovic 0:ba7e439238ab 86 bool isQoSMinusPUBLISH(void);
pavleradojkovic 0:ba7e439238ab 87 char* getMsgId(char* buf);
pavleradojkovic 0:ba7e439238ab 88 int getMsgId(void);
pavleradojkovic 0:ba7e439238ab 89 void setMsgId(uint16_t msgId);
pavleradojkovic 0:ba7e439238ab 90 char* print(char* buf);
pavleradojkovic 0:ba7e439238ab 91
pavleradojkovic 0:ba7e439238ab 92 private:
pavleradojkovic 0:ba7e439238ab 93 unsigned char* _buf; // Ptr to a packet data
pavleradojkovic 0:ba7e439238ab 94 int _bufLen; // length of the packet data
pavleradojkovic 0:ba7e439238ab 95 };
pavleradojkovic 0:ba7e439238ab 96
pavleradojkovic 0:ba7e439238ab 97 }
pavleradojkovic 0:ba7e439238ab 98 #endif /* MQTTSNGWPACKET_H_ */