diff --git a/iOS/Info.plist b/iOS/Info.plist
index 8913b0d..dcdf932 100644
--- a/iOS/Info.plist
+++ b/iOS/Info.plist
@@ -36,8 +36,10 @@
XSAppIconAssets
Assets.xcassets/AppIcon.appiconset
CFBundleShortVersionString
- 2.0
+ 2.0.1
CFBundleVersion
1.0
+ ITSAppUsesNonExemptEncryption
+
diff --git a/qController.Standard/Classes/Communication/QClient.cs b/qController.Standard/Classes/Communication/QClient.cs
index ff0e61d..9da2654 100644
--- a/qController.Standard/Classes/Communication/QClient.cs
+++ b/qController.Standard/Classes/Communication/QClient.cs
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
using SharpOSC;
using Newtonsoft.Json;
namespace qController
@@ -6,19 +7,29 @@ namespace qController
public class QClient
{
TCPSender tcpSender;
+ UDPSender udpSender;
public QParser qParser;
+ public QReceiver qReceiver;
public QClient(string address, int port)
{
qParser = new QParser();
+ qReceiver = new QReceiver(port + 1);
tcpSender = new TCPSender(address, port);
+ udpSender = new UDPSender(address, port);
+
tcpSender.MessageReceived += OnMessageReceived;
+ qReceiver.UpdateMessageReceived += OnMessageReceived;
+
}
private void OnMessageReceived(object source, MessageEventArgs args)
{
- qParser.ParseMessage(args.Message);
+ if (!args.Message.Address.Contains("update"))
+ qParser.ParseMessage(args.Message);
+ else
+ ProcessUpdate(args.Message);
}
public void sendString(string address)
@@ -30,7 +41,14 @@ namespace qController
{
tcpSender.Send(new OscMessage(address, args));
}
-
+ public void sendStringUDP(string address)
+ {
+ udpSender.Send(new OscMessage(address));
+ }
+ public void sendArgsUDP(string address, params object[] args)
+ {
+ udpSender.Send(new OscMessage(address, args));
+ }
public OscMessage sendAndReceiveString(string address)
{
return tcpSender.SendAndReceive(new OscMessage(address));
@@ -42,6 +60,38 @@ namespace qController
}
+ public void ProcessUpdate(OscMessage msg)
+ {
+ if (msg.Address.Contains("cue_id"))
+ {
+ var updateID = msg.Address.Split('/').Last();
+ Console.WriteLine("Cue needs to be updated: " + updateID);
+ }else if (msg.Address.Contains("playbackPosition"))
+ {
+ if (msg.Arguments.Count > 0)
+ {
+ Console.WriteLine("Playback position to be updated: " + msg.Arguments[0]);
+ UpdateSelectedCue();
+ }
+ }
+ }
+
+ public void UpdateSpecificCue(string cue_id)
+ {
+ Console.WriteLine(cue_id);
+ }
+
+ public void UpdateSelectedCue()
+ {
+ string valuesForKeys = "[\"displayName\",\"number\",\"type\",\"isBroken\",\"isLoaded\",\"isPaused\",\"isRunning\",\"preWait\",\"duration\",\"postWait\",\"translationX\",\"translationY\",\"opacity\",\"scaleX\",\"scaleY\",\"uniqueID\",\"flagged\",\"listName\",\"colorName\",\"name\",\"armed\"]";
+ sendAndReceiveStringArgs("/cue/selected/valuesForKeys", valuesForKeys);
+ }
+
+ public void Close()
+ {
+ udpSender.Close();
+ qReceiver.Close();
+ }
}
}
diff --git a/qController.Standard/Classes/Communication/QController.cs b/qController.Standard/Classes/Communication/QController.cs
index 4c39f1c..da45d7d 100644
--- a/qController.Standard/Classes/Communication/QController.cs
+++ b/qController.Standard/Classes/Communication/QController.cs
@@ -23,6 +23,8 @@ namespace qController
qClient.qParser.WorkspaceUpdated += this.OnWorkspaceUpdated;
+ qClient.sendArgsUDP("/updates", 1);
+ qClient.sendAndReceiveString("/cueLists");
}
@@ -37,7 +39,17 @@ namespace qController
public void OnSelectedCueUpdated(object source, CueEventArgs args)
{
selectedCue = args.SelectedCue;
- //Console.WriteLine("Selected Cue Updated: Name=" + selectedCue.listName);
+ Console.WriteLine("Selected cue updated: " + selectedCue.uniqueID);
+ foreach (var cueList in qWorkspace.data)
+ {
+ foreach( var cue in cueList.cues)
+ {
+ if(cue.uniqueID == selectedCue.uniqueID)
+ {
+ Console.WriteLine("Cue found in local workspace");
+ }
+ }
+ }
}
public void OnWorkspaceUpdated(object source, WorkspaceEventArgs args)
@@ -48,6 +60,7 @@ namespace qController
}
public void Kill(){
qUpdater.Kill();
+ qClient.Close();
}
}
}
diff --git a/qController.Standard/Classes/Communication/QParser.cs b/qController.Standard/Classes/Communication/QParser.cs
index ea99ffa..8f33cdd 100644
--- a/qController.Standard/Classes/Communication/QParser.cs
+++ b/qController.Standard/Classes/Communication/QParser.cs
@@ -73,8 +73,6 @@ namespace qController
JToken selectedCue = OSC2JSON(msg);
Console.WriteLine("Selected Cue Updated");
QCue cue = JsonConvert.DeserializeObject(selectedCue.ToString());
-
- Console.WriteLine(cue.uniqueID);
OnSelectedCueUpdated(cue);
}
diff --git a/qController.Standard/Classes/Communication/QReceiver.cs b/qController.Standard/Classes/Communication/QReceiver.cs
index a68cf2e..9b52a7f 100644
--- a/qController.Standard/Classes/Communication/QReceiver.cs
+++ b/qController.Standard/Classes/Communication/QReceiver.cs
@@ -1,42 +1,39 @@
-using System;
+//this class is used for receiving workspace update messages
+
+using System;
using SharpOSC;
using System.Net;
using System.Threading;
namespace qController
{
- public class MessageEventArgs : EventArgs{
- public OscMessage Message {
- get;
- set;
- }
- }
public class QReceiver
{
+ public delegate void UpdateMessageReceivedHandler(object source, MessageEventArgs args);
+ public event UpdateMessageReceivedHandler UpdateMessageReceived;
+
static Thread thread;
- private QController owner;
static UDPListener udpListener;
- public delegate void MessageReceivedHandler(object source, MessageEventArgs args);
- public event MessageReceivedHandler MessageReceived;
-
- public QReceiver(int port, QController ctrl)
+ public QReceiver(int port)
{
- owner = ctrl;
+ HandleOscPacket callback = delegate (OscPacket packet)
+ {
+ var messageReceived = (OscMessage)packet;
+ if(messageReceived != null)
+ OnUpdateMessageReceived(messageReceived);
+ else
+ Console.WriteLine("Message came back null");
+ };
- udpListener = new UDPListener(port);
-
- thread = new Thread(new ThreadStart(ListenLoop));
- thread.Start();
+ udpListener = new UDPListener(port, callback);
}
public void ListenLoop()
{
- Console.WriteLine("Loop Started");
-
- while (true)
+ /*while (true)
{
OscMessage messageReceived = null;
while(messageReceived == null)
@@ -44,23 +41,20 @@ namespace qController
messageReceived = (OscMessage)udpListener.Receive();
Thread.Sleep(1);
}
- OnMessageReceived(messageReceived);
-
- }
+ OnUpdateMessageReceived(messageReceived);
- Console.WriteLine("Loop Ended");
+ }*/
}
public void Close(){
- thread.Abort();
udpListener.Close();
}
- protected virtual void OnMessageReceived(OscMessage msg){
- Console.WriteLine("Message Received");
- if (MessageReceived != null)
- MessageReceived(this, new MessageEventArgs(){Message = msg});
+ protected virtual void OnUpdateMessageReceived(OscMessage msg)
+ {
+ if (UpdateMessageReceived != null)
+ UpdateMessageReceived(this, new MessageEventArgs() { Message = msg });
}
}
}
diff --git a/qController.Standard/Classes/Communication/QUpdater.cs b/qController.Standard/Classes/Communication/QUpdater.cs
index 7a59035..fb54c99 100644
--- a/qController.Standard/Classes/Communication/QUpdater.cs
+++ b/qController.Standard/Classes/Communication/QUpdater.cs
@@ -6,6 +6,7 @@ namespace qController
{
public class QUpdater
{
+
private bool active = true;
private QController qController;
private Thread updateThread;
@@ -32,7 +33,7 @@ namespace qController
public void UpdateSelected()
{
string valuesForKeys = "[\"displayName\",\"number\",\"type\",\"isBroken\",\"isLoaded\",\"isPaused\",\"isRunning\",\"preWait\",\"duration\",\"postWait\",\"translationX\",\"translationY\",\"opacity\",\"scaleX\",\"scaleY\",\"uniqueID\",\"flagged\",\"listName\",\"colorName\",\"name\",\"armed\"]";
- qController.qClient.sendAndReceiveStringArgs("/cue/selected/valuesForKeys", valuesForKeys);
+ //qController.qClient.sendAndReceiveStringArgs("/cue/selected/valuesForKeys", valuesForKeys);
}
public void UpdateLevels()
{
diff --git a/qController.Standard/Classes/Communication/SharpOSC/OscPacket.cs b/qController.Standard/Classes/Communication/SharpOSC/OscPacket.cs
index fdecce4..f4eaeee 100755
--- a/qController.Standard/Classes/Communication/SharpOSC/OscPacket.cs
+++ b/qController.Standard/Classes/Communication/SharpOSC/OscPacket.cs
@@ -32,7 +32,6 @@ namespace SharpOSC
char[] types = new char[0];
List