generated from thinkode/modelRepository
78 lines
2.0 KiB
Go
78 lines
2.0 KiB
Go
|
|
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()
|
||
|
|
}
|