Beispiel #1
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.WriteToNetwork(NodeCount);
            data.WriteToNetwork(NodeListenerPort);
        }
Beispiel #2
0
        /// <summary>
        /// Sends the specified packet using UDP broadcast to all TCNet devices.
        /// </summary>
        /// <param name="packet">The packet to send on the network.</param>
        protected void Broadcast(Socket socket, TCNetPacket packet)
        {
            MemoryStream      data          = new MemoryStream();
            TCNetBinaryWriter writer        = new TCNetBinaryWriter(data);
            IPEndPoint        localEndpoint = (IPEndPoint)socket.LocalEndPoint;

            TCNetHeader header = packet as TCNetHeader;

            if (header != null)
            {
                header.NodeID         = NodeId;
                header.NodeType       = Role;
                header.NodeName       = NodeName;
                header.SequenceNumber = NextSequenceNumber();
                header.Timestamp      = DateTime.UtcNow.TimeOfDay;
            }

            packet.WriteData(writer);
            try
            {
                socket.SendTo(data.ToArray(), new IPEndPoint(BroadcastAddress, localEndpoint.Port));
            }
            catch (SocketException ex)
            {
                var broadcastError = new TCNetSocketException(this, "TCNet socket error while broadcasting. See inner exception for more details.", ex);
                broadcastError.Data["LocalPort"] = localEndpoint.Port;
                broadcastError.Data["Port"]      = localEndpoint.Port;
                OnUnhandledException(broadcastError);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)DataType);
            data.Write(LayerID);
        }
Beispiel #4
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)0);
            data.WriteToNetwork(LoopIn);
            data.WriteToNetwork(LoopOut);
        }
Beispiel #5
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)StepNumber);
            data.Write((byte)0);
            data.WriteToNetwork(NodeListenerPort);
            data.WriteToNetwork((uint)(RemoteTimestamp.Ticks / (TimeSpan.TicksPerSecond / 1000000)));
        }
Beispiel #6
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)DataType);
            data.Write(LayerID);
            data.WriteToNetwork(Code);
            data.WriteToNetwork((ushort)MessageType);
        }
Beispiel #7
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)0);
            data.Write(TrackID);
            data.WriteToNetwork(TrackArtist, 256);
            data.WriteToNetwork(TrackTitle, 256);
            data.WriteToNetwork(TrackKey);
        }
Beispiel #8
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)Step);
            data.Write((byte)0);
            data.WriteToNetwork((uint)TextData.Length);
            data.Write(new byte[12]);
            data.WriteToNetwork(TextData, TextData.Length);
        }
Beispiel #9
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write(WaveformData.Length);
            data.Write(TotalPackets);
            data.Write(PacketNumber);
            data.Write(DataClusterSize);
            data.Write(WaveformData);
        }
Beispiel #10
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)Step);
            data.Write((byte)0);
            data.WriteToNetwork((uint)ControlPath.Length);
            data.Write(new byte[12]);
            data.WriteToNetwork(ControlPath, ControlPath.Length);
        }
Beispiel #11
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.WriteToNetwork(ApplicationSignature);
            data.WriteToNetwork(DataSize);
            data.WriteToNetwork(TotalPackets);
            data.WriteToNetwork(PacketNumber);

            WriteApplicationData(data);
        }
Beispiel #12
0
 /// <summary>
 /// Writes the contents of this packet into a memory buffer.
 /// </summary>
 /// <param name="data">The data buffer to write the packet contents to.</param>
 public override void WriteData(TCNetBinaryWriter data)
 {
     data.WriteToNetwork(NodeID);
     data.Write((byte)ProtocolVersion.Major);
     data.Write((byte)ProtocolVersion.Minor);
     data.WriteToNetwork(Header, 3);
     data.Write((byte)MessageType);
     data.WriteToNetwork(NodeName, 8);
     data.Write(SequenceNumber);
     data.Write((byte)NodeType);
     data.WriteToNetwork((ushort)NodeOptions);
     data.WriteToNetwork((uint)(Timestamp.Milliseconds * 1000));
 }
