
Description | Cautions | Example | Errors | See Also
Name: |
int dcb_remfromconf(devh,confid,cdt) | |
Inputs: |
int devh int confid MS_CDT *cdt |
|
Returns: |
0 if success -1 if failure |
|
Includes: |
srllib.h dtilib.h msilib.h |
|
Category: |
Conference Management | |
Mode: |
synchronous | |
The dcb_remfromconf( ) function removes a conferee from a conference. The conference ID is the value previously returned by the dcb_estconf( ) function. In this case, the channel attributes of the MS_CDT structure are ignored. For a full description of the MS_CDT structure, see the dcb_estconf( ) function.
Parameter |
Description |
devh: |
The DCB/SC DSP device handle. |
confid: |
The conference identifier number. |
cdt: |
Pointer to the conference descriptor table element. |
#include <windows.h>
#include <stdio.h>
#include "srllib.h"
#include "dtilib.h"
#include "msilib.h"
#include "dcblib.h"
#include "errno.h"
#define NUM_PARTIES 3
main()
{
int dspdevh; /* Conference descriptor table */
int confid; /* Conference ID */
int tsdevh1, tsdevh2, tsdevh3; /* DTI time slot device handles */
long scts; /* Transmit time slot */
SC_TSINFO tsinfo; /* Time slot information structure */
/* Open DCB/SC board 1, DSP 3 device */
if ((dspdevh = dcb_open("dcbB1D3",0) == -1) {
printf("Cannot open dcbB1D3 : errno = %d", errno);
exit(1);
}
/* Open DTI board 1, time slot 1 */
if ((tsdevh1 = dt_open("dtiB1T1",0)) == -1) {
printf( "Cannot open dtiB1T1 : errno = %d", errno);
exit(1);
}
/* Prepare SCbus time slot information structure */
tsinfo.sc_numts = 1;
tsinfo.sc_tsarrayp = &scts;
/* Get transmit time slot of DTI tsdevh1 */
if (dt_getxmitslot(tsdevh1, &tsinfo) == -1){
printf("Error Message = %s",ATDV_ERRMSGP(tsdevh1));
exit(1);
}
/* Set up CDT structure */
cdt[0].chan_num = (int)scts; /* SCbus time slot returned */
cdt[0].chan_sel = MSPN_TS; /* ...by dt_getxmitslot() */
cdt[0].chan_attr = MSPA_NULL; /* Conferee has no special attributes */
/* Open DTI board 1, time slot 2 */
if ((tsdevh2 = dt_open("dtiB1T2",0)) == -1) {
printf("Cannot open dtiB1T2 : errno = %d", errno);
exit(1);
}
/* Get transmit time slot of DTI tsdevh2 */
if (dt_getxmitslot(tsdevh2, &tsinfo) == -1){
printf("Error Message : %s",ATDV_ERRMSGP(tsdevh2));
exit(1);
}
/* Set up CDT structure */
cdt[1].chan_num = (int)scts; /* SCbus time slot returned */
cdt[1].chan_sel = MSPN_TS; /* ...from dt_getxmitslot() */
cdt[1].chan_attr = MSPA_TARIFF; /* Conferee receives periodic tariff tone */
/* Open board 1, tslot 3 */
if ((tsdevh3 = dt_open("dtiB1T3",0)) == -1) {
printf( "Cannot open dtiB1T3: errno=%d", errno);
exit(1);
}
/* Get transmit time slot of DTI tsdevh3 */
if (dt_getxmitslot(tsdevh3, &tsinfo) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh3));
exit(1);
}
/* Set up CDT structure */
cdt[2].chan_num = (int)scts; /* SCbus time slot returned */
cdt[2].chan_sel = MSPN_TS; /* ...from dt_getxmitslot() */
cdt[2].chan_attr = MSPA_TARIFF; /* Conferee receives periodic tariff tone */
/* Establish 3 party conference */
if (dcb_estconf(dspdevh, cdt, NUM_PARTIES, MSCA_ND, &confid) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(dspdevh));
exit(1);
}
/* Do a listen for DTI tsdevh1 */
tsinfo.sc_numts = 1;
tsinfo.sc_tsarrayp = &cdt[0].chan_lts;
if (dt_listen(tsdevh1,&tsinfo) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh1));
exit(1);
}
/* Do a listen for the DTI tsdevh2 */
tsinfo.sc_numts = 1;
tsinfo.sc_tsarrayp = &cdt[1].chan_lts;
if (dt_listen(tsdevh2,&tsinfo) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh2));
exit(1);
}
/* Do a listen for the DTI tsdevh3 */
tsinfo.sc_numts = 1;
tsinfo.sc_tsarrayp = &cdt[2].chan_lts;
if (dt_listen(tsdevh3,&tsinfo) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh3));
exit(1);
}
/* Select tsdevh1 as conferee to remove from conference */
/* Unlisten the listening device tsdevh1 */
if (dt_unlisten(tsdevh1) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh1));
exit(1);
}
/* Prepare SCbus time slot information structure */
tsinfo.sc_numts = 1;
tsinfo.sc_tsarrayp = &scts;
/* Get transmit time slot of DTI tsdevh1 */
if (dt_getxmitslot(tsdevh1, &tsinfo) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh1));
exit(1);
}
/* Prepare the MS_CDT structure */
cdt[0].chan_num = (int)scts;
cdt[0].chan_sel = MSPN_TS;
/* And remove tsdevh1 from the conference */
if (dcb_remfromconf(dspdevh, confid, &cdt[0]) == -1) {
printf("Error Message : %s", ATDV_ERRMSGP(dspdevh));
exit(1);
}
/* Unlisten the remaining listening time slots */
if (dt_unlisten(tsdevh2) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh2));
exit(1);
}
if (dt_unlisten(tsdevh3) == -1){
printf("Error Message : %s", ATDV_ERRMSGP(tsdevh3));
exit(1);
}
/* Delete the conference */
if(dcb_delconf(dspdevh, confid)) == -1) {
printf("Cannot delete conference %d : Error Message = %s", confid,
ATDV_ERRMSGP(dspdevh));
exit(1);
}
/* Close all open devices */
if (dt_close(tsdevh1) == -1){
printf("Error closing tsdevh1\n");
exit(1);
}
if (dt_close(tsdevh2) == -1){
printf("Error closing tsdevh2\n");
exit(1);
}
if (dt_close(tsdevh3) == -1){
printf("Error closing tsdevh3\n");
exit(1);
}
if (dcb_close(dspdevh) == -1){
printf("Cannot close dcbB1D3 : errno = %d\n", errno);
exit(1);
}
}
If the function does not complete successfully, it will return -1 to indicate an error. Use the Standard Attribute functions ATDV_LASTERR( ) to obtain the applicable error value, or ATDV_ERRMSGP( ) to obtain a more descriptive error message.
Refer to the error type tables found in Chapter 2 of this guide. Error defines can be found in dtilib.h, msilib.h or dcblib.h.
Click here to contact Dialogic Customer Engineering
Copyright 2000, Dialogic Corporation