Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface mbed-rtos
NullBuffer.cpp
00001 #include <stdint.h> 00002 #include "mbed.h" 00003 00004 #include "NullBuffer.h" 00005 00006 struct NullBuffer_private { 00007 int8_t *pData; 00008 uint8_t size; 00009 uint8_t isUpdated; 00010 }; 00011 00012 void NullBuffer_push(PortBuffer* _this, const int8_t* data, uint8_t size); 00013 void NullBuffer_pop(PortBuffer* _this, int8_t* dst, uint8_t size); 00014 uint8_t NullBuffer_getNextDataSize(PortBuffer* _this); 00015 uint8_t NullBuffer_hasNext(PortBuffer* _this); 00016 00017 00018 PortBuffer* NullBuffer_create() 00019 { 00020 struct NullBuffer_private* privateData = 00021 (struct NullBuffer_private*)malloc(sizeof(struct NullBuffer_private)); 00022 00023 privateData->pData = NULL; 00024 privateData->size = 0; 00025 privateData->isUpdated = 0; 00026 PortBuffer* retval = (PortBuffer*)malloc(sizeof(PortBuffer)); 00027 retval->push = NullBuffer_push; 00028 retval->pop = NullBuffer_pop; 00029 retval->getNextDataSize = NullBuffer_getNextDataSize; 00030 retval->hasNext = NullBuffer_hasNext; 00031 retval->privateData = (void*)privateData; 00032 return retval; 00033 } 00034 00035 void NullBuffer_destroy(PortBuffer* _this) { 00036 struct NullBuffer_private* nullBuffer = 00037 (struct NullBuffer_private*)(_this->privateData); 00038 free(nullBuffer->pData); 00039 free(nullBuffer); 00040 free(_this); 00041 } 00042 00043 void NullBuffer_push(PortBuffer* _this, const int8_t* data, uint8_t size) { 00044 struct NullBuffer_private* nullBuffer = 00045 (struct NullBuffer_private*)(_this->privateData); 00046 if(size != nullBuffer->size) { 00047 free(nullBuffer->pData); 00048 nullBuffer->pData = (int8_t*)malloc(size); 00049 nullBuffer->size = size; 00050 } 00051 memcpy(nullBuffer->pData, data, size); 00052 nullBuffer->isUpdated = 1; 00053 } 00054 00055 void NullBuffer_pop(PortBuffer* _this, int8_t* dst, uint8_t size) 00056 { 00057 struct NullBuffer_private* nullBuffer = 00058 (struct NullBuffer_private*)(_this->privateData); 00059 if(nullBuffer->size <= size) { 00060 memcpy(dst, nullBuffer->pData, nullBuffer->size); 00061 } 00062 nullBuffer->isUpdated = 0; 00063 } 00064 00065 uint8_t NullBuffer_getNextDataSize(PortBuffer* _this){ 00066 return ((struct NullBuffer_private*)(_this->privateData))->size; 00067 } 00068 00069 uint8_t NullBuffer_hasNext(PortBuffer* _this) { 00070 return ((struct NullBuffer_private*)(_this->privateData))->isUpdated; 00071 } 00072
Generated on Fri Jul 22 2022 21:22:49 by
1.7.2