sofaswitch-svn
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
July 2007
- 1 participants
- 48 discussions
30 Jul '07
Author: derek
Date: Sun Jul 29 21:27:50 2007
New Revision: 361
Modified:
sofaswitch/trunk/callflow/src/death.cpp
sofaswitch/trunk/callflow/src/dnd.cpp
sofaswitch/trunk/callflow/src/endhere.cpp
sofaswitch/trunk/callflow/src/shapelist.cpp
sofaswitch/trunk/callflow/src/stoptimer.cpp
sofaswitch/trunk/callflow/src/timer.cpp
Log:
Rework the handling of the Timer, to be easier to use.
Modified: sofaswitch/trunk/callflow/src/death.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/death.cpp (original)
+++ sofaswitch/trunk/callflow/src/death.cpp Sun Jul 29 21:27:50 2007
@@ -39,7 +39,7 @@
wxPoint pB(p1.x + 12, p1.y + 0);
wxPoint pC(p1.x + 12, p1.y + 10);
dc.DrawLine(pA, pB);
- DrawArrow(dc, pC, ArrowDown, InputPointConnected(0) ? Connected : Loose);
+ DrawArrow(dc, pB, ArrowDown, InputPointConnected(0) ? Connected : Loose);
dc.DrawBitmap(skullBitmap, p1.x + 00, p1.y + 15, true);
@@ -69,8 +69,8 @@
wxNode *inputNode = (wxNode *)GetInputPoints().GetFirst();
const wxString & inputLabel = ((LabelledPoint *)inputNode->GetData())->GetFullLabel();
- file.AddLine(wxString::Format(" \"Input\" : "));
- file.AddLine(wxString::Format(" %s, ", inputLabel.c_str()));
+ file.AddLine(wxString::Format(" \"Input\" : "));
+ file.AddLine(wxString::Format(" %s, ", inputLabel.c_str()));
file.AddLine(wxString::Format(" },"));
Modified: sofaswitch/trunk/callflow/src/dnd.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/dnd.cpp (original)
+++ sofaswitch/trunk/callflow/src/dnd.cpp Sun Jul 29 21:27:50 2007
@@ -630,15 +630,9 @@
void DndShape::DrawSelected(wxDC & dc)
{
- dc.SetPen(*wxRED_PEN);
+ dc.SetPen(*wxBLUE);
- wxPoint p1(m_rect.GetPosition());
- wxPoint p2(m_rect.x + m_rect.GetWidth(), p1.y );
- wxPoint p3(m_rect.x , p1.y + m_rect.GetHeight());
- wxPoint p4(m_rect.x + m_rect.GetWidth(), p1.y + m_rect.GetHeight());
-
- dc.DrawLine(p1, p4);
- dc.DrawLine(p2, p3);
+ DrawBox(dc, 1, 1, m_rect.GetWidth() - 2, m_rect.GetHeight() - 2);
}
bool DndShape::Intersects(const wxPoint & testPoint) const
@@ -777,10 +771,9 @@
void DndShape::DrawBox(wxDC &dc, int xOff, int yOff, int width, int height)
{
dc.SetBrush(wxBrush(*wxBLUE, wxTRANSPARENT));
- dc.SetPen(*wxBLACK_PEN);
- dc.DrawRoundedRectangle(m_rect.x + xOff, m_rect.y + yOff,
- width, height, 5);
- dc.SetBrush(wxBrush(*wxBLACK, wxSOLID ) );
+ dc.DrawRoundedRectangle(m_rect.x + xOff, m_rect.y + yOff,
+ width, height, 5);
+ dc.SetBrush(wxBrush(*wxBLACK, wxSOLID ) );
}
wxPoint DndShape::HourLocation(int xOff, int yOff, int hour, int radius)
Modified: sofaswitch/trunk/callflow/src/endhere.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/endhere.cpp (original)
+++ sofaswitch/trunk/callflow/src/endhere.cpp Sun Jul 29 21:27:50 2007
@@ -26,6 +26,7 @@
relInputPoints.Add(25, 0);
AdjustIoPoints();
+ displayData[0] = InformationSection(wxT("Tool Tip"), wxString("Suspend Processing"));
}
void DndShapeEndHere::Draw(wxDC& dc)
Modified: sofaswitch/trunk/callflow/src/shapelist.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/shapelist.cpp (original)
+++ sofaswitch/trunk/callflow/src/shapelist.cpp Sun Jul 29 21:27:50 2007
@@ -481,21 +481,21 @@
file.AddLine(" try: ");
file.AddLine(" exec(pVbl) ");
file.AddLine(" except: ");
- file.AddLine(" print \"An internal error processing \", pVbl ");
+ file.AddLine(" print \"An internal error processing eSource\", pVbl");
file.AddLine(" pVbl = self.data[eventNode][\"Event Name\"] ");
file.AddLine(" pVbl += \" = \" + self.quote + eName + self.quote ");
file.AddLine(" try: ");
file.AddLine(" exec(pVbl) ");
file.AddLine(" except: ");
- file.AddLine(" print \"An internal error processing \", pVbl ");
+ file.AddLine(" print \"An internal error processing eName\", pVbl ");
file.AddLine(" pVbl = self.data[eventNode][\"Event Data\"] ");
file.AddLine(" pVbl += \" = \" + self.quote + eData + self.quote ");
file.AddLine(" try: ");
file.AddLine(" exec(pVbl) ");
file.AddLine(" except: ");
- file.AddLine(" print \"An internal error processing \", pVbl ");
+ file.AddLine(" print \"An internal error processing eData\", pVbl ");
file.AddLine(" self.DoWork(eHandler) ");
Modified: sofaswitch/trunk/callflow/src/stoptimer.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/stoptimer.cpp (original)
+++ sofaswitch/trunk/callflow/src/stoptimer.cpp Sun Jul 29 21:27:50 2007
@@ -46,7 +46,26 @@
dc.DrawText(text, xPos, yPos);
DrawBox(dc, 5, 30, 40, 5);
- DndShapeTimer::Draw(dc);
+ dc.SetPen(*wxBLACK_PEN);
+ DrawCompileError(dc);
+ dc.SetPen(*wxBLACK_PEN);
+
+ wxPoint p1(m_rect.GetPosition());
+ wxPoint pA(p1.x + 25, p1.y + 0);
+ wxPoint pE(p1.x + 25, p1.y + 10);
+ wxPoint pB(p1.x + 25, p1.y + 13);
+ wxPoint pC(p1.x + 25, p1.y + 37);
+ wxPoint pD(p1.x + 25, p1.y + 50);
+ wxPoint pM(p1.x + 25, p1.y + 25);
+
+ DrawArrow(dc, pE, ArrowDown, InputPointConnected(0) ? Connected : Loose);
+ DrawArrow(dc, pD, ArrowDown, OutputPointConnected(0) ? Connected : Loose);
+ dc.DrawLine(pA, pB);
+ dc.DrawLine(pC, pD);
+
+ DrawClock(dc, 25, 25, 12);
+
+ DndShape::Draw(dc);
}
bool DndShapeStopTimer::WriteSystemCode(wxTextFile & file)
Modified: sofaswitch/trunk/callflow/src/timer.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/timer.cpp (original)
+++ sofaswitch/trunk/callflow/src/timer.cpp Sun Jul 29 21:27:50 2007
@@ -35,7 +35,11 @@
SetSize(newSize);
relInputPoints.Add(25, 0);
- relOutputPoints.Add(25, 50);
+ if (kind == Timer) {
+ relOutputPoints.Add(50, 20);
+ relOutputPoints.Add(15, 50);
+ } else
+ relOutputPoints.Add(25, 50);
displayData[displayData.size()] =
InformationSection(wxT("Timer period (seconds, Python code)"), wxT("2"));
@@ -43,6 +47,10 @@
displayData[displayData.size()] =
InformationSection(wxT("Timer label (Python code)"), wxT("self.myId + \"thistimer\""));
+ if (kind == Timer) {
+ displayData[displayData.size()] =
+ InformationSection(wxT("Python variable: Timer expire info"), wxT(""));
+ }
AdjustIoPoints();
}
@@ -59,38 +67,64 @@
wxPoint pA(p1.x + 25, p1.y + 0);
wxPoint pE(p1.x + 25, p1.y + 10);
wxPoint pB(p1.x + 25, p1.y + 13);
- wxPoint pC(p1.x + 25, p1.y + 37);
- wxPoint pD(p1.x + 25, p1.y + 50);
- wxPoint pM(p1.x + 25, p1.y + 25);
+
+
+
+ wxPoint pI(p1.x + 30, p1.y + 17);
+ wxPoint pJ(p1.x + 35, p1.y + 22);
+ wxPoint pK(p1.x + 30, p1.y + 27);
+ wxPoint pL(p1.x + 50, p1.y + 22);
+ dc.DrawLine(pI, pJ);
+ dc.DrawLine(pJ, pK);
+ dc.DrawLine(pJ, pL);
+
+
+ wxPoint pC(p1.x + 15, p1.y + 37);
+ wxPoint pD(p1.x + 15, p1.y + 50);
DrawArrow(dc, pE, ArrowDown, InputPointConnected(0) ? Connected : Loose);
- DrawArrow(dc, pD, ArrowDown, OutputPointConnected(0) ? Connected : Loose);
+ DrawArrow(dc, pL, ArrowRight, OutputPointConnected(0) ? Connected : Loose);
+ DrawArrow(dc, pD, ArrowDown, OutputPointConnected(1) ? Connected : Loose);
+
+
dc.DrawLine(pA, pB);
dc.DrawLine(pC, pD);
- DrawClock(dc, 25, 25, 12);
-
+ DrawClock(dc, 19, 22, 12);
+ DrawStar(dc,3, 39);
+ DrawClock(dc,23, 42, 5);
+
DndShape::Draw(dc);
}
bool DndShapeTimer::WriteSystemCode(wxTextFile & file)
{
- file.AddLine(" def Timer(self, sTuple): ");
- file.AddLine(" a,b,c = sTuple ");
- file.AddLine(" try: ");
- file.AddLine(" eName = eval(self.data[a][\"Timer label\"]) ");
- file.AddLine(" except: ");
- file.AddLine(" print \"The timer label of \", self.data[a][\"Timer label\"], \" was unintelligible Python\" ");
- file.AddLine(" return self.data[a][\"Output\"] ");
- file.AddLine(" self.pendingEvents[eName] = (\"internaltimer\", \"timerexpired\", a) ");
- file.AddLine(" try: ");
- file.AddLine(" self.period = eval (self.data[a][\"Timer period\"]) ");
- file.AddLine(" except: ");
- file.AddLine(" print \"The timer period of \", self.data[a][\"Timer period\"], \" was unintelligible\" ");
- file.AddLine(" return self.data[a][\"Output\"] ");
- file.AddLine(" ");
- file.AddLine(" reactor.callLater(self.period, self.timerObjectExpired, eName) ");
- file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine(" def Timer(self, sTuple): ");
+ file.AddLine(" a,b,c = sTuple ");
+ file.AddLine(" if b == 0: ");
+ file.AddLine(" try: ");
+ file.AddLine(" eName = eval(self.data[a][\"Timer label\"]) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"The timer label of \", self.data[a][\"Timer label\"], \" was unintelligible Python\" ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+
+ file.AddLine(" try: ");
+ file.AddLine(" tPeriod = eval (self.data[a][\"Timer period\"]) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"The timer period of \", self.data[a][\"Timer period\"], \" was unintelligible\" ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+
+ file.AddLine(" self.pendingEvents[eName] = (a, eName, \"\") ");
+ file.AddLine(" reactor.callLater(tPeriod, self.timerObjectExpired, eName) ");
+ file.AddLine(" self.currentHandlers[eName] = a ");
+
+ file.AddLine(" #self.pendingEvents[eName] = (\"internaltimer\", \"timerexpired\", a) ");
+ file.AddLine(" ");
+ file.AddLine(" reactor.callLater(self.period, self.timerObjectExpired, eName) ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine(" #Code below describes the handling of the timer expring ");
+ file.AddLine(" else: ");
+ file.AddLine(" return self.data[a][\"Timeout Handler\"] ");
file.AddLine("");
return true;
@@ -117,6 +151,33 @@
file.AddLine(wxString::Format(" \"Timer label\" : "));
dest = ProtectString(displayData[2].data);
file.AddLine(wxString::Format(" \"%s\", ", dest.c_str()));
+ if (kind == Timer) {
+ file.AddLine(wxString::Format(" \"Event Name\" : "));
+ file.AddLine(wxString::Format(" \"self.%s_Name\", ", GetKey().c_str()));
+
+ file.AddLine(wxString::Format(" \"Event Data\" : "));
+ file.AddLine(wxString::Format(" \"self.%s_Name\", ", GetKey().c_str()));
+
+
+ file.AddLine(wxString::Format(" \"Event Source\" : "));
+ file.AddLine(wxString::Format(" \"self.%s_Source\", ", GetKey().c_str()));
+ }
+
+ /*Output, have a timeout condition */
+ outputNode = outputNode->GetNext();
+ const wxString & outputLabel3 = ((LabelledPoint *)outputNode->GetData())->GetFullLabel();
+ file.AddLine(wxString::Format(" \"Timeout Handler\" : "));
+ file.AddLine(wxString::Format(" %s, ", outputLabel3.c_str()));
+
+ /**We direct all events to ourselves. Out Function input handler has to
+ determine if the incoming call is requesting a node, reporting a node
+ supplied, or reporting a timeout event. All events that are generated are
+ sent to Input 1 of this structrue. The processing detects events to input
+ 1 and acts accordingly.*/
+ file.AddLine(wxString::Format(" \"Event Handler\" : "));
+ wxString nameRequestNode = GetName();
+ nameRequestNode.Replace(" ", "_", true); //Replace all spaces with underscores.
+ file.AddLine(wxString::Format(" (\"%s\", 1, \"%s\"), ", GetKey().c_str(), nameRequestNode.c_str()));
file.AddLine(wxString::Format(" },"));
1
0
20 Jul '07
Author: derek
Date: Fri Jul 20 00:19:53 2007
New Revision: 360
Modified:
sofaswitch/trunk/callflow/tests/amtest.src
sofaswitch/trunk/callflow/tests/makevoipcall.src
sofaswitch/trunk/callflow/tests/recordincomingvoip.src
sofaswitch/trunk/callflow/tests/recordmessage.src
sofaswitch/trunk/callflow/tests/requestnode.src
sofaswitch/trunk/callflow/tests/simpleeventer.src
Log:
Rework graphs, following minor layout change to the RequestNode item.
Modified: sofaswitch/trunk/callflow/tests/amtest.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/amtest.src (original)
+++ sofaswitch/trunk/callflow/tests/amtest.src Fri Jul 20 00:19:53 2007
@@ -1,5 +1,5 @@
-1<B>192<B>26<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>242<B>141<B>242,141,242,141,242,141<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>242<B>136<B>242,141,288,136<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>22<B>201<B>72<B> extra <special>Tool Tip<ms>Register for events from sound node<ms><special>Node to receive events from (Python code)<ms>"sound"<ms><special> <B><Shape>2<B>341<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>321<B>161<B>321,162,381,161<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>275<B>384<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>7<B>262<B>239<B> extra <special>Tool Tip<ms>End the Answering
-machine node.<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>2<B>177<B>365<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>192<B>116<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>14<B>275<B>136<B> extra <special>Tool Tip<ms>wait for incoming DTMF from the sound node.
-On receiving DTMF, end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>356<B>160<B> extra <special>Tool Tip<ms>Stop processing, while we wait
-on events from the different entitties<ms><special> <B><Shape>14<B>276<B>339<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>"deathtimer"<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>12<B>262<B>288<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"deathtimer"<ms><special> <B><Shape>9<B>326<B>361<B>326,361,326,361,326,361,326,361,326,361,366,363<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>16<B>177<B>320<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>15<B>263<B>190<B> extra <special>Tool Tip<ms>Make the sound node
-talk to itself, so the user hears echo.<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>10<B>185<B>167<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>15<B>177<B>229<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>17<B>177<B>276<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>222<B>166<B>222,166,288,186<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+22<B>201<B>72<B> extra <special>Tool Tip<ms>Register for events from sound node<ms><special>Node to receive events from (Python code)<ms>"sound"<ms><special> <B><Shape>15<B>177<B>229<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>10<B>185<B>167<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>7<B>262<B>239<B> extra <special>Tool Tip<ms>End the Answering
+machine node.<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>14<B>276<B>339<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>"deathtimer"<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>9<B>242<B>141<B>242,141,242,141,242,141<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>177<B>365<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>275<B>136<B> extra <special>Tool Tip<ms>wait for incoming DTMF from the sound node.
+On receiving DTMF, end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>9<B>242<B>136<B>242,136,288,136<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>192<B>116<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>9<B>222<B>166<B>222,166,288,186<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>326<B>361<B>326,361,326,361,326,361,326,361,326,361,366,363<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>356<B>160<B> extra <special>Tool Tip<ms>Stop processing, while we wait
+on events from the different entitties<ms><special> <B><Shape>2<B>341<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>16<B>177<B>320<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>17<B>177<B>276<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>321<B>161<B>321,162,381,161<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>192<B>26<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>15<B>263<B>190<B> extra <special>Tool Tip<ms>Make the sound node
+talk to itself, so the user hears echo.<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>12<B>262<B>288<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"deathtimer"<ms><special> <B><Shape>20<B>275<B>384<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/makevoipcall.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/makevoipcall.src (original)
+++ sofaswitch/trunk/callflow/tests/makevoipcall.src Fri Jul 20 00:19:53 2007
@@ -1,4 +1,4 @@
-5<B>140<B>548<B> extra <special>Tool Tip<ms>Test for dtmf data of "9"<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>6<B>141<B>406<B> extra <special>Tool Tip<ms>Make Call to a remote entity<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>Call destination (python code)<ms>self.scriptArgs<ms><special> <B><Shape>9<B>152<B>336<B>473,338,391,336,398,694,152,696,165,598<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>166<B>171<B>166,171,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>206<B>146<B>206,146,323,232<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>473<B>306<B>565,306,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>212<B>383<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>139<B>119<B>139,121,181,119<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>447<B>383<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special> <B><Shape>14<B>153<B>505<B> extra <special>Tool Tip<ms>Wait for DTMF data<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>263<B>551<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>360<B>254<B>360,254,567,254<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>235<B>528<B> extra <special>Tool Tip<ms>Wait for voip call to end<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>9<B>166<B>555<B>166,555<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>616<B>300<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>248<B>333<B>248,578,249,662,389,660,387,333,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>178<B>213<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>12<B>446<B>426<B> extra <special>Tool Tip<ms>Timer which initates a shutdown, after some tidyup
- messages etc have been sent.<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"endeverything"<ms><special> <B><Shape>5<B>141<B>357<B> extra <special>Tool Tip<ms>TEST: have a sound and voip node.<ms><special>Test (Python code)<ms>(self.voipNode != None) and (self.soundNode != None)<ms><special> <B><Shape>9<B>473<B>330<B>602,330,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>109<B>190<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>15<B>448<B>338<B> extra <special>Tool Tip<ms>Make sound node
-talk to itself<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>11<B>89<B>96<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>11<B>156<B>121<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>99<B>146<B>99,146,100,353,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>552<B>256<B> extra <special>Tool Tip<ms>test timer on request of voip<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestvoip<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>1<B>88<B>9<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>15<B>141<B>457<B> extra <special>Tool Tip<ms>Transfer Media between the voip and sound node<ms><special>First SofaSwitch worker (python)<ms>self.voipNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>7<B>163<B>164<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node for termination (Python code)<ms>self.voipNode<ms><special> <B><Shape>9<B>191<B>382<B>191,382,237,383<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>589<B>280<B> extra <special>Tool Tip<ms>Test timer on request of sound<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestsound<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>7<B>95<B>148<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node for termination (Python code)<ms>self.soundNode<ms><special> <B><Shape>19<B>168<B>575<B> extra <special>Tool Tip<ms>Send Dtmf to the voip node<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>DTMF to send to worker node (python code)<ms>self.dtmfData<ms><special> <B><Shape>14<B>310<B>232<B> extra <special>Tool Tip<ms>Wait for timer, which
-indicates end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>endeverything<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>20<B>312<B>286<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>203<B>527<B>203,527,248,528<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>168<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>97<B>52<B> extra <special>Tool Tip<ms>Register for events from voip node<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>2<B>445<B>470<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>
+22<B>97<B>52<B> extra <special>Tool Tip<ms>Register for events from voip node<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>20<B>109<B>190<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>14<B>235<B>528<B> extra <special>Tool Tip<ms>Wait for voip call to end<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>616<B>300<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>552<B>256<B> extra <special>Tool Tip<ms>test timer on request of voip<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestvoip<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>7<B>447<B>383<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special> <B><Shape>2<B>263<B>551<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>203<B>527<B>203,527,248,528<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>168<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>89<B>96<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>19<B>168<B>575<B> extra <special>Tool Tip<ms>Send Dtmf to the voip node<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>DTMF to send to worker node (python code)<ms>self.dtmfData<ms><special> <B><Shape>15<B>141<B>457<B> extra <special>Tool Tip<ms>Transfer Media between the voip and sound node<ms><special>First SofaSwitch worker (python)<ms>self.voipNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>9<B>166<B>555<B>166,555<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>212<B>383<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>191<B>382<B>191,382,237,383<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>95<B>148<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node for termination (Python code)<ms>self.soundNode<ms><special> <B><Shape>11<B>156<B>121<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>99<B>146<B>99,146,100,353,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>473<B>306<B>565,306,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>139<B>116<B>139,116,181,121<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>312<B>286<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>473<B>330<B>602,330,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>589<B>280<B> extra <special>Tool Tip<ms>Test timer on request of sound<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestsound<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>9<B>206<B>139<B>206,141,322,139,323,232<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>360<B>254<B>360,254,567,254<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>248<B>333<B>248,578,249,662,389,660,387,333,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>166<B>171<B>166,171,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>448<B>338<B> extra <special>Tool Tip<ms>Make sound node
+talk to itself<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>5<B>140<B>548<B> extra <special>Tool Tip<ms>Test for dtmf data of "9"<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>6<B>141<B>406<B> extra <special>Tool Tip<ms>Make Call to a remote entity<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>Call destination (python code)<ms>self.scriptArgs<ms><special> <B><Shape>12<B>446<B>426<B> extra <special>Tool Tip<ms>Timer which initates a shutdown, after some tidyup
+ messages etc have been sent.<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"endeverything"<ms><special> <B><Shape>2<B>445<B>470<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>152<B>336<B>473,338,391,336,398,694,152,696,165,598<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>163<B>164<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node for termination (Python code)<ms>self.voipNode<ms><special> <B><Shape>5<B>141<B>357<B> extra <special>Tool Tip<ms>TEST: have a sound and voip node.<ms><special>Test (Python code)<ms>(self.voipNode != None) and (self.soundNode != None)<ms><special> <B><Shape>20<B>178<B>213<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>14<B>153<B>505<B> extra <special>Tool Tip<ms>Wait for DTMF data<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>14<B>310<B>232<B> extra <special>Tool Tip<ms>Wait for timer, which
+indicates end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>endeverything<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>1<B>88<B>9<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/recordincomingvoip.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/recordincomingvoip.src (original)
+++ sofaswitch/trunk/callflow/tests/recordincomingvoip.src Fri Jul 20 00:19:53 2007
@@ -1,2 +1,2 @@
-9<B>266<B>299<B>284,299,344,482,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>22<B>169<B>145<B> extra <special>Tool Tip<ms>Register for events from voip<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>20<B>251<B>637<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>684<B>288<B>684,288,729,313<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>634<B>266<B> extra <special>Tool Tip<ms>Wait for hangup of the voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hangup<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hangupdata<ms><special> <B><Shape>17<B>621<B>217<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>301<B>114<B>301,465,495,467,498,114,643,127<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>375<B>647,375,605,527,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>240<B>537<B> extra <special>Tool Tip<ms>End AM node<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>10<B>250<B>586<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>7<B>241<B>488<B> extra <special>Tool Tip<ms>End voip node<ms><special>Worker node for termination (python code)<ms>self.voipNode<ms><special> <B><Shape>2<B>297<B>168<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>185<B>144<B>185,185,284,144<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>619<B>126<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.voipNode<ms><special> <B><Shape>14<B>271<B>144<B> extra <special>Tool Tip<ms>Wait for an incoming voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>QueryAccept<ms><special>Python variable: source of the event<ms>self.voipNode<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.remotePerson<ms><special> <B><Shape>23<B>237<B>354<B> extra <special>Tool tip<ms>Accept incoming voip call at sofa node<ms><special>SofaSwitch node to advise as to accepting the call (Python code)<ms>self.voipNode<ms><special>Answer call yes or no (Python code)<ms>"yes"<ms><special> <B><Shape>2<B>702<B>313<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>323<B>277<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>246<B>398<B> extra <special>Tool Tip<ms>Register for events from voip node
-that has just answered the call<ms><special>Node to receive events from (Python code)<ms>self.voipNode<ms><special> <B><Shape>9<B>307<B>274<B>307,274,351,277<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>267<B>192<B> extra <special>Tool Tip<ms>report: incoming voip call<ms><special>Python Code<ms>print "have received an incoming voip call from ",self.remotePerson<ms><special> <B><Shape>11<B>254<B>249<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>10<B>631<B>315<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "the voip call has ended with ", self.remotePerson<ms><special> <B><Shape>14<B>252<B>442<B> extra <special>Tool Tip<ms>A node (voip or am) has died<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>10<B>247<B>295<B> extra <special>Tool Tip<ms>Report - have an am node<ms><special>Python Code<ms>print " have a am node of ", self.amNode<ms><special> <B><Shape>1<B>160<B>92<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>16<B>618<B>170<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>
+14<B>271<B>144<B> extra <special>Tool Tip<ms>Wait for an incoming voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>QueryAccept<ms><special>Python variable: source of the event<ms>self.voipNode<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.remotePerson<ms><special> <B><Shape>2<B>323<B>277<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>23<B>237<B>354<B> extra <special>Tool tip<ms>Accept incoming voip call at sofa node<ms><special>SofaSwitch node to advise as to accepting the call (Python code)<ms>self.voipNode<ms><special>Answer call yes or no (Python code)<ms>"yes"<ms><special> <B><Shape>2<B>702<B>313<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>246<B>398<B> extra <special>Tool Tip<ms>Register for events from voip node
+that has just answered the call<ms><special>Node to receive events from (Python code)<ms>self.voipNode<ms><special> <B><Shape>16<B>618<B>170<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>22<B>169<B>145<B> extra <special>Tool Tip<ms>Register for events from voip<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>9<B>266<B>299<B>284,299,344,482,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>252<B>442<B> extra <special>Tool Tip<ms>A node (voip or am) has died<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>10<B>247<B>295<B> extra <special>Tool Tip<ms>Report - have an am node<ms><special>Python Code<ms>print " have a am node of ", self.amNode<ms><special> <B><Shape>17<B>621<B>217<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>1<B>160<B>92<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>684<B>288<B>684,288,729,313<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>304<B>269<B>304,269,348,277<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>267<B>192<B> extra <special>Tool Tip<ms>report: incoming voip call<ms><special>Python Code<ms>print "have received an incoming voip call from ",self.remotePerson<ms><special> <B><Shape>10<B>250<B>586<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>9<B>266<B>375<B>647,375,605,527,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>185<B>144<B>185,185,284,144<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>240<B>537<B> extra <special>Tool Tip<ms>End AM node<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>10<B>631<B>315<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "the voip call has ended with ", self.remotePerson<ms><special> <B><Shape>9<B>301<B>114<B>301,465,495,467,498,114,643,127<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>619<B>126<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.voipNode<ms><special> <B><Shape>11<B>254<B>249<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>14<B>634<B>266<B> extra <special>Tool Tip<ms>Wait for hangup of the voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hangup<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hangupdata<ms><special> <B><Shape>7<B>241<B>488<B> extra <special>Tool Tip<ms>End voip node<ms><special>Worker node for termination (python code)<ms>self.voipNode<ms><special> <B><Shape>2<B>297<B>168<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>20<B>251<B>637<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/recordmessage.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/recordmessage.src (original)
+++ sofaswitch/trunk/callflow/tests/recordmessage.src Fri Jul 20 00:19:53 2007
@@ -1,2 +1,2 @@
-16<B>275<B>484<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>630<B>374<B>630,374,631,473<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>151<B>272,151,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>604<B>618<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>240<B>96<B>240,96,287,101<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>290<B>536<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hanguptime<ms><special> <B><Shape>10<B>132<B>264<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have not received sound or voip node in time"<ms><special> <B><Shape>9<B>341<B>557<B>341,557,375,557<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>312<B>129<B>335,129,312,129<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>200<B>121<B>200,121,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>694<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>289<B>569<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>16<B>694<B>585<B> extra <special>Tool Tip<ms>Play the message just recorded back<ms><special>Filename to read audio from (Python code)<ms>"message.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>20<B>294<B>621<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>12<B>605<B>575<B> extra <special>Tool Tip<ms>timer, which on firing ends this flow<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>9<B>265<B>199<B>265,513,265,635,427,639,429,199,533,202,533,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>148<B>151<B>292,151,148,264<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>148<B>324<B>148,324,168,674,579,672,566,479,630,474<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>555<B>290<B>555,290,600,293<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>507<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>690<B>373<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>17<B>695<B>537<B> extra <special>Tool Tip<ms>Stop writing to the file
-while we play it back<ms><special>Filename to contain new audio (Python code)<ms>" "<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>7<B>605<B>474<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>14<B>254<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>9<B>678<B>372<B>678,372,715,373<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>656<B>401<B>656,401,666,535,721,536,721,534<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>262<B>101<B> extra <special>Tool Tip<ms>Request Node from sound<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>148<B>121<B>220,121,148,264<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>190<B>71<B> extra <special>Tool Tip<ms>Request Node from voip<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>15<B>605<B>522<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>2<B>350<B>557<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>576<B>297<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>5<B>507<B>264<B> extra <special>Tool Tip<ms>Start recording now<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>17<B>508<B>310<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>5<B>628<B>347<B> extra <special>Tool Tip<ms>hear the recording<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>5<B>605<B>324<B> extra <special>Tool Tip<ms>End the recording..<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>311<B>128<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>300<B>346<B>601,346,581,447,300,483<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>2<B>604<B>618<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>628<B>347<B> extra <special>Tool Tip<ms>hear the recording<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>15<B>605<B>522<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>289<B>569<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>20<B>294<B>621<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>11<B>190<B>71<B> extra <special>Tool Tip<ms>Request Node from voip<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>9<B>265<B>199<B>265,513,265,635,427,639,429,199,533,202,533,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>656<B>401<B>656,401,666,535,721,536,721,534<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>605<B>575<B> extra <special>Tool Tip<ms>timer, which on firing ends this flow<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>14<B>290<B>536<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hanguptime<ms><special> <B><Shape>9<B>630<B>374<B>630,374,631,473<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>605<B>324<B> extra <special>Tool Tip<ms>End the recording..<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>16<B>694<B>585<B> extra <special>Tool Tip<ms>Play the message just recorded back<ms><special>Filename to read audio from (Python code)<ms>"message.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>7<B>605<B>474<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>11<B>262<B>101<B> extra <special>Tool Tip<ms>Request Node from sound<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>555<B>290<B>555,290,600,293<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>350<B>557<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>266<B>151<B>272,151,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>300<B>346<B>601,346,581,447,300,483<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>238<B>92<B>238,92,285,97<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>576<B>297<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>200<B>121<B>200,121,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>312<B>121<B>312,121,336,128<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>132<B>264<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have not received sound or voip node in time"<ms><special> <B><Shape>2<B>690<B>373<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>311<B>128<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>148<B>151<B>292,151,148,264<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>678<B>372<B>678,372,715,373<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>694<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>16<B>275<B>484<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>17<B>695<B>537<B> extra <special>Tool Tip<ms>Stop writing to the file
+while we play it back<ms><special>Filename to contain new audio (Python code)<ms>" "<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>341<B>557<B>341,557,375,557<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>9<B>148<B>121<B>220,121,148,264<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>508<B>310<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>507<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>254<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>9<B>148<B>324<B>148,324,168,674,579,672,566,479,630,474<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>507<B>264<B> extra <special>Tool Tip<ms>Start recording now<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/requestnode.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/requestnode.src (original)
+++ sofaswitch/trunk/callflow/tests/requestnode.src Fri Jul 20 00:19:53 2007
@@ -1 +1 @@
-9<B>409<B>246<B>409,246,479,276<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>399<B>96<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>11<B>401<B>143<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms><ms><special> <B><Shape>10<B>393<B>186<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.eventData<ms><special> <B><Shape>2<B>534<B>169<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>20<B>467<B>276<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>451<B>168<B>451,168,559,169<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>461<B>218<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime()<ms><special> <B><Shape>9<B>431<B>193<B>477,218,431,193<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+1<B>399<B>96<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>393<B>186<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.eventData<ms><special> <B><Shape>20<B>467<B>276<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>409<B>246<B>409,246,479,276<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>451<B>163<B>451,163,559,169<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>461<B>218<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime()<ms><special> <B><Shape>9<B>431<B>193<B>477,218,431,193<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>401<B>143<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms><ms><special> <B><Shape>2<B>534<B>169<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/simpleeventer.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/simpleeventer.src (original)
+++ sofaswitch/trunk/callflow/tests/simpleeventer.src Fri Jul 20 00:19:53 2007
@@ -1 +1 @@
-9<B>353<B>133<B>353,133,410,133<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>333<B>158<B>333,158,352,196<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>293<B>162<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have received a new node ", self.newNode<ms><special> <B><Shape>2<B>327<B>251<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>312<B>219<B>312,219,312,326<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>303<B>56<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>336<B>196<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " Finished main stream of execution "<ms><special> <B><Shape>20<B>300<B>324<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>387<B>129<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>303<B>108<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.newNode<ms><special> <B><Shape>
+11<B>303<B>108<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.newNode<ms><special> <B><Shape>10<B>336<B>196<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " Finished main stream of execution "<ms><special> <B><Shape>20<B>300<B>324<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>327<B>251<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>333<B>158<B>333,158,352,196<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>312<B>219<B>312,219,312,326<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>387<B>129<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>353<B>128<B>353,128,412,129<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>303<B>56<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>293<B>162<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have received a new node ", self.newNode<ms><special> <B><Shape>
1
0
19 Jul '07
Author: derek
Date: Thu Jul 19 19:58:24 2007
New Revision: 359
Modified:
sofaswitch/trunk/callflow/src/joinblocks.cpp
Log:
fix the calculation of testing the joinblocks structure and if
it intersects with the selection rectangle.
Modified: sofaswitch/trunk/callflow/src/joinblocks.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/joinblocks.cpp (original)
+++ sofaswitch/trunk/callflow/src/joinblocks.cpp Thu Jul 19 19:58:24 2007
@@ -223,6 +223,13 @@
bool doCross = (cross >= MIN(ptA.y, ptB.y)) && (cross <= MAX (ptA.y, ptB.y));
+#if 0
+ if (doCross) {
+ std::cerr << "CROSS " << ptA.x << "." << ptA.y << "--" << ptB.x << "." << ptB.y << std::endl;
+ std::cerr << "CROSS " << ptY.x << "." << ptY.y << "--" << ptZ.x << "." << ptZ.y << std::endl;
+ }
+#endif
+
return doCross;
}
@@ -238,10 +245,19 @@
double cross = (abC - yzC) / (yzM - abM);
double crossY = (cross * abM) + abC;
//std::cerr << "Cross Y is " << crossY << std::endl;
- bool doCross = (crossY >= MIN(ptA.y, ptB.y)) && (crossY <= MAX (ptA.y, ptB.y))
+ bool doCrossY = (crossY >= MIN(ptA.y, ptB.y)) && (crossY <= MAX (ptA.y, ptB.y))
&& (crossY >= MIN(ptY.y, ptZ.y)) && (crossY <= MAX (ptY.y, ptZ.y));
- return doCross;
+ bool doCrossX = (cross >= MIN(ptA.x, ptB.x)) && (cross <= MAX (ptA.x, ptB.x))
+ && (cross >= MIN(ptY.x, ptZ.x)) && (cross <= MAX (ptY.x, ptZ.x));
+#if 0
+ if (doCrossX && doCrossY) {
+ std::cerr << "CROSS " << ptA.x << "." << ptA.y << "--" << ptB.x << "." << ptB.y << std::endl;
+ std::cerr << "CROSS " << ptY.x << "." << ptY.y << "--" << ptZ.x << "." << ptZ.y << std::endl;
+ }
+#endif
+
+ return doCrossX && doCrossY;
}
@@ -277,24 +293,21 @@
if (node == NULL)
return false;
- if ((testRectangle.x == 0) && (testRectangle.y == 0))
- return true;
-
- wxRect markedRectangle = testRectangle.Inflate(5, 5);
+ wxRect markedRectangle = testRectangle.Inflate(2, 2);
#if 0
std::cerr << " compare rectangle " << testRectangle.x << "."<<testRectangle.y << "---"
<< testRectangle.GetWidth() << "x" << testRectangle.GetHeight() << std::endl;
std::cerr << " compare rectangle " << markedRectangle.x << "."<< markedRectangle.y << "---"
<< markedRectangle.GetWidth() << "x" << markedRectangle.GetHeight() << std::endl;
-#endif
while (node != NULL) {
wxPoint aPoint = *((wxPoint *)node->GetData());
-// std::cerr << aPoint.x << "." << aPoint.y <<" ";
+ std::cerr << aPoint.x << "." << aPoint.y <<" ";
node = node->GetNext();
}
-// std::cerr << std::endl;
+ std::cerr << std::endl;
+#endif
node = (wxNode *)points.GetFirst();
while(node != NULL) {
@@ -306,7 +319,7 @@
isInside = markedRectangle.Inside(thisPoint);
#endif
if (isInside) {
-// std::cerr << "point " << thisPoint.x << " " << thisPoint.y << " is inside\n";
+ //std::cerr << "point " << thisPoint.x << " " << thisPoint.y << " is inside\n";
return true;
}
node = node->GetNext();
@@ -318,7 +331,7 @@
wxPoint mRc(mRb.x, mRb.y + markedRectangle.GetHeight());
wxPoint mRd(mRa.x, mRc.y);
-#if 0
+#if 0
std::cerr << " Rectangle is "
<< mRa.x <<"." <<mRa.y <<" "
<< mRb.x <<"." <<mRb.y <<" "
@@ -339,7 +352,7 @@
}
if (LinesDoCross(mRb, mRc, firstPoint, thisPoint)) {
- //std::cerr << "lnes do cross right edge \n";
+ //std::cerr << "lines do cross right edge \n";
return true;
}
1
0
19 Jul '07
Author: derek
Date: Thu Jul 19 19:39:09 2007
New Revision: 358
Modified:
sofaswitch/trunk/callflow/src/joinblocks.cpp
sofaswitch/trunk/callflow/src/joinblocks.h
Log:
Correctly handle the case for when selecting a region of the screen.
Now, it handles the joinblocks structure corectly, and tests to see if
the joinblocks does indeed intersect with the region of the screen.
Modified: sofaswitch/trunk/callflow/src/joinblocks.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/joinblocks.cpp (original)
+++ sofaswitch/trunk/callflow/src/joinblocks.cpp Thu Jul 19 19:39:09 2007
@@ -15,6 +15,13 @@
#include "joinblocks.h"
+#ifndef MIN
+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef MAX
+#define MAX(a,b) (((a) > (b)) ? (a) : (b))
+#endif
/////////////////////////////////////////////////////////////////////////////
DndShapeJoinBlocks::DndShapeJoinBlocks()
@@ -197,15 +204,159 @@
}
}
+bool DndShapeJoinBlocks::LinesDoCrossVerticalUnknown(const wxPoint & ptA, const wxPoint &ptB,
+ const wxPoint & ptY, const wxPoint & ptZ) const
+{
+ if (ptY.x == ptZ.x) {
+ if (ptY.x != ptA.x)
+ return false;
+ if (MIN(ptY.y, ptZ.y) > MAX(ptA.y, ptB.y))
+ return false;
+ if (MIN(ptA.y, ptB.y) > MAX(ptY.y, ptB.y))
+ return false;
+ return true;
+ }
+
+ double m = ((double)ptY.y - ptZ.y)/((double)ptY.x - ptZ.x);
+ double yzC = ptY.y - (ptY.x * m);
+ double cross = (ptA.x * m) + yzC;
+
+ bool doCross = (cross >= MIN(ptA.y, ptB.y)) && (cross <= MAX (ptA.y, ptB.y));
+
+ return doCross;
+}
+
+bool DndShapeJoinBlocks::LinesDoCrossOtherOther(const wxPoint & ptA, const wxPoint &ptB,
+ const wxPoint & ptY, const wxPoint & ptZ) const
+{
+ double yzM = ((double)ptY.y - ptZ.y)/((double)ptY.x - ptZ.x);
+ double yzC = ptY.y - (ptY.x * yzM);
+ //std::cerr << ptY.x << "." << ptY.y << "--" << ptZ.x << "." << ptZ.y << " " << yzM <<" " << yzC << std::endl;
+ double abM = ((double)ptA.y - ptB.y)/((double)ptA.x - ptB.x);
+ double abC = ptA.y - (ptA.x * abM);
+ //std::cerr << ptA.x << "." << ptA.y << "--" << ptB.x << "." << ptB.y << " " << abM <<" " << abC << std::endl;
+ double cross = (abC - yzC) / (yzM - abM);
+ double crossY = (cross * abM) + abC;
+ //std::cerr << "Cross Y is " << crossY << std::endl;
+ bool doCross = (crossY >= MIN(ptA.y, ptB.y)) && (crossY <= MAX (ptA.y, ptB.y))
+ && (crossY >= MIN(ptY.y, ptZ.y)) && (crossY <= MAX (ptY.y, ptZ.y));
+
+ return doCross;
+}
+
+
+
+bool DndShapeJoinBlocks::LinesDoCross(const wxPoint & ptA, const wxPoint &ptB,
+ const wxPoint & ptY, const wxPoint & ptZ) const
+{
+ if (MIN(ptA.x, ptB.x) > MAX(ptY.x, ptZ.x))
+ return false;
+
+ if (MIN(ptA.y, ptB.y) > MAX(ptY.y, ptZ.y))
+ return false;
+
+ if (MAX(ptA.x, ptB.x) < MIN(ptY.x, ptZ.x))
+ return false;
+
+ if (MAX(ptA.y, ptB.y) < MIN(ptY.y, ptZ.y))
+ return false;
+
+ if (ptA.x == ptB.x)
+ return LinesDoCrossVerticalUnknown(ptA, ptB, ptY, ptZ);
+
+ if (ptY.x == ptZ.x)
+ return LinesDoCrossVerticalUnknown(ptY, ptZ, ptA, ptB);
+
+ return LinesDoCrossOtherOther(ptA, ptB, ptY, ptZ);
+}
bool DndShapeJoinBlocks::Intersects(const wxRect & testRectangle) const
{
- if (DndShape::Intersects(testRectangle)) {
- return true;
- } else {
+ wxNode *node = (wxNode *)points.GetFirst();
+ if (node == NULL)
+ return false;
+
+ if ((testRectangle.x == 0) && (testRectangle.y == 0))
+ return true;
+
+ wxRect markedRectangle = testRectangle.Inflate(5, 5);
+#if 0
+ std::cerr << " compare rectangle " << testRectangle.x << "."<<testRectangle.y << "---"
+ << testRectangle.GetWidth() << "x" << testRectangle.GetHeight() << std::endl;
+
+ std::cerr << " compare rectangle " << markedRectangle.x << "."<< markedRectangle.y << "---"
+ << markedRectangle.GetWidth() << "x" << markedRectangle.GetHeight() << std::endl;
+#endif
+
+ while (node != NULL) {
+ wxPoint aPoint = *((wxPoint *)node->GetData());
+// std::cerr << aPoint.x << "." << aPoint.y <<" ";
+ node = node->GetNext();
+ }
+// std::cerr << std::endl;
+
+ node = (wxNode *)points.GetFirst();
+ while(node != NULL) {
+ wxPoint thisPoint = *((wxPoint *)node->GetData());
+ bool isInside = false;
+#if WXWIN_COMPATIBILITY_2_6
+ isInside = markedRectangle.Contains(thisPoint);
+#else
+ isInside = markedRectangle.Inside(thisPoint);
+#endif
+ if (isInside) {
+// std::cerr << "point " << thisPoint.x << " " << thisPoint.y << " is inside\n";
+ return true;
+ }
+ node = node->GetNext();
+ }
+
+/***********************************************************************/
+ wxPoint mRa(markedRectangle.x, markedRectangle.y);
+ wxPoint mRb(mRa.x + markedRectangle.GetWidth(), mRa.y);
+ wxPoint mRc(mRb.x, mRb.y + markedRectangle.GetHeight());
+ wxPoint mRd(mRa.x, mRc.y);
+
+#if 0
+ std::cerr << " Rectangle is "
+ << mRa.x <<"." <<mRa.y <<" "
+ << mRb.x <<"." <<mRb.y <<" "
+ << mRc.x <<"." <<mRc.y <<" "
+ << mRd.x <<"." <<mRd.y << std::endl;
+#endif
+
+ node = (wxNode *)points.GetFirst();
+
+ wxPoint firstPoint = *((wxPoint *)node->GetData());
+ node = node->GetNext();
+ while(node != NULL) {
+ wxPoint thisPoint = *((wxPoint *)node->GetData());
+
+ if (LinesDoCross(mRa, mRb, firstPoint, thisPoint)) {
+ //std::cerr << "lines cross top edge\n" << std::endl;
+ return true;
+ }
+
+ if (LinesDoCross(mRb, mRc, firstPoint, thisPoint)) {
+ //std::cerr << "lnes do cross right edge \n";
+ return true;
+ }
+
+ if (LinesDoCross(mRc, mRd, firstPoint, thisPoint)) {
+ //std::cerr << "lines do cross bottom edge \n";
+ return true;
+ }
+
+ if (LinesDoCross(mRd, mRa, firstPoint, thisPoint)) {
+ //std::cerr << "lines do cross left edge\n";
+ return true;
+ }
+ firstPoint = thisPoint;
+ node = node->GetNext();
+ }
+
return false;
- }
}
bool DndShapeJoinBlocks::Intersects(const wxPoint & testPoint) const
Modified: sofaswitch/trunk/callflow/src/joinblocks.h
==============================================================================
--- sofaswitch/trunk/callflow/src/joinblocks.h (original)
+++ sofaswitch/trunk/callflow/src/joinblocks.h Thu Jul 19 19:39:09 2007
@@ -89,6 +89,30 @@
/**Report the distance between the test point and the line.which joins the endpoints of the line */
double DistancePointToLine(const wxPoint & point, const wxPoint & lineA, wxPoint & lineB) const;
+
+ /**For the two sets of supplied points, see if the line between each
+ * endpoint crosses
+
+ @return true if the lines do cross, false if they do not cross*/
+ bool LinesDoCross(const wxPoint & ptA, const wxPoint &ptB,
+ const wxPoint & ptY, const wxPoint & ptZ) const;
+
+ /**For the two sets of supplied points, see if the line between each
+ endpoint crosses. The first set of point is known to be vertical. The
+ second set of points may be vertical.
+
+ @return true if the lines do cross, false if they do not cross*/
+ bool LinesDoCrossVerticalUnknown(const wxPoint & ptA, const wxPoint &ptB,
+ const wxPoint & ptY, const wxPoint & ptZ) const;
+
+ /**For the two sets of supplied points, see if the line between each
+ endpoint crosses. Both sets of points are such that neither line is
+ veritcal.
+
+ @return true if the lines do cross, false if they do not cross*/
+ bool LinesDoCrossOtherOther(const wxPoint & ptA, const wxPoint &ptB,
+ const wxPoint & ptY, const wxPoint & ptZ) const;
+
/**Calculate the value of the argument squared */
int sqr(const int & aa) const;
1
0
18 Jul '07
Author: derek
Date: Wed Jul 18 19:58:58 2007
New Revision: 357
Modified:
sofaswitch/trunk/callflow/src/requestnode.cpp
Log:
fix the location of the output point, so gravity works correctly.
Modified: sofaswitch/trunk/callflow/src/requestnode.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/requestnode.cpp (original)
+++ sofaswitch/trunk/callflow/src/requestnode.cpp Wed Jul 18 19:58:58 2007
@@ -39,7 +39,7 @@
InformationSection(wxT("Python variable: generated data"), wxT(""));
relInputPoints.Add(25, 0);
- relOutputPoints.Add(50, 25); /*First output point, completed request */
+ relOutputPoints.Add(50, 20); /*First output point, completed request */
relOutputPoints.Add(10, 50); /*Second output point, have the node */
relOutputPoints.Add(30, 50); /*Third output point, timer expired */
AdjustIoPoints();
1
0
18 Jul '07
Author: derek
Date: Wed Jul 18 19:58:25 2007
New Revision: 356
Modified:
sofaswitch/trunk/callflow/tests/dtmf_from_sound.src
sofaswitch/trunk/callflow/tests/simpleeventer.src
Log:
Tidyups, resulting from the change in the request node shape.
Modified: sofaswitch/trunk/callflow/tests/dtmf_from_sound.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/dtmf_from_sound.src (original)
+++ sofaswitch/trunk/callflow/tests/dtmf_from_sound.src Wed Jul 18 19:58:25 2007
@@ -1 +1 @@
-10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>122<B>191<B>180,191,122,266<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>200<B>135<B>200,135,205,195<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>160<B>291<B>160,291,232,323<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>164<B>131<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>207<B>322<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>11<B>170<B>85<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>148<B>322<B>148,379,232,322<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>189<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>2<B>200<B>160<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>20<B>192<B>252<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>1<B>168<B>34<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>208<B>104<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>
+2<B>243<B>159<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>181<B>422<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>1<B>168<B>34<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>9<B>220<B>103<B>220,105,268,103<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>192<B>252<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>158<B>288<B>159,288,158,361,211,363,206,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>170<B>85<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>122<B>191<B>180,191,122,266<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>252<B>103<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>164<B>131<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>10<B>189<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>9<B>200<B>135<B>200,135,205,195<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>9<B>148<B>379<B>148,379,203,381,206,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/simpleeventer.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/simpleeventer.src (original)
+++ sofaswitch/trunk/callflow/tests/simpleeventer.src Wed Jul 18 19:58:25 2007
@@ -1 +1 @@
-1<B>285<B>27<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>312<B>219<B>312,219,312,326<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>326<B>202<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " Finished main stream of execution "<ms><special> <B><Shape>11<B>287<B>76<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestnode<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>10<B>287<B>172<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have received a new node ", self.newNode<ms><special> <B><Shape>2<B>327<B>251<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>301<B>125<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>REQ<ms><special>Python variable to hold event data<ms>self.newNode<ms><special> <B><Shape>20<B>300<B>324<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>349<B>148<B>349,148,351,201<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+9<B>353<B>133<B>353,133,410,133<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>333<B>158<B>333,158,352,196<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>293<B>162<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have received a new node ", self.newNode<ms><special> <B><Shape>2<B>327<B>251<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>312<B>219<B>312,219,312,326<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>303<B>56<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>336<B>196<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " Finished main stream of execution "<ms><special> <B><Shape>20<B>300<B>324<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>387<B>129<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>303<B>108<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.newNode<ms><special> <B><Shape>
1
0
[Sofaswitch-svn] [commit] r355 - in sofaswitch/trunk/callflow: docs tests
by SofaSWITCH SVN 18 Jul '07
by SofaSWITCH SVN 18 Jul '07
18 Jul '07
Author: derek
Date: Tue Jul 17 22:43:02 2007
New Revision: 355
Modified:
sofaswitch/trunk/callflow/docs/chap3.sgml
sofaswitch/trunk/callflow/tests/amplaywavfile.src
sofaswitch/trunk/callflow/tests/amtest.src
sofaswitch/trunk/callflow/tests/dtmf_from_sound.src
sofaswitch/trunk/callflow/tests/makevoipcall.src
sofaswitch/trunk/callflow/tests/recordincomingvoip.src
sofaswitch/trunk/callflow/tests/recordmessage.src
sofaswitch/trunk/callflow/tests/requestnode.src
Log:
Bring docs etc up to speed after changing the format of the
Request_Node entity. Request_Node now handles timeout's internally.
Thus, the user is not required to supply a timeout, eventer and stop timer icon.
Modified: sofaswitch/trunk/callflow/docs/chap3.sgml
==============================================================================
--- sofaswitch/trunk/callflow/docs/chap3.sgml (original)
+++ sofaswitch/trunk/callflow/docs/chap3.sgml Tue Jul 17 22:43:02 2007
@@ -1480,16 +1480,25 @@
</para>
<para>
-Request Node is a key component of the SofaSwitch suite of applications. With
+Request Node is a key component of the &sofaswitch; suite of applications. With
this item, the controller asks the designated application to supply one worker
node for use by this call graph. Alternatively, this is the mechanism by which
this call graph gets remote entities who can handle media data.
</para>
<para>
-Once created, the requested worker has a lifetime of 2 seconds. This lifetime is
-set by the designated application. If the requested worker is not acknowledged
-after 2 seconds, it is silently destroyed by the designated application.
+Once created, the requested worker has a lifetime of 2 seconds. This lifetime
+is set by the designated application. If the requested worker is not
+acknowledged after 2 seconds, it is silently destroyed by the designated
+application.
+</para>
+
+<para>
+If the requested node is created in the preset time interval, control will
+move to the bottom left most output. The name of the created node is in the
+<literal>Python variable: generated data</literal> field. If the requested node
+is not created in the preset time interval, control moves to the bottom right
+most output.
</para>
<para>
@@ -1545,21 +1554,23 @@
</para></entry></row>
<row> <entry><literal>
-Timer label
+Additional information (Python code)
</literal></entry>
<entry><para>
-This label is used in the eventer structure, and "fires" when there has been no
-answer in the specified time period.
+The additional information field is used to provide details that some
+&sofaswitch; applications want. For example, the conference
+utility needs information on which room the requested node should be in.
</para></entry></row>
<row> <entry><literal>
-Additional information (Python code)
+Python variable: generated data
</literal></entry>
<entry><para>
-The additional information field is used to provide details that some
-&sofaswitch; applications want. For example, the conference
-utility needs information on which room the requested node should be in.
+When the node is found (within the timeout period) control is passed to the
+leftmost output point. The variable specified in this field can be used by
+subsequent code to access the name of the generated node.
</para></entry></row>
+
</tbody>
</tgroup>
</informaltable>
@@ -1567,8 +1578,6 @@
</sect1>
-
-
<sect1 id="SendDtmfSec">
<title>Send DTMF</title>
<titleabbrev id="SendDtmf">Send DTMF</titleabbrev>
Modified: sofaswitch/trunk/callflow/tests/amplaywavfile.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/amplaywavfile.src (original)
+++ sofaswitch/trunk/callflow/tests/amplaywavfile.src Tue Jul 17 22:43:02 2007
@@ -1,3 +1,2 @@
-20<B>362<B>256<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>712<B>318<B>712,358,755,361,750,320,793,318,798,333<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>298<B>185<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.soundNode<ms><special> <B><Shape>9<B>559<B>339<B>559,339,604,342<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>991<B>588<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>660<B>332<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>2<B>769<B>426<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>770<B>331<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>10<B>198<B>248<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>16<B>770<B>378<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/leaving.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>302<B>485<B>302,485,544,492,542,506<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>659<B>427<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>264<B>199<B>264,513,264,635,426,639,428,199,532,202,532,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>507<B>312<B> extra <special>Tool Tip<ms>Test Roger voice<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>9<B>821<B>356<B>821,357,977,357,1018,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node from sound module<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>1039<B>386<B>1039,386,1082,387<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>989<B>497<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>10<B>998<B>400<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>9<B>632<B>318<B>632,366,638,319,685,318,685,330<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>362<B>214<B> extra <special>Tool Tip<ms>Catch the timer, which when fired,
-indicates the end of call<ms><special>Event sought (Python code)<ms>self.myId + "thistimer"<ms><special>Event sought (Regular Exp)<ms><ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.hanguptime<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>16<B>505<B>364<B> extra <special>Tool Tip<ms>Play Rogers voice<ms><special>Filename to read audio from (Python code)<ms>"../prompts/sample_message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>10<B>513<B>259<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>12<B>990<B>548<B> extra <special>Tool Tip<ms>timer which, when completed
-indicates the program should end<ms><special>Timer period (seconds, Python code)<ms>0.1<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>10<B>292<B>270<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>214<B>304<B>214,304,262,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>544<B>394<B>606,394,602,560,544,561<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>516<B>509<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>11<B>191<B>67<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>15<B>989<B>451<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>16<B>516<B>561<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>348<B>207<B>348,207,375,214<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>1058<B>385<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>517<B>600<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request voip<ms><special> <B><Shape>2<B>385<B>239<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>991<B>358<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>505<B>398<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>16<B>659<B>379<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/entering.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>14<B>252<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.dtmfData<ms><special> <B><Shape>14<B>201<B>161<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.amNode<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request sound<ms><special> <B><Shape>5<B>581<B>341<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="4"<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+9<B>199<B>121<B>199,121,214,248<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>544<B>394<B>606,394,602,560,544,561<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>513<B>259<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>2<B>517<B>600<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>712<B>318<B>712,358,755,361,750,320,793,318,798,333<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>304<B>115<B>304,119,344,115<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>148<B>266,148,308,270<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>264<B>199<B>264,513,264,635,426,639,428,199,532,202,532,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>998<B>400<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>14<B>252<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.dtmfData<ms><special> <B><Shape>2<B>1058<B>385<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>12<B>990<B>548<B> extra <special>Tool Tip<ms>timer which, when completed
+indicates the program should end<ms><special>Timer period (seconds, Python code)<ms>0.1<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>9<B>559<B>339<B>559,339,604,342<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>275<B>145<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>5<B>507<B>312<B> extra <special>Tool Tip<ms>Test Roger voice<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>16<B>505<B>364<B> extra <special>Tool Tip<ms>Play Rogers voice<ms><special>Filename to read audio from (Python code)<ms>"../prompts/sample_message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>821<B>356<B>821,357,977,357,1018,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>189<B>71<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>7<B>989<B>497<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>10<B>292<B>270<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>9<B>632<B>318<B>632,366,638,319,685,318,685,330<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>239<B>94<B>239,94,281,96<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>505<B>398<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>256<B>98<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>516<B>509<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>20<B>209<B>119<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>991<B>588<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>16<B>659<B>379<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/entering.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>214<B>304<B>214,304,262,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>1039<B>386<B>1039,386,1082,387<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>991<B>358<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>319<B>116<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>16<B>770<B>378<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/leaving.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>2<B>659<B>427<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>198<B>248<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>5<B>770<B>331<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>5<B>660<B>332<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>5<B>581<B>341<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="4"<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>302<B>485<B>302,485,544,492,542,506<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>989<B>451<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>16<B>516<B>561<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>769<B>426<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/amtest.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/amtest.src (original)
+++ sofaswitch/trunk/callflow/tests/amtest.src Tue Jul 17 22:43:02 2007
@@ -1,7 +1,5 @@
-14<B>305<B>447<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>"deathtimer"<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>362<B>231<B> extra <special>Tool Tip<ms>Stop processing, while we wait
-on events from the different entitties<ms><special> <B><Shape>9<B>248<B>182<B>248,183,308,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>190<B>357<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>318<B>262<B>347,262,318,294<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>291<B>347<B> extra <special>Tool Tip<ms>End the Answering
-machine node.<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>9<B>311<B>236<B>311,236,318,294<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>292<B>298<B> extra <special>Tool Tip<ms>Make the sound node
-talk to itself, so the user hears echo.<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>355<B>469<B>355,469,355,469,355,469,355,469,355,469,395,471<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>190<B>446<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>334<B>212<B> extra <special>Tool Tip<ms>wait for incoming DTMF from the sound node.
-On receiving DTMF, end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>370<B>470<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>200<B>66<B> extra <special>Tool Tip<ms>Register for events from sound node<ms><special>Node to receive events from (Python code)<ms>"sound"<ms><special> <B><Shape>16<B>190<B>401<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>14<B>298<B>186<B> extra <special>Tool Tip<ms>Catch the timer, which when fired,
-indicates no am node was found<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestam<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.nonodefound<ms><special> <B><Shape>14<B>201<B>161<B> extra <special>Tool Tip<ms>Wait for an event to indicate
-that the am node is created<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.amNode<ms><special> <B><Shape>20<B>304<B>492<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>198<B>248<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestam<ms><special> <B><Shape>11<B>190<B>110<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>15<B>190<B>310<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>12<B>291<B>396<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"deathtimer"<ms><special> <B><Shape>1<B>191<B>15<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>
+1<B>192<B>26<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>242<B>141<B>242,141,242,141,242,141<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>242<B>136<B>242,141,288,136<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>22<B>201<B>72<B> extra <special>Tool Tip<ms>Register for events from sound node<ms><special>Node to receive events from (Python code)<ms>"sound"<ms><special> <B><Shape>2<B>341<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>321<B>161<B>321,162,381,161<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>275<B>384<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>7<B>262<B>239<B> extra <special>Tool Tip<ms>End the Answering
+machine node.<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>2<B>177<B>365<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>192<B>116<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>14<B>275<B>136<B> extra <special>Tool Tip<ms>wait for incoming DTMF from the sound node.
+On receiving DTMF, end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>356<B>160<B> extra <special>Tool Tip<ms>Stop processing, while we wait
+on events from the different entitties<ms><special> <B><Shape>14<B>276<B>339<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>"deathtimer"<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>12<B>262<B>288<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"deathtimer"<ms><special> <B><Shape>9<B>326<B>361<B>326,361,326,361,326,361,326,361,326,361,366,363<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>16<B>177<B>320<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>15<B>263<B>190<B> extra <special>Tool Tip<ms>Make the sound node
+talk to itself, so the user hears echo.<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>10<B>185<B>167<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>15<B>177<B>229<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>17<B>177<B>276<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>222<B>166<B>222,166,288,186<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/dtmf_from_sound.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/dtmf_from_sound.src (original)
+++ sofaswitch/trunk/callflow/tests/dtmf_from_sound.src Tue Jul 17 22:43:02 2007
@@ -1 +1 @@
-9<B>232<B>205<B>374,205,376,329,232,323<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>222<B>64<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestnode<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>310<B>397<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>13<B>221<B>244<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestnode<ms><special> <B><Shape>9<B>335<B>294<B>336,294,335,397<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>147<B>379<B>147,379,337,397<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>233<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>10<B>320<B>234<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>9<B>285<B>179<B>285,179,338,183<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>207<B>323<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>236<B>159<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>REQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.newNode<ms><special> <B><Shape>10<B>230<B>98<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>14<B>324<B>183<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestnode<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.timerData<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>120<B>265<B>248,294,121,265,120,267<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>160<B>291<B>160,291,232,323<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>221<B>12<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>
+10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>122<B>191<B>180,191,122,266<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>200<B>135<B>200,135,205,195<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>160<B>291<B>160,291,232,323<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>164<B>131<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>207<B>322<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>11<B>170<B>85<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>148<B>322<B>148,379,232,322<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>189<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>2<B>200<B>160<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>20<B>192<B>252<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>1<B>168<B>34<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>208<B>104<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/makevoipcall.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/makevoipcall.src (original)
+++ sofaswitch/trunk/callflow/tests/makevoipcall.src Tue Jul 17 22:43:02 2007
@@ -1,4 +1,4 @@
-15<B>448<B>338<B> extra <special>Tool Tip<ms>Make sound node
-talk to itself<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>155<B>205<B>155,206,215,205<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>473<B>306<B>565,306,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>446<B>426<B> extra <special>Tool Tip<ms>Timer which initates a shutdown, after some tidyup
- messages etc have been sent.<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"endeverything"<ms><special> <B><Shape>20<B>312<B>286<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>473<B>330<B>602,330,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>88<B>95<B> extra <special>Tool Tip<ms>Request voip node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestvoip<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>13<B>90<B>229<B> extra <special>Tool Tip<ms>Stop Timer on the voip request<ms><special>Timer to stop<ms>requestvoip<ms><special> <B><Shape>5<B>140<B>548<B> extra <special>Tool Tip<ms>Test for dtmf data of "9"<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>9<B>156<B>338<B>473,338,409,347,413,712,156,711,165,598<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>248<B>338<B>473,338,378,339,380,616,249,618,248,578<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>199<B>294<B> extra <special>Tool Tip<ms>report we have a sound node<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>7<B>447<B>383<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special> <B><Shape>13<B>189<B>250<B> extra <special>Tool Tip<ms>Stop Timer on the request for a sound node<ms><special>Timer to stop<ms>requestsound<ms><special> <B><Shape>2<B>168<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>1<B>88<B>9<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>203<B>527<B>203,527,248,528<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>19<B>168<B>575<B> extra <special>Tool Tip<ms>Send Dtmf to the voip node<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>DTMF to send to worker node (python code)<ms>self.dtmfData<ms><special> <B><Shape>9<B>191<B>382<B>191,382,237,383<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>141<B>357<B> extra <special>Tool Tip<ms>TEST: have a sound and voip node.<ms><special>Test (Python code)<ms>(self.voipNode != None) and (self.soundNode != None)<ms><special> <B><Shape>14<B>589<B>280<B> extra <special>Tool Tip<ms>Test timer on request of sound<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestsound<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>445<B>470<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>616<B>300<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>115<B>328<B>115,328,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>102<B>185<B> extra <special>Tool Tip<ms>have a voip node from the voip module<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>voipREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>14<B>552<B>256<B> extra <special>Tool Tip<ms>test timer on request of voip<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestvoip<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>14<B>235<B>528<B> extra <special>Tool Tip<ms>Wait for voip call to end<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>11<B>90<B>139<B> extra <special>Tool Tip<ms>Request sound node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>2<B>263<B>551<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>200<B>207<B> extra <special>Tool Tip<ms>wait for arrival of sound node<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>250<B>229<B>250,229,325,229<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>6<B>141<B>406<B> extra <special>Tool Tip<ms>Make Call to a remote entity<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>Call destination (python code)<ms>self.scriptArgs<ms><special> <B><Shape>15<B>141<B>457<B> extra <special>Tool Tip<ms>Transfer Media between the voip and sound node<ms><special>First SofaSwitch worker (python)<ms>self.voipNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>9<B>360<B>254<B>360,254,567,254<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>99<B>268<B> extra <special>Tool Tip<ms>report we have a voip node<ms><special>Python Code<ms>print "Have a new voip node on ", self.voipNode<ms><special> <B><Shape>9<B>166<B>354<B>215,354,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>212<B>383<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>153<B>505<B> extra <special>Tool Tip<ms>Wait for DTMF data<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>22<B>97<B>52<B> extra <special>Tool Tip<ms>Register for events from voip node<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>14<B>310<B>232<B> extra <special>Tool Tip<ms>Wait for timer, which
-indicates end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>endeverything<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>
+5<B>140<B>548<B> extra <special>Tool Tip<ms>Test for dtmf data of "9"<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>6<B>141<B>406<B> extra <special>Tool Tip<ms>Make Call to a remote entity<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>Call destination (python code)<ms>self.scriptArgs<ms><special> <B><Shape>9<B>152<B>336<B>473,338,391,336,398,694,152,696,165,598<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>166<B>171<B>166,171,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>206<B>146<B>206,146,323,232<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>473<B>306<B>565,306,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>212<B>383<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>139<B>119<B>139,121,181,119<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>447<B>383<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special> <B><Shape>14<B>153<B>505<B> extra <special>Tool Tip<ms>Wait for DTMF data<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>263<B>551<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>360<B>254<B>360,254,567,254<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>235<B>528<B> extra <special>Tool Tip<ms>Wait for voip call to end<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>9<B>166<B>555<B>166,555<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>616<B>300<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>248<B>333<B>248,578,249,662,389,660,387,333,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>178<B>213<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>12<B>446<B>426<B> extra <special>Tool Tip<ms>Timer which initates a shutdown, after some tidyup
+ messages etc have been sent.<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"endeverything"<ms><special> <B><Shape>5<B>141<B>357<B> extra <special>Tool Tip<ms>TEST: have a sound and voip node.<ms><special>Test (Python code)<ms>(self.voipNode != None) and (self.soundNode != None)<ms><special> <B><Shape>9<B>473<B>330<B>602,330,473,338<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>109<B>190<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>15<B>448<B>338<B> extra <special>Tool Tip<ms>Make sound node
+talk to itself<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>11<B>89<B>96<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>11<B>156<B>121<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>99<B>146<B>99,146,100,353,166,357<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>552<B>256<B> extra <special>Tool Tip<ms>test timer on request of voip<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestvoip<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>1<B>88<B>9<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>15<B>141<B>457<B> extra <special>Tool Tip<ms>Transfer Media between the voip and sound node<ms><special>First SofaSwitch worker (python)<ms>self.voipNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>7<B>163<B>164<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node for termination (Python code)<ms>self.voipNode<ms><special> <B><Shape>9<B>191<B>382<B>191,382,237,383<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>589<B>280<B> extra <special>Tool Tip<ms>Test timer on request of sound<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestsound<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>7<B>95<B>148<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node for termination (Python code)<ms>self.soundNode<ms><special> <B><Shape>19<B>168<B>575<B> extra <special>Tool Tip<ms>Send Dtmf to the voip node<ms><special>Worker node to activate (python code)<ms>self.voipNode<ms><special>DTMF to send to worker node (python code)<ms>self.dtmfData<ms><special> <B><Shape>14<B>310<B>232<B> extra <special>Tool Tip<ms>Wait for timer, which
+indicates end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>endeverything<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>20<B>312<B>286<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>203<B>527<B>203,527,248,528<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>168<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>97<B>52<B> extra <special>Tool Tip<ms>Register for events from voip node<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>2<B>445<B>470<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/recordincomingvoip.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/recordincomingvoip.src (original)
+++ sofaswitch/trunk/callflow/tests/recordincomingvoip.src Tue Jul 17 22:43:02 2007
@@ -1,3 +1,2 @@
-22<B>150<B>94<B> extra <special>Tool Tip<ms>Register for events from voip<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>9<B>684<B>288<B>684,288,729,313<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>302<B>274<B>302,274,355,286,355,286<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>634<B>266<B> extra <special>Tool Tip<ms>Wait for hangup of the voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hangup<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hangupdata<ms><special> <B><Shape>22<B>246<B>398<B> extra <special>Tool Tip<ms>Register for events from voip node
-that has just answered the call<ms><special>Node to receive events from (Python code)<ms>self.voipNode<ms><special> <B><Shape>15<B>619<B>126<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.voipNode<ms><special> <B><Shape>7<B>241<B>488<B> extra <special>Tool Tip<ms>End voip node<ms><special>Worker node for termination (python code)<ms>self.voipNode<ms><special> <B><Shape>2<B>278<B>117<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>252<B>252<B> extra <special>Tool Tip<ms>DETECT the AM node to
-connect to the incoming call.<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable: source of the event<ms>self.amMasterNode<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>14<B>252<B>442<B> extra <special>Tool Tip<ms>A node (voip or am) has died<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>328<B>282<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>266<B>375<B>647,375,605,527,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>250<B>586<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>1<B>141<B>41<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>302<B>113<B>302,464,496,466,499,113,644,126<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>702<B>313<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>166<B>93<B>166,134,265,93<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>631<B>315<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "the voip call has ended with ", self.remotePerson<ms><special> <B><Shape>17<B>621<B>217<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>10<B>248<B>301<B> extra <special>Tool Tip<ms>Report - have an am node<ms><special>Python Code<ms>print " have a am node of ", self.amNode<ms><special> <B><Shape>14<B>252<B>93<B> extra <special>Tool Tip<ms>Wait for an incoming voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>QueryAccept<ms><special>Python variable: source of the event<ms>self.voipNode<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.remotePerson<ms><special> <B><Shape>11<B>239<B>200<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>10<B>248<B>141<B> extra <special>Tool Tip<ms>report: incoming voip call<ms><special>Python Code<ms>print "have received an incoming voip call from ",self.remotePerson<ms><special> <B><Shape>16<B>618<B>170<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>7<B>240<B>537<B> extra <special>Tool Tip<ms>End AM node<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>20<B>251<B>637<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>23<B>237<B>354<B> extra <special>Tool tip<ms>Accept incoming voip call at sofa node<ms><special>SofaSwitch node to advise as to accepting the call (Python code)<ms>self.voipNode<ms><special>Answer call yes or no (Python code)<ms>"yes"<ms><special> <B><Shape>
+9<B>266<B>299<B>284,299,344,482,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>22<B>169<B>145<B> extra <special>Tool Tip<ms>Register for events from voip<ms><special>Node to receive events from (Python code)<ms>"voip"<ms><special> <B><Shape>20<B>251<B>637<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>684<B>288<B>684,288,729,313<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>634<B>266<B> extra <special>Tool Tip<ms>Wait for hangup of the voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hangup<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hangupdata<ms><special> <B><Shape>17<B>621<B>217<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>301<B>114<B>301,465,495,467,498,114,643,127<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>375<B>647,375,605,527,266,488<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>240<B>537<B> extra <special>Tool Tip<ms>End AM node<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>10<B>250<B>586<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>7<B>241<B>488<B> extra <special>Tool Tip<ms>End voip node<ms><special>Worker node for termination (python code)<ms>self.voipNode<ms><special> <B><Shape>2<B>297<B>168<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>185<B>144<B>185,185,284,144<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>619<B>126<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.voipNode<ms><special> <B><Shape>14<B>271<B>144<B> extra <special>Tool Tip<ms>Wait for an incoming voip call<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>QueryAccept<ms><special>Python variable: source of the event<ms>self.voipNode<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.remotePerson<ms><special> <B><Shape>23<B>237<B>354<B> extra <special>Tool tip<ms>Accept incoming voip call at sofa node<ms><special>SofaSwitch node to advise as to accepting the call (Python code)<ms>self.voipNode<ms><special>Answer call yes or no (Python code)<ms>"yes"<ms><special> <B><Shape>2<B>702<B>313<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>323<B>277<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>246<B>398<B> extra <special>Tool Tip<ms>Register for events from voip node
+that has just answered the call<ms><special>Node to receive events from (Python code)<ms>self.voipNode<ms><special> <B><Shape>9<B>307<B>274<B>307,274,351,277<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>267<B>192<B> extra <special>Tool Tip<ms>report: incoming voip call<ms><special>Python Code<ms>print "have received an incoming voip call from ",self.remotePerson<ms><special> <B><Shape>11<B>254<B>249<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>10<B>631<B>315<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "the voip call has ended with ", self.remotePerson<ms><special> <B><Shape>14<B>252<B>442<B> extra <special>Tool Tip<ms>A node (voip or am) has died<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>Terminating<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>10<B>247<B>295<B> extra <special>Tool Tip<ms>Report - have an am node<ms><special>Python Code<ms>print " have a am node of ", self.amNode<ms><special> <B><Shape>1<B>160<B>92<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>16<B>618<B>170<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/recordmessage.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/recordmessage.src (original)
+++ sofaswitch/trunk/callflow/tests/recordmessage.src Tue Jul 17 22:43:02 2007
@@ -1,2 +1,2 @@
-9<B>630<B>374<B>630,374,631,473<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>604<B>618<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>350<B>557<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>216<B>307<B>216,307,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>296<B>182<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>soundREQU<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>15<B>605<B>522<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>14<B>203<B>158<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>amREQ<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>14<B>254<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>2<B>507<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>656<B>401<B>656,401,666,535,721,536,721,534<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>343<B>207<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>690<B>373<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>678<B>372<B>678,372,715,373<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>16<B>694<B>585<B> extra <special>Tool Tip<ms>Play the message just recorded back<ms><special>Filename to read audio from (Python code)<ms>"message.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>11<B>191<B>109<B> extra <special>Tool Tip<ms>Request Node from sound module<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestsound<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>5<B>507<B>264<B> extra <special>Tool Tip<ms>Start recording now<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>5<B>605<B>324<B> extra <special>Tool Tip<ms>End the recording..<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>5<B>576<B>297<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>191<B>67<B> extra <special>Tool Tip<ms>Request Node from AM module<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>requestam<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>9<B>265<B>199<B>265,513,265,635,427,639,429,199,533,202,533,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>17<B>695<B>537<B> extra <special>Tool Tip<ms>Stop writing to the file
-while we play it back<ms><special>Filename to contain new audio (Python code)<ms>" "<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>2<B>694<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>300<B>346<B>601,346,581,447,300,483<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>12<B>605<B>575<B> extra <special>Tool Tip<ms>timer, which on firing ends this flow<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>13<B>190<B>210<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request voip<ms><special> <B><Shape>16<B>275<B>484<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>17<B>508<B>310<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>555<B>290<B>555,290,600,293<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>290<B>536<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hanguptime<ms><special> <B><Shape>7<B>605<B>474<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>20<B>294<B>621<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>289<B>569<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>341<B>557<B>341,557,375,557<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>345<B>207<B>368,207,345,207<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>200<B>247<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>5<B>628<B>347<B> extra <special>Tool Tip<ms>hear the recording<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>13<B>284<B>231<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>request sound<ms><special> <B><Shape>9<B>253<B>180<B>253,180,309,182<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>294<B>267<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>
+16<B>275<B>484<B> extra <special>Tool Tip<ms>Play the instructions<ms><special>Filename to read audio from (Python code)<ms>"../prompts/record.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>630<B>374<B>630,374,631,473<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>151<B>272,151,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>604<B>618<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>240<B>96<B>240,96,287,101<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>290<B>536<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>hanguptime<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.hanguptime<ms><special> <B><Shape>10<B>132<B>264<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have not received sound or voip node in time"<ms><special> <B><Shape>9<B>341<B>557<B>341,557,375,557<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>312<B>129<B>335,129,312,129<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>200<B>121<B>200,121,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>694<B>626<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>289<B>569<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DEATH NOW."<ms><special> <B><Shape>16<B>694<B>585<B> extra <special>Tool Tip<ms>Play the message just recorded back<ms><special>Filename to read audio from (Python code)<ms>"message.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>20<B>294<B>621<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>12<B>605<B>575<B> extra <special>Tool Tip<ms>timer, which on firing ends this flow<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"hanguptime"<ms><special> <B><Shape>9<B>265<B>199<B>265,513,265,635,427,639,429,199,533,202,533,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>148<B>151<B>292,151,148,264<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>148<B>324<B>148,324,168,674,579,672,566,479,630,474<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>555<B>290<B>555,290,600,293<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>507<B>362<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>2<B>690<B>373<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>17<B>695<B>537<B> extra <special>Tool Tip<ms>Stop writing to the file
+while we play it back<ms><special>Filename to contain new audio (Python code)<ms>" "<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>7<B>605<B>474<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>14<B>254<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>9<B>678<B>372<B>678,372,715,373<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>656<B>401<B>656,401,666,535,721,536,721,534<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>262<B>101<B> extra <special>Tool Tip<ms>Request Node from sound<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>148<B>121<B>220,121,148,264<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>190<B>71<B> extra <special>Tool Tip<ms>Request Node from voip<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.voipNode<ms><special> <B><Shape>15<B>605<B>522<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>2<B>350<B>557<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>5<B>576<B>297<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>5<B>507<B>264<B> extra <special>Tool Tip<ms>Start recording now<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>17<B>508<B>310<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>5<B>628<B>347<B> extra <special>Tool Tip<ms>hear the recording<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>5<B>605<B>324<B> extra <special>Tool Tip<ms>End the recording..<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>311<B>128<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>300<B>346<B>601,346,581,447,300,483<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
Modified: sofaswitch/trunk/callflow/tests/requestnode.src
==============================================================================
--- sofaswitch/trunk/callflow/tests/requestnode.src (original)
+++ sofaswitch/trunk/callflow/tests/requestnode.src Tue Jul 17 22:43:02 2007
@@ -1 +1 @@
-2<B>326<B>370<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>14<B>340<B>269<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>requestnode<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.timerData<ms><special> <B><Shape>10<B>336<B>311<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " from ", self.timerData<ms><special> <B><Shape>9<B>390<B>291<B>390,291,445,291<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>13<B>231<B>340<B> extra <special>Tool Tip<ms>Stop Timer<ms><special>Timer to stop<ms>requestnode<ms><special> <B><Shape>2<B>418<B>291<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>240<B>288<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.eventData<ms><special> <B><Shape>14<B>246<B>251<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>NEWID<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>11<B>232<B>206<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Timer label<ms>request node<ms><special>Additional information (Python code)<ms><ms><special> <B><Shape>1<B>231<B>157<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>20<B>245<B>386<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>292<B>273<B>292,274,352,273<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
+9<B>409<B>246<B>409,246,479,276<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>399<B>96<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>11<B>401<B>143<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"voip"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms><ms><special> <B><Shape>10<B>393<B>186<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.eventData<ms><special> <B><Shape>2<B>534<B>169<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>20<B>467<B>276<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>451<B>168<B>451,168,559,169<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>461<B>218<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime()<ms><special> <B><Shape>9<B>431<B>193<B>477,218,431,193<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>
1
0
[Sofaswitch-svn] [commit] r354 - sofaswitch/trunk/callflow/docs/graphimages
by SofaSWITCH SVN 18 Jul '07
by SofaSWITCH SVN 18 Jul '07
18 Jul '07
Author: derek
Date: Tue Jul 17 21:50:25 2007
New Revision: 354
Modified:
sofaswitch/trunk/callflow/docs/graphimages/Request.png
Log:
Use a different image as the icon has changed.
Modified: sofaswitch/trunk/callflow/docs/graphimages/Request.png
==============================================================================
Binary files. No diff available.
1
0
18 Jul '07
Author: derek
Date: Tue Jul 17 21:34:46 2007
New Revision: 353
Modified:
sofaswitch/trunk/callflow/src/dnd.cpp
sofaswitch/trunk/callflow/src/dnd.h
sofaswitch/trunk/callflow/src/eventer.cpp
sofaswitch/trunk/callflow/src/requestnode.cpp
sofaswitch/trunk/callflow/src/sendmessage.cpp
sofaswitch/trunk/callflow/src/timer.cpp
Log:
Alter Request Node shape completely. Redraw it as having
three outputs. a)just made request, b)received new node info
and c)timeout waiting on new node.
Modified: sofaswitch/trunk/callflow/src/dnd.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/dnd.cpp (original)
+++ sofaswitch/trunk/callflow/src/dnd.cpp Tue Jul 17 21:34:46 2007
@@ -759,15 +759,55 @@
}
}
+void DndShape::DrawStar(wxDC & dc, int xOff, int yOff)
+{
+ wxPoint polygon[10];
+
+ for (int i = 0; i < 10; i++) {
+ int radius = (i % 2) == 0 ? 9 : 4;
+ double theta = (270 + (36 * i)) * M_PI * 2.0/360.0;
+ int xx = xOff + (int)(radius * cos(theta));
+ int yy = yOff + (int)(radius * sin(theta));
+ polygon[i] = wxPoint(xx, yy);
+ }
+ dc.DrawPolygon(10, polygon, m_rect.x, m_rect.y);
+}
+
+
void DndShape::DrawBox(wxDC &dc, int xOff, int yOff, int width, int height)
{
- dc.SetBrush(wxBrush(*wxBLUE, wxTRANSPARENT));
+ dc.SetBrush(wxBrush(*wxBLUE, wxTRANSPARENT));
dc.SetPen(*wxBLACK_PEN);
dc.DrawRoundedRectangle(m_rect.x + xOff, m_rect.y + yOff,
width, height, 5);
dc.SetBrush(wxBrush(*wxBLACK, wxSOLID ) );
}
+wxPoint DndShape::HourLocation(int xOff, int yOff, int hour, int radius)
+{
+ double angle = (2 * M_PI * (hour + 9))/12.0;
+
+ wxPoint result(xOff + m_rect.x + (int)(radius * cos(angle)), yOff + m_rect.y + (int)(radius * sin(angle)));
+ return result;
+}
+
+void DndShape::DrawClock(wxDC &dc, int xOff, int yOff, int radius)
+{
+ wxPoint pM(m_rect.x + xOff, m_rect.y+yOff);
+ dc.SetBrush(wxBrush(*wxBLACK, wxTRANSPARENT) );
+ dc.DrawCircle(pM, radius);
+ dc.SetBrush(wxBrush(*wxBLACK, wxSOLID) );
+ int tickSize = radius >> 3;
+ if (tickSize == 0)
+ tickSize = 1;
+
+ for(int i = 0; i < 12; i++)
+ dc.DrawLine(HourLocation(xOff, yOff, i, radius - tickSize), HourLocation(xOff, yOff, i, radius));
+
+ dc.DrawLine(HourLocation(xOff, yOff, 2, radius - (radius >> 2)), HourLocation(xOff, yOff, 0, 0));
+ dc.DrawLine(HourLocation(xOff, yOff, 7, radius >> 1), HourLocation(xOff, yOff, 0, 0));
+}
+
void DndShape::AdjustIoPoints()
{
inputPoints.DeleteContents(true);
Modified: sofaswitch/trunk/callflow/src/dnd.h
==============================================================================
--- sofaswitch/trunk/callflow/src/dnd.h (original)
+++ sofaswitch/trunk/callflow/src/dnd.h Tue Jul 17 21:34:46 2007
@@ -584,6 +584,19 @@
with and height*/
void DrawBox(wxDC &dc, int xOff, int yOff, int width, int height);
+ /**Draw a clock (which is mainly used in the timer shape), relative to the
+ top left corner, of the specified radius */
+ void DrawClock(wxDC &dc, int xOff, int yOff, int radius);
+
+ /**Draw a star shape, relative to the top left corner.
+ This is used in the Eventer and Request Node shapes */
+ void DrawStar(wxDC & dc, int xOff, int yOff);
+
+ /**For the given hour, and specified radius, work out where this point
+ exists on the map. This point is used in the drawing of the clock */
+ wxPoint HourLocation(int xOff, int yOff, int hour, int radius);
+
+
/**Indicate the direction of the arrow on the structrue */
enum ArrowDirection
{
Modified: sofaswitch/trunk/callflow/src/eventer.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/eventer.cpp (original)
+++ sofaswitch/trunk/callflow/src/eventer.cpp Tue Jul 17 21:34:46 2007
@@ -88,16 +88,7 @@
DrawBox(dc, 0, 10, 30, 20);
- wxPoint polygon[10];
-
- for (int i = 0; i < 10; i++) {
- int radius = (i % 2) == 0 ? 9 : 4;
- double theta = (270 + (36 * i)) * M_PI * 2.0/360.0;
- int xx = 3 + (int)(radius * cos(theta));
- int yy = 39 + (int)(radius * sin(theta));
- polygon[i] = wxPoint(xx, yy);
- }
- dc.DrawPolygon(10, polygon, m_rect.x, m_rect.y);
+ DrawStar(dc, 3, 39);
wxPoint pI(p1.x + 30, p1.y + 17);
wxPoint pJ(p1.x + 35, p1.y + 22);
Modified: sofaswitch/trunk/callflow/src/requestnode.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/requestnode.cpp (original)
+++ sofaswitch/trunk/callflow/src/requestnode.cpp Tue Jul 17 21:34:46 2007
@@ -31,15 +31,17 @@
displayData[displayData.size()] =
InformationSection(wxT("Timer period (seconds)"), wxT("1"));
-
- displayData[displayData.size()] =
- InformationSection(wxT("Timer label"), wxT("request node"));
displayData[displayData.size()] =
- InformationSection(wxT("Additional information (Python code)"), wxT(""));
+ InformationSection(wxT("Info to send to remote node (Python code)"), wxT(""));
+
+ displayData[displayData.size()] =
+ InformationSection(wxT("Python variable: generated data"), wxT(""));
relInputPoints.Add(25, 0);
- relOutputPoints.Add(25, 50);
+ relOutputPoints.Add(50, 25); /*First output point, completed request */
+ relOutputPoints.Add(10, 50); /*Second output point, have the node */
+ relOutputPoints.Add(30, 50); /*Third output point, timer expired */
AdjustIoPoints();
}
@@ -51,51 +53,90 @@
wxPoint p1(m_rect.GetPosition());
wxPoint pA(p1.x + 25, p1.y + 0);
- wxPoint pB(p1.x + 25, p1.y + 50);
-
-
+ wxPoint pX(p1.x + 10, p1.y + 50);
+ wxPoint pY(p1.x + 30, p1.y + 50);
+ wxPoint pZ(p1.x + 50, p1.y + 20);
+ wxPoint pB(p1.x + 25, p1.y + 10);
+ wxPoint pC(p1.x + 10, p1.y + 30);
+ wxPoint pD(p1.x + 30, p1.y + 30);
+ wxPoint pE(p1.x + 40, p1.y + 20);
+
dc.DrawLine(pA, pB);
+ dc.DrawLine(pC, pX);
+ dc.DrawLine(pD, pY);
+ dc.DrawLine(pE, pZ);
+ DrawBox(dc, 0, 10, 40, 20);
+ DrawStar(dc, 0, 42);
+ DrawClock(dc, 43, 42, 8);
wxString text("R ?");
wxFont f = wxFont(*wxITALIC_FONT);
f.SetPointSize(20);
- dc.SetFont(f);//*wxITALIC_FONT);
+ dc.SetFont(f);
wxCoord w, h;
dc.GetTextExtent(text, &w, &h);
- int xPos = m_rect.x + 0 + ((50 - w)/2);
+ int xPos = m_rect.x + 0 + ((40 - w)/2);
int yPos = m_rect.y + 10 + ((21 - h)/2);
dc.DrawText(text, xPos, yPos);
DrawArrow(dc, pA, ArrowDown, InputPointConnected(0) ? Connected : Loose);
- DrawArrow(dc, pB, ArrowDown, OutputPointConnected(0) ? Connected : Loose);
+ DrawArrow(dc, pX, ArrowDown, OutputPointConnected(1) ? Connected : Loose);
+ DrawArrow(dc, pY, ArrowDown, OutputPointConnected(2) ? Connected : Loose);
+ DrawArrow(dc, pZ, ArrowRight, OutputPointConnected(0) ? Connected : Loose);
DndShape::Draw(dc);
}
bool DndShapeRequestNode::WriteSystemCode(wxTextFile & file)
{
- file.AddLine(" def Request_Node(self, aTuple): ");
- file.AddLine(" a,y,z = aTuple ");
- file.AddLine(" eName = self.data[a][\"Timer label\"] ");
- file.AddLine(" self.pendingEvents[eName] = (a, eName, \"\") ");
- file.AddLine(" reactor.callLater(self.data[a][\"Timer period\"], self.timerObjectExpired, eName)");
- file.AddLine(" rhost = self.data[a][\"Request node from\"] ");
- file.AddLine(" try: ");
- file.AddLine(" rhost = eval(rhost) + \":REQUESTNEWID \" ");
- file.AddLine(" except: ");
- file.AddLine(" print \"Could not process \", self.data[a][\"Request node from\"], \" as a Python string\" ");
- file.AddLine(" return self.data[a][\"Output\"] ");
- file.AddLine(" additional = self.data[a][\"Additional info\"] ");
- file.AddLine(" if len(additional) > 0: ");
- file.AddLine(" try: ");
- file.AddLine(" rhost += eval(additional) ");
- file.AddLine(" except: ");
- file.AddLine(" print \"Could not process \", additional, \" as a Python string \" ");
- file.AddLine(" return self.data[a][\"Output\"] ");
- file.AddLine(" rhost += \"\\0\" ");
- file.AddLine(" self.transport.write(rhost) ");
- file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine(" def Request_Node(self, aTuple): ");
+ file.AddLine(" a,y,z = aTuple ");
+ file.AddLine(" eName = a + \"_Timer\" ");
+ file.AddLine(" if y == 0: ");
+ file.AddLine(" define=self.data[a][\"Event Source\"] ");
+ file.AddLine(" define = define + \" = None\" ");
+ file.AddLine(" exec(define); ");
+ file.AddLine(" define=self.data[a][\"Event Name\"] ");
+ file.AddLine(" define = define + \" = None\" ");
+ file.AddLine(" exec(define); ");
+ file.AddLine(" define=self.data[a][\"Event Data\"] ");
+ file.AddLine(" define = define + \" = None\" ");
+ file.AddLine(" exec(define); ");
+ file.AddLine(" self.pendingEvents[eName] = (a, eName, \"\") ");
+ file.AddLine(" reactor.callLater(self.data[a][\"Timer period\"], self.timerObjectExpired, eName)");
+ file.AddLine(" rNode = self.data[a][\"Request node from\"] ");
+ file.AddLine(" try: ");
+ file.AddLine(" rhost = eval(rNode) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"Could not process \", rNode, \" as a Python string\" ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine(" rhost = rhost + \":REQUESTNEWID \" ");
+ file.AddLine(" additional = self.data[a][\"Additional info\"] ");
+ file.AddLine(" if len(additional) > 0: ");
+ file.AddLine(" try: ");
+ file.AddLine(" rhost += eval(additional) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"Could not process \", additional, \" as a Python string \" ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine(" rhost += \"\\0\" ");
+ file.AddLine(" self.transport.write(rhost) ");
+ file.AddLine(" self.currentHandlers[eName] = a ");
+ file.AddLine(" rEvent = eval(rNode) + \"REQUESTNEWID\" ");
+ file.AddLine(" self.currentHandlers[rEvent] = a ");
+ file.AddLine(" return self.data[a][\"Output\"] ");
+ file.AddLine(" else: ");
+ file.AddLine(" define=self.data[a][\"Event Name\"] ");
+ file.AddLine(" try: ");
+ file.AddLine(" defineName = eval(define) ");
+ file.AddLine(" except: ");
+ file.AddLine(" print \"Failed to turn \", data[a][\"Event Name\"], \" into a name\" ");
+ file.AddLine(" defineName = \"not available\" ");
+ file.AddLine(" self.DeleteThisEvent(eName) ");
+ file.AddLine(" if defineName.find(\"Timer\") < 0: ");
+ file.AddLine(" return self.data[a][\"Have Node Handler\"] ");
+ file.AddLine(" else: ");
+ file.AddLine(" return self.data[a][\"Timeout Handler\"] ");
file.AddLine("");
return true;
}
@@ -109,11 +150,33 @@
file.AddLine(wxString::Format(" \"Input\" : "));
file.AddLine(wxString::Format(" %s, ", inputLabel.c_str()));
- wxNode *outputNode = (wxNode *)GetOutputPoints().GetFirst();
+ /**Output, made the request */
+ wxNode *outputNode = (wxNode *)GetOutputPoints().GetFirst();
const wxString & outputLabel = ((LabelledPoint *)outputNode->GetData())->GetFullLabel();
file.AddLine(wxString::Format(" \"Output\" : "));
file.AddLine(wxString::Format(" %s, ", outputLabel.c_str()));
+ /**Output, have the answer */
+ outputNode = outputNode->GetNext();
+ const wxString & outputLabel2 = ((LabelledPoint *)outputNode->GetData())->GetFullLabel();
+ file.AddLine(wxString::Format(" \"Have Node Handler\" : "));
+ file.AddLine(wxString::Format(" %s, ", outputLabel2.c_str()));
+
+
+ /*Output, have a timeout condition */
+ outputNode = outputNode->GetNext();
+ const wxString & outputLabel3 = ((LabelledPoint *)outputNode->GetData())->GetFullLabel();
+ file.AddLine(wxString::Format(" \"Timeout Handler\" : "));
+ file.AddLine(wxString::Format(" %s, ", outputLabel3.c_str()));
+
+ /**We direct all events to ourselves. Out Function input handler has to
+ determine if the incoming call is requesting a node, reporting a node
+ supplied, or reporting a timeout event*/
+ file.AddLine(wxString::Format(" \"Event Handler\" : "));
+ wxString nameRequestNode = GetName();
+ nameRequestNode.Replace(" ", "_", true); //Replace all spaces with underscores.
+ file.AddLine(wxString::Format(" (\"%s\", 1, \"%s\"), ", GetKey().c_str(), nameRequestNode.c_str()));
+
wxString dest;
dest = ProtectString(displayData[1].data);
file.AddLine(wxString::Format(" \"Request node from\" : "));
@@ -122,12 +185,20 @@
file.AddLine(wxString::Format(" \"Timer period\" : "));
file.AddLine(wxString::Format(" %s, ", displayData[2].data.c_str()));
- file.AddLine(wxString::Format(" \"Timer label\" : "));
- file.AddLine(wxString::Format(" \"%s\", ", displayData[3].data.c_str()));
+ file.AddLine(wxString::Format(" \"Event Source\" : "));
+ file.AddLine(wxString::Format(" \"self.%s_Source\", ", GetKey().c_str()));
+
+ file.AddLine(wxString::Format(" \"Event Name\" : "));
+ file.AddLine(wxString::Format(" \"self.%s_Name\", ", GetKey().c_str()));
+ file.AddLine(wxString::Format(" \"Event Data\" : "));
+ file.AddLine(wxString::Format(" \"%s\", ", displayData[4].data.c_str()));
+
+ file.AddLine(wxString::Format(" \"Request Pending\" : "));
+ file.AddLine(wxString::Format(" 0, "));
file.AddLine(wxString::Format(" \"Additional info\" : "));
- dest = ProtectString(displayData[4].data);
+ dest = ProtectString(displayData[3].data);
file.AddLine(wxString::Format(" \"%s\", ", dest.c_str()));
file.AddLine(wxString::Format(" },"));
Modified: sofaswitch/trunk/callflow/src/sendmessage.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/sendmessage.cpp (original)
+++ sofaswitch/trunk/callflow/src/sendmessage.cpp Tue Jul 17 21:34:46 2007
@@ -24,7 +24,7 @@
SetSize(newSize);
relInputPoints.Add(16, 0);
- relOutputPoints.Add(16, 40);
+ relOutputPoints.Add(16, 50);
displayData[displayData.size()] =
InformationSection(wxT("Message to send (Python code)"), wxT("\"voip:reporttome\""));
Modified: sofaswitch/trunk/callflow/src/timer.cpp
==============================================================================
--- sofaswitch/trunk/callflow/src/timer.cpp (original)
+++ sofaswitch/trunk/callflow/src/timer.cpp Tue Jul 17 21:34:46 2007
@@ -47,13 +47,7 @@
}
-wxPoint DndShapeTimer::HourLocation(int hour, int radius)
-{
- double angle = (2 * M_PI * (hour + 9))/12.0;
- wxPoint result(25 + m_rect.x + (int)(radius * cos(angle)), 25 + m_rect.y + (int)(radius * sin(angle)));
- return result;
-}
void DndShapeTimer::Draw(wxDC& dc)
{
@@ -74,15 +68,7 @@
dc.DrawLine(pA, pB);
dc.DrawLine(pC, pD);
- dc.SetBrush(wxBrush(*wxBLACK, wxTRANSPARENT) );
- dc.DrawCircle(pM, 12);
- dc.SetBrush(wxBrush(*wxBLACK, wxSOLID) );
-
- for(int i = 0; i < 12; i++)
- dc.DrawLine(HourLocation(i, 10), HourLocation(i, 12));
-
- dc.DrawLine(HourLocation(2, 10), HourLocation(0, 0));
- dc.DrawLine(HourLocation(7, 6), HourLocation(0, 0));
+ DrawClock(dc, 25, 25, 12);
DndShape::Draw(dc);
}
1
0
05 Jul '07
Author: derek
Date: Thu Jul 5 19:08:23 2007
New Revision: 352
Modified:
sofaswitch/trunk/callflow/docs/code.sgml
Log:
Add section on class names, which makes this chapter stand out a bit
more.
Modified: sofaswitch/trunk/callflow/docs/code.sgml
==============================================================================
--- sofaswitch/trunk/callflow/docs/code.sgml (original)
+++ sofaswitch/trunk/callflow/docs/code.sgml Thu Jul 5 19:08:23 2007
@@ -6,4 +6,20 @@
&callflow;. All the generated documentation has been linked into this file, and
is available for you to view at <ulink url="html/index.html">code docs</ulink>
</para>
+
+<sect1>
+<title>Classes in &callflow;</title>
+<para>
+The classes that have been written to make &callflow; work are found at
+<ulink url="html/classes.html">class list</unlink>.
+</para>
+
+<para>
+Note that there are many class names which begin with the letters
+<literal>DndShape</literal>. All such classes indicate one structure that is
+drawn on the canvas.
+</para>
+</sect1>
+
+
</chapter>
1
0