mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
feat(dmr): add diagnostic capture probes
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user