Microprocessor and peripheral 2 assignments for AUTH
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.4 KiB

  1. /*!
  2. * \file deque08.h
  3. * \brief
  4. * This file provides double ended queue capability based on a ring buffer
  5. *
  6. * Author: Christos Choutouridis AEM: 8997
  7. * email : <cchoutou@ece.auth.gr>
  8. *
  9. */
  10. #ifndef __deque08_h__
  11. #define __deque08_h__
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. #include "driver_types.h"
  16. #include <string.h>
  17. typedef struct {
  18. byte_t *m; /*!< pointer to queue's buffer */
  19. iterator_t capacity; /*!< queue's max item capacity */
  20. iterator_t items; /*!< current item count */
  21. iterator_t f, r; /*!< queue iterators */
  22. }deque08_t;
  23. /*
  24. * ============= PUBLIC EE API =============
  25. */
  26. /*
  27. * Link and Glue functions
  28. */
  29. void deque08_link_buffer (deque08_t *q, byte_t* buf);
  30. /*
  31. * Set functions
  32. */
  33. void deque08_set_capacity (deque08_t *q, size_t capacity);
  34. /*
  35. * User Functions
  36. */
  37. int deque08_is_full (deque08_t *q);
  38. int deque08_is_empty (deque08_t *q);
  39. int deque08_size (deque08_t *q);
  40. void deque08_flush (deque08_t *q);
  41. void deque08_init (deque08_t *q);
  42. int deque08_push_front (deque08_t *q, byte_t b);
  43. int deque08_pop_front (deque08_t *q, byte_t *b);
  44. int deque08_push_back (deque08_t *q, byte_t b);
  45. int deque08_pop_back (deque08_t *q, byte_t *b);
  46. int deque08_back (deque08_t *q, byte_t *b);
  47. int deque08_front (deque08_t *q, byte_t *b);
  48. #ifdef __cplusplus
  49. }
  50. #endif
  51. #endif //#ifndef __deque08_h__