yc_queue.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. * Copyright 2016, yichip Semiconductor(shenzhen office)
  3. * All Rights Reserved.
  4. *
  5. * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
  6. * the contents of this file may not be disclosed to third parties, copied
  7. * or duplicated in any form, in whole or in part, without the prior
  8. * written permission of Yichip Semiconductor.
  9. */
  10. /**
  11. *@file yc_queue.h
  12. *@brief USB support for application.
  13. */
  14. #ifndef DRIVERS_KEYSCAN_YC_QUEUE_H_
  15. #define DRIVERS_KEYSCAN_YC_QUEUE_H_
  16. #include <stdint.h>
  17. #include <stdbool.h>
  18. /**
  19. *@brief Queue header.
  20. */
  21. typedef struct
  22. {
  23. void *pHead; /*!< Header pointer*/
  24. void *pWrite; /*!< Writing queue pointer*/
  25. void *pRead; /*!< Reading queue pointer*/
  26. uint8_t unit_Len; /*!< size of element */
  27. uint8_t array_Len; /*!< the length of array */
  28. uint8_t current_queue_len;/*!< Entire queue length */
  29. }QUEUE_HEADER;
  30. /**
  31. *@brief Queue initialization.
  32. *@param pQheader point queue header structure.@ref QUEUE_HEADER
  33. *@param pMem empty pointer.
  34. *@param unitLen unit length.
  35. *@param len array length.
  36. *@retval true initializing success.
  37. *@retval false initializing failure.
  38. */
  39. bool queue_init(QUEUE_HEADER *pQheader, void *pMem, uint8_t unitLen, uint8_t len);
  40. /**
  41. *@brief Insert queue.
  42. *@param pQheader inserted queue pointer.@ref QUEUE_HEADER
  43. *@param pEle inserted element pointer.
  44. *@retval True operating success.
  45. *@retval false operating failure.
  46. */
  47. bool Insert_Queue(QUEUE_HEADER *pQheader,void *pEle);
  48. /**
  49. *@brief Delete queue.
  50. *@param pQheader will be delete element.@ref QUEUE_HEADER
  51. *@return Empty pointer.
  52. */
  53. void * Delete_Queue(QUEUE_HEADER *pQheader);
  54. /**
  55. *@brief Check queue is empty.
  56. *@param pQheader The target queue.@ref QUEUE_HEADER
  57. *@retval True the queue is empty.
  58. *@retval false the queue is not empty.
  59. */
  60. bool queue_is_empty(QUEUE_HEADER *pQheader);
  61. /**
  62. *@brief Getting queue current length.
  63. *@param pQheader The target queue.@ref QUEUE_HEADER
  64. *@return The queue length.
  65. */
  66. uint8_t queue_ele_count(QUEUE_HEADER *pQheader);
  67. /**
  68. *@brief Check queue is full.
  69. *@param pQheader The target queue.@ref QUEUE_HEADER
  70. *@retval True queue is full.
  71. *@retval false queue is not full.
  72. */
  73. bool queue_is_full(QUEUE_HEADER *pQheader);
  74. /**
  75. *@brief Clear queue.
  76. *@param pQheader The target queue.@ref QUEUE_HEADER
  77. *@retval True represent clear success.
  78. *@retval false represent clear failure.
  79. */
  80. bool queue_clear(QUEUE_HEADER *pQheader);
  81. #endif /* DRIVERS_KEYSCAN_YC_QUEUE_H_ */