mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-17 13:25:30 +03:00
Replace qsort with simple bubble sorting function to reduce code size.
This commit is contained in:
parent
dc0f461c73
commit
98e51fb2dc
1 changed files with 19 additions and 2 deletions
|
@ -205,12 +205,29 @@ static int serialPortFunctionMostSpecificFirstComparator(const void *aPtr, const
|
||||||
serialPortFunction_t *a = (serialPortFunction_t *)aPtr;
|
serialPortFunction_t *a = (serialPortFunction_t *)aPtr;
|
||||||
serialPortFunction_t *b = (serialPortFunction_t *)bPtr;
|
serialPortFunction_t *b = (serialPortFunction_t *)bPtr;
|
||||||
|
|
||||||
return countBits_uint32(a->scenario) > countBits_uint32(b->scenario);
|
return countBits_uint32(a->scenario) - countBits_uint32(b->scenario);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sortSerialPortFunctions(serialPortFunction_t *serialPortFunctions, uint8_t elements)
|
static void sortSerialPortFunctions(serialPortFunction_t *serialPortFunctions, uint8_t elements)
|
||||||
{
|
{
|
||||||
qsort(serialPortFunctions, elements, sizeof(serialPortFunction_t), serialPortFunctionMostSpecificFirstComparator);
|
serialPortFunction_t swap;
|
||||||
|
|
||||||
|
int8_t index1;
|
||||||
|
int8_t index2;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
for (index1 = 0; index1 < (elements - 1); index1++) {
|
||||||
|
for (index2 = 0; index2 < elements - index1 - 1; index2++) {
|
||||||
|
|
||||||
|
result = serialPortFunctionMostSpecificFirstComparator(&serialPortFunctions[index2], &serialPortFunctions[index2 + 1]);
|
||||||
|
|
||||||
|
if (result > 0) {
|
||||||
|
memcpy(&swap, &serialPortFunctions[index1], sizeof(serialPortFunction_t));
|
||||||
|
memcpy(&serialPortFunctions[index1], &serialPortFunctions[index2 + 1], sizeof(serialPortFunction_t));
|
||||||
|
memcpy(&serialPortFunctions[index2 + 1], &swap, sizeof(serialPortFunction_t));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
serialPortSearchResult_t *findNextSerialPort(serialPortFunction_e function, const functionConstraint_t *functionConstraint, serialPortSearchResult_t *resultBuffer)
|
serialPortSearchResult_t *findNextSerialPort(serialPortFunction_e function, const functionConstraint_t *functionConstraint, serialPortSearchResult_t *resultBuffer)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue