etri-smartfarm-poc-controll.../manager.go

76 lines
1.1 KiB
Go

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) {
}