![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: ring_buffer.cpp
- Revision:
- 99:e80850c51106
- Parent:
- 72:895ca792c647
- Child:
- 105:a930035b6556
--- a/ring_buffer.cpp Sun Jan 11 03:30:47 2015 +0000 +++ b/ring_buffer.cpp Mon Jan 19 18:00:42 2015 +0000 @@ -25,11 +25,11 @@ if( data == NULL ) return 0x98; - if( rb->size == RING_BUFFER_SIZE ) return 0x01; + 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; + if( ++( rb->end ) >= RING_BUFFER_SIZE ) rb->end = 0; rb->size++; } @@ -41,20 +41,13 @@ if( rb->size == 0 ) return( NULL ); - uint8_t * tmp = rb->data + ( rb->begin * __CB_BUFFER_SIZE__ ); - if( rb->size == 0 ){ - rb->begin = 0; - rb->end = 0; - rb->size = 0; - } - /* Por que ( RING_BUFFER_SIZE - 1 ) ??? - * rb->begin retorna a posição 0, 1, 2 somente - **/ - if( ++( rb->begin ) > ( RING_BUFFER_SIZE - 1 ) ) rb->begin = 0; + 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--; + if( rb->size > 0 ) rb->size--; - return( tmp ); + return( ret ); } bool unit_test_01(){