1
0
Fork 0
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:
Dominic Clifton 2014-08-08 00:33:30 +01:00
parent dc0f461c73
commit 98e51fb2dc

View file

@ -205,12 +205,29 @@ static int serialPortFunctionMostSpecificFirstComparator(const void *aPtr, const
serialPortFunction_t *a = (serialPortFunction_t *)aPtr;
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)
{
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)