|
ChibiOS 21.11.4
|

Data Structures | |
| struct | pipe_t |
| Structure representing a pipe object. More... | |
Macros | |
| #define | PC_INIT(p) |
| #define | PC_LOCK(p) |
| #define | PC_UNLOCK(p) |
| #define | PW_INIT(p) |
| #define | PW_LOCK(p) |
| #define | PW_UNLOCK(p) |
| #define | PR_INIT(p) |
| #define | PR_LOCK(p) |
| #define | PR_UNLOCK(p) |
| #define | __PIPE_DATA(name, buffer, size) |
| Data part of a static pipe initializer. | |
| #define | PIPE_DECL(name, buffer, size) |
| Static pipe initializer. | |
Functions | |
| static size_t | pipe_write (pipe_t *pp, const uint8_t *bp, size_t n) |
| Non-blocking pipe write. | |
| static size_t | pipe_read (pipe_t *pp, uint8_t *bp, size_t n) |
| Non-blocking pipe read. | |
| void | chPipeObjectInit (pipe_t *pp, uint8_t *buf, size_t n) |
Initializes a mailbox_t object. | |
| void | chPipeReset (pipe_t *pp) |
Resets a pipe_t object. | |
| size_t | chPipeWriteTimeout (pipe_t *pp, const uint8_t *bp, size_t n, sysinterval_t timeout) |
| Pipe write with timeout. | |
| size_t | chPipeReadTimeout (pipe_t *pp, uint8_t *bp, size_t n, sysinterval_t timeout) |
| Pipe read with timeout. | |
| static size_t | chPipeGetSize (const pipe_t *pp) |
| Returns the pipe buffer size as number of bytes. | |
| static size_t | chPipeGetUsedCount (const pipe_t *pp) |
| Returns the number of used byte slots into a pipe. | |
| static size_t | chPipeGetFreeCount (const pipe_t *pp) |
| Returns the number of free byte slots into a pipe. | |
| static void | chPipeResume (pipe_t *pp) |
| Terminates the reset state. | |
| #define PC_INIT | ( | p | ) |
Definition at line 54 of file chpipes.c.
Referenced by chPipeObjectInit().
| #define PC_LOCK | ( | p | ) |
Definition at line 55 of file chpipes.c.
Referenced by chPipeReset(), pipe_read(), and pipe_write().
| #define PC_UNLOCK | ( | p | ) |
Definition at line 56 of file chpipes.c.
Referenced by chPipeReset(), pipe_read(), and pipe_write().
| #define PW_INIT | ( | p | ) |
Definition at line 57 of file chpipes.c.
Referenced by chPipeObjectInit().
| #define PW_LOCK | ( | p | ) |
Definition at line 58 of file chpipes.c.
Referenced by chPipeWriteTimeout().
| #define PW_UNLOCK | ( | p | ) |
Definition at line 59 of file chpipes.c.
Referenced by chPipeWriteTimeout().
| #define PR_INIT | ( | p | ) |
Definition at line 60 of file chpipes.c.
Referenced by chPipeObjectInit().
| #define PR_LOCK | ( | p | ) |
Definition at line 61 of file chpipes.c.
Referenced by chPipeReadTimeout().
| #define PR_UNLOCK | ( | p | ) |
Definition at line 62 of file chpipes.c.
Referenced by chPipeReadTimeout().
| #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 ) |
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 |
|
static |
Non-blocking pipe write.
The function writes data from a buffer to a pipe. The operation completes when the specified amount of data has been transferred or when the pipe buffer has been filled.
| [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 |
Definition at line 105 of file chpipes.c.
References pipe_t::buffer, chPipeGetFreeCount(), pipe_t::cnt, PC_LOCK, PC_UNLOCK, pipe_t::top, and pipe_t::wrptr.
Referenced by chPipeWriteTimeout().

|
static |
Non-blocking pipe read.
The function reads data from a pipe into a buffer. The operation completes when the specified amount of data has been transferred or when the pipe buffer has been emptied.
| [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 |
Definition at line 156 of file chpipes.c.
References pipe_t::buffer, chPipeGetUsedCount(), pipe_t::cnt, PC_LOCK, PC_UNLOCK, pipe_t::rdptr, and pipe_t::top.
Referenced by chPipeReadTimeout().

| 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 207 of file chpipes.c.
References pipe_t::buffer, chDbgCheck, pipe_t::cnt, PC_INIT, PR_INIT, PW_INIT, pipe_t::rdptr, pipe_t::reset, pipe_t::rtr, pipe_t::top, pipe_t::wrptr, and pipe_t::wtr.
Referenced by chFactoryCreatePipe().
| 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 236 of file chpipes.c.
References pipe_t::buffer, chDbgCheck, chSchRescheduleS(), chSysLock, chSysUnlock, chThdResumeI(), pipe_t::cnt, MSG_RESET, PC_LOCK, PC_UNLOCK, pipe_t::rdptr, pipe_t::reset, pipe_t::rtr, pipe_t::wrptr, and pipe_t::wtr.

| 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 number of bytes to be written, the value 0 is reserved |
| [in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
n means that a timeout occurred or the pipe went in reset state.Definition at line 278 of file chpipes.c.
References chDbgCheck, chSysLock, chSysUnlock, chThdResume(), chThdSuspendTimeoutS(), MSG_OK, pipe_write(), PW_LOCK, PW_UNLOCK, pipe_t::reset, pipe_t::rtr, and pipe_t::wtr.

| 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 number of bytes to be read, the value 0 is reserved |
| [in] | timeout | the number of ticks before the operation timeouts, the following special values are allowed:
|
n means that a timeout occurred or the pipe went in reset state.Definition at line 343 of file chpipes.c.
References chDbgCheck, chSysLock, chSysUnlock, chThdResume(), chThdSuspendTimeoutS(), MSG_OK, pipe_read(), PR_LOCK, PR_UNLOCK, pipe_t::reset, pipe_t::rtr, and pipe_t::wtr.

|
inlinestatic |
Returns the pipe buffer size as number of bytes.
| [in] | pp | the pointer to an initialized pipe_t object |
Definition at line 158 of file chpipes.h.
References pipe_t::buffer, and pipe_t::top.
Referenced by chPipeGetFreeCount().
|
inlinestatic |
Returns the number of used byte slots into a pipe.
| [in] | pp | the pointer to an initialized pipe_t object |
Definition at line 174 of file chpipes.h.
References pipe_t::cnt.
Referenced by chPipeGetFreeCount(), and pipe_read().
|
inlinestatic |
Returns the number of free byte slots into a pipe.
| [in] | pp | the pointer to an initialized pipe_t object |
Definition at line 187 of file chpipes.h.
References chPipeGetSize(), and chPipeGetUsedCount().
Referenced by pipe_write().

|
inlinestatic |
Terminates the reset state.
| [in] | pp | the pointer to an initialized pipe_t object |
Definition at line 199 of file chpipes.h.
References pipe_t::reset.