Skip to content
Snippets Groups Projects
Commit 3286ebf1 authored by Aaron Cuevas Lopez's avatar Aaron Cuevas Lopez
Browse files

Move network record control to network events module

parent 97d02710
No related branches found
No related tags found
No related merge requests found
...@@ -409,8 +409,12 @@ String NetworkEvents::handleSpecialMessages(StringTS msg) ...@@ -409,8 +409,12 @@ String NetworkEvents::handleSpecialMessages(StringTS msg)
/** Start/stop data acquisition */ /** Start/stop data acquisition */
String s = msg.getString(); String s = msg.getString();
/** Command is first substring */
StringArray inputs = StringArray::fromTokens(s, " ");
String cmd = String(inputs[0]);
const MessageManagerLock mmLock; const MessageManagerLock mmLock;
if (s.compareIgnoreCase("StartAcquisition") == 0) if (cmd.compareIgnoreCase("StartAcquisition") == 0)
{ {
if (!CoreServices::getAcquisitionStatus()) if (!CoreServices::getAcquisitionStatus())
{ {
...@@ -418,7 +422,7 @@ String NetworkEvents::handleSpecialMessages(StringTS msg) ...@@ -418,7 +422,7 @@ String NetworkEvents::handleSpecialMessages(StringTS msg)
} }
return String("StartedAcquisition"); return String("StartedAcquisition");
} }
else if (s.compareIgnoreCase("StopAcquisition") == 0) else if (cmd.compareIgnoreCase("StopAcquisition") == 0)
{ {
if (CoreServices::getAcquisitionStatus()) if (CoreServices::getAcquisitionStatus())
{ {
...@@ -426,6 +430,57 @@ String NetworkEvents::handleSpecialMessages(StringTS msg) ...@@ -426,6 +430,57 @@ String NetworkEvents::handleSpecialMessages(StringTS msg)
} }
return String("StoppedAcquisition"); return String("StoppedAcquisition");
} }
else if (String("StartRecord").compareIgnoreCase(cmd) == 0)
{
if (!CoreServices::getRecordingStatus() && CoreServices::getAcquisitionStatus())
{
/** First set optional parameters (name/value pairs)*/
if (s.contains("="))
{
String params = s.substring(cmd.length());
StringPairArray dict = parseNetworkMessage(params);
StringArray keys = dict.getAllKeys();
for (int i = 0; i<keys.size(); i++)
{
String key = keys[i];
String value = dict[key];
if (key.compareIgnoreCase("CreateNewDir") == 0)
{
if (value.compareIgnoreCase("1") == 0)
{
CoreServices::createNewRecordingDir();
}
}
else if (key.compareIgnoreCase("RecDir") == 0)
{
CoreServices::setRecordingDirectory(value);
}
else if (key.compareIgnoreCase("PrependText") == 0)
{
CoreServices::setPrependTextToRecordingDir(value);
}
else if (key.compareIgnoreCase("AppendText") == 0)
{
CoreServices::setAppendTextToRecordingDir(value);
}
}
}
/** Start recording */
CoreServices::setRecordingStatus(true);
return String("StartedRecording");
}
}
else if (String("StopRecord").compareIgnoreCase(cmd) == 0)
{
if (CoreServices::getRecordingStatus())
{
CoreServices::setRecordingStatus(false);
return String("StoppedRecording");
}
}
else else
{ {
return String("NotHandled"); return String("NotHandled");
...@@ -590,3 +645,51 @@ void NetworkEvents::createZmqContext() ...@@ -590,3 +645,51 @@ void NetworkEvents::createZmqContext()
zmqcontext = zmq_ctx_new(); //<-- this is only available in version 3+ zmqcontext = zmq_ctx_new(); //<-- this is only available in version 3+
#endif #endif
} }
StringPairArray NetworkEvents::parseNetworkMessage(String msg)
{
StringArray splitted;
splitted.addTokens(msg, "=", "");
StringPairArray dict = StringPairArray();
String key = "";
String value = "";
for (int i = 0; i<splitted.size() - 1; i++)
{
String s1 = splitted[i];
String s2 = splitted[i + 1];
/** Get key */
if (!key.isEmpty())
{
if (s1.contains(" "))
{
int i1 = s1.lastIndexOf(" ");
key = s1.substring(i1 + 1);
}
else
{
key = s1;
}
}
else
{
key = s1.trim();
}
/** Get value */
if (i < splitted.size() - 2)
{
int i1 = s2.lastIndexOf(" ");
value = s2.substring(0, i1);
}
else
{
value = s2;
}
dict.set(key, value);
}
return dict;
}
...@@ -117,6 +117,9 @@ private: ...@@ -117,6 +117,9 @@ private:
void handleEvent(int eventType, MidiMessage& event, int samplePos); void handleEvent(int eventType, MidiMessage& event, int samplePos);
void createZmqContext(); void createZmqContext();
//* Split network message into name/value pairs (name1=val1 name2=val2 etc) */
StringPairArray parseNetworkMessage(String msg);
StringTS createStringTS(String S, int64 t); StringTS createStringTS(String S, int64 t);
static void* zmqcontext; static void* zmqcontext;
......
...@@ -111,123 +111,7 @@ void RecordControl::handleEvent(int eventType, MidiMessage& event, int) ...@@ -111,123 +111,7 @@ void RecordControl::handleEvent(int eventType, MidiMessage& event, int)
CoreServices::setRecordingStatus(!CoreServices::getRecordingStatus()); CoreServices::setRecordingStatus(!CoreServices::getRecordingStatus());
} }
} }
else if (eventType == MESSAGE)
{
handleNetworkEvent(event);
}
} }
void RecordControl::handleNetworkEvent(MidiMessage& event)
{
/** Extract network message from midi event */
const uint8* dataptr = event.getRawData();
int bufferSize = event.getRawDataSize();
int len = bufferSize - 6; // 6 for initial event prefix
String msg = String((const char*)(dataptr + 6), len);
/** Command is first substring */
StringArray inputs = StringArray::fromTokens(msg, " ");
String cmd = String(inputs[0]);
const MessageManagerLock mmLock;
if (String("StartRecord").compareIgnoreCase(cmd) == 0)
{
if (!CoreServices::getRecordingStatus())
{
/** First set optional parameters (name/value pairs)*/
if (msg.contains("="))
{
String s = msg.substring(cmd.length());
StringPairArray dict = parseNetworkMessage(s);
StringArray keys = dict.getAllKeys();
for (int i=0; i<keys.size(); i++)
{
String key = keys[i];
String value = dict[key];
if (key.compareIgnoreCase("CreateNewDir") == 0)
{
if (value.compareIgnoreCase("1") == 0)
{
CoreServices::createNewRecordingDir();
}
}
else if (key.compareIgnoreCase("RecDir") == 0)
{
CoreServices::setRecordingDirectory(value);
}
else if (key.compareIgnoreCase("PrependText") == 0)
{
CoreServices::setPrependTextToRecordingDir(value);
}
else if (key.compareIgnoreCase("AppendText") == 0)
{
CoreServices::setAppendTextToRecordingDir(value);
}
}
}
/** Start recording */
CoreServices::setRecordingStatus(true);
}
}
else if (String("StopRecord").compareIgnoreCase(cmd) == 0)
{
if (CoreServices::getRecordingStatus())
{
CoreServices::setRecordingStatus(false);
}
}
}
StringPairArray RecordControl::parseNetworkMessage(String msg)
{
StringArray splitted;
splitted.addTokens(msg, "=", "");
StringPairArray dict = StringPairArray();
String key = "";
String value = "";
for (int i=0; i<splitted.size()-1; i++)
{
String s1 = splitted[i];
String s2 = splitted[i+1];
/** Get key */
if (!key.isEmpty())
{
if (s1.contains(" "))
{
int i1 = s1.lastIndexOf(" ");
key = s1.substring(i1+1);
}
else
{
key = s1;
}
}
else
{
key = s1.trim();
}
/** Get value */
if (i < splitted.size() - 2)
{
int i1 = s2.lastIndexOf(" ");
value = s2.substring(0, i1);
}
else
{
value = s2;
}
dict.set(key, value);
}
return dict;
}
...@@ -47,10 +47,6 @@ public: ...@@ -47,10 +47,6 @@ public:
void setParameter(int, float); void setParameter(int, float);
void updateTriggerChannel(int newChannel); void updateTriggerChannel(int newChannel);
void handleEvent(int eventType, MidiMessage& event, int); void handleEvent(int eventType, MidiMessage& event, int);
void handleNetworkEvent(MidiMessage& event);
//* Split network message into name/value pairs (name1=val1 name2=val2 etc) */
StringPairArray parseNetworkMessage(String msg);
bool enable(); bool enable();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment