diff --git a/address.go b/address.go index 008e918..3133402 100644 --- a/address.go +++ b/address.go @@ -127,7 +127,7 @@ func (aa *ArtAddress) UnmarshalBinary(data []byte) error { } func (aa *ArtAddress) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+99) + data := make([]byte, 12+95) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpAddress) data[10] = 0 diff --git a/command.go b/command.go index 74dbcd9..6d67ef3 100644 --- a/command.go +++ b/command.go @@ -51,7 +51,7 @@ func (ac *ArtCommand) UnmarshalBinary(data []byte) error { } func (ac *ArtCommand) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+8) + data := make([]byte, 12+4+len(ac.Data)) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpCommand) data[10] = 0 @@ -62,6 +62,6 @@ func (ac *ArtCommand) MarshalBinary() ([]byte, error) { return nil, errors.New("data length must be less than or equal to 512 bytes") } binary.BigEndian.PutUint16(data[14:16], dataLength) - data = append(data, ac.Data...) + copy(data[16:], ac.Data) return data, nil } diff --git a/datarequest.go b/datarequest.go index 73e19d4..f179ac2 100644 --- a/datarequest.go +++ b/datarequest.go @@ -52,7 +52,7 @@ func (adr *ArtDataRequest) UnmarshalBinary(data []byte) error { } func (adr *ArtDataRequest) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+32) + data := make([]byte, 12+28) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpDataRequest) data[10] = 0 diff --git a/diagdata.go b/diagdata.go index 317fff5..c441ebe 100644 --- a/diagdata.go +++ b/diagdata.go @@ -59,7 +59,7 @@ func (add *ArtDiagData) UnmarshalBinary(data []byte) error { } func (add *ArtDiagData) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+10) + data := make([]byte, 12+6+len(add.Data)) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpDiagData) data[10] = 0 @@ -73,6 +73,6 @@ func (add *ArtDiagData) MarshalBinary() ([]byte, error) { return nil, errors.New("data length must be less than or equal to 512 bytes") } binary.BigEndian.PutUint16(data[16:18], dataLength) - data = append(data, add.Data...) + copy(data[18:], add.Data) return data, nil } diff --git a/dmx.go b/dmx.go index 6b81d7d..276ee38 100644 --- a/dmx.go +++ b/dmx.go @@ -54,7 +54,7 @@ func (ad *ArtDmx) UnmarshalBinary(data []byte) error { func (ad *ArtDmx) MarshalBinary() ([]byte, error) { // TODO(jwetzell): check max data length - data := make([]byte, 8+10+len(ad.Data)) + data := make([]byte, 12+6+len(ad.Data)) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpDmx) data[10] = 0 diff --git a/ipprog.go b/ipprog.go index cff1526..3f140b1 100644 --- a/ipprog.go +++ b/ipprog.go @@ -83,7 +83,7 @@ func (aip *ArtIpProg) UnmarshalBinary(data []byte) error { } func (aip *ArtIpProg) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+26) + data := make([]byte, 12+22) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpIpProg) data[10] = 0 diff --git a/ipprogreply.go b/ipprogreply.go index 84dc810..ba22873 100644 --- a/ipprogreply.go +++ b/ipprogreply.go @@ -84,7 +84,7 @@ func (aipr *ArtIpProgReply) UnmarshalBinary(data []byte) error { } func (aipr *ArtIpProgReply) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+26) + data := make([]byte, 12+22) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpIpProgReply) data[10] = 0 diff --git a/nzs.go b/nzs.go index 2b0423b..dd44e82 100644 --- a/nzs.go +++ b/nzs.go @@ -50,7 +50,7 @@ func (an *ArtNzs) UnmarshalBinary(data []byte) error { } func (an *ArtNzs) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+8) + data := make([]byte, 12+6+len(an.Data)) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpNzs) data[10] = 0 diff --git a/poll.go b/poll.go index f99b1e1..ac0e186 100644 --- a/poll.go +++ b/poll.go @@ -55,7 +55,7 @@ func (ap *ArtPoll) UnmarshalBinary(data []byte) error { } func (ap *ArtPoll) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+14) + data := make([]byte, 12+10) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpPoll) data[10] = 0 diff --git a/pollreply.go b/pollreply.go index 559bf28..6718582 100644 --- a/pollreply.go +++ b/pollreply.go @@ -28,9 +28,9 @@ type ArtPollReply struct { AcnPriority uint8 SwMacro uint8 SwRemote uint8 - Spare1 uint8 - Spare2 uint8 - Spare3 uint8 + spare1 uint8 + spare2 uint8 + spare3 uint8 Style uint8 MAC [6]uint8 // TODO(jwetzell): support extended poll fields @@ -89,9 +89,9 @@ func (ap *ArtPollReply) UnmarshalBinary(data []byte) error { ap.AcnPriority = data[194] ap.SwMacro = data[195] ap.SwRemote = data[196] - ap.Spare1 = data[197] - ap.Spare2 = data[198] - ap.Spare3 = data[199] + ap.spare1 = data[197] + ap.spare2 = data[198] + ap.spare3 = data[199] ap.Style = data[200] copy(ap.MAC[:], data[201:207]) return nil @@ -128,9 +128,9 @@ func (ap *ArtPollReply) MarshalBinary() ([]byte, error) { data[194] = ap.AcnPriority data[195] = ap.SwMacro data[196] = ap.SwRemote - data[197] = ap.Spare1 - data[198] = ap.Spare2 - data[199] = ap.Spare3 + data[197] = ap.spare1 + data[198] = ap.spare2 + data[199] = ap.spare3 data[200] = ap.Style copy(data[201:207], ap.MAC[:]) copy(data[207:211], ap.BindIp[:]) diff --git a/sync.go b/sync.go index 149ba8f..3828123 100644 --- a/sync.go +++ b/sync.go @@ -37,7 +37,7 @@ func (as *ArtSync) UnmarshalBinary(data []byte) error { } func (as *ArtSync) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+6) + data := make([]byte, 12+2) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpSync) data[10] = 0 diff --git a/timecode.go b/timecode.go index e2cc13b..d6caf64 100644 --- a/timecode.go +++ b/timecode.go @@ -46,7 +46,7 @@ func (atc *ArtTimeCode) UnmarshalBinary(data []byte) error { } func (atc *ArtTimeCode) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+11) + data := make([]byte, 12+7) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpTimeCode) data[10] = 0 diff --git a/todcontrol.go b/todcontrol.go index cdffb2f..b0655b2 100644 --- a/todcontrol.go +++ b/todcontrol.go @@ -67,7 +67,7 @@ func (adr *ArtTodControl) UnmarshalBinary(data []byte) error { } func (adr *ArtTodControl) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+16) + data := make([]byte, 12+12) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpTodControl) data[10] = 0 diff --git a/todrequest.go b/todrequest.go index 89f33d5..4350d3c 100644 --- a/todrequest.go +++ b/todrequest.go @@ -71,7 +71,7 @@ func (adr *ArtTodRequest) MarshalBinary() ([]byte, error) { if len(adr.Address) > 32 { return nil, errors.New("address count must not be greater than 32") } - data := make([]byte, 8+16+len(adr.Address)) + data := make([]byte, 12+12+len(adr.Address)) copy(data[0:8], ArtNetID[:]) binary.LittleEndian.PutUint16(data[8:10], OpTodRequest) data[10] = 0 diff --git a/trigger.go b/trigger.go index 172a9c4..d07ebc7 100644 --- a/trigger.go +++ b/trigger.go @@ -63,7 +63,7 @@ func (at *ArtTrigger) UnmarshalBinary(data []byte) error { } func (at *ArtTrigger) MarshalBinary() ([]byte, error) { - data := make([]byte, 8+10) + data := make([]byte, 12+6) copy(data[0:8], at.id[:]) binary.LittleEndian.PutUint16(data[8:10], at.opCode) data[10] = at.ProtVerHi