isrpipe.h

isrpipe Interface

ISRPIPE_INIT( tsrb_buf)

Static initializer for irspipe.

1
{ .mutex = MUTEX_INIT, .tsrb = TSRB_INIT(tsrb_buf) }
void isrpipe_init(isrpipe_t * isrpipe, char * buf, msp430_types.h::size_t bufsize)

Initialisation function for isrpipe.

Parameters

isrpipe:isrpipe object to initialize
buf:buffer to use as ringbuffer (must be power of two sized!)
bufsize:size of buf

int isrpipe_write_one(isrpipe_t * isrpipe, char c)

Put one character into the isrpipe’s buffer.

Parameters

isrpipe:isrpipe object to initialize
c:character to add to isrpipe buffer

Return values

  • 0 if character could be added
  • -1 if buffer was full
int isrpipe_read(isrpipe_t * isrpipe, char * buf, msp430_types.h::size_t count)

Read data from isrpipe (blocking)

Parameters

isrpipe:isrpipe object to operate on
buf:buffer to write to
count:number of bytes to read

Return values

  • number of bytes read
int isrpipe_read_timeout(isrpipe_t * isrpipe, char * buf, msp430_types.h::size_t count, uint32_t timeout)

Read data from isrpipe (with timeout, blocking)

Currently, the timeout parameter is applied on every underlying read, which might be per single byte.

Note

This function might return less than count bytes

Parameters

isrpipe:isrpipe object to operate on
buf:buffer to write to
count:number of bytes to read
timeout:timeout in microseconds

Return values

  • number of bytes read
  • -ETIMEDOUT on timeout
int isrpipe_read_all_timeout(isrpipe_t * isrpipe, char * buf, msp430_types.h::size_t count, uint32_t timeout)

Read data from isrpipe (with timeout, blocking, wait until all read)

This function is like isrpipe.h::isrpipe_read_timeout(), but will only return on timeout or when count bytes have been received.

Parameters

isrpipe:isrpipe object to operate on
buf:buffer to write to
count:number of bytes to read
timeout:timeout in microseconds

Return values

  • number of bytes read
  • -ETIMEDOUT on timeout
struct isrpipe_t

Context structure for isrpipe.

tsrb.h::tsrb_t tsrb

isrpipe thread safe ringbuffer

mutex_t mutex

isrpipe mutex