RTno is communicating library and framework which allows you to make your embedded device capable of communicating with RT-middleware world. RT-middleware is a platform software to realize Robotic system. In RTM, robots are developed by constructing robotics technologies\' elements (components) named RT-component. Therefore, the RTno helps you to create your own RT-component with your mbed and arduino. To know how to use your RTno device, visit here: http://ysuga.net/robot_e/rtm_e/rtc_e/1065?lang=en To know about RT-middleware and RT-component, visit http://www.openrtm.org
Dependents: RTnoV3_LED RTnoV3_Template RTnoV3_ADC RTnoV3_Timer ... more
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 Tue Jul 12 2022 18:33:24 by 1.7.2