Interpreting TCallInfoV1::iExitCode value
TCallInfoV1::iExitCode gives the reason for the termination of a finished call. CTelephony::GetCallInfo() writes the information to a packaged CTelephony::TCallInfoV1.
iExitCode contains negative value such as -279971796 on successful completion of GetCallInfo(). This value varies based on the network operator.
The network-originated error codes (the network will determine which error code it sends to the phone) are translated into one of the extended error codes and placed in the upper 16 bits of the result code. The lower 16 bits will be filled with KErrGeneral unless there is an appropriate E32 or core ETel error code.
When the line status is CTelephony::EStatusDisconnecting, CTelephony::GetCallInfo() can be called to get the iExitCode value.
To retrieve error code from the lower 16 bits of the code:
TInt etelCode= (callInfoV1.iExitCode | 0xFFFF0000);
To retrieve error code from upper 16 bits of the code:
TInt netCode = (callInfoV1.iExitCode >> 16);
iExitCode values in the most typical use cases are:
1. MO call reaches busy called party: iExitCode contains -279971796. Here etelCode is -2004 (KErrEtelBusyDetected) and netCode is -4273 (KErrGsmCCUserBusy).
2. MO call not answered by remote party: iExitCode contains -280102872.
Here etelCode is -2008 (KErrEtelNoAnswer<tt>) and <tt>netCode is -4275 (KErrGsmCCUserAlertingNoAnswer).
3. MO call reaches a switched off phone: iExitCode contains -280035330. Here etelCode is -2 (KErrGeneral) and netCode is -4274 (KErrGsmCCUserNotResponding).
The error code(s) returned by the network are operator specific.