67 lines
3 KiB
Go
67 lines
3 KiB
Go
// Package driver definiert die Hardware-Abstraktionsschicht (HAL) für das Remote-Shack System.
|
|
// Es stellt herstellerunabhängige Schnittstellen für Funkgeräte, Rotoren und Relaissteuerungen bereit.
|
|
package driver
|
|
|
|
// RigDriver definiert die standardisierte Hardware-Steuerung für ein Funkgerät (Transceiver).
|
|
// Jeder gerätespezifische Treiber (z.B. Yaesu FT-897, Icom IC-7300) muss dieses Interface erfüllen.
|
|
type RigDriver interface {
|
|
// Connect initialisiert die serielle Schnittstelle (RS232/CI-V) zum Funkgerät.
|
|
// Übergibt den Portpfad (z.B. "/dev/ttyUSB0") und die Baudrate (z.B. 9600).
|
|
Connect(port string, baud int) error
|
|
|
|
// Disconnect schließt die serielle Schnittstelle und gibt die Ressourcen sauber frei.
|
|
Disconnect() error
|
|
|
|
// SetFrequency stellt die Betriebsfrequenz des Funkgeräts in Hertz (Hz) ein.
|
|
SetFrequency(hz int64) error
|
|
|
|
// GetFrequency liest die aktuelle Betriebsfrequenz des Funkgeräts in Hertz (Hz) aus.
|
|
GetFrequency() (int64, error)
|
|
|
|
// SetMode ändert die Betriebsart des Funkgeräts (z.B. "LSB", "USB", "FM", "AM", "CW").
|
|
SetMode(mode string) error
|
|
|
|
// GetMode liest die aktuell am Funkgerät eingestellte Betriebsart aus.
|
|
GetMode() (string, error)
|
|
|
|
// SetPTT schaltet den Sender des Funkgeräts ein (true = Transmit) oder aus (false = Receive).
|
|
SetPTT(active bool) error
|
|
|
|
// GetSMeter liest den aktuellen S-Meter-Wert des Empfängers aus (skaliert von 0 bis 9, danach in dB).
|
|
GetSMeter() (int, error)
|
|
}
|
|
|
|
// RotorDriver definiert die standardisierte Hardware-Steuerung für einen Antennenrotor.
|
|
// Unterstützt die azimuthale und elevationale Ausrichtung von Antennenanlagen.
|
|
type RotorDriver interface {
|
|
// Connect initialisiert die serielle oder Netzwerkschnittstelle zum Rotor-Controller.
|
|
Connect(port string, baud int) error
|
|
|
|
// Disconnect schließt die Verbindung zum Rotor-Controller.
|
|
Disconnect() error
|
|
|
|
// SetPosition sendet die Zielkoordinaten (Soll-Werte) an den Rotor.
|
|
// Azimut und Elevation werden in Grad (0.0 bis 360.0 bzw. 0.0 bis 90.0) angegeben.
|
|
SetPosition(azimuth, elevation float64) error
|
|
|
|
// GetPosition liest die aktuellen Echtzeitkoordinaten (Ist-Werte) des Rotors aus.
|
|
// Liefert Azimut und Elevation in Grad zurück.
|
|
GetPosition() (az, el float64, err error)
|
|
}
|
|
|
|
// RelaisDriver definiert die Steuerung für digitale Schaltkontakte (Relais, GPIOs).
|
|
// Wird für die Steuerung von Antennenumschaltern, Endstufen oder Stromversorgungen genutzt.
|
|
type RelaisDriver interface {
|
|
// Connect initialisiert die Schnittstelle zum Relais-Board (z.B. I2C-Adresse oder GPIO-Subsystem).
|
|
Connect(address string) error
|
|
|
|
// SetPin schaltet ein spezifisches Relais (Pin-Nummer) ein (true) oder aus (false).
|
|
SetPin(pin int, state bool) error
|
|
|
|
// GetPin liest den aktuellen Schaltzustand eines spezifischen Relais aus.
|
|
GetPin(pin int) (bool, error)
|
|
|
|
// GetAllPins liest die Schaltzustände aller verfügbaren Kanäle gleichzeitig aus.
|
|
// Gibt eine Map zurück, bei der der Schlüssel die Pin-Nummer und der Wert den Zustand darstellt.
|
|
GetAllPins() (map[int]bool, error)
|
|
}
|