11.2.2 Basic call control

24.3793GPPMission Critical Push To Talk (MCPTT) call controlProtocol specificationRelease 18TS

11.2.2.1 General

The maximum number of simultaneous off-network private calls is limited by the value of "/<x>/Common/PrivateCall/MaxCallN10" leaf node present in the UE configuration as specified in 3GPP TS 24.483 [45].

11.2.2.2 Private call control state machine

The figure 11.2.2.2-1 gives an overview of the main states and transitions on the UE for private call control.

Each private call control state machine is per MCPTT user ID.

Figure 11.2.2.2-1: Private call control state machine

11.2.2.3 Private call control states

11.2.2.3.1 P0: start-stop

In this state, no private call control entity exists.

11.2.2.3.2 P1: ignoring same call id

This state exists for UE, when the UE is not part of an ongoing private call.

11.2.2.3.3 P2: waiting for call response

This state exists for UE, when the UE has sent a PRIVATE CALL SETUP REQUEST message and is waiting for a response, PRIVATE CALL ACCEPT or PRIVATE CALL REJECT message.

11.2.2.3.4 P3: waiting for release response

This state exists for UE, when the UE has sent a PRIVATE CALL RELEASE message and is waiting for a PRIVATE CALL RELEASE ACK message.

11.2.2.3.5 P4: part of ongoing call

This state exists for UE, when the UE is part of an ongoing private call.

11.2.2.3.6 P5: pending

This state exists for UE, when the UE has presented a notification to the user for the received PRIVATE CALL SETUP REQUEST message and is waiting for a user indication.

11.2.2.4 Procedures

11.2.2.4.1 General
11.2.2.4.2 Private call setup
11.2.2.4.2.1 Initiating a private call

When in the "P0: start-stop" state or "P1: ignoring same call id", upon an indication from MCPTT User to initiate a private call and the value of "/<x>/<x>/Common/PrivateCall/Authorised" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true", the MCPTT client:

1) shall generate and store the call identifier as a random number uniformly distributed between (0, 65536);

2) shall store own MCPTT user ID as caller ID;

3) shall store MCPTT user ID of the callee as callee ID;

4) shall store "AUTOMATIC COMMENCEMENT MODE" as commencement mode, if requested and the value of "/<x>/<x>/Common/PrivateCall/AutoCommence" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true". Otherwise if the value of "/<x>/<x>/Common/PrivateCall/ManualCommence" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true", store "MANUAL COMMENCEMENT MODE" as commencement mode;

5) shall create a call type control state machine as described in clause 11.2.3.2;

6) if an end-to-end security context needs to be established then:

a) shall use keying material provided by the key management server to generate a PCK as described in 3GPP TS 33.180 [78];

b) shall use the PCK to generate a PCK-ID with the four most significant bits set to "0001" to indicate that the purpose of the PCK is to protect private call communications and with the remaining twenty eight bits being randomly generated as described in 3GPP TS 33.180 [78];

c) shall encrypt the PCK to a UID associated to the MCPTT client using the MCPTT ID and KMS URI of the invited user as determined by the procedures of clause 6.2.8.3.9 and a time related parameter as described in 3GPP TS 33.180 [78];

d) shall generate a MIKEY-SAKKE I_MESSAGE using the encapsulated PCK and PCK-ID as specified in 3GPP TS 33.180 [78];

e) shall add the MCPTT ID of the originating MCPTT user to the initiator field (IDRi) of the I_MESSAGE as described in 3GPP TS 33.180 [78];

f) shall sign the MIKEY-SAKKE I_MESSAGE using the originating MCPTT user’s signing key provided in the keying material together with a time related parameter, and add this to the MIKEY-SAKKE payload, as described in 3GPP TS 33.180 [78] and;

g) shall store the MIKEY-SAKKE I_MESSAGE for later inclusion in an SDP body;

7) may store current user location as user location;

8) shall generate and store offer SDP, as defined in clause 11.2.1.1.2;

