# NCC functions and call states

The following table lists which NCC API calls can be made from each of the states of the call state machine.

Functions marked with an asterisk (*) can be called in the indicated states if they are supported by the service implementation and protocol. The NCC_CAP_HOLD_IN_ANY_STATE indicator in the capabilitymask returned by nccQueryCapability indicates if the protocol allows calls to be held or retrieved from any state.

NCC function | Call state
--- | ---
Accepting | Answering | Connected | Disconnected | Incoming | Outbound initiated | Placing | Proceeding | Receiving digits | Rejecting | Seizure
nccAcceptCall |  |  |  |  | X |  |  |  | X |  |
nccAnswerCall | X |  |  |  | X |  |  |  | X |  |
nccAutomaticTransfer |  |  | X |  |  |  |  |  |  |  |
nccDisconnectCall |  |  | X |  |  | X | X | X |  |  |
nccGetCallStatus | X | X | X | X | X | X | X | X | X | X | X
nccGetExtendedCallStatus | X | X | X | X | X | X | X | X | X | X | X
nccHoldCall (*) | X * | X * | X | X * | X * | X * | X * | X * | X * | X * | X *
nccRejectCall | X |  |  |  | X |  |  |  | X |  |
nccReleaseCall |  |  |  | X |  |  |  |  |  |  |
nccRetrieveCall (*) | X * | X * | X | X * | X * |  | X * | X * | X * | X * | X *
nccSendCallMessage | X | X | X | X | X | X | X | X | X | X | X
nccSendDigits |  |  |  |  |  |  | X |  |  |  |
nccSetBilling | X | X | X |  | X |  |  |  | X | X | X
nccTransferCall |  |  | X |  |  |  |  |  |  |  |

## NCC functions and capability masks

The following table lists the functions that are not supported by some protocols, and the name of the bit in the capabilitymask returned by nccQueryCapability that indicates if the function is supported.

NCC function | Capability mask
--- | ---
nccAcceptCall | NCC_CAP_ACCEPT_CALL
nccAutomaticTransfer | NCC_CAP_AUTOMATIC_TRANSFER
nccGetExtendedCallStatus | NCC_CAP_EXTENDED_CALL_STATUS
nccHoldCall | NCC_CAP_HOLD_CALL
nccRetrieveCall | NCC_CAP_HOLD_CALL
nccSendCallMessage | NCC_CAP_SEND_CALL_MESSAGE
nccSendDigits | NCC_CAP_OVERLAPPED_SENDING
nccSetBilling | NCC_CAP_SET_BILLING
nccTransferCall | NCC_CAP_SUPERVISED_TRANSFER NCC_CAP_TWOCHANNEL_TRANSFER

For more information, refer to Protocol capabilities.

nccDisconnectCall can also be called in the following states when the NCC_CAP_DISCONNECT_IN_ANY_STATE indicator is set in the capabilitymask returned by nccQueryCapability:

- Accepting

- Answering

- Incoming

- Receiving digits

- Rejecting

- Seizure

nccTransferCall can also be called in the following states when conducting two channel transfer. The NCC_CAP_TWOCHANNEL_TRANSFER indicator in the capabilitymask returned by nccQueryCapability indicates if the protocol supports two channel transfer:

- Accepting

- Answering

- Incoming

- Outbound initiated

- Placing

- Proceeding

- Receiving digits

- Rejecting

- Seizure