package hardware import "context" // Peripheral represents the methods used to manage a peripheral (input or output hardware) type Peripheral interface { Connect(context.Context) error // Connect the peripheral Disconnect(context.Context) error // Disconnect the peripheral Activate(context.Context) error // Activate the peripheral Deactivate(context.Context) error // Deactivate the peripheral SetDeviceProperty(context.Context, uint32, uint32, byte) error // Update a device property GetInfo() PeripheralInfo // Get the peripheral information } // PeripheralInfo represents a peripheral information type PeripheralInfo struct { Name string `yaml:"name"` // Name of the peripheral SerialNumber string `yaml:"sn"` // S/N of the peripheral ProtocolName string `yaml:"protocol"` // Protocol name of the peripheral Settings []interface{} `yaml:"settings"` // Number of DMX universes handled by the peripheral } // PeripheralDriver represents how compatible peripheral drivers are implemented type PeripheralDriver interface { Initialize() error // Initializes the protocol GetName() string // Get the name of the finder GetPeripheral(string) (Peripheral, bool) // Get the peripheral Scan(context.Context) error // Scan for peripherals CreatePeripheral(ctx context.Context) (Peripheral, error) // Creates a new peripheral RemovePeripheral(serialNumber string) error // Removes a peripheral }