mirror of
https://github.com/jwetzell/artnet-go.git
synced 2026-09-10 07:49:28 +00:00
align method receiver variable name
This commit is contained in:
+25
-25
@@ -28,51 +28,51 @@ type ArtDataRequest struct {
|
|||||||
spare [22]byte
|
spare [22]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtDataRequest) GetOpCode() uint16 {
|
func (adr *ArtDataRequest) GetOpCode() uint16 {
|
||||||
return ap.OpCode
|
return adr.OpCode
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtDataRequest) GetProtVer() uint16 {
|
func (adr *ArtDataRequest) GetProtVer() uint16 {
|
||||||
return uint16(ap.ProtVerHi)<<8 + uint16(ap.ProtVerLo)
|
return uint16(adr.ProtVerHi)<<8 + uint16(adr.ProtVerLo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtDataRequest) GetID() [8]uint8 {
|
func (adr *ArtDataRequest) GetID() [8]uint8 {
|
||||||
return ap.ID
|
return adr.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtDataRequest) UnmarshalBinary(data []byte) error {
|
func (adr *ArtDataRequest) UnmarshalBinary(data []byte) error {
|
||||||
|
|
||||||
if len(data) < 40 {
|
if len(data) < 40 {
|
||||||
return errors.New("ArtDataRequest packet must be at least 40 bytes long")
|
return errors.New("ArtDataRequest packet must be at least 40 bytes long")
|
||||||
}
|
}
|
||||||
|
|
||||||
copy(ap.ID[:], data[0:8])
|
copy(adr.ID[:], data[0:8])
|
||||||
|
|
||||||
if !slices.Equal(ArtNetID[:], ap.ID[:]) {
|
if !slices.Equal(ArtNetID[:], adr.ID[:]) {
|
||||||
return errors.New("ID does not match Art-Net ID")
|
return errors.New("ID does not match Art-Net ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
ap.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
adr.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
||||||
ap.ProtVerHi = data[10]
|
adr.ProtVerHi = data[10]
|
||||||
ap.ProtVerLo = data[11]
|
adr.ProtVerLo = data[11]
|
||||||
|
|
||||||
offset := 12
|
offset := 12
|
||||||
ap.EstaMan = binary.LittleEndian.Uint16(data[offset : offset+2])
|
adr.EstaMan = binary.LittleEndian.Uint16(data[offset : offset+2])
|
||||||
ap.Oem = binary.LittleEndian.Uint16(data[offset+2 : offset+4])
|
adr.Oem = binary.LittleEndian.Uint16(data[offset+2 : offset+4])
|
||||||
ap.Request = binary.LittleEndian.Uint16(data[offset+4 : offset+6])
|
adr.Request = binary.LittleEndian.Uint16(data[offset+4 : offset+6])
|
||||||
copy(ap.spare[:], data[offset+6:offset+28])
|
copy(adr.spare[:], data[offset+6:offset+28])
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtDataRequest) MarshalBinary() ([]byte, error) {
|
func (adr *ArtDataRequest) MarshalBinary() ([]byte, error) {
|
||||||
data := make([]byte, 8+32)
|
data := make([]byte, 8+32)
|
||||||
copy(data[0:8], ap.ID[:])
|
copy(data[0:8], adr.ID[:])
|
||||||
binary.LittleEndian.PutUint16(data[8:10], ap.OpCode)
|
binary.LittleEndian.PutUint16(data[8:10], adr.OpCode)
|
||||||
data[10] = ap.ProtVerHi
|
data[10] = adr.ProtVerHi
|
||||||
data[11] = ap.ProtVerLo
|
data[11] = adr.ProtVerLo
|
||||||
binary.LittleEndian.PutUint16(data[12:14], ap.EstaMan)
|
binary.LittleEndian.PutUint16(data[12:14], adr.EstaMan)
|
||||||
binary.LittleEndian.PutUint16(data[14:16], ap.Oem)
|
binary.LittleEndian.PutUint16(data[14:16], adr.Oem)
|
||||||
binary.LittleEndian.PutUint16(data[16:18], ap.Request)
|
binary.LittleEndian.PutUint16(data[16:18], adr.Request)
|
||||||
copy(data[18:40], ap.spare[:])
|
copy(data[18:40], adr.spare[:])
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,93 +35,93 @@ type ArtIpProg struct {
|
|||||||
spare7 uint8
|
spare7 uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProg) GetOpCode() uint16 {
|
func (aip *ArtIpProg) GetOpCode() uint16 {
|
||||||
return ad.OpCode
|
return aip.OpCode
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProg) GetProtVer() uint16 {
|
func (aip *ArtIpProg) GetProtVer() uint16 {
|
||||||
return uint16(ad.ProtVerHi)<<8 + uint16(ad.ProtVerLo)
|
return uint16(aip.ProtVerHi)<<8 + uint16(aip.ProtVerLo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProg) GetID() [8]uint8 {
|
func (aip *ArtIpProg) GetID() [8]uint8 {
|
||||||
return ad.ID
|
return aip.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProg) UnmarshalBinary(data []byte) error {
|
func (aip *ArtIpProg) UnmarshalBinary(data []byte) error {
|
||||||
if len(data) < 34 {
|
if len(data) < 34 {
|
||||||
return errors.New("ArtIpProg packet must be at least 18 bytes long")
|
return errors.New("ArtIpProg packet must be at least 18 bytes long")
|
||||||
}
|
}
|
||||||
|
|
||||||
copy(ad.ID[:], data[0:8])
|
copy(aip.ID[:], data[0:8])
|
||||||
|
|
||||||
if !slices.Equal(ArtNetID[:], ad.ID[:]) {
|
if !slices.Equal(ArtNetID[:], aip.ID[:]) {
|
||||||
return errors.New("ID does not match Art-Net ID")
|
return errors.New("ID does not match Art-Net ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
ad.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
aip.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
||||||
ad.ProtVerHi = data[10]
|
aip.ProtVerHi = data[10]
|
||||||
ad.ProtVerLo = data[11]
|
aip.ProtVerLo = data[11]
|
||||||
|
|
||||||
offset := 12
|
offset := 12
|
||||||
|
|
||||||
ad.filler1 = data[offset]
|
aip.filler1 = data[offset]
|
||||||
ad.filler2 = data[offset+1]
|
aip.filler2 = data[offset+1]
|
||||||
ad.Command = data[offset+2]
|
aip.Command = data[offset+2]
|
||||||
ad.filler4 = data[offset+3]
|
aip.filler4 = data[offset+3]
|
||||||
|
|
||||||
ad.ProgIpHi = data[offset+4]
|
aip.ProgIpHi = data[offset+4]
|
||||||
ad.ProgIp2 = data[offset+5]
|
aip.ProgIp2 = data[offset+5]
|
||||||
ad.ProgIp1 = data[offset+6]
|
aip.ProgIp1 = data[offset+6]
|
||||||
ad.ProgIpLo = data[offset+7]
|
aip.ProgIpLo = data[offset+7]
|
||||||
|
|
||||||
ad.ProgSmHi = data[offset+8]
|
aip.ProgSmHi = data[offset+8]
|
||||||
ad.ProgSm2 = data[offset+9]
|
aip.ProgSm2 = data[offset+9]
|
||||||
ad.ProgSm1 = data[offset+10]
|
aip.ProgSm1 = data[offset+10]
|
||||||
ad.ProgSmLo = data[offset+11]
|
aip.ProgSmLo = data[offset+11]
|
||||||
|
|
||||||
ad.ProgPortHi = data[offset+12]
|
aip.ProgPortHi = data[offset+12]
|
||||||
ad.ProgPortLo = data[offset+13]
|
aip.ProgPortLo = data[offset+13]
|
||||||
|
|
||||||
ad.ProgDgHi = data[offset+14]
|
aip.ProgDgHi = data[offset+14]
|
||||||
ad.ProgDg2 = data[offset+15]
|
aip.ProgDg2 = data[offset+15]
|
||||||
ad.ProgDg1 = data[offset+16]
|
aip.ProgDg1 = data[offset+16]
|
||||||
ad.ProgDgLo = data[offset+17]
|
aip.ProgDgLo = data[offset+17]
|
||||||
|
|
||||||
ad.spare4 = data[offset+18]
|
aip.spare4 = data[offset+18]
|
||||||
ad.spare5 = data[offset+19]
|
aip.spare5 = data[offset+19]
|
||||||
ad.spare6 = data[offset+20]
|
aip.spare6 = data[offset+20]
|
||||||
ad.spare7 = data[offset+21]
|
aip.spare7 = data[offset+21]
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProg) MarshalBinary() ([]byte, error) {
|
func (aip *ArtIpProg) MarshalBinary() ([]byte, error) {
|
||||||
data := make([]byte, 8+26)
|
data := make([]byte, 8+26)
|
||||||
copy(data[0:8], ad.ID[:])
|
copy(data[0:8], aip.ID[:])
|
||||||
binary.LittleEndian.PutUint16(data[8:10], ad.OpCode)
|
binary.LittleEndian.PutUint16(data[8:10], aip.OpCode)
|
||||||
data[10] = ad.ProtVerHi
|
data[10] = aip.ProtVerHi
|
||||||
data[11] = ad.ProtVerLo
|
data[11] = aip.ProtVerLo
|
||||||
data[12] = ad.filler1
|
data[12] = aip.filler1
|
||||||
data[13] = ad.filler2
|
data[13] = aip.filler2
|
||||||
data[14] = ad.Command
|
data[14] = aip.Command
|
||||||
data[15] = ad.filler4
|
data[15] = aip.filler4
|
||||||
data[16] = ad.ProgIpHi
|
data[16] = aip.ProgIpHi
|
||||||
data[17] = ad.ProgIp2
|
data[17] = aip.ProgIp2
|
||||||
data[18] = ad.ProgIp1
|
data[18] = aip.ProgIp1
|
||||||
data[19] = ad.ProgIpLo
|
data[19] = aip.ProgIpLo
|
||||||
data[20] = ad.ProgSmHi
|
data[20] = aip.ProgSmHi
|
||||||
data[21] = ad.ProgSm2
|
data[21] = aip.ProgSm2
|
||||||
data[22] = ad.ProgSm1
|
data[22] = aip.ProgSm1
|
||||||
data[23] = ad.ProgSmLo
|
data[23] = aip.ProgSmLo
|
||||||
data[24] = ad.ProgPortHi
|
data[24] = aip.ProgPortHi
|
||||||
data[25] = ad.ProgPortLo
|
data[25] = aip.ProgPortLo
|
||||||
data[26] = ad.ProgDgHi
|
data[26] = aip.ProgDgHi
|
||||||
data[27] = ad.ProgDg2
|
data[27] = aip.ProgDg2
|
||||||
data[28] = ad.ProgDg1
|
data[28] = aip.ProgDg1
|
||||||
data[29] = ad.ProgDgLo
|
data[29] = aip.ProgDgLo
|
||||||
data[30] = ad.spare4
|
data[30] = aip.spare4
|
||||||
data[31] = ad.spare5
|
data[31] = aip.spare5
|
||||||
data[32] = ad.spare6
|
data[32] = aip.spare6
|
||||||
data[33] = ad.spare7
|
data[33] = aip.spare7
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|||||||
+61
-61
@@ -35,94 +35,94 @@ type ArtIpProgReply struct {
|
|||||||
spare8 uint8
|
spare8 uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProgReply) GetOpCode() uint16 {
|
func (aipr *ArtIpProgReply) GetOpCode() uint16 {
|
||||||
return ad.OpCode
|
return aipr.OpCode
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProgReply) GetProtVer() uint16 {
|
func (aipr *ArtIpProgReply) GetProtVer() uint16 {
|
||||||
return uint16(ad.ProtVerHi)<<8 + uint16(ad.ProtVerLo)
|
return uint16(aipr.ProtVerHi)<<8 + uint16(aipr.ProtVerLo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProgReply) GetID() [8]uint8 {
|
func (aipr *ArtIpProgReply) GetID() [8]uint8 {
|
||||||
return ad.ID
|
return aipr.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProgReply) UnmarshalBinary(data []byte) error {
|
func (aipr *ArtIpProgReply) UnmarshalBinary(data []byte) error {
|
||||||
if len(data) < 34 {
|
if len(data) < 34 {
|
||||||
return errors.New("ArtIpProgReply packet must be at least 18 bytes long")
|
return errors.New("ArtIpProgReply packet must be at least 18 bytes long")
|
||||||
}
|
}
|
||||||
|
|
||||||
copy(ad.ID[:], data[0:8])
|
copy(aipr.ID[:], data[0:8])
|
||||||
|
|
||||||
if !slices.Equal(ArtNetID[:], ad.ID[:]) {
|
if !slices.Equal(ArtNetID[:], aipr.ID[:]) {
|
||||||
return errors.New("ID does not match Art-Net ID")
|
return errors.New("ID does not match Art-Net ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
ad.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
aipr.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
||||||
ad.ProtVerHi = data[10]
|
aipr.ProtVerHi = data[10]
|
||||||
ad.ProtVerLo = data[11]
|
aipr.ProtVerLo = data[11]
|
||||||
|
|
||||||
offset := 12
|
offset := 12
|
||||||
|
|
||||||
ad.filler1 = data[offset]
|
aipr.filler1 = data[offset]
|
||||||
ad.filler2 = data[offset+1]
|
aipr.filler2 = data[offset+1]
|
||||||
ad.filler3 = data[offset+2]
|
aipr.filler3 = data[offset+2]
|
||||||
ad.filler4 = data[offset+3]
|
aipr.filler4 = data[offset+3]
|
||||||
|
|
||||||
ad.ProgIpHi = data[offset+4]
|
aipr.ProgIpHi = data[offset+4]
|
||||||
ad.ProgIp2 = data[offset+5]
|
aipr.ProgIp2 = data[offset+5]
|
||||||
ad.ProgIp1 = data[offset+6]
|
aipr.ProgIp1 = data[offset+6]
|
||||||
ad.ProgIpLo = data[offset+7]
|
aipr.ProgIpLo = data[offset+7]
|
||||||
|
|
||||||
ad.ProgSmHi = data[offset+8]
|
aipr.ProgSmHi = data[offset+8]
|
||||||
ad.ProgSm2 = data[offset+9]
|
aipr.ProgSm2 = data[offset+9]
|
||||||
ad.ProgSm1 = data[offset+10]
|
aipr.ProgSm1 = data[offset+10]
|
||||||
ad.ProgSmLo = data[offset+11]
|
aipr.ProgSmLo = data[offset+11]
|
||||||
|
|
||||||
ad.ProgPortHi = data[offset+12]
|
aipr.ProgPortHi = data[offset+12]
|
||||||
ad.ProgPortLo = data[offset+13]
|
aipr.ProgPortLo = data[offset+13]
|
||||||
|
|
||||||
ad.Status = data[offset+14]
|
aipr.Status = data[offset+14]
|
||||||
ad.spare2 = data[offset+15]
|
aipr.spare2 = data[offset+15]
|
||||||
|
|
||||||
ad.ProgDgHi = data[offset+16]
|
aipr.ProgDgHi = data[offset+16]
|
||||||
ad.ProgDg2 = data[offset+17]
|
aipr.ProgDg2 = data[offset+17]
|
||||||
ad.ProgDg1 = data[offset+18]
|
aipr.ProgDg1 = data[offset+18]
|
||||||
ad.ProgDgLo = data[offset+19]
|
aipr.ProgDgLo = data[offset+19]
|
||||||
|
|
||||||
ad.spare7 = data[offset+20]
|
aipr.spare7 = data[offset+20]
|
||||||
ad.spare8 = data[offset+21]
|
aipr.spare8 = data[offset+21]
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *ArtIpProgReply) MarshalBinary() ([]byte, error) {
|
func (aipr *ArtIpProgReply) MarshalBinary() ([]byte, error) {
|
||||||
data := make([]byte, 8+26)
|
data := make([]byte, 8+26)
|
||||||
copy(data[0:8], ad.ID[:])
|
copy(data[0:8], aipr.ID[:])
|
||||||
binary.LittleEndian.PutUint16(data[8:10], ad.OpCode)
|
binary.LittleEndian.PutUint16(data[8:10], aipr.OpCode)
|
||||||
data[10] = ad.ProtVerHi
|
data[10] = aipr.ProtVerHi
|
||||||
data[11] = ad.ProtVerLo
|
data[11] = aipr.ProtVerLo
|
||||||
data[12] = ad.filler1
|
data[12] = aipr.filler1
|
||||||
data[13] = ad.filler2
|
data[13] = aipr.filler2
|
||||||
data[14] = ad.filler3
|
data[14] = aipr.filler3
|
||||||
data[15] = ad.filler4
|
data[15] = aipr.filler4
|
||||||
data[16] = ad.ProgIpHi
|
data[16] = aipr.ProgIpHi
|
||||||
data[17] = ad.ProgIp2
|
data[17] = aipr.ProgIp2
|
||||||
data[18] = ad.ProgIp1
|
data[18] = aipr.ProgIp1
|
||||||
data[19] = ad.ProgIpLo
|
data[19] = aipr.ProgIpLo
|
||||||
data[20] = ad.ProgSmHi
|
data[20] = aipr.ProgSmHi
|
||||||
data[21] = ad.ProgSm2
|
data[21] = aipr.ProgSm2
|
||||||
data[22] = ad.ProgSm1
|
data[22] = aipr.ProgSm1
|
||||||
data[23] = ad.ProgSmLo
|
data[23] = aipr.ProgSmLo
|
||||||
data[24] = ad.ProgPortHi
|
data[24] = aipr.ProgPortHi
|
||||||
data[25] = ad.ProgPortLo
|
data[25] = aipr.ProgPortLo
|
||||||
data[26] = ad.Status
|
data[26] = aipr.Status
|
||||||
data[27] = ad.spare2
|
data[27] = aipr.spare2
|
||||||
data[28] = ad.ProgDgHi
|
data[28] = aipr.ProgDgHi
|
||||||
data[29] = ad.ProgDg2
|
data[29] = aipr.ProgDg2
|
||||||
data[30] = ad.ProgDg1
|
data[30] = aipr.ProgDg1
|
||||||
data[31] = ad.ProgDgLo
|
data[31] = aipr.ProgDgLo
|
||||||
data[32] = ad.spare7
|
data[32] = aipr.spare7
|
||||||
data[33] = ad.spare8
|
data[33] = aipr.spare8
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,47 +15,47 @@ type ArtSync struct {
|
|||||||
Aux2 uint8
|
Aux2 uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtSync) GetOpCode() uint16 {
|
func (as *ArtSync) GetOpCode() uint16 {
|
||||||
return ap.OpCode
|
return as.OpCode
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtSync) GetProtVer() uint16 {
|
func (as *ArtSync) GetProtVer() uint16 {
|
||||||
return uint16(ap.ProtVerHi)<<8 + uint16(ap.ProtVerLo)
|
return uint16(as.ProtVerHi)<<8 + uint16(as.ProtVerLo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtSync) GetID() [8]uint8 {
|
func (as *ArtSync) GetID() [8]uint8 {
|
||||||
return ap.ID
|
return as.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtSync) UnmarshalBinary(data []byte) error {
|
func (as *ArtSync) UnmarshalBinary(data []byte) error {
|
||||||
|
|
||||||
if len(data) < 14 {
|
if len(data) < 14 {
|
||||||
return errors.New("ArtSync packet must be at least 14 bytes long")
|
return errors.New("ArtSync packet must be at least 14 bytes long")
|
||||||
}
|
}
|
||||||
|
|
||||||
copy(ap.ID[:], data[0:8])
|
copy(as.ID[:], data[0:8])
|
||||||
|
|
||||||
if !slices.Equal(ArtNetID[:], ap.ID[:]) {
|
if !slices.Equal(ArtNetID[:], as.ID[:]) {
|
||||||
return errors.New("ID does not match Art-Net ID")
|
return errors.New("ID does not match Art-Net ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
ap.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
as.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
||||||
ap.ProtVerHi = data[10]
|
as.ProtVerHi = data[10]
|
||||||
ap.ProtVerLo = data[11]
|
as.ProtVerLo = data[11]
|
||||||
|
|
||||||
offset := 12
|
offset := 12
|
||||||
ap.Aux1 = data[offset]
|
as.Aux1 = data[offset]
|
||||||
ap.Aux2 = data[offset+1]
|
as.Aux2 = data[offset+1]
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtSync) MarshalBinary() ([]byte, error) {
|
func (as *ArtSync) MarshalBinary() ([]byte, error) {
|
||||||
data := make([]byte, 8+6)
|
data := make([]byte, 8+6)
|
||||||
copy(data[0:8], ap.ID[:])
|
copy(data[0:8], as.ID[:])
|
||||||
binary.LittleEndian.PutUint16(data[8:10], ap.OpCode)
|
binary.LittleEndian.PutUint16(data[8:10], as.OpCode)
|
||||||
data[10] = ap.ProtVerHi
|
data[10] = as.ProtVerHi
|
||||||
data[11] = ap.ProtVerLo
|
data[11] = as.ProtVerLo
|
||||||
data[12] = ap.Aux1
|
data[12] = as.Aux1
|
||||||
data[13] = ap.Aux2
|
data[13] = as.Aux2
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|||||||
+30
-30
@@ -28,56 +28,56 @@ type ArtTrigger struct {
|
|||||||
Data []uint8
|
Data []uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtTrigger) GetOpCode() uint16 {
|
func (at *ArtTrigger) GetOpCode() uint16 {
|
||||||
return ap.OpCode
|
return at.OpCode
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtTrigger) GetProtVer() uint16 {
|
func (at *ArtTrigger) GetProtVer() uint16 {
|
||||||
return uint16(ap.ProtVerHi)<<8 + uint16(ap.ProtVerLo)
|
return uint16(at.ProtVerHi)<<8 + uint16(at.ProtVerLo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtTrigger) GetID() [8]uint8 {
|
func (at *ArtTrigger) GetID() [8]uint8 {
|
||||||
return ap.ID
|
return at.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtTrigger) UnmarshalBinary(data []byte) error {
|
func (at *ArtTrigger) UnmarshalBinary(data []byte) error {
|
||||||
|
|
||||||
if len(data) < 18 {
|
if len(data) < 18 {
|
||||||
return errors.New("ArtTrigger packet must be at least 18 bytes long")
|
return errors.New("ArtTrigger packet must be at least 18 bytes long")
|
||||||
}
|
}
|
||||||
|
|
||||||
copy(ap.ID[:], data[0:8])
|
copy(at.ID[:], data[0:8])
|
||||||
|
|
||||||
if !slices.Equal(ArtNetID[:], ap.ID[:]) {
|
if !slices.Equal(ArtNetID[:], at.ID[:]) {
|
||||||
return errors.New("ID does not match Art-Net ID")
|
return errors.New("ID does not match Art-Net ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
ap.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
at.OpCode = binary.LittleEndian.Uint16(data[8:10])
|
||||||
ap.ProtVerHi = data[10]
|
at.ProtVerHi = data[10]
|
||||||
ap.ProtVerLo = data[11]
|
at.ProtVerLo = data[11]
|
||||||
|
|
||||||
offset := 12
|
offset := 12
|
||||||
ap.filler1 = data[offset]
|
at.filler1 = data[offset]
|
||||||
ap.filler2 = data[offset+1]
|
at.filler2 = data[offset+1]
|
||||||
ap.Oem = binary.LittleEndian.Uint16(data[offset+2 : offset+4])
|
at.Oem = binary.LittleEndian.Uint16(data[offset+2 : offset+4])
|
||||||
ap.Key = Key(data[offset+4])
|
at.Key = Key(data[offset+4])
|
||||||
ap.SubKey = data[offset+5]
|
at.SubKey = data[offset+5]
|
||||||
ap.Data = make([]uint8, len(data[offset+6:]))
|
at.Data = make([]uint8, len(data[offset+6:]))
|
||||||
copy(ap.Data, data[offset+6:])
|
copy(at.Data, data[offset+6:])
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ap *ArtTrigger) MarshalBinary() ([]byte, error) {
|
func (at *ArtTrigger) MarshalBinary() ([]byte, error) {
|
||||||
data := make([]byte, 8+10)
|
data := make([]byte, 8+10)
|
||||||
copy(data[0:8], ap.ID[:])
|
copy(data[0:8], at.ID[:])
|
||||||
binary.LittleEndian.PutUint16(data[8:10], ap.OpCode)
|
binary.LittleEndian.PutUint16(data[8:10], at.OpCode)
|
||||||
data[10] = ap.ProtVerHi
|
data[10] = at.ProtVerHi
|
||||||
data[11] = ap.ProtVerLo
|
data[11] = at.ProtVerLo
|
||||||
data[12] = ap.filler1
|
data[12] = at.filler1
|
||||||
data[13] = ap.filler2
|
data[13] = at.filler2
|
||||||
binary.LittleEndian.PutUint16(data[14:16], ap.Oem)
|
binary.LittleEndian.PutUint16(data[14:16], at.Oem)
|
||||||
data[16] = uint8(ap.Key)
|
data[16] = uint8(at.Key)
|
||||||
data[17] = ap.SubKey
|
data[17] = at.SubKey
|
||||||
data = append(data, ap.Data...)
|
data = append(data, at.Data...)
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user