MQTT version for enno SDK
Dependencies: EthernetInterface MQTT mbed-rtos mbed serialzation_lib
Fork of HelloMQTT by
protocol/enno_api.h@20:3858e42b0cd3, 2015-11-25 (annotated)
- Committer:
- weiarm2015
- Date:
- Wed Nov 25 07:07:31 2015 +0000
- Revision:
- 20:3858e42b0cd3
- Child:
- 21:c5f6350a292d
?
Who changed what in which revision?
User | Revision | Line number | New 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_ */ |