Example #1
0
        void receiveData()
        {
            while (isrunning)
            {
                IPEndPoint ip = null;

                byte[]    buffer = this.udpreceiver.Receive(ref ip);
                OSCPacket packet = OSCPacket.Unpack(buffer);

                lock (m_lock) {
                    if (packet.IsBundle())
                    {
                        OSCBundle bundle = packet as OSCBundle;
                        foreach (object o in bundle.Values)
                        {
                            OSCMessage msg = (OSCMessage)o;
                            this.current.Enqueue(msg);
                        }
                    }
                    else
                    {
                        this.current.Enqueue(packet as OSCMessage);
                    }
                }
            }
        }
Example #2
0
 public static OSCPacket Unpack(byte[] bytes, ref int start, int end)
 {
     if (bytes[start] == '#')
     {
         return(OSCBundle.Unpack(bytes, ref start, end));
     }
     else
     {
         return(OSCMessage.Unpack(bytes, ref start));
     }
 }
Example #3
0
		public static bool ContainsCursors(OSCBundle bundle)
		{
			foreach (object o in bundle.Values)
	        {
	            OSCMessage msg = (OSCMessage)o;
	            if (msg.Address == "/tuio/2Dcur")
				{
					return true;
				}
			}
			return false;
		}
Example #4
0
	    public static Dictionary<int, Tuio2DCursor> GetCursors(OSCBundle pack)
	    {
	        Dictionary<int, Tuio2DCursor> result = new Dictionary<int, Tuio2DCursor>();
	
	        List<OSCMessage> cursors = FindByCommand(pack, "/tuio/2Dcur", "set");
	        foreach (OSCMessage msg in cursors)
	        {
	            Tuio2DCursor cur = new Tuio2DCursor(msg);
	            result.Add(cur.SessionID, cur);
	        }
	        return result;
	    }
Example #5
0
	    public static int GetSequenceNumber(OSCBundle pack)
	    {
	        int result = -1;
	
	        List<OSCMessage> msgs = FindByCommand(pack, "/tuio/2Dcur","fseq");
	        if (msgs.Count > 0)
	        {
	            result = Convert.ToInt32((int)msgs[0].Values[1]);
	        }
	
	        return result;
	    }
Example #6
0
        public static List<int> GetAliveCursors(OSCBundle pack)
        {
            List<int> result = new List<int>();

            List<OSCMessage> alivecmd = FindByCommand(pack, "alive");
            if (alivecmd.Count > 0)
            {
                result = GetAliveCursors(alivecmd[0]);
            }

            return result;
        }
Example #7
0
	    public static List<int> GetAliveCursors(OSCBundle pack)
	    {
	        List<int> result = new List<int>();
	
	        List<OSCMessage> alivecmd = FindByCommand(pack, "/tuio/2Dcur", "alive");
	        if (alivecmd.Count > 0)
	        {
	            for (int i = 1; i < alivecmd[0].Values.Count; i++)
	            {
	                int id = (int)alivecmd[0].Values[i];
	                result.Add(id);
	
	            }
	        }
	
	        return result;
	    }
Example #8
0
        public static new OSCBundle Unpack(byte[] bytes, ref int start, int end)
        {
            string address = unpackString(bytes, ref start);
            //Console.WriteLine("bundle: " + address);
            if(!address.Equals(BUNDLE)) return null; // TODO

            long timestamp = unpackLong(bytes, ref start);
            OSCBundle bundle = new OSCBundle(timestamp);

            while(start < end)
            {
                int length = unpackInt(bytes, ref start);
                int sub_end = start + length;
                //Console.WriteLine(bytes.Length +" "+ start+" "+length+" "+sub_end);
                bundle.Append(OSCPacket.Unpack(bytes, ref start, sub_end));

            }

            return bundle;
        }
Example #9
0
        public static new OSCBundle Unpack(byte[] bytes, ref int start, int end)
        {
            string address = unpackString(bytes, ref start);

            //Console.WriteLine("bundle: " + address);
            if (!address.Equals(BUNDLE))
            {
                return(null);                                    // TODO
            }
            long      timestamp = unpackLong(bytes, ref start);
            OSCBundle bundle    = new OSCBundle(timestamp);

            while (start < end)
            {
                int length  = unpackInt(bytes, ref start);
                int sub_end = start + length;
                //Console.WriteLine(bytes.Length +" "+ start+" "+length+" "+sub_end);
                bundle.Append(OSCPacket.Unpack(bytes, ref start, sub_end));
            }

            return(bundle);
        }
Example #10
0
	    static List<OSCMessage> FindByCommand(OSCBundle bundle, string address, string cmd)
	    {
	        List<OSCMessage> result = new List<OSCMessage>();
	        foreach (object o in bundle.Values)
	        {
	            OSCMessage msg = (OSCMessage)o;
	            if (msg.Address == address)
	            {
	                if (msg.Values.Count > 0)
	                {
	                    if (msg.Values[0].ToString() == cmd)
	                    {
	                        result.Add(msg);
	                    }
	                }
	            }
	        }
	        return result;
	    }
Example #11
0
        public static int GetSequenceNumber(OSCBundle pack)
        {
            int result = -1;

            List<OSCMessage> msgs = FindByCommand(pack, "fseq");
            if (msgs.Count > 0)
            {
                result = GetSequenceNumber(msgs[0]);
            }

            return result;
        }
Example #12
0
        void routeMessages( OSCBundle bundle )
        {
            List<OSCMessageDelegate> handlers = null;

            foreach (OSCMessage msg in bundle.Values) {
            //				DebugExtras.Log(msg.ToString());

                if ( GhopperDaemon.detailedDebug )
                    DebugExtras.Log( "Received OSC message: " + msg.ToString() );

                if ( addressListeners.ContainsKey( msg.Address ) )
                {
                    handlers = addressListeners[msg.Address];
                    foreach ( OSCMessageDelegate handler in handlers )
                    {
                        handler( msg );
                    }
                }
                allMessageHandler( msg );
            }
        }