mirror of https://git.sr.ht/~michalr/go-satel
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
|
package satel
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
|
||
|
"golang.org/x/text/encoding/charmap"
|
||
|
)
|
||
|
|
||
|
type DeviceType byte
|
||
|
|
||
|
const (
|
||
|
DeviceType_Partition DeviceType = 0
|
||
|
DeviceType_Zone DeviceType = 1
|
||
|
DeviceType_User DeviceType = 2
|
||
|
DeviceType_ExpanderOrLCD DeviceType = 3
|
||
|
DeviceType_Output DeviceType = 4
|
||
|
DeviceType_ZoneWithPartitionAssignment DeviceType = 5
|
||
|
DeviceType_Timer DeviceType = 6
|
||
|
DeviceType_Telephone DeviceType = 7
|
||
|
DeviceType_Object DeviceType = 15
|
||
|
DeviceType_PartitionWithObjectAssignment DeviceType = 16
|
||
|
DeviceType_OutputWithDurationTime DeviceType = 17
|
||
|
DeviceType_PartitionWithObjectAssignmentAndOptions DeviceType = 18
|
||
|
)
|
||
|
|
||
|
type NameEvent struct {
|
||
|
DevType DeviceType
|
||
|
DevNumber byte
|
||
|
DevTypeFunction byte
|
||
|
DevName string
|
||
|
}
|
||
|
|
||
|
func makeNameEvent(bytes []byte) NameEvent {
|
||
|
cp1250dec := charmap.Windows1250.NewDecoder()
|
||
|
name, err := cp1250dec.String(string(bytes[3:19]))
|
||
|
if err != nil {
|
||
|
name = "CP1250 DECODE ERROR"
|
||
|
}
|
||
|
return NameEvent{
|
||
|
DevType: DeviceType(bytes[0]),
|
||
|
DevNumber: bytes[1],
|
||
|
DevTypeFunction: bytes[2],
|
||
|
DevName: strings.TrimSpace(name),
|
||
|
}
|
||
|
}
|