Compare commits

..

No commits in common. "main" and "v0.1.7" have entirely different histories.
main ... v0.1.7

2 changed files with 11 additions and 23 deletions

6
cli.go
View File

@ -27,7 +27,7 @@ func init() {
devicesWithUUID: devWithUUID,
devicesWithIface: devWithIface,
chanForSync: chanForSync,
SyncListener: &SyncHandler{devices: devWithUUID, chanForSync: chanForSync, mutex: &sync.Mutex{}, states: map[string]map[string]interface{}{}},
SyncListener: &SyncHandler{devices: devWithUUID, chanForSync: chanForSync, mutex: &sync.Mutex{}},
RecvListener: &RecvHandler{devices: devWithIface, chanForSync: chanForSync},
}
@ -71,7 +71,7 @@ func Run() error {
}
for _, e := range ifaces {
go _managerObj.onAdded(e)
_managerObj.onAdded(e)
}
go puserial.WatchNewDevice(ctx, ch_discover)
@ -84,7 +84,7 @@ func Run() error {
}
switch e.Event() {
case notify.Create:
go _managerObj.onAdded(e.Path())
_managerObj.onAdded(e.Path())
// case notify.Remove:
// log.Println("USB Disconnected!!")
// _managerObj.onAdded(e.Path())

View File

@ -4,7 +4,6 @@ import (
"encoding/json"
"fmt"
"log"
"reflect"
"sync"
)
@ -12,7 +11,6 @@ type SyncHandler struct {
devices map[string]*_device
mutex *sync.Mutex
chanForSync map[string]chan map[string]interface{}
states map[string]map[string]interface{}
}
func compareMap(src map[string]interface{}, dst map[string]interface{}) bool {
@ -21,23 +19,14 @@ func compareMap(src map[string]interface{}, dst map[string]interface{}) bool {
if key == "code" {
continue
}
if reflect.TypeOf(value).String() == "string" {
dstV, ok := dst[key].(string)
if !ok || value != dstV {
return false
}
continue
srcV, ok := value.(int)
if !ok {
srcV = int(value.(float64))
}
srcV, ok := value.(float64)
dstV, ok := dst[key].(int)
if !ok {
srcV = float64(value.(int))
}
dstV, ok := dst[key].(float64)
if !ok {
dstV = float64(dst[key].(int))
dstV = int(dst[key].(float64))
}
if srcV != dstV {
@ -70,7 +59,6 @@ func (sh *SyncHandler) Handle(e Event) {
origin[key] = value
}
sh.states[device.UUID] = origin
// props := []string{"fan", "light", "servo"}
err := encoder.Encode(origin)
@ -92,7 +80,7 @@ func (sh *SyncHandler) Handle(e Event) {
sh.mutex.Unlock()
for state := range chanForSync {
if compareMap(sh.states[device.UUID], state) {
if compareMap(origin, state) {
sh.mutex.Lock()
close(sh.chanForSync[device.IfaceName])
delete(sh.chanForSync, device.IfaceName)
@ -100,8 +88,8 @@ func (sh *SyncHandler) Handle(e Event) {
return
}
log.Println("wrong: ", state)
log.Println("resend: ", sh.states[device.UUID])
err := encoder.Encode(sh.states[device.UUID])
log.Println("resend: ", origin)
err := encoder.Encode(origin)
if err != nil {
return
}