rtdevice.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #ifndef __RT_DEVICE_H__
  2. #define __RT_DEVICE_H__
  3. #include <rtthread.h>
  4. #define RT_DEVICE(device) ((rt_device_t)device)
  5. /* completion flag */
  6. struct rt_completion
  7. {
  8. rt_uint32_t flag;
  9. /* suspended list */
  10. rt_list_t suspended_list;
  11. };
  12. /* ring buffer */
  13. struct rt_ringbuffer
  14. {
  15. rt_uint16_t read_index, write_index;
  16. rt_uint8_t *buffer_ptr;
  17. rt_uint16_t buffer_size;
  18. };
  19. /**
  20. * Completion
  21. */
  22. void rt_completion_init(struct rt_completion* completion);
  23. rt_err_t rt_completion_wait(struct rt_completion* completion,
  24. rt_int32_t timeout);
  25. void rt_completion_done(struct rt_completion* completion);
  26. /**
  27. * DataLink for DeviceDriver
  28. */
  29. /**
  30. * RingBuffer for DeviceDriver
  31. */
  32. void rt_ringbuffer_init(struct rt_ringbuffer* rb,
  33. rt_uint8_t *pool,
  34. rt_uint16_t size);
  35. rt_size_t rt_ringbuffer_put(struct rt_ringbuffer* rb,
  36. const rt_uint8_t *ptr,
  37. rt_uint16_t length);
  38. rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer* rb,
  39. const rt_uint8_t ch);
  40. rt_size_t rt_ringbuffer_get(struct rt_ringbuffer* rb,
  41. rt_uint8_t *ptr,
  42. rt_uint16_t length);
  43. rt_size_t rt_ringbuffer_available_size(struct rt_ringbuffer* rb);
  44. rt_size_t rt_ringbuffer_emptry_size(struct rt_ringbuffer* rb);
  45. #ifdef RT_USING_SPI
  46. #include "drivers/spi.h"
  47. #endif /* RT_USING_SPI */
  48. #ifdef RT_USING_MTD_NOR
  49. #include "drivers/mtd_nor.h"
  50. #endif /* RT_USING_MTD_NOR */
  51. #ifdef RT_USING_MTD_NAND
  52. #include "drivers/mtd_nand.h"
  53. #endif /* RT_USING_MTD_NAND */
  54. #ifdef RT_USING_USB_DEVICE
  55. #include "drivers/usb_device.h"
  56. #endif /* RT_USING_USB_DEVICE */
  57. #ifdef RT_USING_USB_HOST
  58. #include "drivers/usb_host.h"
  59. #endif /* RT_USING_USB_HOST */
  60. #ifdef RT_USING_SERIAL
  61. #include "drivers/serial.h"
  62. #endif /* RT_USING_SERIAL */
  63. #ifdef RT_USING_I2C
  64. #include "drivers/i2c.h"
  65. #include "drivers/i2c_dev.h"
  66. #ifdef RT_USING_I2C_BITOPS
  67. #include "drivers/i2c-bit-ops.h"
  68. #endif /* RT_USING_I2C_BITOPS */
  69. #endif /* RT_USING_I2C */
  70. #endif /* __RT_DEVICE_H__ */