diff options
| author | [email protected] <[email protected]> | 2012-04-23 06:02:28 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2012-04-23 06:02:28 +0000 |
| commit | da44d15132e91812f682895c14872ab2b7685fc9 (patch) | |
| tree | 4a270e1d7d4a18009866a13510f9c5ac0e84d8dd /components/drivers/include/rtdevice.h | |
| parent | 5e1494dd320796cef8b44b4ba8808d959ee6cf15 (diff) | |
Added device driver's IPC.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2098 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components/drivers/include/rtdevice.h')
| -rw-r--r-- | components/drivers/include/rtdevice.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/components/drivers/include/rtdevice.h b/components/drivers/include/rtdevice.h index 583c9afe07..32329578e3 100644 --- a/components/drivers/include/rtdevice.h +++ b/components/drivers/include/rtdevice.h @@ -5,6 +5,44 @@ #define RT_DEVICE(device) ((rt_device_t)device) +/* completion flag */ +struct rt_completion +{ + rt_uint32_t flag; + + /* suspended list */ + rt_list_t suspended_list; +}; + +/* ring buffer */ +struct rt_ringbuffer +{ + rt_uint16_t read_index, write_index; + rt_uint8_t *buffer_ptr; + rt_uint16_t buffer_size; +}; + +/** + * Completion + */ +void rt_completion_init(struct rt_completion* completion); +rt_err_t rt_completion_wait(struct rt_completion* completion, rt_int32_t timeout); +void rt_completion_done(struct rt_completion* completion); + +/** + * DataLink for DeviceDriver + */ + +/** + * RingBuffer for DeviceDriver + */ +void rt_ringbuffer_init(struct rt_ringbuffer* rb, rt_uint8_t *pool, rt_uint16_t size); +rt_size_t rt_ringbuffer_put(struct rt_ringbuffer* rb, const rt_uint8_t *ptr, rt_uint16_t length); +rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer* rb, const rt_uint8_t ch); +rt_size_t rt_ringbuffer_get(struct rt_ringbuffer* rb, rt_uint8_t *ptr, rt_uint16_t length); +rt_size_t rt_ringbuffer_available_size(struct rt_ringbuffer* rb); +rt_size_t rt_ringbuffer_emptry_size(struct rt_ringbuffer* rb); + #ifdef RT_USING_SPI #include "drivers/spi.h" #endif |
