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.
Fork of autonomous Robot Android by
PacketBuffer.cpp
00001 00002 /** @file PacketBuffer.cpp 00003 * @brief Ring Buffer 00004 */ 00005 00006 #include "PacketBuffer.h" 00007 00008 00009 PacketBuffer::PacketBuffer(int num,int packet_size) 00010 { 00011 max_num = num; 00012 max_size = packet_size; 00013 00014 p_buf = new PacketBufInf[num]; 00015 00016 for(int i = 0 ; i < num ; i++) 00017 { 00018 p_buf[i].buf = new char[packet_size]; 00019 p_buf[i].size = 0; 00020 } 00021 addr_w = 0; 00022 addr_r = 0; 00023 } 00024 00025 PacketBuffer::~PacketBuffer() 00026 { 00027 00028 for(int i = 0 ; i < max_num ; i++) 00029 { 00030 delete [] p_buf[i].buf; 00031 } 00032 delete [] p_buf; 00033 } 00034 00035 int PacketBuffer::PutPacket(char *packet, int len) 00036 { 00037 int next; 00038 00039 if(max_size < len) return(-1); 00040 00041 next = (addr_w + 1) % max_num; 00042 00043 if( next == addr_r ) return(0); 00044 00045 memcpy( p_buf[addr_w].buf , packet , len ); 00046 00047 p_buf[addr_w].size = len; 00048 00049 addr_w = next; 00050 00051 return(len); 00052 } 00053 00054 int PacketBuffer::GetPacket(char *packet) 00055 { 00056 int len; 00057 00058 if( addr_w == addr_r ) return(0); 00059 00060 len = p_buf[addr_r].size; 00061 00062 memcpy( packet , p_buf[addr_r].buf , len ); 00063 00064 addr_r = (addr_r + 1) % max_num; 00065 00066 return len; 00067 } 00068 00069 int PacketBuffer::available () { 00070 if (addr_w < addr_r) { 00071 return addr_r - addr_w - 1; 00072 } else { 00073 return (max_num - addr_w) + addr_r - 1; 00074 } 00075 } 00076 00077 int PacketBuffer::use () { 00078 return max_num - available() - 1; 00079 } 00080 00081 void PacketBuffer::clear () { 00082 addr_w = 0; 00083 addr_r = 0; 00084 }
Generated on Tue Jul 12 2022 14:15:58 by
1.7.2
