122 lines
5.5 KiB
Text
122 lines
5.5 KiB
Text
Funktionsprinzip:
|
|
|
|
[ RASPBERRY PI (Server) ] [ CLIENTS (Fyne.io via Tailscale) ]
|
|
+-------------------+ +-----------------------+ +---------------------------------+
|
|
|
|
| Yaesu, Icom, etc. | <---> | rig-service (Go) | <========> | [ Client 1: Rig-Control Window ]
|
|
| SPID, Yaesu Rotor | <---> | rotor-service (Go) | gRPC / | (Operator: Full control + TX) |
|
|
| Relais-Boards | <---> | gpio-service (Go) | Protobuf +---------------------------------+
|
|
+-------------------+ +-----------------------+ +---------------------------------+
|
|
|
|
| Soundkarte / TRX | <---> | audio-service (Opus) | <========> | [ Client 2: Rotor Window ] |
|
|
+-------------------+ +-----------------------+ | (Listener: View only + RX) |
|
|
+---------------------------------+
|
|
|
|
mkdir -p remote-shack/{api,cmd/{server,client-rig,client-rotor,client-relais,test-rig},internal/{config,driver,audio}}
|
|
|
|
remote-shack/
|
|
├── api/ # Protobuf-Definitionen für gRPC (.proto)
|
|
├── cmd/
|
|
│ ├── server/ # Das Hauptprogramm für den Raspberry Pi
|
|
│ └── client-rig/ # Fyne-Fenster für Funkgerät
|
|
│ └── client-rotor/ # Fyne-Fenster für Rotor
|
|
│ └── client-relais/ # Fyne-Fenster für Relais
|
|
├── internal/
|
|
│ ├── config/ # Konfigurations-Parser (TOML/YAML)
|
|
│ ├── driver/ # Native Go-Treiber (CI-V, Kenwood, SPID)
|
|
│ └── audio/ # Opus/UDP Audio-Streaming-Logik
|
|
└── go.mod
|
|
|
|
|
|
# Zum Zeichnen der GUI wird fyne verwendet
|
|
go get fyne.io/fyne/v2
|
|
go mod tidy
|
|
|
|
# Für Cross-Compiling den Grafiktreiber für Windows installieren
|
|
sudo apt-get install mingw-w64
|
|
|
|
# Pakete für Kompilieren der Linux-GUI
|
|
sudo apt-get update && sudo apt-get install -y \
|
|
libx11-dev \
|
|
libxrandr-dev \
|
|
libxinerama-dev \
|
|
libxcursor-dev \
|
|
libxi-dev \
|
|
libgl1-mesa-dev
|
|
|
|
# Header für Alsa
|
|
sudo apt-get update && sudo apt-get install -y libasound2-dev
|
|
|
|
# Alle Bibliotheken automatisch installieren:
|
|
sudo apt-get update && sudo apt-get install -y libasound2-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev pkg-config
|
|
sudo apt-get update && sudo apt-get install -y libxxf86vm-dev
|
|
|
|
"github.com/ebitengine/oto/v3"
|
|
"github.com/BurntSushi/toml"
|
|
|
|
# Neues Projekt:
|
|
go mod init remote-shack
|
|
|
|
#gRPC-Tool installieren
|
|
sudo apt install protobuf-compiler
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
|
|
|
#Go-Bin-Verzeichnis muss im PATH liegen
|
|
export PATH=$PATH:$(go env GOPATH)/bin
|
|
|
|
#Go-Code aus der Proto-Datei erzeugen
|
|
#protoc --go_out=. --go_opt=Mapi/shack.proto=remote-shack/api --go-grpc_out=. --go-grpc_opt=Mapi/shack.proto=remote-shack/api api/shack.proto
|
|
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative api/shack.proto
|
|
|
|
# 1. Pfad zur Systemkonfiguration hinzufügen
|
|
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
|
|
# 2. Konfiguration im aktuellen Terminal sofort aktivieren
|
|
source ~/.bashrc
|
|
|
|
|
|
# Zum Zeichnen der GUI wird fyne verwendet
|
|
go get fyne.io/fyne/v2
|
|
go mod tidy
|
|
|
|
|
|
weitermachen:
|
|
==============================================================================
|
|
PROJEKT-MERKER: REMOTE-SHACK START AM MORGEN - NEXT LEVEL RIG-CONTROL
|
|
==============================================================================
|
|
AKTUELLER STATUS (HEUTE ERREICHT):
|
|
----------------------------------
|
|
* Yaesu FT-897 Treiber: Vollständig fehlerfrei implementiert. Die 9-stellige
|
|
BCD-Arithmetik läuft in beide Richtungen bitgenau synchron (inkl. Breitband
|
|
wie 90,700 MHz).
|
|
* Audio-Klicken eliminiert: Durch die Entlastung des gRPC-Monitor-Tickers
|
|
(Frequenz alle 500ms, S-Meter alle 1000ms) ist das NF-Knacken im
|
|
Lautsprecher des Transceivers vollständig verschwunden.
|
|
* Puffer-Sicherheit: Die neue Methode 'clearSerialBuffer()' flusht das
|
|
Linux-TTY vor jeder Interaktion und verhindert asynchrone Bit-Verschiebungen.
|
|
* Dynamische Bänder: Die Amateurfunkbänder wurden komplett aus dem Go-Code
|
|
in die 'client-config.toml' ausgelagert. Die 'internal/config/config.go'
|
|
liest diese inklusive automatischem Werkseinstellungs-Fallback fehlerfrei ein.
|
|
|
|
NÄCHSTE SCHRITTE FÜR MORGEN:
|
|
----------------------------
|
|
1. Erweiterung der Client-GUI (SDR-Erscheinungsbild maximieren):
|
|
- Einbau von farbigen Aktivitäts-Indikatoren für die Betriebsarten-Buttons
|
|
(z. B. der gerade aktive Modus leuchtet in sattem Grün oder Blau,
|
|
während die inaktiven Buttons im Standard-Design verbleiben).
|
|
- Integration einer visuellen S-Meter-Balkenanzeige (Fortschrittsbalken/
|
|
ProgressBar), um die vom Server gelieferten Werte (S0-S9) grafisch
|
|
darzustellen, anstatt nur als Text.
|
|
|
|
2. Integration neuer CAT-Komfortfunktionen im Treiber & GUI:
|
|
- VFO A/B Umschaltung (Opcode 0x85) & Split-Betrieb (Opcode 0x02/0x82).
|
|
- Repeater-Shift (Ablagerichtung Minus/Plus/Simplex für Relais via Opcode 0x09).
|
|
- CTCSS/DCS Subaudioton-Steuerung für den VHF/UHF-Relaisfunk.
|
|
|
|
3. Danach: Weitermarsch zum SPID-Rotor-Connector (Protokoll-Klärung).
|
|
|
|
BEREITZUSTELLENDE DATEIEN FÜR DEN START MORGEN:
|
|
----------------------------------------------
|
|
* internal/driver/yaesu_ft897.go (Der aktuell perfekt flushende Treiber)
|
|
* server/main.go & client-rig/main.go (Für die UI- und gRPC-Erweiterungen)
|
|
==============================================================================
|