9) shall generate a PRIVATE CALL SETUP REQUEST message as specified in clause 15.1.5. In the PRIVATE CALL SETUP REQUEST message, the MCPTT client:

a) shall set the Call identifier IE with the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with the stored callee ID;

d) shall set the Commencement mode IE with the stored commencement mode;

e) shall set the Call type IE with the stored current call type associated with the call type control state machine;

f) shall set the SDP offer IE with the stored offer SDP; and

g) may set the User location IE with the stored user location if the stored current call type associated with the call type control state machine is "EMERGENCY PRIVATE CALL".

10) shall send the PRIVATE CALL SETUP REQUEST message towards other MCPTT client according to rules and procedures as specified in clause 11.2.1.1.1;

11) shall initialize the counter CFP1 (private call request retransmission) with the value set to 1;

12) shall start timer TFP1 (private call request retransmission);

13) if in "P1: ignoring same call id" state, shall stop timer TFP7 (waiting for any message with same call identifier); and

14) shall enter the "P2: waiting for call response" state.

11.2.2.4.2.2 Private call setup request retransmission

When in the "P2: waiting for call response" state, upon expiry of timer TFP1 (private call request retransmission) and the value of the counter CFP1 (private call request retransmission) is less than the upper limit, the MCPTT client:

1) may update the stored user location with current user location;

2) shall increment the value of counter CFP1 (private call request retransmission) by 1;

3) shall generate a PRIVATE CALL SETUP REQUEST message as specified in clause 15.1.5. In the PRIVATE CALL SETUP REQUEST message, the MCPTT client:

a) shall set the Call identifier IE with the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with the stored callee ID;

d) shall set the Commencement mode IE with the stored commencement mode;

e) shall set the Call type IE with the stored current call type associated with the call type control state machine;

f) shall set the SDP offer IE with the stored offer SDP; and

g) may set the User location IE with stored user location if the stored current call type is "EMERGENCY PRIVATE CALL" associated with the call type control state machine.

4) shall send the PRIVATE CALL SETUP REQUEST message towards other MCPTT client according to rules and procedures as specified in clause 11.2.1.1.1;

5) shall start timer TFP1 (private call request retransmission); and

6) shall remain in the "P2: waiting for call response" state.

11.2.2.4.2.3 Ringing notification to the user

When in the "P2: waiting for call response" state, upon receiving a PRIVATE CALL RINGING message, the MCPTT client:

1) shall remain in the "P2: waiting for call response" state.

11.2.2.4.2.4 No response to private call setup request with automatic commencement mode

In the "P2: waiting for call response" state, when timer TFP1 (private call request retransmission) expires and the value of the counter CFP1 (private call request retransmission) is equal to the upper limit and the stored commencement mode is "AUTOMATIC COMMENCEMENT MODE", the MCPTT client:

1) shall start timer TFP7 (waiting for any message with same call identifier);

2) shall release the call type control state machine; and

3) shall enter the "P1: ignoring same call id" state.

11.2.2.4.2.5 No response to private call setup request with manual commencement mode

When in the "P2: waiting for call response" state when timer TFP1 (private call request retransmission) expires and the value of the counter CFP1 (private call request retransmission) is equal to the upper limit and the stored commencement mode is "MANUAL COMMENCEMENT MODE", the MCPTT client:

1) shall start timer TFP9 (waiting for call response message); and

2) shall remain in the "P2: waiting for call response" state.

11.2.2.4.2.6 No response to private call setup request after waiting for user acknowledgement

When in the "P2: waiting for call response" state, upon expiry of timer TFP9 (waiting for call response message), the MCPTT client:

1) shall start timer TFP7 (waiting for any message with same call identifier);

2) shall release the call type control state machine; and

3) shall enter the "P1: ignoring same call id" state.

11.2.2.4.2.7 Private call setup request rejected

When in the "P2: waiting for call response" state, upon receiving a PRIVATE CALL REJECT message in response to PRIVATE CALL SETUP REQUEST message with Call identifier IE same as the stored call identifier, the MCPTT client:

