Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
ring_buffer.cpp
- Committer:
- klauss
- Date:
- 2015-11-24
- Revision:
- 137:32dd35a6dbc9
- Parent:
- 135:2f4290590e51
File content as of revision 137:32dd35a6dbc9:
#include "ring_buffer.h"
ring_buffer * ring_buffer_init( ring_buffer * rb ){
if( rb == NULL ){
rb = ( ring_buffer * )malloc( sizeof( ring_buffer ) );
rb->begin = 0;
rb->end = 0;
rb->size = 0;
rb->data = ( uint8_t * )malloc( sizeof( uint8_t ) * CB_BUFFER_SIZE * RING_BUFFER_SIZE );
return( rb );
}else return( rb );
}
uint8_t ring_buffer_add( ring_buffer * rb, uint8_t * data ){
if( rb == NULL ) return 0x99;
if( data == NULL ) return 0x98;
if( rb->size >= RING_BUFFER_SIZE ) return 0x01;
else{
rb_xmemcpy( rb->data + ( CB_BUFFER_SIZE * rb->end ), data, CB_BUFFER_SIZE );
if( ++( rb->end ) >= RING_BUFFER_SIZE ) rb->end = 0;
rb->size++;
}
return( 0x00 );
}
uint8_t * ring_buffer_get_next( ring_buffer * rb ){
if( rb == NULL ) return( NULL );
if( rb->size == 0 ) return( NULL );
uint8_t * ret = rb->data + ( rb->begin * CB_BUFFER_SIZE );
if( ++( rb->begin ) >= RING_BUFFER_SIZE ) rb->begin = 0;
if( rb->size > 0 ) rb->size--;
return( ret );
}
void rb_xmemcpy (uint8_t * dest, uint8_t * src, uint16_t size)
{
while ( size-- ) *dest++ = *src++;
}
