(Page 2 of 2 in this chapter)

Figure 16. Call Center Example

Figure 17. Initial State of the MVIP Switches
void myInitialize(CTAHD ctahd, SWIHD *t1hd, SWIHD *cxhd)
{
SWI_TERMINUS inputs[24], outputs[24];
unsigned count;
/* Open a switch handle to the AG-T1 board */
swiOpenSwitch(ctahd, "AGSW", 0, SWI_ENABLE_RESTORE, t1hd);
/* Open a switch handle to the AG S-Connect board */
swiOpenSwitch(ctahd, "AGCXSW", 0, SWI_ENABLE_RESTORE, cxhd);
/* Connect the DSPs to the line interfaces on the AG-T1: */
/* Connect the voice streams: */
for (count = 0; count < 24; count++)
{
inputs[count].bus = MVIP95_LOCAL_BUS;
inputs[count].stream = 0;
inputs[count].timeslot = (DWORD)count;
outputs[count].bus = MVIP95_LOCAL_BUS;
outputs[count].stream = 5;
outputs[count].timeslot = (DWORD)count;
}
swiMakeConnection(*t1hd, inputs, outputs, count);
for (count = 0; count < 24; count++)
{
inputs[count].bus = MVIP95_LOCAL_BUS;
inputs[count].stream = 4;
inputs[count].timeslot = (DWORD)count;
outputs[count].bus = MVIP95_LOCAL_BUS;
outputs[count].stream = 1;
outputs[count].timeslot = (DWORD)count;
}
swiMakeConnection(*t1hd, inputs, outputs, count);
/* Connect the signaling streams: */
for (count = 0; count < 24; count++)
{
inputs[count].bus = MVIP95_LOCAL_BUS;
inputs[count].stream = 2;
inputs[count].timeslot = (DWORD)count;
outputs[count].bus = MVIP95_LOCAL_BUS;
outputs[count].stream = 7;
outputs[count].timeslot = (DWORD)count;
}
swiMakeConnection(*t1hd, inputs, outputs, count);
for (count = 0; count < 24; count++)
{
inputs[count].bus = MVIP95_LOCAL_BUS;
inputs[count].stream = 6;
inputs[count].timeslot = (DWORD)count;
outputs[count].bus = MVIP95_LOCAL_BUS;
outputs[count].stream = 3;
outputs[count].timeslot = (DWORD)count;
}
swiMakeConnection(*t1hd, inputs, outputs, count);
}
/* Nails up AG SConnect lines to the MVIP bus */
void myConnectAgCx(SWIHD cxhd)
{
SWI_TERMINUS outputs[24], inputs[24];
unsigned count;
/* Connect Voice lines: */
/* Connect AGCX local:0:0..7 to mvip:1:0..7 */
for (count = 0; count < 24; count++)
{
inputs[count].bus = MVIP95_LOCAL_BUS;
inputs[count].stream = 0;
inputs[count].timeslot = (DWORD)count;
outputs[count].bus = MVIP95_MVIP_BUS;
outputs[count].stream = 1;
outputs[count].timeslot = (DWORD)count;
}
swiMakeConnection(cxhd, inputs, outputs, count);
/* Connect AGCX mvip:0:0..7 to local:1:0..7 */
for (count = 0; count < 24; count++)
{
inputs[count].bus = MVIP95_MVIP_BUS;
inputs[count].stream = 0;
inputs[count].timeslot = (DWORD)count;
outputs[count].bus = MVIP95_LOCAL_BUS;
outputs[count].stream = 1;
outputs[count].timeslot = (DWORD)count;
}
swiMakeConnection(cxhd, inputs, outputs, count);
}
/* Provide battery AG SConnect stations */
void mySendOffhook(SWIHD cxhd)
{
SWI_TERMINUS outputs[24];
BYTE patterns[24];
unsigned count;
/* SendPattern out to operator interfaces via local:3:timeslot */
for (count = 0; count < 24; count++)
{
outputs[count].bus = MVIP95_LOCAL_BUS;
outputs[count].stream = 3;
outputs[count].timeslot = (DWORD)count;
patterns[count] = SWI_A_BIT_ON;
}
swiSendPattern(cxhd, patterns, outputs, count);
}

