ChibiOS
0.0.0
|
![]() |
Macros | |
#define | _PIPE_DATA(name, buffer, size) |
Data part of a static pipe initializer. More... | |
#define | PIPE_DECL(name, buffer, size) pipe_t name = _PIPE_DATA(name, buffer, size) |
Static pipe initializer. More... | |
Data Structures | |
struct | pipe_t |
Structure representing a pipe object. More... | |
Functions | |
void | chPipeObjectInit (pipe_t *pp, uint8_t *buf, size_t n) |
Initializes a mailbox_t object. More... | |
void | chPipeReset (pipe_t *pp) |
Resets a pipe_t object. More... | |
size_t | chPipeWriteTimeout (pipe_t *pp, const uint8_t *bp, size_t n, sysinterval_t timeout) |
Pipe write with timeout. More... | |
size_t | chPipeReadTimeout (pipe_t *pp, uint8_t *bp, size_t n, sysinterval_t timeout) |
Pipe read with timeout. More... | |
static size_t | chPipeGetSizeI (const pipe_t *pp) |
Returns the pipe buffer size as number of bytes. More... | |
static size_t | chPipeGetUsedCountI (const pipe_t *pp) |
Returns the number of used byte slots into a pipe. More... | |
static size_t | chPipeGetFreeCountI (const pipe_t *pp) |
Returns the number of free byte slots into a pipe. More... | |
static uint8_t | chPipePeekI (const pipe_t *pp) |
Returns the next byte in the queue without removing it. More... | |
static void | chPipeResumeX (pipe_t *pp) |
Terminates the reset state. More... | |
#define _PIPE_DATA | ( | name, | |
buffer, | |||
size | |||
) |
Data part of a static pipe initializer.
This macro should be used when statically initializing a pipe that is part of a bigger structure.
[in] | name | the name of the pipe variable |
[in] | buffer | pointer to the pipe buffer array of uint8_t |
[in] | size | number of uint8_t elements in the buffer array |
#define PIPE_DECL | ( | name, | |
buffer, | |||
size | |||
) | pipe_t name = _PIPE_DATA(name, buffer, size) |
Static pipe initializer.
Statically initialized pipes require no explicit initialization using chPipeObjectInit()
.
[in] | name | the name of the pipe variable |
[in] | buffer | pointer to the pipe buffer array of uint8_t |
[in] | size | number of uint8_t elements in the buffer array |
void chPipeObjectInit | ( | pipe_t * | pp, |
uint8_t * | buf, | ||
size_t | n | ||
) |
Initializes a mailbox_t
object.
[out] | pp | the pointer to the pipe_t structure to be initialized |
[in] | buf | pointer to the pipe buffer as an array of uint8_t |
[in] | n | number of elements in the buffer array |
Definition at line 89 of file chpipes.c.
References pipe_t::buffer, chDbgCheck, chThdQueueObjectInit, pipe_t::cnt, pipe_t::qr, pipe_t::qw, pipe_t::rdptr, pipe_t::reset, pipe_t::top, and pipe_t::wrptr.
void chPipeReset | ( | pipe_t * | pp | ) |
Resets a pipe_t
object.
All the waiting threads are resumed with status MSG_RESET
and the queued data is lost.
MSG_RESET
until the mailbox is enabled again using chPipeResumeX()
.[in] | pp | the pointer to an initialized pipe_t object |
Definition at line 115 of file chpipes.c.
References pipe_t::buffer, chDbgCheck, chSchRescheduleS(), chSysLock, chSysUnlock, chThdDequeueAllI(), pipe_t::cnt, MSG_RESET, pipe_t::qr, pipe_t::qw, pipe_t::rdptr, pipe_t::reset, and pipe_t::wrptr.
size_t chPipeWriteTimeout | ( | pipe_t * | pp, |
const uint8_t * | bp, | ||
size_t | n, | ||
sysinterval_t | timeout | ||
) |
Pipe write with timeout.
The function writes data from a buffer to a pipe. The operation completes when the specified amount of data has been transferred or after the specified timeout or if the pipe has been reset.
[in] | pp | the pointer to an initialized pipe_t object |
[in] | bp | pointer to the data buffer |
[in] | n | the maximum amount of data to be transferred, the value 0 is reserved |
[in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
MSG_RESET | if the mailbox has been reset. |
MSG_TIMEOUT | if the operation has timed out. |
size_t chPipeReadTimeout | ( | pipe_t * | pp, |
uint8_t * | bp, | ||
size_t | n, | ||
sysinterval_t | timeout | ||
) |
Pipe read with timeout.
The function reads data from a pipe into a buffer. The operation completes when the specified amount of data has been transferred or after the specified timeout or if the pipe has been reset.
[in] | pp | the pointer to an initialized pipe_t object |
[out] | bp | pointer to the data buffer |
[in] | n | the maximum amount of data to be transferred, the value 0 is reserved |
[in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
MSG_RESET | if the mailbox has been reset. |
MSG_TIMEOUT | if the operation has timed out. |
|
inlinestatic |
Returns the pipe buffer size as number of bytes.
[in] | pp | the pointer to an initialized pipe_t object |
Definition at line 150 of file chpipes.h.
References pipe_t::buffer, and pipe_t::top.
Referenced by chPipeGetFreeCountI().
|
inlinestatic |
Returns the number of used byte slots into a pipe.
[in] | pp | the pointer to an initialized pipe_t object |
Definition at line 166 of file chpipes.h.
References pipe_t::cnt.
Referenced by chPipeGetFreeCountI().
|
inlinestatic |
Returns the number of free byte slots into a pipe.
[in] | pp | the pointer to an initialized pipe_t object |
Definition at line 181 of file chpipes.h.
References chPipeGetSizeI(), and chPipeGetUsedCountI().
|
inlinestatic |
Returns the next byte in the queue without removing it.
chPipeGetFullCountI()
and then use this macro, all within a lock state.[in] | pp | the pointer to an initialized pipe_t object |
Definition at line 200 of file chpipes.h.
References pipe_t::rdptr.
|
inlinestatic |
Terminates the reset state.
[in] | pp | the pointer to an initialized pipe_t object |
Definition at line 214 of file chpipes.h.
References pipe_t::reset.