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++; }