1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 16:25:31 +03:00

Improvements to queue.

This commit is contained in:
Martin Budden 2016-01-19 09:30:15 +00:00 committed by borisbstyle
parent 8ba8bba7a3
commit f66b565ee0

View file

@ -58,14 +58,25 @@ STATIC_UNIT_TESTED void queueClear(void)
queueSize = 0; queueSize = 0;
} }
STATIC_UNIT_TESTED bool queueContains(cfTask_t *task)
{
for (int ii = 0; ii < queueSize; ++ii) {
if (queueArray[ii] == task) {
return true;
}
}
return false;
}
STATIC_UNIT_TESTED void queueAdd(cfTask_t *task) STATIC_UNIT_TESTED void queueAdd(cfTask_t *task)
{ {
for (int ii = 0; ii < TASK_COUNT; ++ii) { if (queueContains(task)) {
if (queueArray[ii] == task) { return;
return; }
} ++queueSize;
for (int ii = 0; ii < queueSize; ++ii) {
if (queueArray[ii] == NULL || queueArray[ii]->staticPriority < task->staticPriority) { if (queueArray[ii] == NULL || queueArray[ii]->staticPriority < task->staticPriority) {
memmove(&queueArray[ii+1], &queueArray[ii], sizeof(task) * (TASK_COUNT - ii - 1)); memmove(&queueArray[ii+1], &queueArray[ii], sizeof(task) * (queueSize - ii - 1));
queueArray[ii] = task; queueArray[ii] = task;
return; return;
} }
@ -74,24 +85,14 @@ STATIC_UNIT_TESTED void queueAdd(cfTask_t *task)
STATIC_UNIT_TESTED void queueRemove(cfTask_t *task) STATIC_UNIT_TESTED void queueRemove(cfTask_t *task)
{ {
for (int ii = 0; ii < TASK_COUNT; ++ii) { for (int ii = 0; ii < queueSize; ++ii) {
if (queueArray[ii] == task) { if (queueArray[ii] == task) {
memmove(&queueArray[ii], &queueArray[ii+1], sizeof(task) * (TASK_COUNT - ii - 1)); memmove(&queueArray[ii], &queueArray[ii+1], sizeof(task) * (queueSize - ii - 1));
return; return;
} }
} }
} }
STATIC_UNIT_TESTED bool queueContains(cfTask_t *task)
{
for (int ii = 0; ii < TASK_COUNT; ++ii) {
if (queueArray[ii] == task) {
return true;
}
}
return false;
}
STATIC_UNIT_TESTED cfTask_t *queueFirst(void) STATIC_UNIT_TESTED cfTask_t *queueFirst(void)
{ {
queuePos = 0; queuePos = 0;