ISR Pipe

ISR -> userspace pipe. More...

Detailed Description

Files

file  isrpipe.h
 isrpipe Interface
 

Data Structures

struct  isrpipe_t
 Context structure for isrpipe. More...
 

Macros

#define ISRPIPE_INIT(tsrb_buf)   { .mutex = MUTEX_INIT, .tsrb = TSRB_INIT(tsrb_buf) }
 Static initializer for irspipe.
 

Functions

void isrpipe_init (isrpipe_t *isrpipe, char *buf, size_t bufsize)
 Initialisation function for isrpipe. More...
 
int isrpipe_write_one (isrpipe_t *isrpipe, char c)
 Put one character into the isrpipe's buffer. More...
 
int isrpipe_read (isrpipe_t *isrpipe, char *buf, size_t count)
 Read data from isrpipe (blocking) More...
 
int isrpipe_read_timeout (isrpipe_t *isrpipe, char *buf, size_t count, uint32_t timeout)
 Read data from isrpipe (with timeout, blocking) More...
 
int isrpipe_read_all_timeout (isrpipe_t *isrpipe, char *buf, size_t count, uint32_t timeout)
 Read data from isrpipe (with timeout, blocking, wait until all read) More...
 

Function Documentation

void isrpipe_init ( isrpipe_t isrpipe,
char *  buf,
size_t  bufsize 
)
Parameters
[in]isrpipeisrpipe object to initialize
[in]bufbuffer to use as ringbuffer (must be power of two sized!)
[in]bufsizesize of buf
int isrpipe_read ( isrpipe_t isrpipe,
char *  buf,
size_t  count 
)
Parameters
[in]isrpipeisrpipe object to operate on
[in]bufbuffer to write to
[in]countnumber of bytes to read
Returns
number of bytes read
int isrpipe_read_all_timeout ( isrpipe_t isrpipe,
char *  buf,
size_t  count,
uint32_t  timeout 
)

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

Parameters
[in]isrpipeisrpipe object to operate on
[in]bufbuffer to write to
[in]countnumber of bytes to read
[in]timeouttimeout in ms
Returns
number of bytes read
-ETIMEDOUT on timeout
int isrpipe_read_timeout ( isrpipe_t isrpipe,
char *  buf,
size_t  count,
uint32_t  timeout 
)

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
[in]isrpipeisrpipe object to operate on
[in]bufbuffer to write to
[in]countnumber of bytes to read
[in]timeouttimeout in ms
Returns
number of bytes read
-ETIMEDOUT on timeout
int isrpipe_write_one ( isrpipe_t isrpipe,
char  c 
)
Parameters
[in]isrpipeisrpipe object to initialize
[in]ccharacter to add to isrpipe buffer
Returns
0 if character could be added
-1 if buffer was full