Bluetooth Link Quality

This datapoint indicates the quality of the connection between the USB dongle and wireless device. This information can be used to determine if the Bluetooth connection caused a bad call experience for the user.

Datapoint

   
Name in Jabra SDK LinkQualityEventArgs.LinkQuality
Trigger A subscription to this datapoint will immediately trigger the first reported event. From then on, the device needs to be offhooked and the bluetooth quality needs to change to trigger an event.
Note: Link quality changes of onhooked devices do not trigger events! The link quality change will only be reported, once the device is offhooked.
Event Subscription IDevice.LinkQuality
Value Range Off = Dongle lost connection.
Low = Link quality is low.
High = Link quality is high.

Supported SDKs

SDK Support SDK Version
SDK for Browser No
SDK for Linux Yes From v1.11
SDK for macOS Yes From v1.11
SDK for Windows Yes From v1.11
SDK for Node.js No
SDK for JavaScript No

Supported devices

Device Support Firmware Version
Jabra Link 370 No
Jabra Link 380 Yes From v1.12.4

Code Sample

The code sample demonstrates the event subscription. It shows how to parse the event to get back the data for the datapoint.

To receive the first link quality event when the listener is added, it is best practice to only add the listener when the device goes offhook. To make sure you get the value again when a second call starts, remember to remove the listener when the device goes onhook.

There is no function to check if link quality is supported, but an exception is raised when adding the listener on an unsupported device, so make sure to catch it.

using System;
using System.Collections.Generic;
using JabraSDK;

namespace Jabra.TelemetryExample
{
    public class TelemetryPrinter
    {
        public TelemetryPrinter(IDeviceService deviceService)
        {
            deviceService.DeviceAdded += OnDeviceAddedEvent;
        }

        private void OnDeviceAddedEvent(object sender, DeviceAddedEventArgs e)
        {
            try
            {
                // It is not guaranteed that the sender of the LinkQuality event is the device ID,
                // so we create a local function and pass the DeviceId
                void LinkQualityFunc(object linkQualitySender, LinkQualityEventArgs linkQualityArgs) => 
                        OnLinkQualityEvent(e.Device.DeviceId, linkQualityArgs);

                e.Device.LinkQuality += LinkQualityFunc;
            }
            catch
            {
                Console.WriteLine($"Bluetooth link quality not supported for {e.Device.Name} (ID: {e.Device.DeviceId})");
            }
        }

        private void OnLinkQualityEvent(int deviceId, LinkQualityEventArgs e)
        {
            Console.WriteLine($"Bluetooth link quality for device with ID {deviceId} is: {e.LinkQuality}");
        }
    }
}