Sequence diagrams

This section contains sequence diagrams for the most common use cases. Using the same patterns such as the one described here, enables more advanced use cases.

Get device settings

The following diagram illustrates how to get settings from the device.

Get device settings

Apply device settings

The following diagram illustrates how to apply settings to the device.

Apply device settings

Call Control

The term call control covers the integration between a headset and softphone software on a PC that involve incoming and outgoing calls. Some of the possible integration points are:

  • Reflecting the state of a call (active call, hold, inactive).
  • Reflecting the microphone mute state (muted or unmuted).
  • Changing states (via button presses):
    • Accepting or rejecting calls.
    • Putting a call on hold or resuming a held call.
    • Muting or unmuting the microphone.
    • Redial or dial.
  • Setting the ringer on or off (indicated by either audio or blinking LEDs on the device).

Call lock

The first step before changing any of the devices' states is acquiring a call lock. While it is possible to use the Jabra SDK to modify a device's state without acquiring a call lock, using the lock is a hard requirement to make sure that two softphone products are not clashing with each other and invalidating the state of a headset that is in use by another softphone.

Once a call is finished, it is equally important to release the call lock. Now other softphone products (or subsequent phone calls to your product) can successfully acquire (or reacquire) the call lock for the device.

Depending on the situation, the lock might already be acquired (usually when executing multiple features in quick succession), so an internal check for the lock should always be the first step.

[Note] If acquiring the call lock fails, it is usually because another softphone is currently using the device.

The following diagrams illustrate how to use the call lock functions Jabra_GetLock(), Jabra_ReleaseLock() and Jabra_IsLocked() when doing call control.

Use Call Lock when starting and ending a call

How to use call lock when starting and ending a call

Acquire Call Lock before any Call Control operation

Call lock must be acquired before any call control operation

Off-Hook

The following diagrams illustrate how to implement off-hook/on-hook scenarios in your softphone. Proper call lock handling (see above) is implied in the Softphone-SDK integration.

Softphone initiated Off-Hook

Softphone OffHook initiation

User initiated Off-Hook

User initiated OffHook

Mute

The following diagrams illustrate how to implement mute/unmute scenarios in your softphone.

Softphone initiated Mute

Softphone initiated Mute

User initiated Mute

User initiated Mute

Hold

The following diagrams illustrate how to implement hold/resume call scenarios in your softphone.

Softphone initiated Hold

Softphone initiated Hold

User initiated Hold

User initiated hold

Remote MMI – button takeover

Button takeover

Child device handling

Child device handling