rtdevice.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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, rt_int32_t timeout);
  24. void rt_completion_done(struct rt_completion* completion);
  25. /**
  26. * DataLink for DeviceDriver
  27. */
  28. /**
  29. * RingBuffer for DeviceDriver
  30. */
  31. void rt_ringbuffer_init(struct rt_ringbuffer* rb, rt_uint8_t *pool, rt_uint16_t size);
  32. rt_size_t rt_ringbuffer_put(struct rt_ringbuffer* rb, const rt_uint8_t *ptr, rt_uint16_t length);
  33. rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer* rb, const rt_uint8_t ch);
  34. rt_size_t rt_ringbuffer_get(struct rt_ringbuffer* rb, rt_uint8_t *ptr, rt_uint16_t length);
  35. rt_size_t rt_ringbuffer_available_size(struct rt_ringbuffer* rb);
  36. rt_size_t rt_ringbuffer_emptry_size(struct rt_ringbuffer* rb);
  37. #ifdef RT_USING_SPI
  38. #include "drivers/spi.h"
  39. #endif
  40. #ifdef RT_USING_MTD_NOR
  41. #include "drivers/mtd_nor.h"
  42. #endif
  43. #ifdef RT_USING_MTD_NAND
  44. #include "drivers/mtd_nand.h"
  45. #endif
  46. #ifdef RT_USING_USB_DEVICE
  47. #include "drivers/usb_device.h"
  48. #endif
  49. #ifdef RT_USING_USB_HOST
  50. #include "drivers/usb_host.h"
  51. #endif
  52. #endif