1) shall stop timer TFP1 (private call request retransmission), if running;

2) shall stop timer TFP9 (waiting for call response message), if running;

3) shall start timer TFP7 (waiting for any message with same call identifier);

4) shall release the call type control state machine; and

5) shall enter the "P1: ignoring same call id" state.

11.2.2.4.2.8 Private call setup request accepted

When in the "P2: waiting for call response" state, upon receiving a PRIVATE CALL ACCEPT message response to PRIVATE CALL SETUP REQUEST message with the same call identifier, the MCPTT client:

1) shall store the SDP answer IE received in the PRIVATE CALL ACCEPT message as answer SDP;

2) shall generate a PRIVATE CALL ACCEPT ACK message as specified in clause 15.1.11:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID; and

c) shall set the MCPTT user ID of the callee IE with the stored callee ID.

3) shall send the PRIVATE CALL ACCEPT ACK message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

4) shall stop timer TFP1 (private call request retransmission), if running;

5) shall stop timer TFP9 (waiting for call response message), if running;

6) shall establish a media session based on the SDP body of the stored answer SDP;

7) shall start floor control as originating floor participant as specified in clause 7.2 in 3GPP TS 24.380 [5];

8) shall start timer TFP5 (max duration); and

9) shall enter the "P4: part of ongoing call" state.

11.2.2.4.2.9 User cancels the private call setup request

When in the "P2: waiting for call response" state, upon an indication from MCPTT User to cancel the private call request, the MCPTT client:

1) shall generate a PRIVATE CALL RELEASE message as specified in clause 15.1.9;

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID; and

c) shall set the MCPTT user ID of the callee IE with the stored callee ID;

2) shall send the PRIVATE CALL RELEASE message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall stop timer TFP1 (private call request retransmission);

4) shall stop timer TFP9 (waiting for call response message);

5) shall start timer TFP3 (private call release retransmission);

6) shall initialize the counter CFP3 with value set to 1; and

7) shall enter the "P3: waiting for release response" state.

11.2.2.4.3 Private call setup in automatic commencement mode
11.2.2.4.3.1 Unable to establish media

When in the "P0: start-stop" or "P1: ignoring same call id" state, upon receiving a PRIVATE CALL SETUP REQUEST message with Call identifier IE different than stored call identifier and media session declared in SDP body of PRIVATE CALL SETUP REQUEST message cannot be established, the MCPTT client:

1) shall store the Call identifier IE in the received message as call identifier;

2) shall store the MCPTT user ID of the caller IE in the received PRIVATE CALL SETUP message as caller ID;

3) shall store own MCPTT user ID as callee ID;

4) shall generate a PRIVATE CALL REJECT message as specified in clause 15.1.8. In the PRIVATE CALL REJECT message, the MCPTT client:

a) shall set the Call identifier IE to the cached call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with stored callee ID; and

d) shall set the Reason IE as "FAILED", if requested to restrict notification of call failure and the value of "/<x>/<x>/Common/PrivateCall/FailRestrict" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true". Otherwise, shall set the Reason IE as "MEDIA FAILURE".

5) shall send the PRIVATE CALL REJECT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

6) shall start timer TFP7 (waiting for any message with same call identifier); and

7) shall enter the "P1: ignoring same call id" state if current state is the "P0: start-stop" state.

11.2.2.4.3.2 Responding to private call setup request when not participating in the ongoing call

When in the "P0: start-stop" or "P1: ignoring same call id" state, upon receiving a PRIVATE CALL SETUP REQUEST message with Commencement mode IE set to "AUTOMATIC COMMENCEMENT MODE" and Call identifier IE different than stored call identifier and media session declared in SDP body of PRIVATE CALL SETUP REQUEST message can be established, the MCPTT client:

1) shall store the Call identifier IE in the received message as call identifier;

2) shall create the call type control state machine as described in clause 11.2.3.2;

3) shall store the MCPTT user ID of the caller IE in the received PRIVATE CALL SETUP REQUEST message as caller ID;

