mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
66 lines
1.7 KiB
ObjectPascal
66 lines
1.7 KiB
ObjectPascal
program dmr_diagnostics_test;
|
|
|
|
{$MODE Delphi}
|
|
|
|
uses
|
|
{$IFDEF UNIX}cthreads,{$ENDIF}
|
|
Classes, SysUtils, DMRDiagnostics;
|
|
|
|
procedure Check(Condition: Boolean; const Message_: string);
|
|
begin
|
|
if not Condition then
|
|
begin
|
|
WriteLn(Message_);
|
|
Halt(1);
|
|
end;
|
|
end;
|
|
|
|
function SizeOfFile(const Name: string): Int64;
|
|
var
|
|
S: TFileStream;
|
|
begin
|
|
S := TFileStream.Create(Name, fmOpenRead or fmShareDenyNone);
|
|
try
|
|
Result := S.Size;
|
|
finally
|
|
S.Free;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
D: TDMRDiagnosticCapture;
|
|
IQ: array[0..11] of Byte;
|
|
L, R: array[0..1] of Single;
|
|
Burst: array[0..143] of Byte;
|
|
Base: string;
|
|
i: Integer;
|
|
begin
|
|
for i := 0 to High(IQ) do IQ[i] := i;
|
|
L[0] := 0.25; L[1] := -0.5;
|
|
R[0] := 0.75; R[1] := 0.5;
|
|
for i := 0 to High(Burst) do Burst[i] := i and 3;
|
|
D := TDMRDiagnosticCapture.Create;
|
|
try
|
|
Base := D.Start(2, 192000, 145500000, 145500000);
|
|
D.FeedIQ24BE(IQ, Length(IQ));
|
|
D.FeedDemod(L, R, Length(L));
|
|
D.FeedBurst(Burst, Length(Burst));
|
|
D.Stop;
|
|
Check(SizeOfFile(Base + '.iq24be') = Length(IQ), 'IQ dump size mismatch');
|
|
Check(SizeOfFile(Base + '.demod_f32le') =
|
|
Length(L) * SizeOf(Single), 'demod dump size mismatch');
|
|
Check(SizeOfFile(Base + '.bursts_u8') = Length(Burst),
|
|
'burst dump size mismatch');
|
|
Check(FileExists(Base + '.json'), 'metadata was not written');
|
|
Check(FileExists(Base + '.stats.txt'), 'drop statistics were not written');
|
|
DeleteFile(Base + '.iq24be');
|
|
DeleteFile(Base + '.demod_f32le');
|
|
DeleteFile(Base + '.bursts_u8');
|
|
DeleteFile(Base + '.json');
|
|
DeleteFile(Base + '.stats.txt');
|
|
WriteLn('DMR diagnostic capture test passed');
|
|
finally
|
|
D.Free;
|
|
end;
|
|
end.
|