diff --git a/artnet.go b/artnet.go index 5c3ad9b..1e004c9 100644 --- a/artnet.go +++ b/artnet.go @@ -56,11 +56,35 @@ func Decode(bytes []byte) (ArtNetPacket, error) { opCode := binary.LittleEndian.Uint16(bytes[8:10]) switch opCode { case OpPoll: - return NewArtPoll(bytes) + artPoll := ArtPoll{} + + err := artPoll.UnmarshalBinary(bytes) + + if err != nil { + return nil, err + } + + return &artPoll, nil case OpDmx: - return NewArtDmx(bytes) + artDmx := ArtDmx{} + + err := artDmx.UnmarshalBinary(bytes) + + if err != nil { + return nil, err + } + + return &artDmx, nil case OpTimeCode: - return NewArtTimeCode(bytes) + artTimeCode := ArtTimeCode{} + + err := artTimeCode.UnmarshalBinary(bytes) + + if err != nil { + return nil, err + } + + return &artTimeCode, nil default: return nil, fmt.Errorf("unhandled opcode: %#x", opCode) } diff --git a/dmx.go b/dmx.go index 6336edc..b6ca88d 100644 --- a/dmx.go +++ b/dmx.go @@ -19,18 +19,6 @@ type ArtDmx struct { Data []uint8 } -func NewArtDmx(data []byte) (*ArtDmx, error) { - artDmx := ArtDmx{} - - err := artDmx.UnmarshalBinary(data) - - if err != nil { - return nil, err - } - - return &artDmx, nil -} - func (ad *ArtDmx) GetOpCode() uint16 { return ad.OpCode } diff --git a/dmx_test.go b/dmx_test.go index ff6489f..16d5846 100644 --- a/dmx_test.go +++ b/dmx_test.go @@ -30,7 +30,9 @@ func TestGoodArtDmx(t *testing.T) { } for _, test := range tests { - got, err := artnet.NewArtDmx(test.Data) + got := artnet.ArtDmx{} + + err := got.UnmarshalBinary(test.Data) if err != nil { t.Fatalf("failed to decode ArtDmx: %s", err) diff --git a/poll.go b/poll.go index ebfcce5..444293b 100644 --- a/poll.go +++ b/poll.go @@ -23,18 +23,6 @@ type ArtPoll struct { OemLo uint8 } -func NewArtPoll(data []byte) (*ArtPoll, error) { - artPoll := ArtPoll{} - - err := artPoll.UnmarshalBinary(data) - - if err != nil { - return nil, err - } - - return &artPoll, nil -} - func (ap *ArtPoll) GetOpCode() uint16 { return ap.OpCode } diff --git a/timecode.go b/timecode.go index fd6c44f..c7d4c0b 100644 --- a/timecode.go +++ b/timecode.go @@ -20,18 +20,6 @@ type ArtTimeCode struct { Type uint8 } -func NewArtTimeCode(data []byte) (*ArtTimeCode, error) { - artTimeCode := ArtTimeCode{} - - err := artTimeCode.UnmarshalBinary(data) - - if err != nil { - return nil, err - } - - return &artTimeCode, nil -} - func (atc *ArtTimeCode) GetOpCode() uint16 { return atc.OpCode } diff --git a/timecode_test.go b/timecode_test.go index 7c41bde..b634779 100644 --- a/timecode_test.go +++ b/timecode_test.go @@ -31,7 +31,9 @@ func TestGoodArtTimeCode(t *testing.T) { } for _, test := range tests { - got, err := artnet.NewArtTimeCode(test.Data) + got := artnet.ArtTimeCode{} + + err := got.UnmarshalBinary(test.Data) if err != nil { t.Fatalf("failed to decode ArtTimeCode: %s", err)