MQTT version for enno SDK

Dependencies:   EthernetInterface MQTT mbed-rtos mbed serialzation_lib

Fork of HelloMQTT by MQTT

Committer:
weiarm2015
Date:
Wed Dec 02 01:54:31 2015 +0000
Revision:
21:c5f6350a292d
Parent:
20:3858e42b0cd3
This is a alpha version of enno SDK for mbed

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