Host library for controlling a WiConnect enabled Wi-Fi module.

Dependents:   wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more

Committer:
aymangrais
Date:
Mon Sep 28 03:38:43 2015 +0000
Revision:
42:8ffb253b09e7
Parent:
34:2616445d0823
increase ota timeout to be 5 seconds (instead of 1.5 sec)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 29:b6af04b77a56 1 /**
dan_ackme 29:b6af04b77a56 2 * ACKme WiConnect Host Library is licensed under the BSD licence:
dan_ackme 29:b6af04b77a56 3 *
dan_ackme 29:b6af04b77a56 4 * Copyright (c)2014 ACKme Networks.
dan_ackme 29:b6af04b77a56 5 * All rights reserved.
dan_ackme 29:b6af04b77a56 6 *
dan_ackme 29:b6af04b77a56 7 * Redistribution and use in source and binary forms, with or without modification,
dan_ackme 29:b6af04b77a56 8 * are permitted provided that the following conditions are met:
dan_ackme 29:b6af04b77a56 9 *
dan_ackme 29:b6af04b77a56 10 * 1. Redistributions of source code must retain the above copyright notice,
dan_ackme 29:b6af04b77a56 11 * this list of conditions and the following disclaimer.
dan_ackme 29:b6af04b77a56 12 * 2. Redistributions in binary form must reproduce the above copyright notice,
dan_ackme 29:b6af04b77a56 13 * this list of conditions and the following disclaimer in the documentation
dan_ackme 29:b6af04b77a56 14 * and/or other materials provided with the distribution.
dan_ackme 29:b6af04b77a56 15 * 3. The name of the author may not be used to endorse or promote products
dan_ackme 29:b6af04b77a56 16 * derived from this software without specific prior written permission.
dan_ackme 29:b6af04b77a56 17 *
dan_ackme 29:b6af04b77a56 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
dan_ackme 29:b6af04b77a56 19 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
dan_ackme 29:b6af04b77a56 20 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
dan_ackme 29:b6af04b77a56 21 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
dan_ackme 29:b6af04b77a56 22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
dan_ackme 29:b6af04b77a56 23 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
dan_ackme 29:b6af04b77a56 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
dan_ackme 29:b6af04b77a56 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
dan_ackme 29:b6af04b77a56 26 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
dan_ackme 29:b6af04b77a56 27 * OF SUCH DAMAGE.
dan_ackme 29:b6af04b77a56 28 */
dan_ackme 29:b6af04b77a56 29 #pragma once
dan_ackme 29:b6af04b77a56 30
dan_ackme 29:b6af04b77a56 31 #include "Wiconnect.h"
dan_ackme 29:b6af04b77a56 32
dan_ackme 29:b6af04b77a56 33 #include "api/types/WiconnectSocket.h"
dan_ackme 29:b6af04b77a56 34 #include "api/types/GhmMessageList.h"
dan_ackme 29:b6af04b77a56 35
dan_ackme 29:b6af04b77a56 36 /**
dan_ackme 29:b6af04b77a56 37 * @namespace wiconnect
dan_ackme 29:b6af04b77a56 38 */
dan_ackme 29:b6af04b77a56 39 namespace wiconnect {
dan_ackme 29:b6af04b77a56 40
dan_ackme 29:b6af04b77a56 41 /**
dan_ackme 34:2616445d0823 42 * @ingroup api_ghm_macro
dan_ackme 29:b6af04b77a56 43 * @brief Helper macro for adding an integer value to a @ref GhmElementArray
dan_ackme 29:b6af04b77a56 44 */
dan_ackme 29:b6af04b77a56 45 #define GHM_ADD_INT(array, name, integerVal) \
dan_ackme 29:b6af04b77a56 46 { \
dan_ackme 29:b6af04b77a56 47 array.elementName = name; \
dan_ackme 29:b6af04b77a56 48 array.type = GHM_VALUE_INT; \
dan_ackme 29:b6af04b77a56 49 array.u.intValue = (uint32_t)integerVal; \
dan_ackme 29:b6af04b77a56 50 }
dan_ackme 29:b6af04b77a56 51
dan_ackme 29:b6af04b77a56 52
dan_ackme 29:b6af04b77a56 53 /**
dan_ackme 34:2616445d0823 54 * @ingroup api_ghm_macro
dan_ackme 29:b6af04b77a56 55 * @brief Helper macro for adding a string value to a @ref GhmElementArray
dan_ackme 29:b6af04b77a56 56 */
dan_ackme 29:b6af04b77a56 57 #define GHM_ADD_STR(array, name, stringVal) \
dan_ackme 29:b6af04b77a56 58 { \
dan_ackme 29:b6af04b77a56 59 array.elementName = name; \
dan_ackme 29:b6af04b77a56 60 array.type = GHM_VALUE_STR; \
dan_ackme 29:b6af04b77a56 61 array.u.strValue = (const char*)stringVal; \
dan_ackme 29:b6af04b77a56 62 }
dan_ackme 29:b6af04b77a56 63
dan_ackme 29:b6af04b77a56 64
dan_ackme 29:b6af04b77a56 65
dan_ackme 29:b6af04b77a56 66
dan_ackme 29:b6af04b77a56 67 /**
dan_ackme 29:b6af04b77a56 68 * @ingroup api_ghm_types
dan_ackme 29:b6af04b77a56 69 *
dan_ackme 29:b6af04b77a56 70 * @brief The provides an interface for http://goHACK.me
dan_ackme 29:b6af04b77a56 71 *
dan_ackme 29:b6af04b77a56 72 * The goHACK.me API provided by WiConnect enables monitoring and control of your ACKme device.
dan_ackme 29:b6af04b77a56 73 * You can set up a goHACK.me account, then using goHACK.me commands and goHACK.me variables,
dan_ackme 29:b6af04b77a56 74 * you can activate your device and synchronize data, control and messages with the goHACK.me cloud service.
dan_ackme 29:b6af04b77a56 75 *
dan_ackme 29:b6af04b77a56 76 * More information here: http://wiconnect.ack.me/2.0/gohackme
dan_ackme 29:b6af04b77a56 77 *
dan_ackme 29:b6af04b77a56 78 * @note This class is an interface to the Wiconnect class. It should never be
dan_ackme 29:b6af04b77a56 79 * independently instantiated or the parent of another class.
dan_ackme 29:b6af04b77a56 80 */
dan_ackme 29:b6af04b77a56 81 class GhmInterface
dan_ackme 29:b6af04b77a56 82 {
dan_ackme 29:b6af04b77a56 83 public:
dan_ackme 29:b6af04b77a56 84
dan_ackme 29:b6af04b77a56 85 /**
dan_ackme 29:b6af04b77a56 86 * @ingroup api_ghm_activate
dan_ackme 29:b6af04b77a56 87 *
dan_ackme 29:b6af04b77a56 88 * @brief Download a device capabilities file to WiFi module's internal
dan_ackme 29:b6af04b77a56 89 * file system.
dan_ackme 29:b6af04b77a56 90 *
dan_ackme 29:b6af04b77a56 91 * @param[in] capsNameOrCustomUrl Optional, specify the caps file name or URL to caps file
dan_ackme 29:b6af04b77a56 92 * @param[in] version Optional, version to set downloaded caps file as
dan_ackme 29:b6af04b77a56 93 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 94 */
dan_ackme 29:b6af04b77a56 95 WiconnectResult ghmDownloadCapabilities(const char *capsNameOrCustomUrl = NULL, uint32_t version = 0);
dan_ackme 29:b6af04b77a56 96
dan_ackme 29:b6af04b77a56 97 /**
dan_ackme 29:b6af04b77a56 98 * @ingroup api_ghm_activate
dan_ackme 29:b6af04b77a56 99 *
dan_ackme 29:b6af04b77a56 100 * @brief Activate WiFi module with http://goHACK.me
dan_ackme 29:b6af04b77a56 101 *
dan_ackme 29:b6af04b77a56 102 * @note You must first sign-up with http://goHACK.me before you can
dan_ackme 29:b6af04b77a56 103 * activate the device. Go to http://goHACK.me to sign-up.
dan_ackme 29:b6af04b77a56 104 *
dan_ackme 29:b6af04b77a56 105 * @param[in] userName Your username
dan_ackme 29:b6af04b77a56 106 * @param[in] password Your password
dan_ackme 29:b6af04b77a56 107 * @param[in] capsFilename Optional, filename of existing capabilities file on module's internal file system.
dan_ackme 29:b6af04b77a56 108 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 109 */
dan_ackme 29:b6af04b77a56 110 WiconnectResult ghmActivate(const char *userName, const char *password, const char *capsFilename = NULL);
dan_ackme 29:b6af04b77a56 111
dan_ackme 29:b6af04b77a56 112 /**
dan_ackme 29:b6af04b77a56 113 * @ingroup api_ghm_activate
dan_ackme 29:b6af04b77a56 114 *
dan_ackme 29:b6af04b77a56 115 * @brief Deactivate WiFi module with http://goHACK.me
dan_ackme 29:b6af04b77a56 116 *
dan_ackme 29:b6af04b77a56 117 * @note You must first sign-up with http://goHACK.me before you can
dan_ackme 29:b6af04b77a56 118 * deactivate the device. Go to http://goHACK.me to sign-up.
dan_ackme 29:b6af04b77a56 119 *
dan_ackme 29:b6af04b77a56 120 * @param[in] userName Your username
dan_ackme 29:b6af04b77a56 121 * @param[in] password Your password
dan_ackme 29:b6af04b77a56 122 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 123 */
dan_ackme 29:b6af04b77a56 124 WiconnectResult ghmDeactivate(const char *userName, const char *password);
dan_ackme 29:b6af04b77a56 125
dan_ackme 29:b6af04b77a56 126 /**
dan_ackme 29:b6af04b77a56 127 * @ingroup api_ghm_activate
dan_ackme 29:b6af04b77a56 128 *
dan_ackme 29:b6af04b77a56 129 * @brief Return if WiFi module is activated with http://goHACK.me
dan_ackme 29:b6af04b77a56 130 *
dan_ackme 29:b6af04b77a56 131 * @param[out] statusPtr Pointer to hold activation status.
dan_ackme 29:b6af04b77a56 132 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 133 */
dan_ackme 29:b6af04b77a56 134 WiconnectResult ghmIsActivated(bool *statusPtr);
dan_ackme 29:b6af04b77a56 135
dan_ackme 29:b6af04b77a56 136
dan_ackme 29:b6af04b77a56 137 // ------------------------------------------------------------------------
dan_ackme 29:b6af04b77a56 138
dan_ackme 29:b6af04b77a56 139
dan_ackme 29:b6af04b77a56 140 /**
dan_ackme 29:b6af04b77a56 141 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 142 *
dan_ackme 29:b6af04b77a56 143 * @brief Read control data from http://goHACK.me
dan_ackme 29:b6af04b77a56 144 *
dan_ackme 29:b6af04b77a56 145 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 146 *
dan_ackme 29:b6af04b77a56 147 * @param[in] controlName The name of the control in the activated capabilities file.
dan_ackme 29:b6af04b77a56 148 * @param[in] valueStrPtr Pointer to pointer to hold control's string value
dan_ackme 29:b6af04b77a56 149 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 150 */
dan_ackme 29:b6af04b77a56 151 WiconnectResult ghmRead(const char *controlName, const char **valueStrPtr);
dan_ackme 29:b6af04b77a56 152
dan_ackme 29:b6af04b77a56 153 /**
dan_ackme 29:b6af04b77a56 154 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 155 *
dan_ackme 29:b6af04b77a56 156 * @brief Read control data from http://goHACK.me
dan_ackme 29:b6af04b77a56 157 *
dan_ackme 29:b6af04b77a56 158 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 159 *
dan_ackme 29:b6af04b77a56 160 * @param[in] controlName The name of the control in the activated capabilities file.
dan_ackme 29:b6af04b77a56 161 * @param[in] valueIntPtr Pointer hold control's integer value
dan_ackme 29:b6af04b77a56 162 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 163 */
dan_ackme 29:b6af04b77a56 164 WiconnectResult ghmRead(const char *controlName, uint32_t *valueIntPtr);
dan_ackme 29:b6af04b77a56 165
dan_ackme 29:b6af04b77a56 166 /**
dan_ackme 29:b6af04b77a56 167 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 168 *
dan_ackme 29:b6af04b77a56 169 * @brief Read control data from http://goHACK.me
dan_ackme 29:b6af04b77a56 170 *
dan_ackme 29:b6af04b77a56 171 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 172 *
dan_ackme 29:b6af04b77a56 173 * @param[in] controlName The name of the control in the activated capabilities file.
dan_ackme 29:b6af04b77a56 174 * @param[in] valueBuffer Buffer to hold control's string value
dan_ackme 29:b6af04b77a56 175 * @param[in] valueBufferLen Length of valueBuffer
dan_ackme 29:b6af04b77a56 176 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 177 */
dan_ackme 29:b6af04b77a56 178 WiconnectResult ghmRead(const char *controlName, char *valueBuffer, uint16_t valueBufferLen);
dan_ackme 29:b6af04b77a56 179
dan_ackme 29:b6af04b77a56 180 /**
dan_ackme 29:b6af04b77a56 181 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 182 *
dan_ackme 29:b6af04b77a56 183 * @brief Write stream or control data to http://goHACK.me
dan_ackme 29:b6af04b77a56 184 *
dan_ackme 29:b6af04b77a56 185 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 186 *
dan_ackme 29:b6af04b77a56 187 * @param[in] elementName The name of the control or stream in the activated capabilities file.
dan_ackme 29:b6af04b77a56 188 * @param[in] strValue String value of control or stream
dan_ackme 29:b6af04b77a56 189 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 190 */
dan_ackme 29:b6af04b77a56 191 WiconnectResult ghmWrite(const char *elementName, const char *strValue);
dan_ackme 29:b6af04b77a56 192
dan_ackme 29:b6af04b77a56 193 /**
dan_ackme 29:b6af04b77a56 194 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 195 *
dan_ackme 29:b6af04b77a56 196 * @brief Write stream or control data to http://goHACK.me
dan_ackme 29:b6af04b77a56 197 *
dan_ackme 29:b6af04b77a56 198 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 199 *
dan_ackme 29:b6af04b77a56 200 * @param[in] elementName The name of the control or stream in the activated capabilities file.
dan_ackme 29:b6af04b77a56 201 * @param[in] uintValue Unsigned integer value of control or stream
dan_ackme 29:b6af04b77a56 202 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 203 */
dan_ackme 29:b6af04b77a56 204 WiconnectResult ghmWrite(const char *elementName, uint32_t uintValue);
dan_ackme 29:b6af04b77a56 205
dan_ackme 29:b6af04b77a56 206 /**
dan_ackme 29:b6af04b77a56 207 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 208 *
dan_ackme 29:b6af04b77a56 209 * @brief Write stream or control data to http://goHACK.me
dan_ackme 29:b6af04b77a56 210 *
dan_ackme 29:b6af04b77a56 211 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 212 *
dan_ackme 29:b6af04b77a56 213 * @param[in] elementName The name of the control or stream in the activated capabilities file.
dan_ackme 29:b6af04b77a56 214 * @param[in] intValue signed integer value of control or stream
dan_ackme 29:b6af04b77a56 215 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 216 */
dan_ackme 29:b6af04b77a56 217 WiconnectResult ghmWrite(const char *elementName, int32_t intValue);
dan_ackme 29:b6af04b77a56 218
dan_ackme 29:b6af04b77a56 219 /**
dan_ackme 29:b6af04b77a56 220 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 221 *
dan_ackme 29:b6af04b77a56 222 * @brief Write stream or control data to http://goHACK.me
dan_ackme 29:b6af04b77a56 223 *
dan_ackme 29:b6af04b77a56 224 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 225 *
dan_ackme 29:b6af04b77a56 226 * @param[in] elementArray Array of stream and/or control values to send to http://goHACK.me
dan_ackme 29:b6af04b77a56 227 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 228 */
dan_ackme 29:b6af04b77a56 229 WiconnectResult ghmWrite(const GhmElementArray *elementArray);
dan_ackme 29:b6af04b77a56 230
dan_ackme 29:b6af04b77a56 231 /**
dan_ackme 29:b6af04b77a56 232 * @ingroup api_ghm_com
dan_ackme 29:b6af04b77a56 233 *
dan_ackme 29:b6af04b77a56 234 * @brief Synchronize WiFi module with http://goHACK.me
dan_ackme 29:b6af04b77a56 235 *
dan_ackme 29:b6af04b77a56 236 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 237 *
dan_ackme 29:b6af04b77a56 238 * @param[in] type Type of synchronization. See @ref GhmSyncType
dan_ackme 29:b6af04b77a56 239 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 240 */
dan_ackme 29:b6af04b77a56 241 WiconnectResult ghmSynchronize(GhmSyncType type = GHM_SYNC_ALL);
dan_ackme 29:b6af04b77a56 242
dan_ackme 29:b6af04b77a56 243
dan_ackme 29:b6af04b77a56 244 // ------------------------------------------------------------------------
dan_ackme 29:b6af04b77a56 245
dan_ackme 29:b6af04b77a56 246
dan_ackme 29:b6af04b77a56 247 /**
dan_ackme 29:b6af04b77a56 248 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 249 *
dan_ackme 29:b6af04b77a56 250 * @brief POST message to http://goHACK.me
dan_ackme 29:b6af04b77a56 251 *
dan_ackme 29:b6af04b77a56 252 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 253 *
dan_ackme 29:b6af04b77a56 254 * @param[out] socket @ref WiconnectSocket used to send message data to http://goHACK.me
dan_ackme 29:b6af04b77a56 255 * @param[in] jsonFormatted If true, the input message data should be JSON formatted, else the message data should be ASCII formatted.
dan_ackme 29:b6af04b77a56 256 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 257 */
dan_ackme 29:b6af04b77a56 258 WiconnectResult ghmPostMessage(WiconnectSocket &socket, bool jsonFormatted=false);
dan_ackme 29:b6af04b77a56 259
dan_ackme 29:b6af04b77a56 260 /**
dan_ackme 29:b6af04b77a56 261 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 262 *
dan_ackme 29:b6af04b77a56 263 * @brief GET message from http://goHACK.me
dan_ackme 29:b6af04b77a56 264 *
dan_ackme 29:b6af04b77a56 265 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 266 *
dan_ackme 29:b6af04b77a56 267 * @param[out] socket @ref WiconnectSocket used to receive message data from http://goHACK.me
dan_ackme 29:b6af04b77a56 268 * @param[in] getType The additional message data to receive. See @ref GhmMessageGetType
dan_ackme 29:b6af04b77a56 269 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 270 */
dan_ackme 29:b6af04b77a56 271 WiconnectResult ghmGetMessage(WiconnectSocket &socket, GhmMessageGetType getType = GHM_MSG_GET_DATA_ONLY);
dan_ackme 29:b6af04b77a56 272
dan_ackme 29:b6af04b77a56 273 /**
dan_ackme 29:b6af04b77a56 274 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 275 *
dan_ackme 29:b6af04b77a56 276 * @brief GET message from http://goHACK.me
dan_ackme 29:b6af04b77a56 277 *
dan_ackme 29:b6af04b77a56 278 * @note @ref ghmListMessages() must be called first before using this method.
dan_ackme 29:b6af04b77a56 279 *
dan_ackme 29:b6af04b77a56 280 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 281 *
dan_ackme 29:b6af04b77a56 282 * @param[out] socket @ref WiconnectSocket used to receive message data from http://goHACK.me
dan_ackme 29:b6af04b77a56 283 * @param[in] listIndex The index of the message returned from ghmListMessages()
dan_ackme 29:b6af04b77a56 284 * @param[in] getType The additional message data to receive. See @ref GhmMessageGetType
dan_ackme 29:b6af04b77a56 285 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 286 */
dan_ackme 29:b6af04b77a56 287 WiconnectResult ghmGetMessage(WiconnectSocket &socket, uint8_t listIndex, GhmMessageGetType getType = GHM_MSG_GET_DATA_ONLY);
dan_ackme 29:b6af04b77a56 288
dan_ackme 29:b6af04b77a56 289 /**
dan_ackme 29:b6af04b77a56 290 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 291 *
dan_ackme 29:b6af04b77a56 292 * @brief GET message from http://goHACK.me
dan_ackme 29:b6af04b77a56 293 *
dan_ackme 29:b6af04b77a56 294 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 295 *
dan_ackme 29:b6af04b77a56 296 * @param[out] socket @ref WiconnectSocket used to receive message data from http://goHACK.me
dan_ackme 29:b6af04b77a56 297 * @param[in] msgId The http://goHACK.me message ID.
dan_ackme 29:b6af04b77a56 298 * @param[in] getType The additional message data to receive. See @ref GhmMessageGetType
dan_ackme 29:b6af04b77a56 299 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 300 */
dan_ackme 29:b6af04b77a56 301 WiconnectResult ghmGetMessage(WiconnectSocket &socket, const char *msgId, GhmMessageGetType getType = GHM_MSG_GET_DATA_ONLY);
dan_ackme 29:b6af04b77a56 302
dan_ackme 29:b6af04b77a56 303 /**
dan_ackme 29:b6af04b77a56 304 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 305 *
dan_ackme 29:b6af04b77a56 306 * @brief Delete message from http://goHACK.me
dan_ackme 29:b6af04b77a56 307 *
dan_ackme 29:b6af04b77a56 308 * @note @ref ghmListMessages() must be called first before using this method.
dan_ackme 29:b6af04b77a56 309 *
dan_ackme 29:b6af04b77a56 310 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 311 *
dan_ackme 29:b6af04b77a56 312 * @param[in] listIndex The index of the message returned from ghmListMessages()
dan_ackme 29:b6af04b77a56 313 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 314 */
dan_ackme 29:b6af04b77a56 315 WiconnectResult ghmDeleteMessage(uint8_t listIndex);
dan_ackme 29:b6af04b77a56 316
dan_ackme 29:b6af04b77a56 317 /**
dan_ackme 29:b6af04b77a56 318 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 319 *
dan_ackme 29:b6af04b77a56 320 * @brief Delete message from http://goHACK.me
dan_ackme 29:b6af04b77a56 321 *
dan_ackme 29:b6af04b77a56 322 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 323 *
dan_ackme 29:b6af04b77a56 324 * @param[in] msgId The http://goHACK.me message ID.
dan_ackme 29:b6af04b77a56 325 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 326 */
dan_ackme 29:b6af04b77a56 327 WiconnectResult ghmDeleteMessage(const char *msgId);
dan_ackme 29:b6af04b77a56 328
dan_ackme 29:b6af04b77a56 329 /**
dan_ackme 29:b6af04b77a56 330 * @ingroup api_ghm_msg
dan_ackme 29:b6af04b77a56 331 *
dan_ackme 29:b6af04b77a56 332 * @brief List available messages for device on http://goHACK.me
dan_ackme 29:b6af04b77a56 333 *
dan_ackme 29:b6af04b77a56 334 * @note The WiFi module must first be activated. See @ref ghmActivate()
dan_ackme 29:b6af04b77a56 335 *
dan_ackme 29:b6af04b77a56 336 * @param[out] msgList @ref GhmMessageList to hold received messages.
dan_ackme 29:b6af04b77a56 337 * @param[in] maxCount Optional, the maximum number of messages to receive. If 0,
dan_ackme 29:b6af04b77a56 338 * receive all messages (max of 25).
dan_ackme 29:b6af04b77a56 339 * @return Result of method. See @ref WiconnectResult
dan_ackme 29:b6af04b77a56 340 */
dan_ackme 29:b6af04b77a56 341 WiconnectResult ghmListMessages(GhmMessageList &msgList, uint8_t maxCount = 0);
dan_ackme 29:b6af04b77a56 342
dan_ackme 29:b6af04b77a56 343
dan_ackme 29:b6af04b77a56 344 protected:
dan_ackme 29:b6af04b77a56 345 GhmInterface(Wiconnect *wiconnect);
dan_ackme 29:b6af04b77a56 346
dan_ackme 29:b6af04b77a56 347 WiconnectResult ghmGetMessage(WiconnectSocket &socket, uint8_t listIndex, const char *msgId, GhmMessageGetType getType);
dan_ackme 29:b6af04b77a56 348 WiconnectResult processMessageList(char *resultStr, GhmMessageList &resultList);
dan_ackme 29:b6af04b77a56 349
dan_ackme 29:b6af04b77a56 350 private:
dan_ackme 29:b6af04b77a56 351 Wiconnect *wiconnect;
dan_ackme 29:b6af04b77a56 352
dan_ackme 29:b6af04b77a56 353 };
dan_ackme 29:b6af04b77a56 354
dan_ackme 29:b6af04b77a56 355
dan_ackme 29:b6af04b77a56 356 }