package main import ( "changeme/hardware" "fmt" ) // GetPeripherals gets all the peripherals connected func (a *App) GetPeripherals() error { return a.hardwareManager.Scan(a.ctx) } // AddPeripheral adds a peripheral to the project func (a *App) AddPeripheral(protocolName string, peripheralID string) error { // Get the device from its finder p, found := a.hardwareManager.GetPeripheral(protocolName, peripheralID) if !found { return fmt.Errorf("Unable to localize the peripheral %s", peripheralID) } // Add the peripheral ID to the project a.projectInfo.PeripheralsInfo[peripheralID] = p.GetInfo() // TODO: Connect the peripheral return nil } // RemovePeripheral adds a peripheral to the project func (a *App) RemovePeripheral(protocolName string, peripheralID string) error { // TODO: Disconnect the peripheral // Remove the peripheral ID from the project delete(a.projectInfo.PeripheralsInfo, peripheralID) return nil } // AddOS2LPeripheral adds a new OS2L peripheral func (a *App) AddOS2LPeripheral() (hardware.PeripheralInfo, error) { // Get the OS2L driver os2lDriver, err := a.hardwareManager.GetDriver("OS2L") if err != nil { return hardware.PeripheralInfo{}, err } // Create a new OS2L peripheral with this driver os2lPeripheral, err := os2lDriver.CreatePeripheral(a.ctx) if err != nil { return hardware.PeripheralInfo{}, nil } os2lInfo := os2lPeripheral.GetInfo() // Add this new peripheral to the project return os2lInfo, a.AddPeripheral(os2lDriver.GetName(), os2lInfo.SerialNumber) } // FOR TESTING PURPOSE ONLY func (a *App) ConnectFTDI() error { // Create a new FTDI object var err error a.ftdi, err = hardware.NewFTDIPeripheral("FTDI TEST INTERFACE", "A50825I", 0) if err != nil { return err } return a.ftdi.Connect() } func (a *App) ActivateFTDI() error { return a.ftdi.Activate() } func (a *App) SetDeviceFTDI(channelValue byte) error { return a.ftdi.SetDeviceProperty(0, 0, channelValue) } func (a *App) DeactivateFTDI() error { return a.ftdi.Deactivate() } func (a *App) DisconnectFTDI() error { return a.ftdi.Disconnect() }