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
dan_ackme 0:ea85c4bb5e1f 12
dan_ackme 0:ea85c4bb5e1f 13 #include "Wiconnect.h"
dan_ackme 0:ea85c4bb5e1f 14 #include "types/FileList.h"
dan_ackme 0:ea85c4bb5e1f 15
dan_ackme 0:ea85c4bb5e1f 16
dan_ackme 0:ea85c4bb5e1f 17
dan_ackme 0:ea85c4bb5e1f 18 /*************************************************************************************************/
dan_ackme 0:ea85c4bb5e1f 19 FileList::FileList(int bufferLen_, void *buffer_)
dan_ackme 0:ea85c4bb5e1f 20 {
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 FileList::~FileList()
dan_ackme 0:ea85c4bb5e1f 30 {
dan_ackme 0:ea85c4bb5e1f 31 if(buffer == NULL)
dan_ackme 0:ea85c4bb5e1f 32 {
dan_ackme 0:ea85c4bb5e1f 33 File* result = listHead;
dan_ackme 0:ea85c4bb5e1f 34 while(result != NULL)
dan_ackme 0:ea85c4bb5e1f 35 {
dan_ackme 0:ea85c4bb5e1f 36 File* 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 FileList::add(const char *typeStr, const char *flagsStr, const char* sizeStr, const char *versionStr, const char *nameStr)
dan_ackme 0:ea85c4bb5e1f 45 {
dan_ackme 0:ea85c4bb5e1f 46 WiconnectResult result;
dan_ackme 0:ea85c4bb5e1f 47 File *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 File();
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(File))
dan_ackme 0:ea85c4bb5e1f 60 {
dan_ackme 0:ea85c4bb5e1f 61 return WICONNECT_OVERFLOW;
dan_ackme 0:ea85c4bb5e1f 62 }
dan_ackme 0:ea85c4bb5e1f 63 res = (File*)bufferPtr;
dan_ackme 0:ea85c4bb5e1f 64 memset(res, 0, sizeof(File));
dan_ackme 0:ea85c4bb5e1f 65 bufferLen -= sizeof(File);
dan_ackme 0:ea85c4bb5e1f 66 bufferPtr += sizeof(File);
dan_ackme 0:ea85c4bb5e1f 67 }
dan_ackme 0:ea85c4bb5e1f 68
dan_ackme 0:ea85c4bb5e1f 69 if(WICONNECT_FAILED(result, res->initWithListing(typeStr, flagsStr, sizeStr, versionStr, nameStr)))
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 File* FileList::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 FileList::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 File* FileList::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 File* 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 File* FileList::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