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;
}
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)
{
for (int ii = 0; ii < TASK_COUNT; ++ii) {
if (queueArray[ii] == task) {
return;
}
if (queueContains(task)) {
return;
}
++queueSize;
for (int ii = 0; ii < queueSize; ++ii) {
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;
return;
}
@ -74,24 +85,14 @@ STATIC_UNIT_TESTED void queueAdd(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) {
memmove(&queueArray[ii], &queueArray[ii+1], sizeof(task) * (TASK_COUNT - ii - 1));
memmove(&queueArray[ii], &queueArray[ii+1], sizeof(task) * (queueSize - ii - 1));
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)
{
queuePos = 0;