ACKme Logo WiConnect Host Library- API Reference Guide
 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
CommandQueue.h
1 
29 #pragma once
30 
31 
32 #include "api/WiconnectTypes.h"
33 
34 
35 namespace wiconnect
36 {
37 
43 class CommandQueue
44 {
45 public:
46  /*************************************************************************************************/
47  CommandQueue()
48  {
49  head = tail = queue;
50  count = 0;
51  }
52 
53  /*************************************************************************************************/
54  bool isFull()
55  {
56  return count == WICONNECT_MAX_QUEUED_COMMANDS;
57  }
58 
59  /*************************************************************************************************/
60  bool isEmpty()
61  {
62  return count == 0;
63  }
64 
65  /*************************************************************************************************/
66  bool push(QueuedCommand *cmd)
67  {
68  if(isFull())
69  {
70  return false;
71  }
72  ++count;
73  *tail = cmd;
74  if(++tail >= queue + WICONNECT_MAX_QUEUED_COMMANDS)
75  {
76  tail = queue;
77  }
78 
79  return true;
80  }
81 
82  /*************************************************************************************************/
83  QueuedCommand* pop()
84  {
85  if(isEmpty())
86  return NULL;
87 
88  QueuedCommand* cmd = *head;
89  --count;
90  if(++head >= queue + WICONNECT_MAX_QUEUED_COMMANDS)
91  {
92  head = queue;
93  }
94  return cmd;
95  }
96 
97 protected:
98  QueuedCommand* queue[WICONNECT_MAX_QUEUED_COMMANDS];
99  QueuedCommand** head;
100  QueuedCommand** tail;
101  int count;
102 };
103 
104 
105 
106 
107 }
#define WICONNECT_MAX_QUEUED_COMMANDS
When WICONNECT_ASYNC_TIMER_ENABLED, this specifies the max number of asynchronous commands that may b...
Definition: sdk.h:94