How to get "LINECALLSTATE_RINGBACK" by TAPI ?

Taipei_Chen522

New Member
How to get "LINECALLSTATE_RINGBACK" by TAPI ?

I write a program tha can make phone call(and answer phone call) on smartphone.
It works well. But, there is a problem in phone call.
It can get:
"LINECALLSTATE_DIALING"
"LINECALLSTATE_PROCEEDING"
"LINECALLSTATE_CONNECTED"
....and other states.

But, "LINECALLSTATE_RINGBACK" did not show up. (Never show up)

Test Result:
LineCallState Dialing
LineDevState MsgWaitOn
LineCallState Proceeding
LineDevState Open
LineDevState MsgWaitOn
LineDevState DevSpecific
LineCallState Connected
...
...
...
LineDevState Maintenance
LineDevState Terminals
...


I can not get "LINECALLSTATE_RINGBACK" even if I use lineGetCallStatus(g_hCall, &lineCallStatus); continuously to get the callstate.

Can anyone tell me why ?? thank you very much.

================================
LINE_CALLSTATE for reference:
#define LINECALLSTATE_IDLE 0x00000001
#define LINECALLSTATE_OFFERING 0x00000002 <----Yes, Get it
#define LINECALLSTATE_ACCEPTED 0x00000004
#define LINECALLSTATE_DIALTONE 0x00000008
#define LINECALLSTATE_DIALING 0x00000010 <----Yes, Get it
#define LINECALLSTATE_RINGBACK 0x00000020 ???? No ,did not get it !!
#define LINECALLSTATE_BUSY 0x00000040
#define LINECALLSTATE_SPECIALINFO 0x00000080
#define LINECALLSTATE_CONNECTED 0x00000100 <----Yes, Get it
#define LINECALLSTATE_PROCEEDING 0x00000200
#define LINECALLSTATE_ONHOLD 0x00000400
#define LINECALLSTATE_CONFERENCED 0x00000800
#define LINECALLSTATE_ONHOLDPENDCONF 0x00001000
#define LINECALLSTATE_ONHOLDPENDTRANSFER 0x00002000
#define LINECALLSTATE_DISCONNECTED 0x00004000
#define LINECALLSTATE_UNKNOWN 0x00008000

=========================================
My code for reference:

while ((dwReturn = lineInitialize(&g_hLineApp, g_hInstance, (LINECALLBACK)lineCallbackFunc, g_szDialerTitle, &g_dwNumDevs)) == LINEERR_REINIT) {
Sleep(5000);
};

--------------------------------
// Open the current line.
if (dwReturn = lineOpen( g_hLineApp, g_dwCurrentLineID, &g_CurrentLineInfo.hLine,
g_CurrentLineInfo.dwAPIVersion, 0, 0, LINECALLPRIVILEGE_NONE , 0, NULL))
{
MessageBeep(MB_ICONASTERISK);
goto exit;
}
-----------------------------------
g_MakeCallRequestID = lineMakeCall(g_CurrentLineInfo.hLine, &g_hCall, g_szCurrentPhoneNum, 0, NULL);

------------------------------------
inline void CALLBACK lineCallbackFunc(DWORD hDevice, DWORD dwMsg, DWORD dwCallbackInstance,
DWORD dwParam1, DWORD dwParam2, DWORD dwParam3) {

switch (dwMsg) {
case LINE_CALLSTATE:
switch (dwParam1) {
case LINECALLSTATE_IDLE:
AddMessage(TEXT("LineCallState Idle"));
break;

case LINECALLSTATE_OFFERING:
AddMessage(TEXT("LineCallState Offering"));
break;

case LINECALLSTATE_ACCEPTED:
AddMessage(TEXT("LineCallState Accepted"));
break;

case LINECALLSTATE_DIALTONE:
AddMessage(TEXT("LineCallState DialTone"));
break;

case LINECALLSTATE_DIALING:
AddMessage(TEXT("LineCallState Dialing"));
break;

case LINECALLSTATE_RINGBACK:
AddMessage(TEXT("LineCallState RingBack"));
break;

case LINECALLSTATE_BUSY:
AddMessage(TEXT("LineCallState Busy"));
break;

case LINECALLSTATE_SPECIALINFO:
AddMessage(TEXT("LineCallState SpecialInfo"));
break;

case LINECALLSTATE_CONNECTED:
AddMessage(TEXT("LineCallState Connected"));
break;

case LINECALLSTATE_PROCEEDING:
AddMessage(TEXT("LineCallState Proceeding"));
break;

case LINECALLSTATE_ONHOLD:
AddMessage(TEXT("LineCallState OnHold"));
break;

case LINECALLSTATE_CONFERENCED:
AddMessage(TEXT("LineCallState Conferenced"));
break;

case LINECALLSTATE_ONHOLDPENDCONF:
AddMessage(TEXT("LineCallState OnHoldPendConf"));
break;

case LINECALLSTATE_ONHOLDPENDTRANSFER:
AddMessage(TEXT("LineCallState OnHoldPendTransfer"));
break;

case LINECALLSTATE_DISCONNECTED:
AddMessage(TEXT("LineCallState DisConnected"));
break;

case LINECALLSTATE_UNKNOWN:
AddMessage(TEXT("LineCallState Unknown"));
break;

} //switch (dwParam1)

} //switch (dwMsg)

} //End of lineCallbackFunc
 
Top