
Description | Cautions | Example | Errors | See Also
Name: |
int dx_RxIottData(chdev, iottp, lpTerminations, wType, lpParams, mode) | |
Inputs: |
int chdev |
|
DX_IOTT *iottp |
| |
DV_TPT *lpTerminations |
| |
int wType |
| |
LPVOID lpParams |
| |
int mode |
| |
Returns: |
0 if successful -1 if error | |
Includes: |
dxxxlib.h srlib.h | |
Mode: |
Synchronous/asynchronous | |
The dx_RxIottData( ) function is used to receive data on a specified channel. The data may come from any combination of data files, memory, or custom devices. The wType parameter specifies the type of data to be received, for example ADSI data.
After dx_RxIottData( ) is called, data reception continues until one of the following occurs:
If the channel detects end of FSK data, the function is terminated and ATDX_TERMMSK( ) will return TM_EOD as the cause of termination.
Upon asynchronous completion of dx_RxIottData( ), the TDX_RXDATA event is posted.
Parameter |
Description |
chdev: |
The valid Dialogic channel device handle. |
iottp: |
The pointer to the I/O Transfer Table. The iottp parameter specifies the destination for the received data. This is the same DX_IOTT structure used in dx_playiottdata( ) and dx_reciottdata( ). |
lpTerminations: |
The pointer to the Termination Parameter Table. |
wType: |
Specifies the type of data to be received. To receive ADSI data, set wType to DT_ADSI.
|
lpParams: |
The pointer to information specific to the data type specified in wType. The format of the parameter block depends on wType. For ADSI data, set lpParams to point to an ADSI_XFERSTRUC structure. |
mode: |
Specifies how the function should execute, either EV_ASYNC (asynchronous) or EV_SYNC (synchronous). |
Library level data is buffered when it is received. Applications can adjust the size of the buffers to address buffering delay. The DXCH_RXDATABUFSIZE channel parameter can be used with the dx_setparm( ) and dx_getparm( ) functions to adjust the buffer size.
// Synchronous receive ADSI data
DX_IOTT iott = {0};
char *devnamep = "dxxxB1C1";
char buffer[16];
ADSI_XFERSTRUC adsimode;
DV_TPT tpt;
int chdev;
.
.
.
sprintf(buffer, "RECEIVE.ADSI");
if ((iott.io_fhandle = dx_fileopen(buffer, O_BINARY)) == -1) {
/* Perform system error processing */
exit(2);
}
if ((chdev = dx_open(devnamep, 0)) == -1) {
fprintf(stderr, "Error opening channel %s\n",devnamep);
dx_fileclose(iott.io_fhandle);
exit(1);
}
.
.
.
// destination is a file
iott.io_type = IO_DEV|IO_EOT;
iott.io_bufp = 0;
iott.io_offset = 0;
iott.io_length = -1;
adsimode.cbSize = sizeof(adsimode);
adsimode.dwRxDataMode = ADSI_NOALERT;
printf("Waiting for incoming ring\n");
dx_wtring(chdev, 2, DX_OFFHOOK, -1);
// Specify maximum time termination condition in the TPT.
// Application specific value is used to terminate dx_RxIottData( )
// if end of data is not detected over a specified duration.
tpt.tp_type = IO_EOT;
if (dx_clrtpt(&tpt, 1) == -1) {
// Process error
}
tpt.tp_termno = DX_MAXTIME;
tpt.tp_length = 1000;
tpt.tp_flags = TF_MAXTIME;
if (dx_RxIottData(chdev, &iott, NULL, DT_ADSI, &adsimode, EV_SYNC) < 0) {
fprintf(stderr, "ERROR: dx_TxIottData failed on Channel %s; error:
%s\n", ATDV_NAMEP(chdev), ATDV_ERRMSGP(chdev));
}
.
.
.
If the function returns -1 to indicate an error, use the SRL Standard Attribute function ATDV_LASTERR( ) to obtain the error code or you can use ATDV_ERRMSGP( ) to obtain a descriptive error message.
Possible error codes from the dx_RxIottData( ) function include the following:
Error Code |
Description |
EDX_BADPARM |
Invalid data mode |
EDX_BADIOTT |
Invalid DX_IOTT (pointer to I/O transfer table) |
EDX_BUSY |
Channel already executing I/O function |
EDX_SYSTEM |
Error from operating system; use dx_fileerrno( ) to obtain error value |
Click here to contact Dialogic Customer Engineering
Copyright 2002, Dialogic Corporation