unit BoardUtils;

{$IFDEF FPC}
  {$MODE Delphi}
{$ENDIF}

interface

function BoardTypeName(BoardType: Integer): string;
function FreqToBandIdx(Hz: Double): Integer;

implementation

uses SysUtils;

function BoardTypeName(BoardType: Integer): string;
begin
  case BoardType of
    1:  Result := 'HERMES (ANAN-10/100)';
    2:  Result := 'HERMES-E (ANAN-10E/100B)';
    3:  Result := 'ANGELIA (ANAN-100D)';
    4:  Result := 'ORION (ANAN-200D)';
    5:  Result := 'ORION MkII (ANAN-7000/8000)';
    6:  Result := 'HERMES-LITE 2';
    10: Result := 'SATURN (G2)';
    else Result := Format('Unknown Board #%d', [BoardType]);
  end;
end;

function FreqToBandIdx(Hz: Double): Integer;
const
  BAND_LO: array[0..10] of Double = (
    1800000,  3500000,  5330000,  7000000,  10100000,
    14000000, 18068000, 21000000, 24890000, 28000000, 50000000);
  BAND_HI: array[0..10] of Double = (
    2000000,  4000000,  5410000,  7300000,  10150000,
    14350000, 18168000, 21450000, 24990000, 29700000, 54000000);
var
  i: Integer;
begin
  Result := -1;
  for i := 0 to 10 do
    if (Hz >= BAND_LO[i]) and (Hz <= BAND_HI[i]) then
    begin
      Result := i;
      Exit;
    end;
end;

end.
