Вы должны изменить типы:
int binarySearchCount(volatile TEST_SAMPLE arr[], float n, float key)
binarySearchCount(braketest.dataPoints, n, braketest_trig_level_pedal);
И изменить доступы с arr[mid]
на arr[mid].loadcell
, например:
if (arr[mid].loadcell == key)
Расчет размера неверен затем:
sizeof(braketest.dataPoints[count].loadcell) / sizeof(braketest.dataPoints[0].loadcell);
Должно быть:
double n = sizeof(braketest.dataPoints) / sizeof(TEST_SAMPLE);
А не double
, поскольку binarySearchCount
ожидает float
.
С этими изменениями он вернется искомый элемент +1 (из-за return (mid + 1)
, если он находит ключ или последний индекс (снова +1).