rtdevice.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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_getchar(struct rt_ringbuffer* rb, rt_uint8_t *ch);
  44. rt_size_t rt_ringbuffer_available_size(struct rt_ringbuffer* rb);
  45. rt_size_t rt_ringbuffer_emptry_size(struct rt_ringbuffer* rb);
  46. #ifdef RT_USING_SPI
  47. #include "drivers/spi.h"
  48. #endif /* RT_USING_SPI */
  49. #ifdef RT_USING_MTD_NOR
  50. #include "drivers/mtd_nor.h"
  51. #endif /* RT_USING_MTD_NOR */
  52. #ifdef RT_USING_MTD_NAND
  53. #include "drivers/mtd_nand.h"
  54. #endif /* RT_USING_MTD_NAND */
  55. #ifdef RT_USING_USB_DEVICE
  56. #include "drivers/usb_device.h"
  57. #endif /* RT_USING_USB_DEVICE */
  58. #ifdef RT_USING_USB_HOST
  59. #include "drivers/usb_host.h"
  60. #endif /* RT_USING_USB_HOST */
  61. #ifdef RT_USING_SERIAL
  62. #include "drivers/serial.h"
  63. #endif /* RT_USING_SERIAL */
  64. #ifdef RT_USING_I2C
  65. #include "drivers/i2c.h"
  66. #include "drivers/i2c_dev.h"
  67. #ifdef RT_USING_I2C_BITOPS
  68. #include "drivers/i2c-bit-ops.h"
  69. #endif /* RT_USING_I2C_BITOPS */
  70. #endif /* RT_USING_I2C */
  71. #ifdef RT_USING_PM
  72. #include "drivers/pm.h"
  73. #endif
  74. #ifdef RT_USING_SDIO
  75. #include "drivers/mmcsd_core.h"
  76. #include "drivers/sd.h"
  77. #include "drivers/sdio.h"
  78. #endif
  79. #endif /* __RT_DEVICE_H__ */