mirror of
https://github.com/jwetzell/artnet-go.git
synced 2026-08-18 05:13:55 +00:00
add some extended fields for poll
This commit is contained in:
@@ -14,6 +14,10 @@ type ArtPoll struct {
|
||||
Flags uint8
|
||||
DiagPriority uint8
|
||||
// TODO(jwetzell): support extended poll fields
|
||||
TargetPortAddressTop uint16
|
||||
TargetPortAddressBottom uint16
|
||||
EstaMan uint16
|
||||
Oem uint16
|
||||
}
|
||||
|
||||
func (ap *ArtPoll) GetOpCode() uint16 {
|
||||
@@ -47,16 +51,33 @@ func (ap *ArtPoll) UnmarshalBinary(data []byte) error {
|
||||
offset := 12
|
||||
ap.Flags = data[offset]
|
||||
ap.DiagPriority = data[offset+1]
|
||||
|
||||
if len(data) >= 16 {
|
||||
ap.TargetPortAddressTop = binary.BigEndian.Uint16(data[14:16])
|
||||
}
|
||||
if len(data) >= 18 {
|
||||
ap.TargetPortAddressBottom = binary.BigEndian.Uint16(data[16:18])
|
||||
}
|
||||
if len(data) >= 20 {
|
||||
ap.EstaMan = binary.BigEndian.Uint16(data[18:20])
|
||||
}
|
||||
if len(data) >= 22 {
|
||||
ap.Oem = binary.BigEndian.Uint16(data[20:22])
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ap *ArtPoll) MarshalBinary() ([]byte, error) {
|
||||
data := make([]byte, 8+6)
|
||||
data := make([]byte, 8+14)
|
||||
copy(data[0:8], ap.ID[:])
|
||||
binary.LittleEndian.PutUint16(data[8:10], ap.OpCode)
|
||||
data[10] = ap.ProtVerHi
|
||||
data[11] = ap.ProtVerLo
|
||||
data[12] = ap.Flags
|
||||
data[13] = ap.DiagPriority
|
||||
binary.BigEndian.PutUint16(data[14:16], ap.TargetPortAddressTop)
|
||||
binary.BigEndian.PutUint16(data[16:18], ap.TargetPortAddressBottom)
|
||||
binary.BigEndian.PutUint16(data[18:20], ap.EstaMan)
|
||||
binary.BigEndian.PutUint16(data[20:22], ap.Oem)
|
||||
return data, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user