4) shall store own MCPTT user ID as callee ID;

5) if the SDP offer contains an "a=key-mgmt" attribute field with a "mikey" attribute value containing a MIKEY-SAKKE I_MESSAGE:

a) shall extract the MCPTT ID of the originating MCPTT user from the initiator field (IDRi) of the I_MESSAGE as described in 3GPP TS 33.180 [78];

b) shall convert the MCPTT ID to a UID as described in 3GPP TS 33.180 [78];

c) shall use the UID to validate the signature of the MIKEY-SAKKE I_MESSAGE as described in 3GPP TS 33.180 [78];

d) if the validation of the signature failed, shall generate a PRIVATE CALL REJECT message as specified in clause 15.1.8. In the PRIVATE CALL REJECT message, the MCPTT client:

i) shall set the call identifier IE to the stored call identifier;

ii) shall set the MCPTT user ID of the caller IE with the stored caller ID;

iii) shall set the MCPTT user ID of the callee IE with the stored callee ID;

iv) shall set the Reason IE as "FAILED", if requested to restrict notification of call failure and the value of "/<x>/<x>/Common/PrivateCall/FailRestrict" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true". Otherwise, shall set the reason IE as "E2E SECURITY CONTEXT FAILURE";

v) shall send the PRIVATE CALL REJECT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

vi) shall release call type control state machine; and

vii) shall remain in the current state;

e) if the validation of the signature was successful:

i) shall extract and decrypt the encapsulated PCK using the terminating user’s (KMS provisioned) UID key as described in 3GPP TS 33.180 [78];

ii) shall extract the PCK-ID, from the payload as specified in 3GPP TS 33.180 [78];

iii) shall generate and store answer SDP based on received SDP offer IE in PRIVATE CALL SETUP REQUEST message, as defined in clause 11.2.1.1.2;

iv) shall generate a PRIVATE CALL ACCEPT message as specified in clause 15.1.7. In the PRIVATE CALL ACCEPT message, the MCPTT client:

A) shall set the Call identifier IE to the stored call identifier; and

B) shall set the MCPTT user ID of the caller IE with stored caller ID.

C) shall set the MCPTT user ID of the callee IE with stored callee ID; and

D) shall set the SDP answer IE with the stored answer SDP;

v) shall send PRIVATE CALL ACCEPT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

vi) shall establish a media session based on the SDP body of the stored answer SDP;

vii) shall initialize the counter CFP4 with value set to 1;

viii) shall start timer TFP4 (private call accept retransmission);

ix) if in "P1: ignoring same call id" state, shall stop timer TFP7 (waiting for any message with same call identifier); and

x) shall enter the "P5: pending" state; and

NOTE: With the PCK successfully shared between the originating MCPTT client and the terminating MCPTT client, both clients are able to use SRTP/SRTCP to create an end-to-end secure session.

6) if the SDP offer does not contain an "a=key-mgmt" attribute, the MCPTT client:

a) shall generate and store answer SDP based on received SDP offer IE in PRIVATE CALL SETUP REQUEST message, as defined in clause 11.2.1.1.2;

b) shall generate a PRIVATE CALL ACCEPT message as specified in clause 15.1.7:

i) shall set the Call identifier IE to the stored call identifier;

ii) shall set the MCPTT user ID of the caller IE with stored caller ID.

iii) shall set the MCPTT user ID of the callee IE with stored callee ID; and

iv) shall set the SDP answer IE with the stored answer SDP;

c) shall send PRIVATE CALL ACCEPT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

d) shall establish a media session based on the SDP body of the stored answer SDP;

e) shall initialize the counter CFP4 with value set to 1;

f) shall start timer TFP4 (private call accept retransmission);

g) if in "P1: ignoring same call id" state, shall stop timer TFP7 (waiting for any message with same call identifier); and

h) shall enter the "P5: pending" state.

11.2.2.4.3.3 Private call accept retransmission

