gh-5 Handle unsigned & signed values
updateRegisters now handles signed values correctly. Bitfields and enumerations are still interpreted as unsigned values
This commit is contained in:
parent
2758f67299
commit
1080219b23
|
@ -152,13 +152,20 @@ func (p PingvinKL) updateRegisters() {
|
||||||
// value, so for each even byte in the reponse slice we bitshift the byte
|
// value, so for each even byte in the reponse slice we bitshift the byte
|
||||||
// left by 8, then add the odd byte as is to the shifted 16-bit value
|
// left by 8, then add the odd byte as is to the shifted 16-bit value
|
||||||
msb := true
|
msb := true
|
||||||
value := 0
|
value := int16(0)
|
||||||
|
uvalue := uint16(0)
|
||||||
for i := 0; i < len(results); i++ {
|
for i := 0; i < len(results); i++ {
|
||||||
if msb {
|
if msb {
|
||||||
value = int(results[i]) << 8
|
value = int16(results[i]) << 8
|
||||||
|
uvalue = uint16(results[i]) << 8
|
||||||
} else {
|
} else {
|
||||||
value += int(results[i])
|
value += int16(results[i])
|
||||||
p.Registers[k].Value = value
|
uvalue += uint16(results[i])
|
||||||
|
if p.Registers[k].Signed {
|
||||||
|
p.Registers[k].Value = int(value)
|
||||||
|
} else {
|
||||||
|
p.Registers[k].Value = int(uvalue)
|
||||||
|
}
|
||||||
k++
|
k++
|
||||||
}
|
}
|
||||||
msb = !msb
|
msb = !msb
|
||||||
|
@ -204,6 +211,9 @@ func New() PingvinKL {
|
||||||
registerData := readCsvLines("registers.csv")
|
registerData := readCsvLines("registers.csv")
|
||||||
for i := 0; i < len(registerData); i++ {
|
for i := 0; i < len(registerData); i++ {
|
||||||
signed := registerData[i][2] == "int16"
|
signed := registerData[i][2] == "int16"
|
||||||
|
if !signed {
|
||||||
|
log.Println("Unsigned register", i, registerData[i][6])
|
||||||
|
}
|
||||||
pingvin.Registers = append(pingvin.Registers,
|
pingvin.Registers = append(pingvin.Registers,
|
||||||
newRegister(registerData[i][0], registerData[i][1], signed, registerData[i][6]))
|
newRegister(registerData[i][0], registerData[i][1], signed, registerData[i][6]))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue