From 5600ef75f5f3dfe40ee3529641a86a05790f04dc Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Sat, 31 Jan 2026 15:49:07 -0600 Subject: [PATCH] add method to parse bytes as packet --- osc.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/osc.go b/osc.go index 1fb6833..9e4d180 100644 --- a/osc.go +++ b/osc.go @@ -350,3 +350,25 @@ func readOSCArg(bytes []byte, oscType string) (OSCArg, []byte, error) { } return oscArg, remainingBytes, readArgError } + +func PacketFromBytes(bytes []byte) (OSCPacket, []byte, error) { + if len(bytes) == 0 { + return nil, bytes, errors.New("cannot create OSC Packet from empty byte array") + } + + if bytes[0] == '#' { + bundle, remainingBytes, err := BundleFromBytes(bytes) + if err != nil { + return nil, bytes, err + } + return bundle, remainingBytes, nil + } else if bytes[0] == '/' { + message, err := MessageFromBytes(bytes) + if err != nil { + return nil, bytes, err + } + return message, []byte{}, nil + } else { + return nil, bytes, errors.New("OSC Packet must start with # for bundle or / for message") + } +}