diff --git a/firmware/application/external/antenna_length/ui_whipcalc.cpp b/firmware/application/external/antenna_length/ui_whipcalc.cpp index 72604f1c5..e7bb03118 100644 --- a/firmware/application/external/antenna_length/ui_whipcalc.cpp +++ b/firmware/application/external/antenna_length/ui_whipcalc.cpp @@ -73,6 +73,26 @@ void WhipCalcView::update_result() { uint8_t ant_count = 9; // Shown antennas counter length *= 1000; // Get length in mm needed to extend the antenna for (antenna_entry antenna : antenna_db) { // go thru all antennas available + if (antenna.elements.empty()) + continue; + + // Needed quarter-wave length is shorter than the fully-collapsed antenna: + // above its fundamental range. Report it as retracted (shortest setting); + // a wideband RX whip still receives here via harmonics, but this + // quarter-wave model cannot compute those positions. This also avoids an + // out-of-bounds read of elements[-1] in the interpolation below. + if (length < antenna.elements.front()) { + console.write(antenna.label + ": retracted\n"); + continue; + } + + // Needed length is longer than the fully-extended antenna: already maxed + // out, so the frequency is below this antenna's range. + if (length > antenna.elements.back()) { + console.write(antenna.label + ": fully ext.\n"); + continue; + } + uint16_t element, refined_quarter = 0; for (element = 0; element < antenna.elements.size(); element++) { if (length == antenna.elements[element]) // Exact element in length diff --git a/sdcard/WHIPCALC/ANTENNAS.TXT b/sdcard/WHIPCALC/ANTENNAS.TXT index 6a509e894..f73944c6d 100644 --- a/sdcard/WHIPCALC/ANTENNAS.TXT +++ b/sdcard/WHIPCALC/ANTENNAS.TXT @@ -1,4 +1,5 @@ #antenna label,elements length in mm, separated by a commas ANT700,95,134,175,206,230,245 ANT500,185,315,450,586,724,862 -Cheap 11cm,118,183,253,326,399,476 \ No newline at end of file +Cheap 11cm,118,183,253,326,399,476 +Comet W100RX,200,300,400,510,615,800,986