When in the "P5: pending" state, upon expiry of timer TFP4 (private call accept retransmission), the MCPTT client:

1) shall generate a PRIVATE CALL ACCEPT message as specified in clause 15.1.7. In the PRIVATE CALL ACCEPT message, the MCPTT client:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with the stored callee ID; and

d) shall set the SDP answer IE with the stored answer SDP;

2) shall send PRIVATE CALL ACCEPT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall increment the value of the counter CFP4 (private call accept retransmission) by 1;

4) shall start timer TFP4 (private call accept retransmission); and

5) shall remain in the "P5: pending" state.

11.2.2.4.3.4 Establishing the call

When in the "P5: pending" state, upon receiving a PRIVATE CALL ACCEPT ACK message or RTP media from originating user, the MCPTT client:

1) shall stop timer TFP4(private call accept retransmission);

2) shall start floor control as terminating MCPTT client as specified in clause 7.2 in 3GPP TS 24.380 [5];

3) shall start timer TFP5 (max duration); and

4) shall enter the "P4: part of ongoing call" state.

11.2.2.4.3.5 Call failure

In the "P5: pending" state, when timer TFP4 (private call accept retransmission) expires and the value of the counter CFP4 (private call accept retransmission) is equal to the upper limit, the MCPTT client:

1) shall start timer TFP7 (waiting for any message with same call identifier);

2) shall release the call type control state machine; and

3) shall enter the "P1: ignoring same call id" state.

11.2.2.4.4 Private call setup in manual commencement mode
11.2.2.4.4.1 Incoming private call

When in the "P0: start-stop" or "P1: ignoring same call id" state, upon receiving a PRIVATE CALL SETUP REQUEST message with Commencement mode IE set to "MANUAL COMMENCEMENT MODE" and Call identifier IE different from stored call identifier, the MCPTT client:

1) shall store the Call identifier IE in the received message as call identifier;

2) shall create the call type control state machine as described in clause 11.2.3.2;

3) shall store the MCPTT user ID of the caller IE as received in the PRIVATE CALL SETUP REQUEST as caller ID;

4) shall store own MCPTT user ID as callee ID;

5) shall generate a PRIVATE CALL RINGING message as specified in clause 15.1.6;

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID; and

c) shall set the MCPTT user ID of the callee IE with the stored callee ID;

6) shall send PRIVATE CALL RINGING message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

7) if in "P1: ignoring same call id" state, shall stop timer TFP7 (waiting for any message with same call identifier);

8) shall start timer TFP2 (waiting for user to respond); and

9) shall enter the "P5: pending" state.

11.2.2.4.4.2 No response from the user

When in the "P5: pending" state, upon expiry of timer TFP2 (waiting for user to respond), the MCPTT client:

1) shall generate a PRIVATE CALL REJECT message as specified in clause 15.1.8:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with the stored callee ID; and

d) shall set the Reason IE as "FAILED".

2) shall send the PRIVATE CALL REJECT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall start timer TFP7 (waiting for any message with same call identifier);

4) shall release the call type control state machine; and

5) shall enter the "P1: ignoring same call id" state.

11.2.2.4.4.3 User accepts the private call setup request

When in the "P5: pending" state, upon an indication from MCPTT User to accept the incoming private call, the MCPTT client:

1) if the SDP offer contains an "a=key-mgmt" attribute field with a "mikey" attribute value containing a MIKEY-SAKKE I_MESSAGE:

a) shall extract the MCPTT ID of the originating MCPTT user from the initiator field (IDRi) of the I_MESSAGE as described in 3GPP TS 33.180 [78];

b) shall convert the MCPTT ID to a UID as described in 3GPP TS 33.180 [78];

c) shall use the UID to validate the signature of the MIKEY-SAKKE I_MESSAGE as described in 3GPP TS 33.180 [78];

d) if the validation of the signature failed, shall generate a PRIVATE CALL REJECT message as specified in clause 15.1.8. In the PRIVATE CALL REJECT message, the MCPTT client:

i) shall set the call identifier IE to the stored call identifier;