Beispiel #13
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.WriteToNetwork(NodeCount);
            data.WriteToNetwork(NodeListenerPort);
            data.WriteToNetwork((ushort)Uptime.TotalSeconds);
            data.Write(new byte[] { 0, 0 });
            data.WriteToNetwork(VendorName, 16);
            data.WriteToNetwork(DeviceName, 16);
            data.Write((byte)DeviceVersion.Major);
            data.Write((byte)DeviceVersion.Minor);
            data.Write((byte)DeviceVersion.Build);
            data.Write((byte)0);
        }
Beispiel #14
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write((byte)0);
            data.Write((ushort)LayerState);
            data.Write(SyncMaster);
            data.Write(TrackLength);
            data.Write(CurrentPosition);
            data.Write((uint)(Speed * 32767));
            data.Write(new byte[1]);
            data.Write(BeatNumber);
            data.Write(new byte[51]);
            data.Write((uint)(BPM * 100.0));
            data.Write((ushort)(SpeedPitchBend * 32767));
            data.Write(TrackId);
        }
Beispiel #15
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            data.Write(DataSize);
            data.Write(TotalPackets);
            data.Write(PacketNumber);
            data.Write(DataClusterSize);

            foreach (BeatData beat in Beats)
            {
                data.WriteToNetwork(beat.BeatNumber);
                data.Write((byte)beat.BeatType);
                data.Write((byte)0);
                data.WriteToNetwork(beat.BeatTimeStamp);
            }
        }
Beispiel #16
0
        /// <summary>
        /// Writes the contents of this packet into a memory buffer.
        /// </summary>
        /// <param name="data">The data buffer to write the packet contents to.</param>
        public override void WriteData(TCNetBinaryWriter data)
        {
            base.WriteData(data);

            Layer[] layers = new Layer[] { Layer1, Layer2, Layer3, Layer4, LayerA, LayerB, LayerM, LayerC };

            //Current Time
            foreach (var layer in layers)
            {
                data.WriteToNetwork(layer.CurrentTime);
            }

            //Total Time
            foreach (var layer in layers)
            {
                data.WriteToNetwork(layer.TotalTime);
            }

            //Beat Marker
            foreach (var layer in layers)
            {
                data.Write(layer.BeatMarker);
            }

            //Layer State
            foreach (var layer in layers)
            {
                data.Write((byte)layer.State);
            }

            //On Air
            foreach (var layer in layers)
            {
                data.Write(layer.OnAir);
            }

            data.Write(new byte[42]);
        }
Beispiel #17
0
        /// <summary>
        /// Sends the specified packet using unicast to a specific DJ Tap device.
        /// </summary>
        /// <param name="packet">The packet to send on the network.</param>
        /// <param name="address">The address of the device to send the packet to.</param>
        protected void Unicast(TCNetPacket packet, TCNetEndPoint address)
        {
            MemoryStream      data          = new MemoryStream();
            TCNetBinaryWriter writer        = new TCNetBinaryWriter(data);
            IPEndPoint        localEndpoint = (IPEndPoint)nodeSocket.LocalEndPoint;

            TCNetHeader header = packet as TCNetHeader;

            if (header != null)
            {
                header.NodeID         = NodeId;
                header.NodeType       = Role;
                header.NodeName       = NodeName;
                header.SequenceNumber = NextSequenceNumber();
                header.Timestamp      = DateTime.UtcNow.TimeOfDay;

                TraceEventType traceLevel = TraceEventType.Information;
                DataTypes      dataType   = DataTypes.None;

                TCNetDataHeader dataHeader = header as TCNetDataHeader;
                if (dataHeader != null)
                {
                    dataType = dataHeader.DataType;
                }

                tcNetTrace.TraceEvent(traceLevel, (int)header.MessageType, $"{header.NodeName}: {header.GetType().Name} {(dataType != DataTypes.None ? dataType.ToString() : string.Empty)}");
            }

            packet.WriteData(writer);
            try
            {
                unicastTXSocket.SendTo(data.ToArray(), new IPEndPoint(address.Address, address.Port));
            }
            catch (SocketException ex)
            {
                OnUnhandledException(new TCNetSocketException(this, "Socket error unicast TCNet integration.", ex));
            }
        }
Beispiel #18
0
 /// <summary>
 /// Writes the contents of this packet into a memory buffer.
 /// </summary>
 /// <param name="data">The data buffer to write the packet contents to.</param>
 public abstract void WriteData(TCNetBinaryWriter data);
Beispiel #19
0
 public virtual void WriteApplicationData(TCNetBinaryWriter data)
 {
 }