package manager import ( "bufio" "encoding/json" "log" "github.com/jacobsa/go-serial/serial" ) type _manager struct { devices map[string]*_device SyncListener EventHandler RecvListener EventHandler } func (m *_manager) onAdd(iface string) { err := ChangePermission(iface) if err != nil { panic(err) } // Set up options. options := serial.OpenOptions{ PortName: iface, BaudRate: 9600, DataBits: 8, StopBits: 1, MinimumReadSize: 16, } // Open the port. go func() { port, err := serial.Open(options) if err != nil { log.Fatalf("serial.Open: %v", err) } reader := bufio.NewReader(port) for { port.Write([]byte("Introduce\n")) b, _, err := reader.ReadLine() if err != nil { return } var obj map[string]interface{} err = json.Unmarshal(b, &obj) if err != nil { continue } uuid, ok := obj["uuid"] if ok { m.devices[iface] = &_device{ UUID: uuid.(string), IfaceName: iface, Iface: port, } break } } }() } func (m *_manager) onSync(e Event) { } func (m *_manager) onRecv(e Event) { }