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 03:29:30 2014 -0700
Revision:
1:6ec9998427ad
Parent:
0:ea85c4bb5e1f
Child:
6:8a87a59d0d21
fixed compiler warnings

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 #include <assert.h>
dan_ackme 0:ea85c4bb5e1f 12
dan_ackme 0:ea85c4bb5e1f 13 #include "Wiconnect.h"
dan_ackme 0:ea85c4bb5e1f 14
dan_ackme 0:ea85c4bb5e1f 15
dan_ackme 0:ea85c4bb5e1f 16 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 17 QueuedCommand::QueuedCommand(int responseBufferLen_, char *responseBuffer_, int timeoutMs_, const ReaderFunc &reader_, void *user_, const char *cmd_, va_list vaList)
dan_ackme 0:ea85c4bb5e1f 18 {
dan_ackme 0:ea85c4bb5e1f 19 initialize(responseBufferLen_, responseBuffer_, timeoutMs_, reader_, user_, cmd_, vaList);
dan_ackme 0:ea85c4bb5e1f 20 }
dan_ackme 0:ea85c4bb5e1f 21
dan_ackme 0:ea85c4bb5e1f 22 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 23 QueuedCommand::QueuedCommand(int responseBufferLen_, char* responseBuffer_, int timeoutMs_, const char *cmd_, ...)
dan_ackme 0:ea85c4bb5e1f 24 {
dan_ackme 0:ea85c4bb5e1f 25 va_list args;
dan_ackme 0:ea85c4bb5e1f 26 va_start(args, cmd_);
dan_ackme 0:ea85c4bb5e1f 27 initialize(responseBufferLen_, responseBuffer_, timeoutMs_, NULL, NULL, cmd_, args);
dan_ackme 0:ea85c4bb5e1f 28 va_end(args);
dan_ackme 0:ea85c4bb5e1f 29 }
dan_ackme 0:ea85c4bb5e1f 30
dan_ackme 0:ea85c4bb5e1f 31 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 32 QueuedCommand::QueuedCommand(int responseBufferLen_, char *responseBuffer_, const char *cmd_, ...)
dan_ackme 0:ea85c4bb5e1f 33 {
dan_ackme 0:ea85c4bb5e1f 34 va_list args;
dan_ackme 0:ea85c4bb5e1f 35 va_start(args, cmd_);
dan_ackme 0:ea85c4bb5e1f 36 initialize(responseBufferLen_, responseBuffer_, WICONNECT_DEFAULT_TIMEOUT, NULL, NULL, cmd_, args);
dan_ackme 0:ea85c4bb5e1f 37 va_end(args);
dan_ackme 0:ea85c4bb5e1f 38 }
dan_ackme 0:ea85c4bb5e1f 39
dan_ackme 0:ea85c4bb5e1f 40 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 41 QueuedCommand::QueuedCommand(int timeoutMs_, const char *cmd_, ...)
dan_ackme 0:ea85c4bb5e1f 42 {
dan_ackme 0:ea85c4bb5e1f 43 va_list args;
dan_ackme 0:ea85c4bb5e1f 44 va_start(args, cmd_);
dan_ackme 0:ea85c4bb5e1f 45 initialize(0, NULL, timeoutMs_, NULL, NULL, cmd_, args);
dan_ackme 0:ea85c4bb5e1f 46 va_end(args);
dan_ackme 0:ea85c4bb5e1f 47 }
dan_ackme 0:ea85c4bb5e1f 48
dan_ackme 0:ea85c4bb5e1f 49 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 50 QueuedCommand::QueuedCommand(const char *cmd_, ...)
dan_ackme 0:ea85c4bb5e1f 51 {
dan_ackme 0:ea85c4bb5e1f 52 va_list args;
dan_ackme 0:ea85c4bb5e1f 53 va_start(args, cmd_);
dan_ackme 0:ea85c4bb5e1f 54 initialize(0, NULL, WICONNECT_DEFAULT_TIMEOUT, NULL, NULL, cmd_, args);
dan_ackme 0:ea85c4bb5e1f 55 va_end(args);
dan_ackme 0:ea85c4bb5e1f 56 }
dan_ackme 0:ea85c4bb5e1f 57
dan_ackme 0:ea85c4bb5e1f 58 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 59 QueuedCommand::~QueuedCommand()
dan_ackme 0:ea85c4bb5e1f 60 {
dan_ackme 0:ea85c4bb5e1f 61 #ifdef WICONNECT_ENABLE_MALLOC
dan_ackme 0:ea85c4bb5e1f 62 if(allocatedBuffer)
dan_ackme 0:ea85c4bb5e1f 63 {
dan_ackme 0:ea85c4bb5e1f 64 Wiconnect::getInstance()->_free(responseBuffer);
dan_ackme 0:ea85c4bb5e1f 65 }
dan_ackme 0:ea85c4bb5e1f 66 #endif
dan_ackme 0:ea85c4bb5e1f 67 }
dan_ackme 0:ea85c4bb5e1f 68
dan_ackme 0:ea85c4bb5e1f 69 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 70 char *QueuedCommand::getResponseBuffer()
dan_ackme 0:ea85c4bb5e1f 71 {
dan_ackme 0:ea85c4bb5e1f 72 return responseBuffer;
dan_ackme 0:ea85c4bb5e1f 73 }
dan_ackme 0:ea85c4bb5e1f 74 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 75 int QueuedCommand::getResponseBufferLen()
dan_ackme 0:ea85c4bb5e1f 76 {
dan_ackme 0:ea85c4bb5e1f 77 return responseBufferLen;
dan_ackme 0:ea85c4bb5e1f 78 }
dan_ackme 0:ea85c4bb5e1f 79 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 80 int QueuedCommand::getTimeoutMs()
dan_ackme 0:ea85c4bb5e1f 81 {
dan_ackme 0:ea85c4bb5e1f 82 return timeoutMs;
dan_ackme 0:ea85c4bb5e1f 83 }
dan_ackme 0:ea85c4bb5e1f 84 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 85 ReaderFunc QueuedCommand::getReader()
dan_ackme 0:ea85c4bb5e1f 86 {
dan_ackme 0:ea85c4bb5e1f 87 return reader;
dan_ackme 0:ea85c4bb5e1f 88 }
dan_ackme 0:ea85c4bb5e1f 89 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 90 void * QueuedCommand::getReaderUserData()
dan_ackme 0:ea85c4bb5e1f 91 {
dan_ackme 0:ea85c4bb5e1f 92 return user;
dan_ackme 0:ea85c4bb5e1f 93 }
dan_ackme 0:ea85c4bb5e1f 94 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 95 char* QueuedCommand::getCommand()
dan_ackme 0:ea85c4bb5e1f 96 {
dan_ackme 0:ea85c4bb5e1f 97 return command;
dan_ackme 0:ea85c4bb5e1f 98 }
dan_ackme 0:ea85c4bb5e1f 99 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 100 Callback QueuedCommand::getCompletedCallback()
dan_ackme 0:ea85c4bb5e1f 101 {
dan_ackme 0:ea85c4bb5e1f 102 return completeCallback;
dan_ackme 0:ea85c4bb5e1f 103 }
dan_ackme 0:ea85c4bb5e1f 104 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 105 void QueuedCommand::setCompletedCallback(const Callback &cb)
dan_ackme 0:ea85c4bb5e1f 106 {
dan_ackme 0:ea85c4bb5e1f 107 completeCallback = cb;
dan_ackme 0:ea85c4bb5e1f 108 }
dan_ackme 0:ea85c4bb5e1f 109
dan_ackme 0:ea85c4bb5e1f 110 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 111 QueuedCommand& QueuedCommand::operator=( const QueuedCommand& other )
dan_ackme 0:ea85c4bb5e1f 112 {
dan_ackme 0:ea85c4bb5e1f 113 responseBuffer = other.responseBuffer;
dan_ackme 0:ea85c4bb5e1f 114 responseBufferLen = other.responseBufferLen;
dan_ackme 0:ea85c4bb5e1f 115 timeoutMs = other.timeoutMs;
dan_ackme 0:ea85c4bb5e1f 116 reader = other.reader;
dan_ackme 0:ea85c4bb5e1f 117 user = other.user;
dan_ackme 0:ea85c4bb5e1f 118 completeCallback = other.completeCallback;
dan_ackme 0:ea85c4bb5e1f 119 memcpy(command, other.command, sizeof(command));
dan_ackme 0:ea85c4bb5e1f 120 return *this;
dan_ackme 0:ea85c4bb5e1f 121 }
dan_ackme 0:ea85c4bb5e1f 122
dan_ackme 0:ea85c4bb5e1f 123 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 124 void* QueuedCommand::operator new(size_t size)
dan_ackme 0:ea85c4bb5e1f 125 {
dan_ackme 0:ea85c4bb5e1f 126 assert(Wiconnect::getInstance()->_malloc != NULL);
dan_ackme 0:ea85c4bb5e1f 127 return Wiconnect::getInstance()->_malloc(size);
dan_ackme 0:ea85c4bb5e1f 128 }
dan_ackme 0:ea85c4bb5e1f 129
dan_ackme 0:ea85c4bb5e1f 130 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 131 void QueuedCommand::operator delete(void* ptr)
dan_ackme 0:ea85c4bb5e1f 132 {
dan_ackme 0:ea85c4bb5e1f 133 assert(Wiconnect::getInstance()->_free != NULL);
dan_ackme 0:ea85c4bb5e1f 134 Wiconnect::getInstance()->_free(ptr);
dan_ackme 0:ea85c4bb5e1f 135 }
dan_ackme 0:ea85c4bb5e1f 136
dan_ackme 0:ea85c4bb5e1f 137 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 138 void QueuedCommand::initialize(int responseBufferLen_, char *responseBuffer_, int timeoutMs_, const ReaderFunc &reader_, void *user_, const char *cmd_, va_list vaList)
dan_ackme 0:ea85c4bb5e1f 139 {
dan_ackme 0:ea85c4bb5e1f 140 if(responseBufferLen_ > 0)
dan_ackme 0:ea85c4bb5e1f 141 {
dan_ackme 0:ea85c4bb5e1f 142 #ifdef WICONNECT_ENABLE_MALLOC
dan_ackme 0:ea85c4bb5e1f 143 allocatedBuffer = false;
dan_ackme 0:ea85c4bb5e1f 144 if(responseBuffer_ == NULL)
dan_ackme 0:ea85c4bb5e1f 145 {
dan_ackme 0:ea85c4bb5e1f 146 assert(Wiconnect::getInstance()->_malloc != NULL);
dan_ackme 0:ea85c4bb5e1f 147 responseBuffer = (char*)Wiconnect::getInstance()->_malloc(responseBufferLen_);
dan_ackme 0:ea85c4bb5e1f 148 allocatedBuffer = true;
dan_ackme 0:ea85c4bb5e1f 149 }
dan_ackme 0:ea85c4bb5e1f 150 else
dan_ackme 0:ea85c4bb5e1f 151 #endif
dan_ackme 0:ea85c4bb5e1f 152 {
dan_ackme 0:ea85c4bb5e1f 153 assert(responseBuffer_ != NULL);
dan_ackme 0:ea85c4bb5e1f 154 responseBuffer = responseBuffer_;
dan_ackme 0:ea85c4bb5e1f 155 }
dan_ackme 0:ea85c4bb5e1f 156 }
dan_ackme 0:ea85c4bb5e1f 157 responseBufferLen = responseBufferLen_;
dan_ackme 0:ea85c4bb5e1f 158 timeoutMs = timeoutMs_;
dan_ackme 0:ea85c4bb5e1f 159 reader = reader_;
dan_ackme 0:ea85c4bb5e1f 160 user = user_;
dan_ackme 0:ea85c4bb5e1f 161 userData = NULL;
dan_ackme 0:ea85c4bb5e1f 162
dan_ackme 0:ea85c4bb5e1f 163 if(cmd_ != NULL)
dan_ackme 0:ea85c4bb5e1f 164 {
dan_ackme 0:ea85c4bb5e1f 165 int len = vsnprintf(command, sizeof(command)-3, cmd_, vaList);
dan_ackme 0:ea85c4bb5e1f 166 command[len++] = '\r';
dan_ackme 0:ea85c4bb5e1f 167 command[len++] = '\n';
dan_ackme 0:ea85c4bb5e1f 168 command[len] = 0;
dan_ackme 0:ea85c4bb5e1f 169 }
dan_ackme 0:ea85c4bb5e1f 170 }