mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
Stub CAT serial on macOS
This commit is contained in:
@@ -18,11 +18,17 @@ unit CATSerial;
|
||||
{$MODE Delphi}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF DARWIN}
|
||||
{$DEFINE CAT_SERIAL_STUB}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils,
|
||||
{$IFNDEF CAT_SERIAL_STUB}
|
||||
Serial, // FPC cross-platform serial unit
|
||||
{$ENDIF}
|
||||
{$IFDEF MSWINDOWS}Windows,{$ENDIF}
|
||||
SyncObjs,
|
||||
CATEngine;
|
||||
@@ -43,6 +49,10 @@ type
|
||||
Parity: TCATSerialParity;
|
||||
end;
|
||||
|
||||
{$IFDEF CAT_SERIAL_STUB}
|
||||
TSerialHandle = PtrInt;
|
||||
{$ENDIF}
|
||||
|
||||
TCATSerialPort = class;
|
||||
|
||||
{ TCATSerialThread — per-port listener thread }
|
||||
@@ -107,11 +117,16 @@ end;
|
||||
|
||||
function TCATSerialThread.TryOpenPort: Boolean;
|
||||
var
|
||||
{$IFNDEF CAT_SERIAL_STUB}
|
||||
cfg: TCATSerialConfig;
|
||||
h: TSerialHandle;
|
||||
par: TParityType;
|
||||
{$ENDIF}
|
||||
begin
|
||||
Result := False;
|
||||
{$IFDEF CAT_SERIAL_STUB}
|
||||
Exit;
|
||||
{$ELSE}
|
||||
cfg := FOwner.Config;
|
||||
h := SerOpen(cfg.PortName);
|
||||
{$IFDEF MSWINDOWS}
|
||||
@@ -131,6 +146,7 @@ begin
|
||||
FHandle := h;
|
||||
FOwner.Handle := h;
|
||||
Result := True;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TCATSerialThread.ProcessBuffer;
|
||||
@@ -156,6 +172,9 @@ var
|
||||
ch: Byte;
|
||||
n: LongInt;
|
||||
begin
|
||||
{$IFDEF CAT_SERIAL_STUB}
|
||||
Exit;
|
||||
{$ELSE}
|
||||
if not TryOpenPort then Exit;
|
||||
try
|
||||
while not Terminated do begin
|
||||
@@ -173,6 +192,7 @@ begin
|
||||
FOwner.Handle := -1;
|
||||
{$ENDIF}
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
{ ── TCATSerialPort ────────────────────────────────────────────────────────── }
|
||||
@@ -220,6 +240,9 @@ end;
|
||||
procedure TCATSerialPort.SendStr(const S: string);
|
||||
var buf: AnsiString;
|
||||
begin
|
||||
{$IFDEF CAT_SERIAL_STUB}
|
||||
Exit;
|
||||
{$ELSE}
|
||||
{$IFDEF MSWINDOWS}
|
||||
if FHandle = INVALID_HANDLE_VALUE then Exit;
|
||||
{$ELSE}
|
||||
@@ -234,6 +257,7 @@ begin
|
||||
// ignore write errors (port may have been closed)
|
||||
end;
|
||||
FLock.Release;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
{ ── TCATSerialManager ─────────────────────────────────────────────────────── }
|
||||
|
||||
Reference in New Issue
Block a user