Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mbed_mqtt_endpoint_ublox_ethernet mbed_mqtt_endpoint_ublox_cellular mbed_mqtt_endpoint_nxp
MQTTTransport.h
00001 /* Copyright C2013 Doug Anson, MIT License 00002 * 00003 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software 00004 * and associated documentation files the "Software", to deal in the Software without restriction, 00005 * including without limitation the rights to use, copy, modify, merge, publish, distribute, 00006 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 00007 * furnished to do so, subject to the following conditions: 00008 * 00009 * The above copyright notice and this permission notice shall be included in all copies or 00010 * substantial portions of the Software. 00011 * 00012 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 00013 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 00014 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 00015 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00016 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00017 */ 00018 00019 #ifndef ___MQTTTRANSPORT_H_ 00020 #define ___MQTTTRANSPORT_H_ 00021 00022 // Base Class 00023 #include "Transport.h" 00024 00025 // MQTT Support 00026 #include "PubSubClient.h" 00027 00028 // MBED to IOC Resource Map 00029 #include "MBEDToIOCResourceMap.h" 00030 00031 class MQTTTransport : public Transport { 00032 private: 00033 PubSubClient *m_mqtt; 00034 MBEDToIOCResourceMap *m_map; 00035 char m_topic[MQTT_IOC_TOPIC_LEN+1]; 00036 char m_endpoint_name[PERSONALITY_NAME_LEN+1]; 00037 int m_ping_counter; 00038 int m_ping_countdown; 00039 00040 public: 00041 MQTTTransport(Logger *logger,void *endpoint,MBEDToIOCResourceMap *map); 00042 virtual ~MQTTTransport(); 00043 00044 void processMessage(char *message_name,char *payload, unsigned int payload_length); 00045 00046 virtual bool connect(); 00047 virtual bool disconnect(); 00048 00049 virtual void checkAndProcess(); 00050 00051 char *getEndpointNameFromTopic(char *topic); 00052 00053 bool isPongMessage(char *topic,char *payload,int payload_length); 00054 void processPongMessage(char *payload,int payload_length); 00055 00056 private: 00057 char *makeID(char *id_template, char *buffer); 00058 void initTopic(); 00059 char *getTopic(); 00060 char *mapIOCResourceToEndpointResource(char *ioc_name); 00061 void sendResult(char *endpoint_name,char *parameter_name,char *value,bool success); 00062 MBEDToIOCResourceMap *getMap(); 00063 bool isDimmingResource(char *resource); 00064 bool sendPingMessage(); 00065 }; 00066 00067 #endif // ___MQTTTRANSPORT_H_
Generated on Thu Jul 14 2022 16:49:25 by
1.7.2