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:
dan_ackme
Date:
Mon Aug 11 04:00:39 2014 -0700
Revision:
5:8d91a87ebba2
Parent:
1:6ec9998427ad
Child:
16:7f1d6d359787
more warning fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 0:ea85c4bb5e1f 1 /*
dan_ackme 0:ea85c4bb5e1f 2 * Copyright 2014, ACKme Networks
dan_ackme 0:ea85c4bb5e1f 3 * All Rights Reserved.
dan_ackme 0:ea85c4bb5e1f 4 *
dan_ackme 0:ea85c4bb5e1f 5 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks;
dan_ackme 0:ea85c4bb5e1f 6 * the contents of this file may not be disclosed to third parties, copied
dan_ackme 0:ea85c4bb5e1f 7 * or duplicated in any form, in whole or in part, without the prior
dan_ackme 0:ea85c4bb5e1f 8 * written permission of ACKme Networks.
dan_ackme 0:ea85c4bb5e1f 9 */
dan_ackme 0:ea85c4bb5e1f 10
dan_ackme 0:ea85c4bb5e1f 11
dan_ackme 0:ea85c4bb5e1f 12 #include "CommandCommon.h"
dan_ackme 0:ea85c4bb5e1f 13
dan_ackme 0:ea85c4bb5e1f 14
dan_ackme 0:ea85c4bb5e1f 15
dan_ackme 0:ea85c4bb5e1f 16 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 17 WiconnectResult Wiconnect::checkCurrentCommand()
dan_ackme 0:ea85c4bb5e1f 18 {
dan_ackme 0:ea85c4bb5e1f 19 WiconnectResult result;
dan_ackme 0:ea85c4bb5e1f 20
dan_ackme 0:ea85c4bb5e1f 21 start:
dan_ackme 0:ea85c4bb5e1f 22 CHECK_INITIALIZED();
dan_ackme 0:ea85c4bb5e1f 23 if(!commandExecuting)
dan_ackme 0:ea85c4bb5e1f 24 {
dan_ackme 0:ea85c4bb5e1f 25 return WICONNECT_IDLE;
dan_ackme 0:ea85c4bb5e1f 26 }
dan_ackme 0:ea85c4bb5e1f 27
dan_ackme 0:ea85c4bb5e1f 28 CommandContext *context = (CommandContext*)commandContext;
dan_ackme 0:ea85c4bb5e1f 29
dan_ackme 0:ea85c4bb5e1f 30 if(context->commandLen > 0)
dan_ackme 0:ea85c4bb5e1f 31 {
dan_ackme 0:ea85c4bb5e1f 32 const int timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
dan_ackme 0:ea85c4bb5e1f 33 const int bytesToWrite = context->commandLen;
dan_ackme 0:ea85c4bb5e1f 34 const int bytesWritten = serial.write(context->commandPtr, bytesToWrite, timeout);
dan_ackme 0:ea85c4bb5e1f 35 context->commandPtr += bytesWritten;
dan_ackme 0:ea85c4bb5e1f 36 context->commandLen -= bytesWritten;
dan_ackme 0:ea85c4bb5e1f 37 if(bytesToWrite != bytesWritten)
dan_ackme 0:ea85c4bb5e1f 38 {
dan_ackme 0:ea85c4bb5e1f 39 if(timeoutTimer.timedOut(context->timeoutMs))
dan_ackme 0:ea85c4bb5e1f 40 {
dan_ackme 0:ea85c4bb5e1f 41 issueCommandCallback(WICONNECT_TIMEOUT);
dan_ackme 0:ea85c4bb5e1f 42 return WICONNECT_TIMEOUT;
dan_ackme 0:ea85c4bb5e1f 43 }
dan_ackme 0:ea85c4bb5e1f 44 else
dan_ackme 0:ea85c4bb5e1f 45 {
dan_ackme 0:ea85c4bb5e1f 46 return WICONNECT_PROCESSING;
dan_ackme 0:ea85c4bb5e1f 47 }
dan_ackme 0:ea85c4bb5e1f 48 }
dan_ackme 0:ea85c4bb5e1f 49 }
dan_ackme 0:ea85c4bb5e1f 50
dan_ackme 0:ea85c4bb5e1f 51 while(context->reader.isValid())
dan_ackme 0:ea85c4bb5e1f 52 {
dan_ackme 0:ea85c4bb5e1f 53 if(context->bytesToWrite == 0)
dan_ackme 0:ea85c4bb5e1f 54 {
dan_ackme 0:ea85c4bb5e1f 55 context->responseBufferPtr = context->responseBuffer;
dan_ackme 0:ea85c4bb5e1f 56 if(WICONNECT_FAILED(result, context->reader.call(context->user, context->responseBuffer, context->responseBufferLen, &context->bytesToWrite)))
dan_ackme 0:ea85c4bb5e1f 57 {
dan_ackme 0:ea85c4bb5e1f 58 issueCommandCallback(result);
dan_ackme 0:ea85c4bb5e1f 59 return result;
dan_ackme 0:ea85c4bb5e1f 60 }
dan_ackme 0:ea85c4bb5e1f 61 else if(context->bytesToWrite == EOF)
dan_ackme 0:ea85c4bb5e1f 62 {
dan_ackme 0:ea85c4bb5e1f 63 context->reader.setInvalid();
dan_ackme 0:ea85c4bb5e1f 64 context->bytesToWrite = 0;
dan_ackme 0:ea85c4bb5e1f 65 context->responseBufferPtr = context->responseBuffer;
dan_ackme 0:ea85c4bb5e1f 66 break;
dan_ackme 0:ea85c4bb5e1f 67 }
dan_ackme 0:ea85c4bb5e1f 68 else
dan_ackme 0:ea85c4bb5e1f 69 {
dan_ackme 0:ea85c4bb5e1f 70 timeoutTimer.reset();
dan_ackme 0:ea85c4bb5e1f 71 }
dan_ackme 0:ea85c4bb5e1f 72 }
dan_ackme 0:ea85c4bb5e1f 73 if(context->bytesToWrite > 0)
dan_ackme 0:ea85c4bb5e1f 74 {
dan_ackme 0:ea85c4bb5e1f 75 const int timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
dan_ackme 0:ea85c4bb5e1f 76 const int bytesToWrite = context->bytesToWrite;
dan_ackme 0:ea85c4bb5e1f 77 const int bytesWritten = serial.write(context->responseBufferPtr, bytesToWrite, timeout);
dan_ackme 0:ea85c4bb5e1f 78 context->responseBufferPtr += bytesWritten;
dan_ackme 0:ea85c4bb5e1f 79 context->bytesToWrite -= bytesWritten;
dan_ackme 0:ea85c4bb5e1f 80 if(bytesToWrite != bytesWritten)
dan_ackme 0:ea85c4bb5e1f 81 {
dan_ackme 0:ea85c4bb5e1f 82 if(timeoutTimer.timedOut(context->timeoutMs))
dan_ackme 0:ea85c4bb5e1f 83 {
dan_ackme 0:ea85c4bb5e1f 84 issueCommandCallback(WICONNECT_TIMEOUT);
dan_ackme 0:ea85c4bb5e1f 85 return WICONNECT_TIMEOUT;
dan_ackme 0:ea85c4bb5e1f 86 }
dan_ackme 0:ea85c4bb5e1f 87 else
dan_ackme 0:ea85c4bb5e1f 88 {
dan_ackme 0:ea85c4bb5e1f 89 return WICONNECT_PROCESSING;
dan_ackme 0:ea85c4bb5e1f 90 }
dan_ackme 0:ea85c4bb5e1f 91 }
dan_ackme 0:ea85c4bb5e1f 92 }
dan_ackme 0:ea85c4bb5e1f 93 }
dan_ackme 0:ea85c4bb5e1f 94
dan_ackme 0:ea85c4bb5e1f 95 result = receiveResponse();
dan_ackme 0:ea85c4bb5e1f 96 if(result == WICONNECT_PROCESSING && !context->nonBlocking)
dan_ackme 0:ea85c4bb5e1f 97 {
dan_ackme 0:ea85c4bb5e1f 98 goto start;
dan_ackme 0:ea85c4bb5e1f 99 }
dan_ackme 0:ea85c4bb5e1f 100 return result;
dan_ackme 0:ea85c4bb5e1f 101 }
dan_ackme 0:ea85c4bb5e1f 102
dan_ackme 0:ea85c4bb5e1f 103 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 104 WiconnectResult Wiconnect::receiveResponse()
dan_ackme 0:ea85c4bb5e1f 105 {
dan_ackme 5:8d91a87ebba2 106 loop:
dan_ackme 5:8d91a87ebba2 107 WiconnectResult result = receivePacket();
dan_ackme 5:8d91a87ebba2 108
dan_ackme 5:8d91a87ebba2 109 if(result == WICONNECT_PROCESSING)
dan_ackme 0:ea85c4bb5e1f 110 {
dan_ackme 5:8d91a87ebba2 111 }
dan_ackme 5:8d91a87ebba2 112 else if(result == WICONNECT_SUCCESS)
dan_ackme 5:8d91a87ebba2 113 {
dan_ackme 5:8d91a87ebba2 114 CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
dan_ackme 5:8d91a87ebba2 115 CommandContext *context = (CommandContext*)commandContext;
dan_ackme 0:ea85c4bb5e1f 116
dan_ackme 5:8d91a87ebba2 117 // TODO: need to notify safemode
dan_ackme 5:8d91a87ebba2 118
dan_ackme 5:8d91a87ebba2 119 if(header->response_type == WICONNECT_CMD_TYPE_REPLY || header->response_type == WICONNECT_CMD_TYPE_SAFEMODE)
dan_ackme 0:ea85c4bb5e1f 120 {
dan_ackme 5:8d91a87ebba2 121 if(header->response_code != WICONNECT_CMD_SUCCESS)
dan_ackme 0:ea85c4bb5e1f 122 {
dan_ackme 5:8d91a87ebba2 123 DEBUG_CMD_ERROR(header->response_code);
dan_ackme 5:8d91a87ebba2 124 flush();
dan_ackme 5:8d91a87ebba2 125 issueCommandCallback(WICONNECT_CMD_RESPONSE_ERROR);
dan_ackme 5:8d91a87ebba2 126 return WICONNECT_CMD_RESPONSE_ERROR;
dan_ackme 5:8d91a87ebba2 127 }
dan_ackme 5:8d91a87ebba2 128 else if(header->response_len > 0)
dan_ackme 5:8d91a87ebba2 129 {
dan_ackme 5:8d91a87ebba2 130 DEBUG_CMD_RESPONSE(context->responseBuffer);
dan_ackme 5:8d91a87ebba2 131 header->response_len -= 2;
dan_ackme 5:8d91a87ebba2 132 context->responseBuffer[header->response_len] = 0;
dan_ackme 0:ea85c4bb5e1f 133 }
dan_ackme 0:ea85c4bb5e1f 134 else
dan_ackme 0:ea85c4bb5e1f 135 {
dan_ackme 5:8d91a87ebba2 136 *context->responseBuffer = 0;
dan_ackme 0:ea85c4bb5e1f 137 }
dan_ackme 5:8d91a87ebba2 138
dan_ackme 5:8d91a87ebba2 139 issueCommandCallback(WICONNECT_SUCCESS);
dan_ackme 5:8d91a87ebba2 140
dan_ackme 5:8d91a87ebba2 141 return WICONNECT_SUCCESS;
dan_ackme 0:ea85c4bb5e1f 142 }
dan_ackme 0:ea85c4bb5e1f 143 else
dan_ackme 0:ea85c4bb5e1f 144 {
dan_ackme 5:8d91a87ebba2 145 DEBUG_CMD_LOG(context->responseBuffer);
dan_ackme 5:8d91a87ebba2 146 RESET_CMD_HEADER(header);
dan_ackme 5:8d91a87ebba2 147 context->responseBufferPtr = context->responseBuffer;
dan_ackme 5:8d91a87ebba2 148 goto loop;
dan_ackme 0:ea85c4bb5e1f 149 }
dan_ackme 0:ea85c4bb5e1f 150 }
dan_ackme 5:8d91a87ebba2 151 else
dan_ackme 5:8d91a87ebba2 152 {
dan_ackme 5:8d91a87ebba2 153 issueCommandCallback(result);
dan_ackme 5:8d91a87ebba2 154 }
dan_ackme 0:ea85c4bb5e1f 155
dan_ackme 5:8d91a87ebba2 156 return result;
dan_ackme 0:ea85c4bb5e1f 157 }
dan_ackme 0:ea85c4bb5e1f 158
dan_ackme 0:ea85c4bb5e1f 159 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 160 WiconnectResult Wiconnect::receivePacket()
dan_ackme 0:ea85c4bb5e1f 161 {
dan_ackme 0:ea85c4bb5e1f 162 CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
dan_ackme 0:ea85c4bb5e1f 163 CommandContext *context = (CommandContext*)commandContext;
dan_ackme 0:ea85c4bb5e1f 164
dan_ackme 0:ea85c4bb5e1f 165 if(header->bytes_remaining > 0)
dan_ackme 0:ea85c4bb5e1f 166 {
dan_ackme 0:ea85c4bb5e1f 167 uint16_t bytesReceived;
dan_ackme 0:ea85c4bb5e1f 168 uint8_t buffer[WICONNECT_HEADER_LENGTH];
dan_ackme 0:ea85c4bb5e1f 169
dan_ackme 0:ea85c4bb5e1f 170 while(header->bytes_remaining > 0)
dan_ackme 0:ea85c4bb5e1f 171 {
dan_ackme 0:ea85c4bb5e1f 172 const int timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
dan_ackme 0:ea85c4bb5e1f 173 bytesReceived = serial.read((char*)buffer, header->bytes_remaining, timeout);
dan_ackme 0:ea85c4bb5e1f 174 if(bytesReceived == 0)
dan_ackme 0:ea85c4bb5e1f 175 {
dan_ackme 0:ea85c4bb5e1f 176 return timeoutTimer.timedOut(context->timeoutMs) ? WICONNECT_TIMEOUT : WICONNECT_PROCESSING;
dan_ackme 0:ea85c4bb5e1f 177 }
dan_ackme 0:ea85c4bb5e1f 178
dan_ackme 0:ea85c4bb5e1f 179 for(uint8_t *ptr = buffer; bytesReceived > 0; ++ptr)
dan_ackme 0:ea85c4bb5e1f 180 {
dan_ackme 0:ea85c4bb5e1f 181 if(header->response_type == WICONNECT_CMD_TYPE_NULL)
dan_ackme 0:ea85c4bb5e1f 182 {
dan_ackme 0:ea85c4bb5e1f 183 if( *ptr == WICONNECT_CMD_TYPE_REPLY ||
dan_ackme 0:ea85c4bb5e1f 184 *ptr == WICONNECT_CMD_TYPE_LOG ||
dan_ackme 0:ea85c4bb5e1f 185 *ptr == WICONNECT_CMD_TYPE_SAFEMODE)
dan_ackme 0:ea85c4bb5e1f 186 {
dan_ackme 0:ea85c4bb5e1f 187 header->response_type = (ResponseType)*ptr;
dan_ackme 0:ea85c4bb5e1f 188 -- header->bytes_remaining;
dan_ackme 0:ea85c4bb5e1f 189 }
dan_ackme 0:ea85c4bb5e1f 190 --bytesReceived;
dan_ackme 0:ea85c4bb5e1f 191 }
dan_ackme 0:ea85c4bb5e1f 192 else if(header->response_code == WICONNECT_CMD_CODE_NULL)
dan_ackme 0:ea85c4bb5e1f 193 {
dan_ackme 0:ea85c4bb5e1f 194 if(*ptr >= '0' && *ptr <= '7')
dan_ackme 0:ea85c4bb5e1f 195 {
dan_ackme 0:ea85c4bb5e1f 196 header->response_code = (ResponseCode)(*ptr - '0' + 1);
dan_ackme 0:ea85c4bb5e1f 197 --header->bytes_remaining;
dan_ackme 0:ea85c4bb5e1f 198 header->len_buffer_ptr = header->len_buffer;
dan_ackme 0:ea85c4bb5e1f 199 }
dan_ackme 0:ea85c4bb5e1f 200 else
dan_ackme 0:ea85c4bb5e1f 201 {
dan_ackme 0:ea85c4bb5e1f 202 RESET_CMD_HEADER(header);
dan_ackme 0:ea85c4bb5e1f 203 }
dan_ackme 0:ea85c4bb5e1f 204 --bytesReceived;
dan_ackme 0:ea85c4bb5e1f 205 }
dan_ackme 0:ea85c4bb5e1f 206 else if(header->bytes_remaining > 2)
dan_ackme 0:ea85c4bb5e1f 207 {
dan_ackme 0:ea85c4bb5e1f 208 uint8_t len_chars = MIN((int)bytesReceived, (int)(header->bytes_remaining-2));
dan_ackme 0:ea85c4bb5e1f 209 header->bytes_remaining -= len_chars;
dan_ackme 0:ea85c4bb5e1f 210 bytesReceived -= len_chars;
dan_ackme 0:ea85c4bb5e1f 211 while(len_chars-- > 0)
dan_ackme 0:ea85c4bb5e1f 212 {
dan_ackme 0:ea85c4bb5e1f 213 *header->len_buffer_ptr++ = *ptr++;
dan_ackme 0:ea85c4bb5e1f 214 }
dan_ackme 0:ea85c4bb5e1f 215 --ptr; // need to decrement since the for loop increments
dan_ackme 0:ea85c4bb5e1f 216 if(header->bytes_remaining == 2)
dan_ackme 0:ea85c4bb5e1f 217 {
dan_ackme 0:ea85c4bb5e1f 218 uint32_t packetLen;
dan_ackme 0:ea85c4bb5e1f 219 *header->len_buffer_ptr = 0;
dan_ackme 0:ea85c4bb5e1f 220 if(!StringUtil::strToUint32((const char*)header->len_buffer, &packetLen))
dan_ackme 0:ea85c4bb5e1f 221 {
dan_ackme 0:ea85c4bb5e1f 222 RESET_CMD_HEADER(header);
dan_ackme 0:ea85c4bb5e1f 223 }
dan_ackme 0:ea85c4bb5e1f 224 else
dan_ackme 0:ea85c4bb5e1f 225 {
dan_ackme 0:ea85c4bb5e1f 226 if((int)packetLen > context->responseBufferLen)
dan_ackme 0:ea85c4bb5e1f 227 {
dan_ackme 0:ea85c4bb5e1f 228 DEBUG_ERROR("Packet larger than response buffer: %d > %d", packetLen, context->responseBufferLen);
dan_ackme 0:ea85c4bb5e1f 229 return WICONNECT_OVERFLOW;
dan_ackme 0:ea85c4bb5e1f 230 }
dan_ackme 0:ea85c4bb5e1f 231 header->response_len = (uint16_t)packetLen;
dan_ackme 0:ea85c4bb5e1f 232 context->bytesToRead = packetLen;
dan_ackme 0:ea85c4bb5e1f 233 }
dan_ackme 0:ea85c4bb5e1f 234 }
dan_ackme 0:ea85c4bb5e1f 235 }
dan_ackme 0:ea85c4bb5e1f 236 else if(header->bytes_remaining == 2)
dan_ackme 0:ea85c4bb5e1f 237 {
dan_ackme 0:ea85c4bb5e1f 238 --bytesReceived;
dan_ackme 0:ea85c4bb5e1f 239 if(*ptr == '\r')
dan_ackme 0:ea85c4bb5e1f 240 {
dan_ackme 0:ea85c4bb5e1f 241 header->bytes_remaining = 1;
dan_ackme 0:ea85c4bb5e1f 242 }
dan_ackme 0:ea85c4bb5e1f 243 else
dan_ackme 0:ea85c4bb5e1f 244 {
dan_ackme 0:ea85c4bb5e1f 245 RESET_CMD_HEADER(header);
dan_ackme 0:ea85c4bb5e1f 246 }
dan_ackme 0:ea85c4bb5e1f 247 }
dan_ackme 0:ea85c4bb5e1f 248 else
dan_ackme 0:ea85c4bb5e1f 249 {
dan_ackme 0:ea85c4bb5e1f 250 --bytesReceived;
dan_ackme 0:ea85c4bb5e1f 251 if(*ptr == '\n')
dan_ackme 0:ea85c4bb5e1f 252 {
dan_ackme 0:ea85c4bb5e1f 253 header->bytes_remaining = 0;
dan_ackme 0:ea85c4bb5e1f 254 break;
dan_ackme 0:ea85c4bb5e1f 255 }
dan_ackme 0:ea85c4bb5e1f 256 else
dan_ackme 0:ea85c4bb5e1f 257 {
dan_ackme 0:ea85c4bb5e1f 258 RESET_CMD_HEADER(header);
dan_ackme 0:ea85c4bb5e1f 259 }
dan_ackme 0:ea85c4bb5e1f 260 }
dan_ackme 0:ea85c4bb5e1f 261 }
dan_ackme 0:ea85c4bb5e1f 262 }
dan_ackme 0:ea85c4bb5e1f 263 }
dan_ackme 0:ea85c4bb5e1f 264
dan_ackme 0:ea85c4bb5e1f 265 while(context->bytesToRead > 0)
dan_ackme 0:ea85c4bb5e1f 266 {
dan_ackme 0:ea85c4bb5e1f 267 const int timeout = context->nonBlocking ? 0 : timeoutTimer.remainingMs(context->timeoutMs);
dan_ackme 0:ea85c4bb5e1f 268 const int bytesToRead = context->bytesToRead;
dan_ackme 0:ea85c4bb5e1f 269 const int bytesReceived = serial.read(context->responseBufferPtr, bytesToRead, timeout);
dan_ackme 0:ea85c4bb5e1f 270 context->responseBufferPtr += bytesReceived;
dan_ackme 0:ea85c4bb5e1f 271 context->bytesToRead -= bytesReceived;
dan_ackme 0:ea85c4bb5e1f 272
dan_ackme 0:ea85c4bb5e1f 273 if(bytesReceived != bytesToRead)
dan_ackme 0:ea85c4bb5e1f 274 {
dan_ackme 0:ea85c4bb5e1f 275 return timeoutTimer.timedOut(context->timeoutMs) ? WICONNECT_TIMEOUT : WICONNECT_PROCESSING;
dan_ackme 0:ea85c4bb5e1f 276 }
dan_ackme 0:ea85c4bb5e1f 277 else if(context->bytesToRead == 0)
dan_ackme 0:ea85c4bb5e1f 278 {
dan_ackme 0:ea85c4bb5e1f 279 *context->responseBufferPtr = 0;
dan_ackme 0:ea85c4bb5e1f 280 }
dan_ackme 0:ea85c4bb5e1f 281 }
dan_ackme 0:ea85c4bb5e1f 282
dan_ackme 0:ea85c4bb5e1f 283 return (header->response_code != WICONNECT_CMD_CODE_NULL &&
dan_ackme 0:ea85c4bb5e1f 284 header->response_type != WICONNECT_CMD_TYPE_NULL &&
dan_ackme 0:ea85c4bb5e1f 285 context->bytesToRead == 0) ? WICONNECT_SUCCESS : WICONNECT_PROCESSING;
dan_ackme 0:ea85c4bb5e1f 286 }
dan_ackme 0:ea85c4bb5e1f 287
dan_ackme 0:ea85c4bb5e1f 288 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 289 void Wiconnect::issueCommandCallback(WiconnectResult result)
dan_ackme 0:ea85c4bb5e1f 290 {
dan_ackme 0:ea85c4bb5e1f 291 CommandHeader *header = (CommandHeader*)commandHeaderBuffer;
dan_ackme 0:ea85c4bb5e1f 292 CommandContext *context = (CommandContext*)commandContext;
dan_ackme 0:ea85c4bb5e1f 293 #ifdef WICONNECT_ASYNC_TIMER_ENABLED
dan_ackme 0:ea85c4bb5e1f 294 void *returnPtr = (currentQueuedCommand != NULL) ? (void*)currentQueuedCommand : (void*)context->responseBuffer;
dan_ackme 0:ea85c4bb5e1f 295 currentQueuedCommand = NULL;
dan_ackme 0:ea85c4bb5e1f 296 commandProcessorTimer.stop();
dan_ackme 0:ea85c4bb5e1f 297 #else
dan_ackme 0:ea85c4bb5e1f 298 void *returnPtr = (void*)context->responseBuffer;
dan_ackme 0:ea85c4bb5e1f 299 #endif
dan_ackme 0:ea85c4bb5e1f 300 context->callback.call(result, returnPtr, (void*)(uint32_t)header->response_len);
dan_ackme 0:ea85c4bb5e1f 301 commandExecuting = false;
dan_ackme 0:ea85c4bb5e1f 302
dan_ackme 0:ea85c4bb5e1f 303 #ifdef WICONNECT_ASYNC_TIMER_ENABLED
dan_ackme 0:ea85c4bb5e1f 304 processNextQueuedCommand();
dan_ackme 0:ea85c4bb5e1f 305 #endif
dan_ackme 0:ea85c4bb5e1f 306 }
dan_ackme 0:ea85c4bb5e1f 307
dan_ackme 0:ea85c4bb5e1f 308 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 309 void Wiconnect::stopCurrentCommand()
dan_ackme 0:ea85c4bb5e1f 310 {
dan_ackme 0:ea85c4bb5e1f 311 internalProcessingState = 0;
dan_ackme 0:ea85c4bb5e1f 312 issueCommandCallback(WICONNECT_ABORTED);
dan_ackme 0:ea85c4bb5e1f 313 }
dan_ackme 0:ea85c4bb5e1f 314