ii) shall set the MCPTT user ID of the caller IE with the stored caller ID;

iii) shall set the MCPTT user ID of the callee IE with the stored callee ID;

iv) shall set the Reason IE as "FAILED", if requested to restrict notification of call failure and the value of "/<x>/<x>/Common/PrivateCall/FailRestrict" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true". Otherwise, shall set the reason IE as "E2E SECURITY CONTEXT FAILURE";

v) shall send the PRIVATE CALL REJECT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

vi) shall stop timer TFP2 (waiting for user to respond);

vii) if timer TFP 7 is not running, shall start timer TFP7 (waiting for any message with same call identifier);

viii) shall release the call type control state machine; and

ix) shall enter the "P1: ignoring same call id" state;

e) if the validation of the signature was successful:

i) shall extract and decrypt the encapsulated PCK using the terminating user’s (KMS provisioned) UID key as described in 3GPP TS 33.180 [78];

ii) shall extract the PCK-ID, from the payload as specified in 3GPP TS 33.180 [78];

iii) shall generate and store answer SDP based on received SDP offer IE in PRIVATE CALL SETUP REQUEST message, as defined in clause 11.2.1.1.2;

iv) shall generate a PRIVATE CALL ACCEPT message as specified in clause 15.1.7. In the PRIVATE CALL ACCEPT message, the MCPTT client:

A) shall set the Call identifier IE to the stored call identifier;

B) shall set the MCPTT user ID of the caller IE with the stored caller ID;

C) shall set the MCPTT user ID of the callee IE with the stored callee ID; and

D) shall set the SDP answer IE with the stored answer SDP;

v) shall send the PRIVATE CALL ACCEPT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

vi) shall establish a media session based on the SDP body of the private call;

vii) shall stop timer TFP2 (waiting for user to respond);

viii) shall initialize the counter CFP4 with value set to 1;

ix) shall start timer TFP4 (private call accept retransmission); and

x) shall remain in the "P5: pending" state; and

NOTE: With the PCK successfully shared between the originating MCPTT client and the terminating MCPTT client, both clients are able to use SRTP/SRTCP to create an end-to-end secure session.

2) if the SDP offer does not contain an "a=key-mgmt" attribute, the MCPTT client:

a) shall generate and store answer SDP based on received SDP offer IE in PRIVATE CALL SETUP REQUEST message, as defined in clause 11.2.1.1.2;

b) shall generate a PRIVATE CALL ACCEPT message as specified in clause 15.1.7. In the PRIVATE CALL ACCEPT message, the MCPTT client:

i) shall set the Call identifier IE to the stored call identifier;

ii) shall set the MCPTT user ID of the caller IE with the stored caller ID;

iii) shall set the MCPTT user ID of the callee IE with the stored callee ID; and

iv) shall set the SDP answer IE with the stored answer SDP;

c) shall send the PRIVATE CALL ACCEPT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

d) shall establish a media session based on the SDP body of the private call;

e) shall stop timer TFP2 (waiting for user to respond);

f) shall initialize the counter CFP4 with value set to 1;

g) shall start timer TFP4 (private call accept retransmission); and

h) shall remain in the "P5: pending" state.

11.2.2.4.4.4 Private call accept retransmission

When in the "P5: pending" state, upon expiry of timer TFP4 (private call accept retransmission), the MCPTT client:

1) shall generate a PRIVATE CALL ACCEPT message as specified in clause 15.1.7. In the PRIVATE CALL ACCEPT message, the MCPTT client:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with the stored callee ID; and

d) shall set the SDP answer IE with the stored answer SDP;

2) shall send PRIVATE CALL ACCEPT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall increment the value of the (counter CFP4 private call accept retransmission) by 1;

4) shall start timer TFP4 (private call accept retransmission); and

5) shall remain in the "P5: pending" state.

11.2.2.4.4.5 Establishing the call

When in the "P5: pending" state, upon receiving a PRIVATE CALL ACCEPT ACK message or RTP media from originating user, the MCPTT client:

