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
internal/types/ScanResultList.cpp@0:ea85c4bb5e1f, 2014-08-11 (annotated)
- 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?
User | Revision | Line number | New 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 |