Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
ring_buffer.cpp@137:32dd35a6dbc9, 2015-11-24 (annotated)
- Committer:
- klauss
- Date:
- Tue Nov 24 14:06:22 2015 +0000
- Revision:
- 137:32dd35a6dbc9
- Parent:
- 135:2f4290590e51
core source of the .bin (09/21/2015) in the field
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 72:895ca792c647 | 1 | #include "ring_buffer.h" |
klauss | 72:895ca792c647 | 2 | |
klauss | 72:895ca792c647 | 3 | ring_buffer * ring_buffer_init( ring_buffer * rb ){ |
klauss | 72:895ca792c647 | 4 | if( rb == NULL ){ |
klauss | 72:895ca792c647 | 5 | rb = ( ring_buffer * )malloc( sizeof( ring_buffer ) ); |
klauss | 72:895ca792c647 | 6 | rb->begin = 0; |
klauss | 72:895ca792c647 | 7 | rb->end = 0; |
klauss | 72:895ca792c647 | 8 | rb->size = 0; |
klauss | 119:ee6a53069455 | 9 | rb->data = ( uint8_t * )malloc( sizeof( uint8_t ) * CB_BUFFER_SIZE * RING_BUFFER_SIZE ); |
klauss | 72:895ca792c647 | 10 | return( rb ); |
klauss | 72:895ca792c647 | 11 | }else return( rb ); |
klauss | 72:895ca792c647 | 12 | } |
klauss | 72:895ca792c647 | 13 | |
klauss | 72:895ca792c647 | 14 | uint8_t ring_buffer_add( ring_buffer * rb, uint8_t * data ){ |
klauss | 72:895ca792c647 | 15 | if( rb == NULL ) return 0x99; |
klauss | 72:895ca792c647 | 16 | |
klauss | 72:895ca792c647 | 17 | if( data == NULL ) return 0x98; |
klauss | 72:895ca792c647 | 18 | |
klauss | 99:e80850c51106 | 19 | if( rb->size >= RING_BUFFER_SIZE ) return 0x01; |
klauss | 72:895ca792c647 | 20 | |
klauss | 72:895ca792c647 | 21 | else{ |
klauss | 119:ee6a53069455 | 22 | rb_xmemcpy( rb->data + ( CB_BUFFER_SIZE * rb->end ), data, CB_BUFFER_SIZE ); |
klauss | 99:e80850c51106 | 23 | if( ++( rb->end ) >= RING_BUFFER_SIZE ) rb->end = 0; |
klauss | 72:895ca792c647 | 24 | rb->size++; |
klauss | 72:895ca792c647 | 25 | } |
klauss | 72:895ca792c647 | 26 | |
klauss | 72:895ca792c647 | 27 | return( 0x00 ); |
klauss | 72:895ca792c647 | 28 | } |
klauss | 72:895ca792c647 | 29 | |
klauss | 72:895ca792c647 | 30 | uint8_t * ring_buffer_get_next( ring_buffer * rb ){ |
klauss | 72:895ca792c647 | 31 | if( rb == NULL ) return( NULL ); |
klauss | 72:895ca792c647 | 32 | |
klauss | 72:895ca792c647 | 33 | if( rb->size == 0 ) return( NULL ); |
klauss | 72:895ca792c647 | 34 | |
klauss | 119:ee6a53069455 | 35 | uint8_t * ret = rb->data + ( rb->begin * CB_BUFFER_SIZE ); |
klauss | 99:e80850c51106 | 36 | |
klauss | 99:e80850c51106 | 37 | if( ++( rb->begin ) >= RING_BUFFER_SIZE ) rb->begin = 0; |
klauss | 72:895ca792c647 | 38 | |
klauss | 99:e80850c51106 | 39 | if( rb->size > 0 ) rb->size--; |
klauss | 72:895ca792c647 | 40 | |
klauss | 99:e80850c51106 | 41 | return( ret ); |
klauss | 72:895ca792c647 | 42 | } |
klauss | 72:895ca792c647 | 43 | |
klauss | 135:2f4290590e51 | 44 | void rb_xmemcpy (uint8_t * dest, uint8_t * src, uint16_t size) |
klauss | 135:2f4290590e51 | 45 | { |
klauss | 135:2f4290590e51 | 46 | while ( size-- ) *dest++ = *src++; |
klauss | 72:895ca792c647 | 47 | } |