1) shall stop timer TFP4 (private call accept retransmission);

2) shall start floor control as terminating MCPTT client as specified in clause 7.2 in 3GPP TS 24.380 [5];

3) shall start timer TFP5 (max duration); and

4) shall enter the "P4: part of ongoing call" state.

11.2.2.4.4.6 Call failure

In the "P5: pending" state, when timer TFP4 (private call accept retransmission) expires and the value of the counter CFP4 (private call accept retransmission) is equal to the upper limit, the MCPTT client:

1) shall start timer TFP7 (waiting for any message with same call identifier);

2) shall release the call type control state machine; and

3) shall enter the "P1: ignoring same call id" state.

11.2.2.4.4.7 User rejects the private call setup request

When in the "P5: pending" state, upon an indication from MCPTT User to reject the incoming private call, the MCPTT client:

1) shall generate a PRIVATE CALL REJECT message as specified in clause 15.1.8:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID;

c) shall set the MCPTT user ID of the callee IE with stored callee ID; and

d) shall set the Reason IE as "FAILED", if requested to restrict notification of call failure and the value of "/<x>/<x>/Common/PrivateCall/FailRestrict" leaf node present in the user profile as specified in 3GPP TS 24.483 [45] is set to "true". Otherwise, shall set the Reason IE as "REJECT";

2) shall send the PRIVATE CALL REJECT message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall stop timer TFP2 (waiting for user to respond);

4) shall start timer TFP7 (waiting for any message with same call identifier);

5) shall release the call type control state machine; and

6) shall enter the "P1: ignoring same call id" state.

11.2.2.4.4.8 Caller cancels the private call setup request before call establishment

When in the "P5: pending" state or "P1: ignoring same call id" state, upon receiving a PRIVATE CALL RELEASE message, the MCPTT client:

1) shall generate a PRIVATE CALL RELEASE ACK message as specified in clause 15.1.10. In the PRIVATE CALL RELEASE ACK message, the MCPTT client:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with the stored caller ID; and.

c) shall set the MCPTT user ID of the callee IE with the stored callee ID.

2) shall send the PRIVATE CALL RELEASE ACK message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) if in the "P5: pending" state and timer TFP7 (waiting for any message with same call identifier) is not running, shall start timer TFP7 (waiting for any message with same call identifier);

4) shall stop timer TFP2 (waiting for user to respond), if running;

5) shall stop timer TFP4 (private call accept retransmission) if running;

6) shall release the call type control state machine, if the current state is "P5: pending" state; and

7) shall enter the "P1: ignoring same call id" state, if the current state is "P5: pending" state.

11.2.2.4.5 Private call release
11.2.2.4.5.1 Releasing a private call

When in the "P4: part of ongoing call" state, upon an indication from MCPTT User to release a private call, the MCPTT client:

1) shall generate a PRIVATE CALL RELEASE message as specified in clause 15.1.9. In the PRIVATE CALL RELEASE message, the MCPTT client:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with stored caller ID; and

c) shall set the MCPTT user ID of the callee IE with stored callee ID.

2) shall send the PRIVATE CALL RELEASE message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall stop timer TFP5 (max duration);

4) shall initialize the counter CFP3 (private call release retransmission) with the value set to 1;

5) shall start timer TFP3 (private call release retransmission); and

6) shall enter the "P3: waiting for release response" state.

11.2.2.4.5.2 Private call release retransmission

When in the "P3: waiting for release response" state, upon expiry of timer TFP3 (private call release retransmission), the MCPTT client:

1) shall generate a PRIVATE CALL RELEASE message as specified in clause 15.1.9. In the PRIVATE CALL RELEASE message, the MCPTT client:

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE with stored caller ID; and

c) shall set the MCPTT user ID of the callee IE with the stored callee ID.

2) shall send the PRIVATE CALL RELEASE message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall increment the value of timer CFP3 by 1;

4) shall start timer TFP3 (private call release retransmission); and

5) shall remain in the "P3: waiting for release response" state.

