remote-shack/internal/driver/interfaces.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)
}