summaryrefslogtreecommitdiff
path: root/components/drivers/include/rtdevice.h
diff options
context:
space:
mode:
author[email protected] <[email protected]>2012-04-23 06:02:28 +0000
committer[email protected] <[email protected]>2012-04-23 06:02:28 +0000
commitda44d15132e91812f682895c14872ab2b7685fc9 (patch)
tree4a270e1d7d4a18009866a13510f9c5ac0e84d8dd /components/drivers/include/rtdevice.h
parent5e1494dd320796cef8b44b4ba8808d959ee6cf15 (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.h38
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