11.2.2.4.5.3 No response to private call release

In the "P3: waiting for release response" state, when timer TFP3 (private call request retransmission) expires and the value of the counter CFP3 (private call release retransmission) is equal to the upper limit, the MCPTT client:

1) shall terminate the media session;

2) shall start timer TFP7 (waiting for any message with same call identifier);

3) shall release the call type control state machine; and

4) shall enter the "P1: ignoring same call id" state.

11.2.2.4.5.4 Acknowledging private call release after call establishment

When in the "P4: part of ongoing call" state, upon receiving a PRIVATE CALL RELEASE message, the MCPTT client:

1) shall generate a PRIVATE CALL RELEASE ACK message as specified in clause 15.1.10;

a) shall set the Call identifier IE to the stored call identifier;

b) shall set the MCPTT user ID of the caller IE the stored caller ID; and

c) shall set the MCPTT user ID of the callee IE with the stored callee ID.

2) shall send the PRIVATE CALL RELEASE ACK message in response to the request message according to rules and procedures as specified in clause 11.2.1.1.1;

3) shall terminate the media session for private call;

4) shall stop timer TFP5 (max duration);

5) shall start timer TFP7 (waiting for any message with same call identifier);

6) shall release the call type control state machine; and

7) shall enter the "P1: ignoring same call id" state.

11.2.2.4.5.5 Private call release acknowledged

When in the "P3: waiting for release response" state, upon receiving a PRIVATE CALL RELEASE ACK to PRIVATE CALL RELEASE message, the MCPTT client:

1) shall stop timer TFP3 (private call release retransmission), if running;

2) shall terminate the media session;

3) shall start timer TFP7 (waiting for any message with same call identifier);

4) shall release the call type control state machine; and

5) shall enter the "P1: ignoring same call id" state.

11.2.2.4.5.6 Max duration reached

When in the "P4: part of ongoing call" state, upon expiry of timer TFP5 (max duration), the MCPTT client:

1) shall terminate the media session;

2) shall start timer TFP7 (waiting for any message with same call identifier);

3) shall release the call type control state machine; and

4) shall enter the "P1: ignoring same call id" state.

11.2.2.4.5.7 Stop ignoring same call id

When in the "P1: ignoring same call id" state, upon expiry of timer TFP7 (waiting for any message with same call identifier) the MCPTT client:

1) shall clear the stored call identifier; and

2) shall enter the "P0: start-stop" state.

11.2.2.4.5.8 No response to emergency private call setup request

In the "P4: part of ongoing call" state, when timer TFP1 (private call request retransmission) expires and the value of the counter CFP1 (private call request retransmission) is equal to the upper limit, the MCPTT client:

1) shall start timer TFP7 (waiting for any message with same call identifier);

2) shall stop timer TFP5 (max duration);

3) shall release the call type control state machine; and

4) shall enter the "P1: ignoring same call id" state.

11.2.2.4.5.9 No response to emergency private call cancel

In the "P4: part of ongoing call" state, when timer TFP6 (emergency private call cancel retransmission) expires and the value of the counter CFP6 (emergency private call cancel retransmission) is equal to the upper limit, the MCPTT client:

1) shall start timer TFP7 (waiting for any message with same call identifier);

2) shall stop timer TFP5 (max duration);

3) shall release the call type control state machine; and

4) shall enter the "P1: ignoring same call id" state.

11.2.2.4.6 Error handling
11.2.2.4.6.1 Unexpected MONP message received

Upon receiving a MONP message in a state where there is no handling specified for the MONP message, the MCPTT client shall discard the MONP message.

11.2.2.4.6.2 Unexpected indication from MCPTT user

Upon receiving an indication from the MCPTT user in a state where there is no handling specified for the indication, the MCPTT client shall ignore the indication.

11.2.2.4.6.3 Unexpected expiration of a timer

Upon expiration of a timer in a state where there is no handling specified for expiration of the timer, the MCPTT client shall ignore the expiration of the timer.