# Line states

The following table lists the line states. One or more transitional events associated with each state indicate transition into the state. An application can use nccGetLineStatus to determine the state of a line:

A line enters this state... | In this way...
--- | ---
Active | NCCEVN_SEIZURE_DETECTED event, when a call is coming in. By attempting to place a call using nccPlaceCall. NCCEVN_CALL_RETRIEVED event, which means a call is active and the line has reentered active state.
Blocking | NCCEVN_CALLS_BLOCKED event, which is solicited by nccBlockCalls.
Idle | NCCEVN_START_PROTOCOL_DONE event, which is solicited by nccStartProtocol. NCCEVN_CALLS_UNBLOCKED event, which is solicited by nccUnblockCalls. NCCEVN_LINE_IN_SERVICE event (an unsolicited event). NCCEVN_CALL_HELD or NCCEVN_CALL_DISCONNECTED event, from the active state. These events mean that a call was placed on hold or is disconnected, and is not active. When no calls are active on a line, the line enters idle line state.
Out of service | NCCEVN_LINE_OUT_OF_SERVICE event, which is an unsolicited event.
Uninitialized | Initial state of line. When the NCC API is opened on a context, the line handle (signified by the handle) is created in an uninitialized state. NCCEVN_STOP_PROTOCOL_DONE event, which is solicited by nccStopProtocol.

If all calls on a line are held or in disconnected call state so that all calls are inactive, the line state changes to idle. If a held call is retrieved or a new call comes in or is placed, the line state returns to active.

The following illustration shows the line states, and events indicating transitions between them: