MQTT version for enno SDK

Dependencies:   EthernetInterface MQTT mbed-rtos mbed serialzation_lib

Fork of HelloMQTT by MQTT

Committer:
weiarm2015
Date:
Wed Nov 25 07:07:31 2015 +0000
Revision:
20:3858e42b0cd3
Child:
21:c5f6350a292d
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
weiarm2015 20:3858e42b0cd3 1 /*
weiarm2015 20:3858e42b0cd3 2 * enno_api.h
weiarm2015 20:3858e42b0cd3 3 *
weiarm2015 20:3858e42b0cd3 4 * Created on: 2015年11月20日
weiarm2015 20:3858e42b0cd3 5 * Author: wzy
weiarm2015 20:3858e42b0cd3 6 */
weiarm2015 20:3858e42b0cd3 7
weiarm2015 20:3858e42b0cd3 8 #ifndef PROTOCOL_ENNO_API_H_
weiarm2015 20:3858e42b0cd3 9 #define PROTOCOL_ENNO_API_H_
weiarm2015 20:3858e42b0cd3 10
weiarm2015 20:3858e42b0cd3 11 //
weiarm2015 20:3858e42b0cd3 12 // Created by root on 11/10/15.
weiarm2015 20:3858e42b0cd3 13 //
weiarm2015 20:3858e42b0cd3 14 #if definded(__cplusplus)
weiarm2015 20:3858e42b0cd3 15 extern "C" {
weiarm2015 20:3858e42b0cd3 16 #endif
weiarm2015 20:3858e42b0cd3 17
weiarm2015 20:3858e42b0cd3 18 #include "stddef.h"
weiarm2015 20:3858e42b0cd3 19 #include "stdbool.h"
weiarm2015 20:3858e42b0cd3 20 #include "stdint.h"
weiarm2015 20:3858e42b0cd3 21 #include "enno_error.h"
weiarm2015 20:3858e42b0cd3 22 #include "enno_config.h"
weiarm2015 20:3858e42b0cd3 23
weiarm2015 20:3858e42b0cd3 24
weiarm2015 20:3858e42b0cd3 25
weiarm2015 20:3858e42b0cd3 26 typedef struct {
weiarm2015 20:3858e42b0cd3 27 char *pHardwareId;
weiarm2015 20:3858e42b0cd3 28 char *pSpecificationToken;
weiarm2015 20:3858e42b0cd3 29 char *pOriginator;
weiarm2015 20:3858e42b0cd3 30 } Register_enno;
weiarm2015 20:3858e42b0cd3 31
weiarm2015 20:3858e42b0cd3 32 typedef struct {
weiarm2015 20:3858e42b0cd3 33 char *pHardwareId;
weiarm2015 20:3858e42b0cd3 34 char *pMessage;
weiarm2015 20:3858e42b0cd3 35 char *pOriginator;
weiarm2015 20:3858e42b0cd3 36 } Acknowledge_enno;
weiarm2015 20:3858e42b0cd3 37
weiarm2015 20:3858e42b0cd3 38 typedef struct {
weiarm2015 20:3858e42b0cd3 39 char *pHardwareId;
weiarm2015 20:3858e42b0cd3 40 char *pName;
weiarm2015 20:3858e42b0cd3 41 char *pOriginator;
weiarm2015 20:3858e42b0cd3 42 float value;
weiarm2015 20:3858e42b0cd3 43 int64_t eventDate;
weiarm2015 20:3858e42b0cd3 44 } Measurement_enno;
weiarm2015 20:3858e42b0cd3 45
weiarm2015 20:3858e42b0cd3 46 typedef struct {
weiarm2015 20:3858e42b0cd3 47 char *pHardwareId;
weiarm2015 20:3858e42b0cd3 48 char *pOriginator;
weiarm2015 20:3858e42b0cd3 49 float lat;
weiarm2015 20:3858e42b0cd3 50 float lon;
weiarm2015 20:3858e42b0cd3 51 float ele;
weiarm2015 20:3858e42b0cd3 52 int64_t eventDate;
weiarm2015 20:3858e42b0cd3 53 } Location_enno;
weiarm2015 20:3858e42b0cd3 54
weiarm2015 20:3858e42b0cd3 55 typedef struct {
weiarm2015 20:3858e42b0cd3 56 char *pHardwareId;
weiarm2015 20:3858e42b0cd3 57 char *pAlertType;
weiarm2015 20:3858e42b0cd3 58 char *pAlertMessage;
weiarm2015 20:3858e42b0cd3 59 char *pOriginator;
weiarm2015 20:3858e42b0cd3 60 int64_t eventDate;
weiarm2015 20:3858e42b0cd3 61 } Alert_enno;
weiarm2015 20:3858e42b0cd3 62
weiarm2015 20:3858e42b0cd3 63 typedef struct {
weiarm2015 20:3858e42b0cd3 64 char messageType;
weiarm2015 20:3858e42b0cd3 65 Register_enno Register;
weiarm2015 20:3858e42b0cd3 66 Acknowledge_enno Acknowledge;
weiarm2015 20:3858e42b0cd3 67 Measurement_enno Measurement;
weiarm2015 20:3858e42b0cd3 68 Location_enno Location;
weiarm2015 20:3858e42b0cd3 69 Alert_enno Alert;
weiarm2015 20:3858e42b0cd3 70 } EnnoMessages;
weiarm2015 20:3858e42b0cd3 71 //extern EnnoMessages EnnoMessagesDefault;
weiarm2015 20:3858e42b0cd3 72 EnnoMessages EnnoMessagesDefault = {
weiarm2015 20:3858e42b0cd3 73 .messageType = 'R',
weiarm2015 20:3858e42b0cd3 74 .Register = {.pHardwareId = "enno-default-test-id-11", .pSpecificationToken = "417b36a8-21ef-4196-a8fe-cc756f994d0b", .pOriginator = NULL}, //7dfd6d63-5e8d-4380-be04-fc5c73801dfb
weiarm2015 20:3858e42b0cd3 75 .Acknowledge = {.pMessage = NULL, .pOriginator = NULL},
weiarm2015 20:3858e42b0cd3 76 .Measurement = {.pName = "Temperature", .pOriginator = NULL, .value = 16, .eventDate = 0},
weiarm2015 20:3858e42b0cd3 77 .Location = {.pOriginator = NULL, .lat = 27.59, .lon = 86.5, .ele = 8844.43, .eventDate = 0},
weiarm2015 20:3858e42b0cd3 78 .Alert = {.pAlertType = "enno.info", .pAlertMessage = "I am alive", .pOriginator = NULL, .eventDate = 0}
weiarm2015 20:3858e42b0cd3 79 };
weiarm2015 20:3858e42b0cd3 80
weiarm2015 20:3858e42b0cd3 81 /**
weiarm2015 20:3858e42b0cd3 82 * @brief Handles the system callback message
weiarm2015 20:3858e42b0cd3 83 *
weiarm2015 20:3858e42b0cd3 84 * params: topic the topic subscribed by client
weiarm2015 20:3858e42b0cd3 85 * payload the received payload
weiarm2015 20:3858e42b0cd3 86 * length the length of payload
weiarm2015 20:3858e42b0cd3 87 *
weiarm2015 20:3858e42b0cd3 88 */
weiarm2015 20:3858e42b0cd3 89 void ennoSystemMessageHandler(char* topic, char* payload, int length);
weiarm2015 20:3858e42b0cd3 90
weiarm2015 20:3858e42b0cd3 91 /**
weiarm2015 20:3858e42b0cd3 92 * @brief Connection Function
weiarm2015 20:3858e42b0cd3 93 *
weiarm2015 20:3858e42b0cd3 94 * Called to establish an connection with the Enno IoT Service
weiarm2015 20:3858e42b0cd3 95 *
weiarm2015 20:3858e42b0cd3 96 * @param: HostURL the website address to connect
weiarm2015 20:3858e42b0cd3 97 * port listening port
weiarm2015 20:3858e42b0cd3 98 * appKey a key for authentication
weiarm2015 20:3858e42b0cd3 99 * @return An IoT Error Type defining successful/failed connection
weiarm2015 20:3858e42b0cd3 100 */
weiarm2015 20:3858e42b0cd3 101
weiarm2015 20:3858e42b0cd3 102 Error_t enno_connect(char *HostURL, uint16_t port, char *appKey);
weiarm2015 20:3858e42b0cd3 103
weiarm2015 20:3858e42b0cd3 104 /**
weiarm2015 20:3858e42b0cd3 105 * @brief Subscribe to a topic.
weiarm2015 20:3858e42b0cd3 106 *
weiarm2015 20:3858e42b0cd3 107 * Called to send a subscribe message to the broker
weiarm2015 20:3858e42b0cd3 108 *
weiarm2015 20:3858e42b0cd3 109 * @param: Topic Pointer to a Topic
weiarm2015 20:3858e42b0cd3 110 * callback Pointer to a callback function
weiarm2015 20:3858e42b0cd3 111 * @return An IoT Error Type defining successful/failed subscription
weiarm2015 20:3858e42b0cd3 112 */
weiarm2015 20:3858e42b0cd3 113 Error_t enno_subscribe(char *topic, void *callback);
weiarm2015 20:3858e42b0cd3 114 /**
weiarm2015 20:3858e42b0cd3 115 * @brief Publish a message to a path
weiarm2015 20:3858e42b0cd3 116 *
weiarm2015 20:3858e42b0cd3 117 * Called to publish a message to a path.
weiarm2015 20:3858e42b0cd3 118 *
weiarm2015 20:3858e42b0cd3 119 * @param: path the destination of message sent to
weiarm2015 20:3858e42b0cd3 120 * messages_enno Pointer to the published message
weiarm2015 20:3858e42b0cd3 121 * @return An IoT Error Type defining successful/failed publish
weiarm2015 20:3858e42b0cd3 122 */
weiarm2015 20:3858e42b0cd3 123
weiarm2015 20:3858e42b0cd3 124 //Error_t enno_publish(char path, EnnoParams *Params_enno, PublishParams *pParams);
weiarm2015 20:3858e42b0cd3 125 Error_t enno_publish(char *path, EnnoMessages *messages_enno);
weiarm2015 20:3858e42b0cd3 126 /**
weiarm2015 20:3858e42b0cd3 127 * @brief Unsubscribe to an topic.
weiarm2015 20:3858e42b0cd3 128 *
weiarm2015 20:3858e42b0cd3 129 * Called to send an usubscribe message to the broker requesting removal of a subscription
weiarm2015 20:3858e42b0cd3 130 * to a topic.
weiarm2015 20:3858e42b0cd3 131 *
weiarm2015 20:3858e42b0cd3 132 * @param: pTopic Pointer to the requested topic string. Ensure the string is null terminated
weiarm2015 20:3858e42b0cd3 133 * @return An IoT Error Type defining successful/failed unsubscription
weiarm2015 20:3858e42b0cd3 134 */
weiarm2015 20:3858e42b0cd3 135 Error_t enno_unsubscribe(char *pTopic);
weiarm2015 20:3858e42b0cd3 136
weiarm2015 20:3858e42b0cd3 137 /**
weiarm2015 20:3858e42b0cd3 138 * @brief Disconnect a Connection
weiarm2015 20:3858e42b0cd3 139 *
weiarm2015 20:3858e42b0cd3 140 * Called to send a disconnect message to the broker.
weiarm2015 20:3858e42b0cd3 141 *
weiarm2015 20:3858e42b0cd3 142 * @return An IoT Error Type defining successful/failed send of the disconnect control packet.
weiarm2015 20:3858e42b0cd3 143 */
weiarm2015 20:3858e42b0cd3 144 Error_t enno_disconnect();
weiarm2015 20:3858e42b0cd3 145
weiarm2015 20:3858e42b0cd3 146 /**
weiarm2015 20:3858e42b0cd3 147 * @brief Yield to the client
weiarm2015 20:3858e42b0cd3 148 *
weiarm2015 20:3858e42b0cd3 149 * Called to yield the current thread to the underlying client.
weiarm2015 20:3858e42b0cd3 150 *
weiarm2015 20:3858e42b0cd3 151 * @param timeout Maximum number of milliseconds to pass thread execution to the client.
weiarm2015 20:3858e42b0cd3 152 * @return An IoT Error Type defining successful/failed client processing.
weiarm2015 20:3858e42b0cd3 153 */
weiarm2015 20:3858e42b0cd3 154
weiarm2015 20:3858e42b0cd3 155 Error_t enno_loop(int timeout);
weiarm2015 20:3858e42b0cd3 156 #ifdef __cplusplus
weiarm2015 20:3858e42b0cd3 157 }
weiarm2015 20:3858e42b0cd3 158 #endif
weiarm2015 20:3858e42b0cd3 159
weiarm2015 20:3858e42b0cd3 160 #endif /* PROTOCOL_ENNO_API_H_ */