renamed some funcs and added partial write funcs

threadsafe
Ondřej Hruška 9 years ago
parent 776a24cbe8
commit 84ff40477e
  1. 24
      circbuf.c
  2. 43
      circbuf.h

@ -103,12 +103,30 @@ bool cbuf_write_n(CircularBuffer *inst, const uint8_t *b, uint16_t count)
}
uint16_t cbuf_write_partial(CircularBuffer *inst, const uint8_t *b, uint16_t max)
{
uint16_t i;
for (i = 0; i < max; i++) {
if (cbuf_empty(inst)) break;
cbuf_write(inst, *(b + i));
}
return i;
}
bool cbuf_write_string(CircularBuffer *inst, const char *str)
{
return cbuf_write_n(inst, (uint8_t *) str, strlen(str));
}
uint16_t cbuf_write_string_partial(CircularBuffer *inst, const char *str)
{
return cbuf_write_partial(inst, (uint8_t *) str, strlen(str));
}
bool cbuf_read_n(CircularBuffer *inst, uint8_t *buf, uint16_t len)
{
if (cbuf_data_size(inst) < len) return false;
@ -132,7 +150,7 @@ bool cbuf_read_string(CircularBuffer *inst, char *str, uint16_t len)
}
uint16_t cbuf_read_upto(CircularBuffer *inst, uint8_t *buf, uint16_t max)
uint16_t cbuf_read_partial(CircularBuffer *inst, uint8_t *buf, uint16_t max)
{
uint16_t i;
for (i = 0; i < max; i++) {
@ -144,9 +162,9 @@ uint16_t cbuf_read_upto(CircularBuffer *inst, uint8_t *buf, uint16_t max)
}
uint16_t cbuf_read_string_upto(CircularBuffer *inst, char *str, uint16_t max)
uint16_t cbuf_read_string_partial(CircularBuffer *inst, char *str, uint16_t max)
{
uint16_t cnt = cbuf_read_upto(inst, (uint8_t *) str, max);
uint16_t cnt = cbuf_read_partial(inst, (uint8_t *) str, max);
str[cnt] = 0;
return cnt;
}

@ -31,7 +31,10 @@ bool cbuf_write(CircularBuffer *inst, uint8_t b);
bool cbuf_read(CircularBuffer *inst, uint8_t *b);
/** Get byte at the read cursor, without incrementing it. False on empty. */
/**
* Get byte at the read cursor, without incrementing it.
* False on empty.
*/
bool cbuf_peek(CircularBuffer *inst, uint8_t *b);
@ -47,37 +50,51 @@ uint16_t cbuf_free_space(CircularBuffer *inst);
void cbuf_clear(CircularBuffer *inst);
/** Write N bytes. Returns success */
/** Write N bytes, or none. Returns success */
bool cbuf_write_n(CircularBuffer *inst, const uint8_t *b, uint16_t count);
/** Write a string (without \0) */
/** Try to write N bytes. Returns actual number of bytes written. */
uint16_t cbuf_write_partial(CircularBuffer *inst, const uint8_t *b, uint16_t max);
/** Write a string (excluding \0) - or nothing. */
bool cbuf_write_string(CircularBuffer *inst, const char *str);
/** Read N bytes, if available. Returns success. */
bool cbuf_read_n(CircularBuffer *inst, uint8_t *buf, uint16_t len);
/**
* Try to write string (excluding \0).
* Returns actual number of chars written.
*/
uint16_t cbuf_write_string_partial(CircularBuffer *inst, const char *str);
/** Read string of given length, append \0. `str` must be len+1 long */
bool cbuf_read_string(CircularBuffer *inst, char *str, uint16_t len);
/** Read N bytes, or none. Returns success. */
bool cbuf_read_n(CircularBuffer *inst, uint8_t *buf, uint16_t len);
/** Read up to N bytes. Returns byte count */
uint16_t cbuf_read_upto(CircularBuffer *inst, uint8_t *buf, uint16_t max);
uint16_t cbuf_read_partial(CircularBuffer *inst, uint8_t *buf, uint16_t max);
/** Read string of given length, append \0. `str` must be len+1 long */
bool cbuf_read_string(CircularBuffer *inst, char *str, uint16_t len);
/** Read string up to N chars long, append \0. `str` must be max+1 long */
uint16_t cbuf_read_string_upto(CircularBuffer *inst, char *str, uint16_t max);
/**
* Read string up to N chars long, append \0.
* `str` must be max+1 long
*/
uint16_t cbuf_read_string_partial(CircularBuffer *inst, char *str, uint16_t max);
/**
* Search buffer and return position of the first occurence
* of the given byte (position relative to read_pos).
*
* The returned value is zero-based, add 1 to get string
*
* The returned value is zero-based, add 1 to get string
* length including the delimiter.
*
*
* Returns -1 if not found.
*/
int32_t cbuf_find(CircularBuffer *inst, uint8_t b);

Loading…
Cancel
Save