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

76 lines
1.1 KiB
Go
Raw Normal View History

2021-12-09 05:04:56 +00:00
package manager
2021-12-09 02:35:44 +00:00
import (
2021-12-10 01:14:34 +00:00
"bufio"
"encoding/json"
"log"
2021-12-09 02:35:44 +00:00
2021-12-10 01:14:34 +00:00
"github.com/jacobsa/go-serial/serial"
2021-12-09 02:35:44 +00:00
)
2021-12-10 01:14:34 +00:00
type _manager struct {
devices map[string]*_device
SyncListener EventHandler
RecvListener EventHandler
}
2021-12-09 02:35:44 +00:00
2021-12-10 01:14:34 +00:00
func (m *_manager) onAdd(iface string) {
err := ChangePermission(iface)
if err != nil {
panic(err)
}
2021-12-09 02:35:44 +00:00
2021-12-10 01:14:34 +00:00
// Set up options.
options := serial.OpenOptions{
PortName: iface,
BaudRate: 9600,
DataBits: 8,
StopBits: 1,
MinimumReadSize: 16,
2021-12-09 02:35:44 +00:00
}
2021-12-10 01:14:34 +00:00
// 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) {
2021-12-09 02:35:44 +00:00
}