32 lines
1.4 KiB
C
32 lines
1.4 KiB
C
|
#ifndef __CARLINK_UTILS_H
|
||
|
#define __CARLINK_UTILS_H
|
||
|
|
||
|
void hex2str(const uint8_t *input, uint16_t input_len, char *output);
|
||
|
int string2hex(char *input, int input_len, char *output, int max_len);
|
||
|
void str2asiistr(const char *input, int input_len, char *output, int max_len);
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
uint8_t * buffer;
|
||
|
//const uint8_t * end;
|
||
|
uint32_t size;
|
||
|
uint32_t mask;
|
||
|
uint32_t read_offset;
|
||
|
uint32_t write_offset;
|
||
|
} ring_buffer_t;
|
||
|
|
||
|
int ring_buffer_init( ring_buffer_t *ctx, int buffer_size);
|
||
|
void ring_buffer_free( ring_buffer_t *ctx );
|
||
|
uint32_t ring_buffer_write(ring_buffer_t *ctx, uint8_t *buffer, uint32_t len);
|
||
|
uint32_t ring_buffer_read(ring_buffer_t *ctx, uint8_t *buffer, uint32_t len);
|
||
|
|
||
|
/*#define ring_buffer_get_read_ptr( RING ) ( &(RING)->buffer[ (RING)->read_offset & (RING)->mask ] )
|
||
|
#define ring_buffer_get_write_ptr( RING ) ( &(RING)->buffer[ (RING)->write_offset & (RING)->mask ] )
|
||
|
#define ring_buffer_read_advance( RING, COUNT ) do { (RING)->read_offset += (COUNT); } while( 0 )
|
||
|
#define ring_buffer_write_advance( RING, COUNT ) do { (RING)->write_offset += (COUNT); } while( 0 )
|
||
|
#define ring_buffer_reset( RING ) do { (RING)->read_offset = (RING)->write_offset; } while( 0 )*/
|
||
|
#define ring_buffer_get_bytes_used( RING ) ( (uint32_t)( (RING)->write_offset - (RING)->read_offset ) )
|
||
|
#define ring_buffer_get_bytes_free( RING ) ( (RING)->size - ring_buffer_get_bytes_used( RING ) )
|
||
|
|
||
|
#endif
|