|
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.