ISR Pipe

ISR -> userspace pipe. More...

Detailed Description

ISR -> userspace pipe.

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

◆ isrpipe_init()

void isrpipe_init ( isrpipe_t isrpipe,
char *  buf,
size_t  bufsize 
)

Initialisation function for isrpipe.

Parameters
[in]isrpipeisrpipe object to initialize
[in]bufbuffer to use as ringbuffer (must be power of two sized!)
[in]bufsizesize of buf

◆ isrpipe_read()

int isrpipe_read ( isrpipe_t isrpipe,
char *  buf,
size_t  count 
)

Read data from isrpipe (blocking)

Parameters
[in]isrpipeisrpipe object to operate on
[in]bufbuffer to write to
[in]countnumber of bytes to read
Returns
number of bytes read

◆ isrpipe_read_all_timeout()

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)

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

◆ isrpipe_read_timeout()

int isrpipe_read_timeout ( isrpipe_t isrpipe,
char *  buf,
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
[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

◆ isrpipe_write_one()

int isrpipe_write_one ( isrpipe_t isrpipe,
char  c 
)

Put one character into the isrpipe's buffer.

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