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 09:58:24 2014 +0000
Revision:
0:ea85c4bb5e1f
Child:
1:6ec9998427ad
initial check-in

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 #include "Wiconnect.h"
dan_ackme 0:ea85c4bb5e1f 13 #include "types/ScanResult.h"
dan_ackme 0:ea85c4bb5e1f 14
dan_ackme 0:ea85c4bb5e1f 15
dan_ackme 0:ea85c4bb5e1f 16
dan_ackme 0:ea85c4bb5e1f 17 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 18 ScanResultList::ScanResultList(int bufferLen_, void *buffer_)
dan_ackme 0:ea85c4bb5e1f 19 {
dan_ackme 0:ea85c4bb5e1f 20 assert((bufferLen_ == 0 && buffer_ == NULL) || (bufferLen_ != 0 && buffer_ != NULL));
dan_ackme 0:ea85c4bb5e1f 21 count = 0;
dan_ackme 0:ea85c4bb5e1f 22 listHead = listTail = NULL;
dan_ackme 0:ea85c4bb5e1f 23 buffer = (uint8_t*)buffer_;
dan_ackme 0:ea85c4bb5e1f 24 bufferPtr = buffer;
dan_ackme 0:ea85c4bb5e1f 25 bufferLen = bufferLen_;
dan_ackme 0:ea85c4bb5e1f 26 }
dan_ackme 0:ea85c4bb5e1f 27
dan_ackme 0:ea85c4bb5e1f 28 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 29 ScanResultList::~ScanResultList()
dan_ackme 0:ea85c4bb5e1f 30 {
dan_ackme 0:ea85c4bb5e1f 31 if(buffer == NULL)
dan_ackme 0:ea85c4bb5e1f 32 {
dan_ackme 0:ea85c4bb5e1f 33 ScanResult* result = listHead;
dan_ackme 0:ea85c4bb5e1f 34 while(result != NULL)
dan_ackme 0:ea85c4bb5e1f 35 {
dan_ackme 0:ea85c4bb5e1f 36 ScanResult* tmp = result;
dan_ackme 0:ea85c4bb5e1f 37 result = result->next;
dan_ackme 0:ea85c4bb5e1f 38 delete tmp;
dan_ackme 0:ea85c4bb5e1f 39 }
dan_ackme 0:ea85c4bb5e1f 40 }
dan_ackme 0:ea85c4bb5e1f 41 }
dan_ackme 0:ea85c4bb5e1f 42
dan_ackme 0:ea85c4bb5e1f 43 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 44 WiconnectResult ScanResultList::add(const char *channelStr, const char *rssiStr, const char* macStr, const char *rateStr, const char *secStr, const char *ssidStr)
dan_ackme 0:ea85c4bb5e1f 45 {
dan_ackme 0:ea85c4bb5e1f 46 WiconnectResult result;
dan_ackme 0:ea85c4bb5e1f 47 ScanResult *res;
dan_ackme 0:ea85c4bb5e1f 48
dan_ackme 0:ea85c4bb5e1f 49 if(buffer == NULL)
dan_ackme 0:ea85c4bb5e1f 50 {
dan_ackme 0:ea85c4bb5e1f 51 res = new ScanResult();
dan_ackme 0:ea85c4bb5e1f 52 if(res == NULL)
dan_ackme 0:ea85c4bb5e1f 53 {
dan_ackme 0:ea85c4bb5e1f 54 return WICONNECT_NULL_BUFFER;
dan_ackme 0:ea85c4bb5e1f 55 }
dan_ackme 0:ea85c4bb5e1f 56 }
dan_ackme 0:ea85c4bb5e1f 57 else
dan_ackme 0:ea85c4bb5e1f 58 {
dan_ackme 0:ea85c4bb5e1f 59 if(bufferLen < sizeof(ScanResult))
dan_ackme 0:ea85c4bb5e1f 60 {
dan_ackme 0:ea85c4bb5e1f 61 return WICONNECT_OVERFLOW;
dan_ackme 0:ea85c4bb5e1f 62 }
dan_ackme 0:ea85c4bb5e1f 63 res = (ScanResult*)bufferPtr;
dan_ackme 0:ea85c4bb5e1f 64 memset(res, 0, sizeof(ScanResult));
dan_ackme 0:ea85c4bb5e1f 65 bufferLen -= sizeof(ScanResult);
dan_ackme 0:ea85c4bb5e1f 66 bufferPtr += sizeof(ScanResult);
dan_ackme 0:ea85c4bb5e1f 67 }
dan_ackme 0:ea85c4bb5e1f 68
dan_ackme 0:ea85c4bb5e1f 69 if(WICONNECT_FAILED(result, res->init(channelStr, rssiStr, macStr, rateStr, secStr, ssidStr)))
dan_ackme 0:ea85c4bb5e1f 70 {
dan_ackme 0:ea85c4bb5e1f 71 if(buffer == NULL)
dan_ackme 0:ea85c4bb5e1f 72 {
dan_ackme 0:ea85c4bb5e1f 73 delete res;
dan_ackme 0:ea85c4bb5e1f 74 }
dan_ackme 0:ea85c4bb5e1f 75 }
dan_ackme 0:ea85c4bb5e1f 76 else
dan_ackme 0:ea85c4bb5e1f 77 {
dan_ackme 0:ea85c4bb5e1f 78 if(listHead == NULL)
dan_ackme 0:ea85c4bb5e1f 79 {
dan_ackme 0:ea85c4bb5e1f 80 listHead = listTail = res;
dan_ackme 0:ea85c4bb5e1f 81 }
dan_ackme 0:ea85c4bb5e1f 82 else
dan_ackme 0:ea85c4bb5e1f 83 {
dan_ackme 0:ea85c4bb5e1f 84 res->previous = listTail;
dan_ackme 0:ea85c4bb5e1f 85 listTail->next = res;
dan_ackme 0:ea85c4bb5e1f 86 listTail = res;
dan_ackme 0:ea85c4bb5e1f 87 }
dan_ackme 0:ea85c4bb5e1f 88 ++count;
dan_ackme 0:ea85c4bb5e1f 89 }
dan_ackme 0:ea85c4bb5e1f 90
dan_ackme 0:ea85c4bb5e1f 91 return result;
dan_ackme 0:ea85c4bb5e1f 92 }
dan_ackme 0:ea85c4bb5e1f 93
dan_ackme 0:ea85c4bb5e1f 94 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 95 const ScanResult* ScanResultList::getListHead() const
dan_ackme 0:ea85c4bb5e1f 96 {
dan_ackme 0:ea85c4bb5e1f 97 return listHead;
dan_ackme 0:ea85c4bb5e1f 98 }
dan_ackme 0:ea85c4bb5e1f 99
dan_ackme 0:ea85c4bb5e1f 100 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 101 int ScanResultList::getCount() const
dan_ackme 0:ea85c4bb5e1f 102 {
dan_ackme 0:ea85c4bb5e1f 103 return count;
dan_ackme 0:ea85c4bb5e1f 104 }
dan_ackme 0:ea85c4bb5e1f 105
dan_ackme 0:ea85c4bb5e1f 106 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 107 const ScanResult* ScanResultList::getResult(int i) const
dan_ackme 0:ea85c4bb5e1f 108 {
dan_ackme 0:ea85c4bb5e1f 109 if(i >= count)
dan_ackme 0:ea85c4bb5e1f 110 return NULL;
dan_ackme 0:ea85c4bb5e1f 111
dan_ackme 0:ea85c4bb5e1f 112 ScanResult* result = listHead;
dan_ackme 0:ea85c4bb5e1f 113 while(i-- != 0)
dan_ackme 0:ea85c4bb5e1f 114 result = result->next;
dan_ackme 0:ea85c4bb5e1f 115
dan_ackme 0:ea85c4bb5e1f 116 return result;
dan_ackme 0:ea85c4bb5e1f 117 }
dan_ackme 0:ea85c4bb5e1f 118
dan_ackme 0:ea85c4bb5e1f 119 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 120 const ScanResult* ScanResultList::operator [](int i) const
dan_ackme 0:ea85c4bb5e1f 121 {
dan_ackme 0:ea85c4bb5e1f 122 return getResult(i);
dan_ackme 0:ea85c4bb5e1f 123 }
dan_ackme 0:ea85c4bb5e1f 124
dan_ackme 0:ea85c4bb5e1f 125
dan_ackme 0:ea85c4bb5e1f 126
dan_ackme 0:ea85c4bb5e1f 127
dan_ackme 0:ea85c4bb5e1f 128
dan_ackme 0:ea85c4bb5e1f 129