Commit 68a4c89c authored by Kevin Lyda's avatar Kevin Lyda 💬
Browse files

Work on GetConfiguration.

parent ed1aaa1f
Pipeline #1232 passed with stage
in 5 minutes and 13 seconds
...@@ -95,7 +95,7 @@ func (gc *GQGMCCounter) Clear() error { ...@@ -95,7 +95,7 @@ func (gc *GQGMCCounter) Clear() error {
// Read up to 10 chars until nothing comes back. // Read up to 10 chars until nothing comes back.
// error otherwise. // error otherwise.
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
if _, err := gc.readCmd(1); err != nil { if _, err := gc.recv(1); err != nil {
break break
} }
} }
...@@ -169,7 +169,7 @@ func (gc *GQGMCCounter) TurnOnCPS() error { ...@@ -169,7 +169,7 @@ func (gc *GQGMCCounter) TurnOnCPS() error {
} }
gc.mutex.Lock() gc.mutex.Lock()
gc.sendCmd(cmdTurnOnCPS) gc.send(cmdTurnOnCPS)
gc.mutex.Unlock() gc.mutex.Unlock()
return nil return nil
} }
...@@ -184,7 +184,7 @@ func (gc *GQGMCCounter) TurnOffCPS() error { ...@@ -184,7 +184,7 @@ func (gc *GQGMCCounter) TurnOffCPS() error {
} }
gc.mutex.Lock() gc.mutex.Lock()
gc.sendCmd(cmdTurnOffCPS) gc.send(cmdTurnOffCPS)
gc.Clear() gc.Clear()
gc.mutex.Unlock() gc.mutex.Unlock()
return nil return nil
...@@ -193,7 +193,7 @@ func (gc *GQGMCCounter) TurnOffCPS() error { ...@@ -193,7 +193,7 @@ func (gc *GQGMCCounter) TurnOffCPS() error {
// GetAutoCPS gets a reading once auto CPS is turned on // GetAutoCPS gets a reading once auto CPS is turned on
func (gc *GQGMCCounter) GetAutoCPS() (uint16, error) { func (gc *GQGMCCounter) GetAutoCPS() (uint16, error) {
gc.mutex.Lock() gc.mutex.Lock()
buf, err := gc.readCmd(2) buf, err := gc.recv(2)
gc.mutex.Unlock() gc.mutex.Unlock()
if err != nil { if err != nil {
...@@ -214,7 +214,7 @@ func (gc *GQGMCCounter) TurnOnPower() { ...@@ -214,7 +214,7 @@ func (gc *GQGMCCounter) TurnOnPower() {
} }
gc.mutex.Lock() gc.mutex.Lock()
gc.sendCmd(cmdTurnOnPwr) gc.send(cmdTurnOnPwr)
gc.mutex.Unlock() gc.mutex.Unlock()
return return
} }
...@@ -229,7 +229,7 @@ func (gc *GQGMCCounter) TurnOffPower() { ...@@ -229,7 +229,7 @@ func (gc *GQGMCCounter) TurnOffPower() {
} }
gc.mutex.Lock() gc.mutex.Lock()
gc.sendCmd(cmdTurnOffPwr) gc.send(cmdTurnOffPwr)
gc.mutex.Unlock() gc.mutex.Unlock()
return return
} }
...@@ -299,7 +299,7 @@ func (gc *GQGMCCounter) setTimeParts(t time.Time) { ...@@ -299,7 +299,7 @@ func (gc *GQGMCCounter) setTimeParts(t time.Time) {
copy(cmd[11:], ">>") copy(cmd[11:], ">>")
// Mutex acquired in setTime() // Mutex acquired in setTime()
gc.port.Write(cmd) gc.port.Write(cmd)
gc.readCmd(1) gc.recv(1)
} }
} }
...@@ -315,7 +315,7 @@ func (gc *GQGMCCounter) setTimeAll(t time.Time) { ...@@ -315,7 +315,7 @@ func (gc *GQGMCCounter) setTimeAll(t time.Time) {
copy(cmd[18:], ">>") copy(cmd[18:], ">>")
// Mutex acquired in setTime() // Mutex acquired in setTime()
gc.port.Write(cmd) gc.port.Write(cmd)
gc.readCmd(1) gc.recv(1)
} }
// GetTime gets the time // GetTime gets the time
...@@ -393,7 +393,7 @@ func (gc *GQGMCCounter) FactoryReset() { ...@@ -393,7 +393,7 @@ func (gc *GQGMCCounter) FactoryReset() {
} }
gc.mutex.Lock() gc.mutex.Lock()
gc.sendCmd(cmdFactoryReset) gc.send(cmdFactoryReset)
gc.mutex.Unlock() gc.mutex.Unlock()
return return
} }
...@@ -408,7 +408,7 @@ func (gc *GQGMCCounter) Reboot() { ...@@ -408,7 +408,7 @@ func (gc *GQGMCCounter) Reboot() {
} }
gc.mutex.Lock() gc.mutex.Lock()
gc.sendCmd(cmdReboot) gc.send(cmdReboot)
gc.mutex.Unlock() gc.mutex.Unlock()
return return
} }
...@@ -426,31 +426,42 @@ func (gc *GQGMCCounter) versionLT(version string) bool { ...@@ -426,31 +426,42 @@ func (gc *GQGMCCounter) versionLT(version string) bool {
return gc.version < version return gc.version < version
} }
func (gc *GQGMCCounter) communicate(cmd string, length uint32) ([]byte, error) { func (gc *GQGMCCounter) communicate(cmd string, length int) ([]byte, error) {
gc.mutex.Lock() gc.mutex.Lock()
defer gc.mutex.Unlock() defer gc.mutex.Unlock()
gc.Clear() gc.Clear()
if len(cmd) > 0 { if len(cmd) > 0 {
gc.sendCmd(cmd) gc.send(cmd)
} }
if length != 0 { if length != 0 {
return gc.readCmd(length) return gc.recv(length)
} }
return nil, nil return nil, nil
} }
func (gc *GQGMCCounter) sendCmd(cmd string) { func (gc *GQGMCCounter) send(cmd string) {
gc.port.Write([]byte(cmd)) gc.port.Write([]byte(cmd))
return return
} }
func (gc *GQGMCCounter) readCmd(length uint32) ([]byte, error) { func (gc *GQGMCCounter) recv(length int) ([]byte, error) {
buf := make([]byte, length) buf := make([]byte, length)
n, err := gc.port.Read(buf) n, err := gc.port.Read(buf)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if uint32(n) != length { if n != length {
for i := 0; i < 20; i++ {
_, err = gc.port.Read(buf[len(buf):])
if err != nil {
return nil, err
}
if len(buf) == length {
break
}
}
}
if n != length {
return nil, fmt.Errorf("Short read (got: %d, wanted: %d)", uint32(n), length) return nil, fmt.Errorf("Short read (got: %d, wanted: %d)", uint32(n), length)
} }
return buf, nil return buf, nil
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment