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
Diff: internal/types/FileList.cpp
- Revision:
- 0:ea85c4bb5e1f
- Child:
- 1:6ec9998427ad
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/internal/types/FileList.cpp Mon Aug 11 09:58:24 2014 +0000 @@ -0,0 +1,125 @@ +/* + * Copyright 2014, ACKme Networks + * All Rights Reserved. + * + * This is UNPUBLISHED PROPRIETARY SOURCE CODE of ACKme Networks; + * the contents of this file may not be disclosed to third parties, copied + * or duplicated in any form, in whole or in part, without the prior + * written permission of ACKme Networks. + */ + + + +#include "Wiconnect.h" +#include "types/FileList.h" + + + +/*************************************************************************************************/ +FileList::FileList(int bufferLen_, void *buffer_) +{ + count = 0; + listHead = listTail = NULL; + buffer = (uint8_t*)buffer_; + bufferPtr = buffer; + bufferLen = bufferLen_; +} + +/*************************************************************************************************/ +FileList::~FileList() +{ + if(buffer == NULL) + { + File* result = listHead; + while(result != NULL) + { + File* tmp = result; + result = result->next; + delete tmp; + } + } +} + +/*************************************************************************************************/ +WiconnectResult FileList::add(const char *typeStr, const char *flagsStr, const char* sizeStr, const char *versionStr, const char *nameStr) +{ + WiconnectResult result; + File *res; + + if(buffer == NULL) + { + res = new File(); + if(res == NULL) + { + return WICONNECT_NULL_BUFFER; + } + } + else + { + if(bufferLen < sizeof(File)) + { + return WICONNECT_OVERFLOW; + } + res = (File*)bufferPtr; + memset(res, 0, sizeof(File)); + bufferLen -= sizeof(File); + bufferPtr += sizeof(File); + } + + if(WICONNECT_FAILED(result, res->initWithListing(typeStr, flagsStr, sizeStr, versionStr, nameStr))) + { + if(buffer == NULL) + { + delete res; + } + } + else + { + if(listHead == NULL) + { + listHead = listTail = res; + } + else + { + res->previous = listTail; + listTail->next = res; + listTail = res; + } + ++count; + } + + return result; +} + +/*************************************************************************************************/ +const File* FileList::getListHead() const +{ + return listHead; +} + +/*************************************************************************************************/ +int FileList::getCount() const +{ + return count; +} + +/*************************************************************************************************/ +const File* FileList::getResult(int i) const +{ + if(i >= count) + return NULL; + + File* result = listHead; + while(i-- != 0) + result = result->next; + + return result; +} + +/*************************************************************************************************/ +const File* FileList::operator [](int i) const +{ + return getResult(i); +} + +