(Page 15 of 80 in this chapter)
typedef struct
{ /* used by adiGetCallStatus */
DWORD size ; /* size returned by adiGetCallStatus */
DWORD state; /* call states */
INT32 reason; /* reason for going back to IDLE state */
char calledaddr [ADI_MAX_DIGITS+1];
/* DNIS info (null term string) */
char callingaddr[ADI_MAX_DIGITS+1];
/* ANI info (null term string) */
char callingname[ADI_MAX_CNAME+1];
/* Calling party name */
DWORD pendingcommand;
/* current unack'ed command */
char usercategory; /* the type of the calling party */
char tollcategory; /* (generally same as usercategory) */
WORD reserved;
} ADI_CALL_STATUS;
void myShowCallState( CTAHD ctahd )
{
ADI_CALL_STATUS call_status;
adiGetCallStatus( ctahd, &call_status, sizeof call_status );
switch( call_status.state )
{
case ADI_CC_STATE_STOPPED: puts("Stopped/not active"); break;
case ADI_CC_STATE_IDLE: puts("Idle/active/waiting"); break;
case ADI_CC_STATE_INCOMING_CALL: puts("Incoming call avail"); break;
case ADI_CC_STATE_ANSWERING_CALL: puts("Answering call"); break;
case ADI_CC_STATE_PLACING_CALL: puts("Placing call"); break;
case ADI_CC_STATE_DISCONNECTED: puts("Remote disconnected"); break;
case ADI_CC_STATE_BLOCKING: puts("App blocking calls"); break;
case ADI_CC_STATE_CONNECTED: puts("Connected/conversation"); break;
case ADI_CC_STATE_REJECTING_CALL: puts("Rejecting incoming call"); break;
case ADI_CC_STATE_OUT_OF_SERVICE: puts("Line out-of-service"); break;
case ADI_CC_STATE_PLACING_CALL2: puts("Placing 2nd call/xfer"); break;
case ADI_CC_STATE_CONNECTED2: puts("Connected to 2nd call"); break;
}
}
(Page 15 of 80 in this chapter)