package main import ( "changeme/hardware" "fmt" "github.com/rs/zerolog/log" ) // GetPeripherals gets all the peripherals connected func (a *App) GetPeripherals() error { log.Debug().Str("file", "peripherals").Msg("getting peripherals...") 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 { log.Error().Str("file", "peripheral").Str("protocolName", protocolName).Str("periphID", peripheralID).Msg("unable to found the specified peripheral") return fmt.Errorf("unable to found the peripheral ID '%s'", peripheralID) } // Add the peripheral ID to the project a.projectInfo.PeripheralsInfo[peripheralID] = p.GetInfo() log.Info().Str("file", "peripheral").Str("protocolName", protocolName).Str("periphID", peripheralID).Msg("peripheral added to project") // 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) log.Info().Str("file", "peripheral").Str("protocolName", protocolName).Str("periphID", peripheralID).Msg("peripheral removed from project") 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 { log.Err(err).Str("file", "peripheral").Msg("unable to found the OS2L driver") return hardware.PeripheralInfo{}, err } log.Trace().Str("file", "peripheral").Msg("OS2L driver got") // Create a new OS2L peripheral with this driver os2lPeripheral, err := os2lDriver.CreatePeripheral(a.ctx) if err != nil { log.Err(err).Str("file", "peripheral").Msg("unable to create the OS2L peripheral") return hardware.PeripheralInfo{}, err } os2lInfo := os2lPeripheral.GetInfo() log.Info().Str("file", "peripheral").Str("s/n", os2lInfo.SerialNumber).Msg("OS2L peripheral created, adding to project") // 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() }