Figure 18. State of the MVIP Switches
/* Send Silence to incoming call */
void mySendSilence(SWIHD t1hd, DWORD timeslot)
{
SWI_TERMINUS output;
BYTE pattern = 0x7F; /* Silence pattern for MU-law */
/* Send silence pattern to incoming call via local:1:timeslot */
output.bus = MVIP95_LOCAL_BUS;
output.stream = 1;
output.timeslot = timeslot;
swiSendPattern(t1hd, &pattern, &output, 1);
}
/* Connect DSP to AG SConnect station, DUPLX connection,
* in preparation for playing the "here comes a call" message.
*/
void myConnectT1AgCx(SWIHD t1hd, DWORD timeslot)
{
SWI_TERMINUS output, input;
/* Connect T1 local:4:timeslot to mvip:0:timeslot */
output.bus = MVIP95_MVIP_BUS;
output.stream = 0;
output.timeslot = timeslot;
input.bus = MVIP95_LOCAL_BUS;
input.stream = 4;
input.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
/* Connect T1 mvip:1:timeslot to local:5:timeslot */
output.bus = MVIP95_LOCAL_BUS;
output.stream = 5;
output.timeslot = timeslot;
input.bus = MVIP95_MVIP_BUS;
input.stream = 1;
input.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
}

Figure 19. State of the MVIP Switches
/* Connect Voice paths of AG SConnection station and
* the incoming call, DUPLEX connection.
*/
void myConnectVoice(SWIHD t1hd, DWORD timeslot)
{
SWI_TERMINUS output, input;
/* Connect T1 local:0:timeslot to mvip:0:timeslot */
output.bus = MVIP95_MVIP_BUS;
output.stream = 0;
output.timeslot = timeslot;
input.bus = MVIP95_LOCAL_BUS;
input.stream = 0;
input.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
/* Connect T1 mvip:1:timeslot to local:1:timeslot */
output.bus = MVIP95_LOCAL_BUS;
output.stream = 1;
output.timeslot = timeslot;
input.bus = MVIP95_MVIP_BUS;
input.stream = 1;
input.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
}

Figure 20. State of the MVIP Switches
/* Reset paths to get ready for next incoming call.This returns the application to the initial state illustrated in Figure 18.
*/
void myResetT1Line(SWIHD t1hd, DWORD timeslot)
{
SWI_TERMINUS output, input;
/* Disable outputs of switch to mvip:0:timeslot */
output.bus = MVIP95_MVIP_BUS;
output.stream = 0;
output.timeslot = timeslot;
swiDisableOutput(t1hd, &output, 1);
/* Disable outputs of switch to local:1:timeslot */
output.bus = MVIP95_LOCAL_BUS;
output.stream = 1;
output.timeslot = timeslot;
swiDisableOutput(t1hd, &output, 1);
/* Reconnect voice streams */
output.bus = MVIP95_LOCAL_BUS;
output.stream = 5;
output.timeslot = timeslot;
input.bus = MVIP95_LOCAL_BUS;
input.stream = 0;
input.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
output.bus = MVIP95_LOCAL_BUS;
output.stream = 1;
output.timeslot = timeslot;
input.bus = MVIP95_LOCAL_BUS;
input.stream = 4;
input.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
/* reconnect the signaling streams: */
input.bus = MVIP95_LOCAL_BUS;
input.stream = 2;
input.timeslot = timeslot;
output.bus = MVIP95_LOCAL_BUS;
output.stream = 7;
output.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
input.bus = MVIP95_LOCAL_BUS;
input.stream = 6;
input.timeslot = timeslot;
output.bus = MVIP95_LOCAL_BUS;
output.stream = 3;
output.timeslot = timeslot;
swiMakeConnection(t1hd, &input, &output, 1);
}
/* Close open switches */
void myShutdown(SWIHD t1hd, SWIHD cxhd)
{
swiCloseSwitch(t1hd);
swiCloseSwitch(cxhd);
}
(Page 2 of 2 in this chapter)