WIP. send a large constant string twice a second, in order to test out the transport with something indicative of our required load.

Dependencies:   FXOS8700CQ NTPClient azure_umqtt_c iothub_mqtt_transport mbed-rtos mbed wolfSSL Socket lwip-eth lwip-sys lwip

Fork of FXOS8700CQ_To_Azure_IoT by Mark Radbourne

Committer:
julianhigginson
Date:
Thu Jan 05 23:40:24 2017 +0000
Revision:
7:0d1a0fe537dc
Parent:
3:c0556ff7b8e3
modified dummy message for minimal data transport

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markrad 3:c0556ff7b8e3 1 // Copyright (c) Microsoft. All rights reserved.
markrad 3:c0556ff7b8e3 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
markrad 3:c0556ff7b8e3 3
markrad 3:c0556ff7b8e3 4 #include <stdlib.h>
markrad 3:c0556ff7b8e3 5 #ifdef _CRTDBG_MAP_ALLOC
markrad 3:c0556ff7b8e3 6 #include <crtdbg.h>
markrad 3:c0556ff7b8e3 7 #endif
markrad 3:c0556ff7b8e3 8
markrad 3:c0556ff7b8e3 9 #include "azure_c_shared_utility/gballoc.h"
markrad 3:c0556ff7b8e3 10 #include "azure_c_shared_utility/vector.h"
markrad 3:c0556ff7b8e3 11
markrad 3:c0556ff7b8e3 12
markrad 3:c0556ff7b8e3 13 typedef struct VECTOR_TAG
markrad 3:c0556ff7b8e3 14 {
markrad 3:c0556ff7b8e3 15 void* storage;
markrad 3:c0556ff7b8e3 16 size_t count;
markrad 3:c0556ff7b8e3 17 size_t elementSize;
markrad 3:c0556ff7b8e3 18 } VECTOR;
markrad 3:c0556ff7b8e3 19
markrad 3:c0556ff7b8e3 20 VECTOR_HANDLE VECTOR_create(size_t elementSize)
markrad 3:c0556ff7b8e3 21 {
markrad 3:c0556ff7b8e3 22 VECTOR_HANDLE result;
markrad 3:c0556ff7b8e3 23
markrad 3:c0556ff7b8e3 24 VECTOR* vec = (VECTOR*)malloc(sizeof(VECTOR));
markrad 3:c0556ff7b8e3 25 if (vec == NULL)
markrad 3:c0556ff7b8e3 26 {
markrad 3:c0556ff7b8e3 27 result = NULL;
markrad 3:c0556ff7b8e3 28 }
markrad 3:c0556ff7b8e3 29 else
markrad 3:c0556ff7b8e3 30 {
markrad 3:c0556ff7b8e3 31 vec->storage = NULL;
markrad 3:c0556ff7b8e3 32 vec->count = 0;
markrad 3:c0556ff7b8e3 33 vec->elementSize = elementSize;
markrad 3:c0556ff7b8e3 34 result = (VECTOR_HANDLE)vec;
markrad 3:c0556ff7b8e3 35 }
markrad 3:c0556ff7b8e3 36 return result;
markrad 3:c0556ff7b8e3 37 }
markrad 3:c0556ff7b8e3 38
markrad 3:c0556ff7b8e3 39 static void internal_VECTOR_clear(VECTOR* vec)
markrad 3:c0556ff7b8e3 40 {
markrad 3:c0556ff7b8e3 41 if (vec->storage != NULL)
markrad 3:c0556ff7b8e3 42 {
markrad 3:c0556ff7b8e3 43 free(vec->storage);
markrad 3:c0556ff7b8e3 44 vec->storage = NULL;
markrad 3:c0556ff7b8e3 45 }
markrad 3:c0556ff7b8e3 46 vec->count = 0;
markrad 3:c0556ff7b8e3 47 }
markrad 3:c0556ff7b8e3 48
markrad 3:c0556ff7b8e3 49 void VECTOR_destroy(VECTOR_HANDLE handle)
markrad 3:c0556ff7b8e3 50 {
markrad 3:c0556ff7b8e3 51 if (handle != NULL)
markrad 3:c0556ff7b8e3 52 {
markrad 3:c0556ff7b8e3 53 VECTOR* vec = (VECTOR*)handle;
markrad 3:c0556ff7b8e3 54 internal_VECTOR_clear(vec);
markrad 3:c0556ff7b8e3 55 free(vec);
markrad 3:c0556ff7b8e3 56 }
markrad 3:c0556ff7b8e3 57 }
markrad 3:c0556ff7b8e3 58
markrad 3:c0556ff7b8e3 59 /* insertion */
markrad 3:c0556ff7b8e3 60 int VECTOR_push_back(VECTOR_HANDLE handle, const void* elements, size_t numElements)
markrad 3:c0556ff7b8e3 61 {
markrad 3:c0556ff7b8e3 62 int result;
markrad 3:c0556ff7b8e3 63 if (handle == NULL || elements == NULL || numElements == 0)
markrad 3:c0556ff7b8e3 64 {
markrad 3:c0556ff7b8e3 65 result = __LINE__;
markrad 3:c0556ff7b8e3 66 }
markrad 3:c0556ff7b8e3 67 else
markrad 3:c0556ff7b8e3 68 {
markrad 3:c0556ff7b8e3 69 VECTOR* vec = (VECTOR*)handle;
markrad 3:c0556ff7b8e3 70 const size_t curSize = vec->elementSize * vec->count;
markrad 3:c0556ff7b8e3 71 const size_t appendSize = vec->elementSize * numElements;
markrad 3:c0556ff7b8e3 72
markrad 3:c0556ff7b8e3 73 void* temp = realloc(vec->storage, curSize + appendSize);
markrad 3:c0556ff7b8e3 74 if (temp == NULL)
markrad 3:c0556ff7b8e3 75 {
markrad 3:c0556ff7b8e3 76 result = __LINE__;
markrad 3:c0556ff7b8e3 77 }
markrad 3:c0556ff7b8e3 78 else
markrad 3:c0556ff7b8e3 79 {
markrad 3:c0556ff7b8e3 80 memcpy((unsigned char*)temp + curSize, elements, appendSize);
markrad 3:c0556ff7b8e3 81 vec->storage = temp;
markrad 3:c0556ff7b8e3 82 vec->count += numElements;
markrad 3:c0556ff7b8e3 83 result = 0;
markrad 3:c0556ff7b8e3 84 }
markrad 3:c0556ff7b8e3 85 }
markrad 3:c0556ff7b8e3 86 return result;
markrad 3:c0556ff7b8e3 87 }
markrad 3:c0556ff7b8e3 88
markrad 3:c0556ff7b8e3 89 /* removal */
markrad 3:c0556ff7b8e3 90 void VECTOR_erase(VECTOR_HANDLE handle, void* elements, size_t numElements)
markrad 3:c0556ff7b8e3 91 {
markrad 3:c0556ff7b8e3 92 if (handle != NULL && elements != NULL && numElements > 0)
markrad 3:c0556ff7b8e3 93 {
markrad 3:c0556ff7b8e3 94 VECTOR* vec = (VECTOR*)handle;
markrad 3:c0556ff7b8e3 95 unsigned char* src = (unsigned char*)elements + (vec->elementSize * numElements);
markrad 3:c0556ff7b8e3 96 unsigned char* srcEnd = (unsigned char*)vec->storage + (vec->elementSize * vec->count);
markrad 3:c0556ff7b8e3 97 (void)memmove(elements, src, srcEnd - src);
markrad 3:c0556ff7b8e3 98 vec->count -= numElements;
markrad 3:c0556ff7b8e3 99 if (vec->count == 0)
markrad 3:c0556ff7b8e3 100 {
markrad 3:c0556ff7b8e3 101 free(vec->storage);
markrad 3:c0556ff7b8e3 102 vec->storage = NULL;
markrad 3:c0556ff7b8e3 103 }
markrad 3:c0556ff7b8e3 104 else
markrad 3:c0556ff7b8e3 105 {
markrad 3:c0556ff7b8e3 106 vec->storage = realloc(vec->storage, (vec->elementSize * vec->count));
markrad 3:c0556ff7b8e3 107 }
markrad 3:c0556ff7b8e3 108 }
markrad 3:c0556ff7b8e3 109 }
markrad 3:c0556ff7b8e3 110
markrad 3:c0556ff7b8e3 111 void VECTOR_clear(VECTOR_HANDLE handle)
markrad 3:c0556ff7b8e3 112 {
markrad 3:c0556ff7b8e3 113 if (handle != NULL)
markrad 3:c0556ff7b8e3 114 {
markrad 3:c0556ff7b8e3 115 VECTOR* vec = (VECTOR*)handle;
markrad 3:c0556ff7b8e3 116 internal_VECTOR_clear(vec);
markrad 3:c0556ff7b8e3 117 }
markrad 3:c0556ff7b8e3 118 }
markrad 3:c0556ff7b8e3 119
markrad 3:c0556ff7b8e3 120 /* access */
markrad 3:c0556ff7b8e3 121
markrad 3:c0556ff7b8e3 122 void* VECTOR_element(const VECTOR_HANDLE handle, size_t index)
markrad 3:c0556ff7b8e3 123 {
markrad 3:c0556ff7b8e3 124 void* result = NULL;
markrad 3:c0556ff7b8e3 125 if (handle != NULL)
markrad 3:c0556ff7b8e3 126 {
markrad 3:c0556ff7b8e3 127 const VECTOR* vec = (const VECTOR*)handle;
markrad 3:c0556ff7b8e3 128 if (index < vec->count)
markrad 3:c0556ff7b8e3 129 {
markrad 3:c0556ff7b8e3 130 result = (unsigned char*)vec->storage + (vec->elementSize * index);
markrad 3:c0556ff7b8e3 131 }
markrad 3:c0556ff7b8e3 132 }
markrad 3:c0556ff7b8e3 133 return result;
markrad 3:c0556ff7b8e3 134 }
markrad 3:c0556ff7b8e3 135
markrad 3:c0556ff7b8e3 136 void* VECTOR_front(const VECTOR_HANDLE handle)
markrad 3:c0556ff7b8e3 137 {
markrad 3:c0556ff7b8e3 138 void* result = NULL;
markrad 3:c0556ff7b8e3 139 if (handle != NULL)
markrad 3:c0556ff7b8e3 140 {
markrad 3:c0556ff7b8e3 141 const VECTOR* vec = (const VECTOR*)handle;
markrad 3:c0556ff7b8e3 142 result = vec->storage;
markrad 3:c0556ff7b8e3 143 }
markrad 3:c0556ff7b8e3 144 return result;
markrad 3:c0556ff7b8e3 145 }
markrad 3:c0556ff7b8e3 146
markrad 3:c0556ff7b8e3 147 void* VECTOR_back(const VECTOR_HANDLE handle)
markrad 3:c0556ff7b8e3 148 {
markrad 3:c0556ff7b8e3 149 void* result = NULL;
markrad 3:c0556ff7b8e3 150 if (handle != NULL)
markrad 3:c0556ff7b8e3 151 {
markrad 3:c0556ff7b8e3 152 const VECTOR* vec = (const VECTOR*)handle;
markrad 3:c0556ff7b8e3 153 result = (unsigned char*)vec->storage + (vec->elementSize * (vec->count - 1));
markrad 3:c0556ff7b8e3 154 }
markrad 3:c0556ff7b8e3 155 return result;
markrad 3:c0556ff7b8e3 156 }
markrad 3:c0556ff7b8e3 157
markrad 3:c0556ff7b8e3 158 void* VECTOR_find_if(const VECTOR_HANDLE handle, PREDICATE_FUNCTION pred, const void* value)
markrad 3:c0556ff7b8e3 159 {
markrad 3:c0556ff7b8e3 160 void* result = NULL;
markrad 3:c0556ff7b8e3 161 size_t i;
markrad 3:c0556ff7b8e3 162 VECTOR* handleData = (VECTOR*)handle;
markrad 3:c0556ff7b8e3 163 if (handle != NULL && pred != NULL && value != NULL)
markrad 3:c0556ff7b8e3 164 {
markrad 3:c0556ff7b8e3 165 for (i = 0; i < handleData->count; ++i)
markrad 3:c0556ff7b8e3 166 {
markrad 3:c0556ff7b8e3 167 void* elem = (unsigned char*)handleData->storage + (handleData->elementSize * i);
markrad 3:c0556ff7b8e3 168 if (!!pred(elem, value))
markrad 3:c0556ff7b8e3 169 {
markrad 3:c0556ff7b8e3 170 result = elem;
markrad 3:c0556ff7b8e3 171 break;
markrad 3:c0556ff7b8e3 172 }
markrad 3:c0556ff7b8e3 173 }
markrad 3:c0556ff7b8e3 174 }
markrad 3:c0556ff7b8e3 175 return result;
markrad 3:c0556ff7b8e3 176 }
markrad 3:c0556ff7b8e3 177
markrad 3:c0556ff7b8e3 178 /* capacity */
markrad 3:c0556ff7b8e3 179
markrad 3:c0556ff7b8e3 180 size_t VECTOR_size(const VECTOR_HANDLE handle)
markrad 3:c0556ff7b8e3 181 {
markrad 3:c0556ff7b8e3 182 size_t result = 0;
markrad 3:c0556ff7b8e3 183 if (handle != NULL)
markrad 3:c0556ff7b8e3 184 {
markrad 3:c0556ff7b8e3 185 const VECTOR* vec = (const VECTOR*)handle;
markrad 3:c0556ff7b8e3 186 result = vec->count;
markrad 3:c0556ff7b8e3 187 }
markrad 3:c0556ff7b8e3 188 return result;
markrad 3:c0556ff7b8e3 189 }