Jabra SDK Windows User Guide
Revision History
Revision | Date | Description |
---|---|---|
4.10 | 2021-02-17 | Call Lock features |
4.9 | 2020-03-24 | New API for Evolve2 devices and updated device list. |
4.8 | 2019-11-08 | Updated supported device list. |
4.7 | 2019-09-27 | Added new APIs. Updated supported device list. |
4.6 | 2019-07-12 | Deprecated GetSerialNumber and GetWarrantyEndDate APIs |
4.5 | 2019-05-24 | Updated library interfaces for firmware update APIs |
4.4 | 2018-11-15 | Updated library interfaces |
4.3 | 2018-09-27 | Removed load and save settings interfaces |
4.2 | 2018-09-25 | Updated library interfaces - Removed lock references |
4.1 | 2018-04-12 | Updated library interfaces |
4.0 | 2017-12-12 | Updated library interfaces |
3.0 | 2017-11-10 | Updated features of dongle & child separation and Firmware Updater download from cloud. |
2.0 | 2017-08-24 | Updated features for Save & Load Setting, Logging and Firmware Updater. |
1.0 | 2017-05-09 | Initial Draft |
Introduction
Jabra SDK V2 is a dynamic linking library (dll), provides interfaces to perform below functionalities in Jabra devices:
- Device Settings: Allows the user to view and change settings of the attached Jabra devices
- Remote Call control (RCC): Allows user to perform remote call control functionalities
- Get and set HID reports to and from the attached Jabra device
- Acquire and release device call lock
- Answer and End
- Mute and Unmute Call
- Ring indication
- Hold and Resume Call
- Manual Audio
- Get device serial number, battery status if supported by the device
- Button configuration (button takeover and remote MMI)
- Child device support with Link360, Link370
- Busy light indication
- Concurrency support for multiple applications of SDK
- Co-existence with Jabra Direct
- Device events logging
- Device firmware update
- Device catalogue and proxy server support
- Device settings password protection
- Log File Size and Backup
- Control HID working state
- Std. HID events for Jabra and non Jabra devices
The SDK is built as a C++ dynamic library with C interfaces.
Abbreviations and Acronyms
Acronym | Description |
---|---|
API | Application Programming Interface |
DLL | Dynamic Linked Library |
HID | Human Interface Device |
SDK | Software Development Kit |
IDE | Integrated Development Environment |
USB | Universal Serial Bus |
HTTP | Hypertext Transfer Protocol |
JSON | JavaScript Object Notation |
WPF | Windows Presentation Foundation |
RCC | Remote Call Control |
MMI | Man Machine Interface |
FWU | Firmware Updater |
SDK Installation
SDK Windows release package would consist of the following directories:
- demo - Demo application and it's source code
- doc - user guide and release notes
- library - static and dynamic libraries required for development and header files
- readme text file
The directories contain following assets:
Assets | Description |
---|---|
readme.txt | Provides information on Jabra SDK V2 |
doc/SDK User Guide.html | User Guide and API documentation |
doc/Jabra SDK API.chm | Doxygen generated API documentation |
doc/ReleaseNotes.txt | Release information and supported devices list |
library/[platform]/libjabra.dll | Jabra SDK dynamic library for platform (x86 and x64) |
library/[platform]/libjabra.lib | Static library for platform (x86 and x64) |
library/Headers/JabraNativeHid.h | Header file defining the RCC APIs |
library/Headers/JabraDeviceConfig.h | Header file defining the dynamic setting APIs |
library/Headers/Common.h | Header file defining the common interfaces used across Jabra SDK V2 |
library/Headers/Interface_*.h | Header files included by Common.h |
library/Headers/returncodes.inc | Include file defining the Return codes |
library/Headers/errorcodes.inc | Include file defining the Error codes |
demo/Jabra SDK Demo | Demo application |
demo/src | Demo application source code (Visual Studio C# project) |
library/Nuget/JabraSDK.x.x.x.xx.nupkg | Jabra SDK .Net Wrapper |
doc/DotNet Guide.html | Wrapper user guide and API documentation |
doc/Jabra DotNet SDK API.chm | Doxygen generated Wrapper API documentation |
Supported Jabra Devices
The following Jabra devices are supported by the SDK:
- AudioCodes HRS 457
- DELL PRO STEREO HEADSET UC150
- DELL PRO STEREO HEADSET UC350
- HP UC Wired Headset V2
- Jabra BIZ 1100 Mono
- Jabra BIZ 1100 Stereo
- Jabra BIZ 1500 USB Duo
- Jabra BIZ 1500 USB Mono
- Jabra BIZ 2300 USB Duo
- Jabra BIZ 2300 USB Mono
- Jabra BIZ 2400
- Jabra BIZ 2400 II CC USB Mono MS
- Jabra BIZ 2400 II CC USB Mono UC
- Jabra BIZ 2400 II CC USB Stereo
- Jabra BIZ 2400 II USB BT Duo MS
- Jabra BIZ 2400 II USB BT Duo UC
- Jabra BIZ 2400 II USB BT Mono MS
- Jabra BIZ 2400 II USB BT Mono UC
- Jabra BIZ 2400 USB MS Duo
- Jabra BIZ 2400 USB Mono
- Jabra BIZ 2400 USB UC Duo
- Jabra DIAL 550
- Jabra Engage 50 Mono
- Jabra Engage 50 Stereo
- Jabra Engage 65 Convertible
- Jabra Engage 65 Mono
- Jabra Engage 65 Stereo
- Jabra Engage 75 Convertible
- Jabra Engage 75 Mono
- Jabra Engage 75 Stereo
- Jabra Evolve 20 Mono
- Jabra Evolve 20 Stereo
- Jabra Evolve 20SE Mono
- Jabra Evolve 20SE Stereo
- Jabra Evolve 30 II Mono
- Jabra Evolve 30 II Stereo
- Jabra Evolve 30 Mono
- Jabra Evolve 30 Stereo
- Jabra Evolve 40/80
- Jabra Evolve 65 Mono
- Jabra Evolve 65 Stereo
- Jabra Evolve 65e
- Jabra Evolve 65t
- Jabra Evolve 65t Cradle
- Jabra Evolve 75
- Jabra Evolve 75e
- Jabra Evolve2 30 Mono MS
- Jabra Evolve2 30 Mono UC
- Jabra Evolve2 30 Stereo MS
- Jabra Evolve2 30 Stereo UC
- Jabra Evolve2 40 Mono MS
- Jabra Evolve2 40 Mono UC
- Jabra Evolve2 40 Stereo MS
- Jabra Evolve2 40 Stereo UC
- Jabra Evolve2 65 Deskstand
- Jabra Evolve2 65 Mono MS
- Jabra Evolve2 65 Mono UC
- Jabra Evolve2 65 Stereo MS
- Jabra Evolve2 65 Stereo UC
- Jabra Evolve2 85 Deskstand
- Jabra Evolve2 85 MS
- Jabra Evolve2 85 UC
- Jabra Handset 450
- Jabra LINK 230
- Jabra LINK 260
- Jabra LINK 265
- Jabra LINK 280
- Jabra LINK 30
- Jabra LINK 32
- Jabra LINK 33
- Jabra LINK 360
- Jabra LINK 370
- Jabra LINK 370 Teams
- Jabra LINK 380a
- Jabra LINK 380a MS
- Jabra LINK 380c
- Jabra LINK 380c MS
- Jabra LINK 43
- Jabra LINK 44
- Jabra LINK 850
- Jabra LINK 860
- Jabra LINK 950
- Jabra MOTION UC
- Jabra Motion Office
- Jabra Pro 920
- Jabra Pro 925 Dual Connectivity
- Jabra Pro 925 Single Connectivity
- Jabra Pro 930
- Jabra Pro 935
- Jabra Pro 935 Single Connectivity
- Jabra Pro 9450
- Jabra Pro 9460
- Jabra Pro 9465/9470
- Jabra SPEAK 410
- Jabra SPEAK 450 Cisco
- Jabra SPEAK 510
- Jabra SPEAK 710 MS
- Jabra SPEAK 710 Teams
- Jabra SPEAK 710 UC
- Jabra SPEAK 750 Teams
- Jabra SPEAK 750 UC
- Jabra SPEAK 810
- Jabra STEALTH UC
- Jabra SUPREME
- Jabra SUPREME UC
- Jabra Stealth
- Jabra UC VOICE 150a Duo
- Jabra UC VOICE 150a Duo MS
- Jabra UC VOICE 150a Mono
- Jabra UC VOICE 150a Mono MS
- Jabra UC VOICE 250
- Jabra UC VOICE 250 MS
- Jabra UC VOICE 250a
- Jabra UC VOICE 250a MS
- Jabra UC VOICE 550a BT
- Jabra UC VOICE 550a BT Mono
- Jabra UC VOICE 550a Duo
- Jabra UC VOICE 550a Duo MS
- Jabra UC VOICE 550a Mono
- Jabra UC VOICE 550a Mono MS
- Jabra UC VOICE 750 Mono USB
- Jabra UC VOICE 750 Mono USB MS
- Jabra UC VOICE 750 USB
- Jabra UC VOICE 750a Duo
- Jabra UC VOICE 750a Duo MS
- Jabra UC VOICE 750a Mono
- Jabra UC VOICE 750a Mono MS
- Lenovo Pro Wired Stereo VoIP Headset
- Mitel Evolve 75
- Mitel S720
- NXT Technologies HUB
- NXT Technologies UC-2000 Stereo Headset
- NXT Technologies UC-4000 Mono Headset
- NXT Technologies UC-4000 No Headset
- NXT Technologies UC-4000 Stereo Headset
- NXT Technologies UC-5100
- NXT Technologies UC-7000 Stereo Professional Headset
- NXT Technologies UC-7500 Mono
- NXT Technologies UC-7500 Stereo
- USB2 Jabra Engage 75
Prerequisites
The prerequisites for the SDK are:
- Microsoft .NET Framework version 4.5.2 - URL
Developing application Using Jabra SDK V2
System requirements
- Windows version: 7(32 bit & 64 bit) and above
- Visual Studio: 2015
- Microsoft .NET framework version 4.5.2 and above
- Network connection
Library Interfaces
Common.h: Common interfaces for device
API Name | Description |
---|---|
Jabra_GetVersion | Gets the version of the SDK library |
Jabra_SetAppID | Application should set the application name using this interface. The Client ID/App ID must be obtained by registering to Jabra portal by App developers. This is a mandatory step, which needs to be done before initialization, failing which, callbacks will not be registered with SDK |
Jabra_InitializeV2 | Initializes the Jabra library. See the 'Steps To initialize the library' section below |
Jabra_Uninitialize | Performs library memory cleanup |
Jabra_IsFirstScanForDevicesDone | Checks if device scan during initialization is done. It is recommended to register for the corresponding callback during initialization |
Jabra_IsDeviceAttached | Checks if a device is attached. It is recommended to register for the corresponding callback during initialization |
Jabra_GetAttachedJabraDevices | Gets the list of attached Jabra devices |
Jabra_GetBatteryStatus | Queries the current battery status with info of charging state and low battery indication. Only supported by devices with a battery |
Jabra_GetDeviceImagePath | Gets the attached device image path. The image is provided by Jabra Cloud service (and stored in the device’s local directory) and hence requires network access for the first time |
Jabra_GetDeviceImageThumbnailPath | Gets the device thumbnail image. The image is provided by Jabra cloud service (and stored in the device’s local directory) and hence requires network access for the first time |
Jabra_FreeDeviceInfo | Frees the device information structure members. This is called right after handling device attach event by the application |
Jabra_ConnectToJabraApplication | Integrates softphone app to Jabra applications like Jabra Direct (JD) |
Jabra_DisconnectFromJabraApplication | Disconnects the Jabra SDK application from Jabra Direct |
Jabra_SetSoftphoneReady | Sets the softphone to ready |
Jabra_IsSoftphoneInFocus | Indicates whether the softphone is in focus |
Jabra_GetErrorString | Returns the error string from the error status |
Jabra_IsBusylightSupported | Checks if busylight is supported by the device |
Jabra_GetBusylightStatus | Checks the status of busylight |
Jabra_SetBusylightStatus | Enables/Disables the busylight status |
Jabra_IsManualBusylightSupported | Checks if manual busy lights is supported |
Jabra_GetManualBusylightStatus | Gets the value of the manual busy lights |
Jabra_SetManualBusylightStatus | Sets the value of the manual busy lights |
Jabra_RegisterManualBusylightEvent | Register a callback for busy lights events |
Jabra_RegisterBusylightEvent | Registration of callback to receive busylight events |
Jabra_IsRemoteMMISupported | Checks if remote MMI feature is supported by the device |
Jabra_GetButtonFocus | Configures the remote MMI events for a device |
Jabra_ReleaseButtonFocus | Releases the remote MMI events configured in the device |
Jabra_GetSupportedButtonEvents | Gets the supported remote MMI for a device |
Jabra_FreeButtonEvents | Free the memory allocated for the button events |
Jabra_RegisterForGNPButtonEvent | Register callback function to get notified on GNP Button events |
Jabra_ConfigureLogging | API to configure the logging of events. |
Jabra_RegisterLoggingCallback | Register callback function for logging. |
Jabra_GetESN | Gets ESN (electronic serial number) of the device |
Jabra_GetCurrentLanguageCode | Gets the language code for the current language of the device |
Jabra_IsLeftEarbudStatusSupported | Checks if left earbud status supported by the device |
Jabra_GetLeftEarbudStatus | Gets left earbud connection status of the device |
Jabra_RegisterLeftEarbudStatus | Registers left earbud connection status event. Can only be called when a device is attached |
Jabra_RegisterHearThroughSettingChangeHandler | Registers HearThrough setting change event. Can only be called when a device is attached |
Jabra_IsEqualizerSupported | Checks if equalizer is supported by the device |
Jabra_IsEqualizerEnabled | Checks if equalizer is enabled in the device |
Jabra_EnableEqualizer | Enables/disables equalizer in the device |
Jabra_GetEqualizerParameters | Gets equalizer parameters for a device |
Jabra_SetEqualizerParameters | Set equalizer parameters for a device |
Jabra_GetNpsUrl | Get the NPS URL based on device, app name and app version |
Jabra_ProductRegistration | Registers a product with the provided information |
Jabra_ExecuteAVRCPCommand | Tells the device to execute a AVRCP command |
Jabra_Reconnect | Recreates the session, Input and Output streams for all devices which are connected to the phone and not to the app |
Jabra_IsFeatureSupported | Checks if a feature is supported by a device |
Jabra_GetSupportedFeatures | Gets array of features supported by a device |
Jabra_FreeSupportedFeatures | Frees a list of features obtained by calling Jabra_GetSupportedFeatures |
Jabra_GetMultiESN | Get ESN for all device components |
Jabra_FreeMap | Release memory allocated by functions returning a Map_Int_String* |
Jabra_RequestNoHangupToneNextTime | Request that the headset does not play its 'end of call' tone when the SCO closes next time. |
Jabra_IsCertifiedForSkypeForBusiness | Indicates whether the device is certified for Skype for Business |
Jabra_FreeCharArray | Free a char array |
Jabra_IsUploadRingtoneSupported | Checks if ringtone upload is supported by the device |
Jabra_UploadRingtone | Upload ringtone to device |
Jabra_RegisterUploadProgress | Registration for upload progress event |
Jabra_IsUploadImageSupported | Checks if image upload is supported by the device |
Jabra_UploadImage | Upload image to device |
Jabra_IsSetDateTimeSupported | Checks if date and time synchronization is supported by the device |
Jabra_SetDateTime | Set date and time to device |
Jabra_GetDateTime | Get date and time from device |
Jabra_GetSupportedDeviceEvents | Supported events by device |
Jabra_SetSubscribedDeviceEvents | Set device events to subscribe to |
Jabra_GetAudioFileParametersForUpload | Get details of audio file for uploading to device |
Jabra_UploadWavRingtone | Upload ringtone to device in .wav format |
Jabra_RegisterBatteryStatusUpdateCallback | Registers for battery status update callback. |
Jabra_GetReturnCodeString | Returns the descriptive string from the return code. |
Jabra_IsSettingProtectionEnabled | Checks if setting protection is enabled in the device. |
Jabra_GetNpsUrlForApplication | Get the NPS URL for the application only. |
Jabra_EnableDevLog | Enables/disables logging for a device. |
Jabra_IsDevLogEnabled | Checks if logging is enabled in device. |
Jabra_RegisterDevLogCallback | Register callback function to get notified on device events. |
Jabra_GetRemoteMmiTypes | Gets a list of supported remote MMIs. |
Jabra_FreeRemoteMmiTypes | Frees/deallocates the memory area allocated by Jabra_GetRemoteMmiTypes(). |
Jabra_IsRemoteMmiInFocus | Gets the status of the remote MMI focus. |
Jabra_GetRemoteMmiFocus | Gets the focus of the remote MMI specified. |
Jabra_ReleaseRemoteMmiFocus | Releases the focus of the remote MMI specified. |
Jabra_SetRemoteMmiAction | Sets an output action on the remote MMI. |
Jabra_RegisterRemoteMmiCallback | Registers for remote MMI event callback. |
Jabra_GetPanics | Get the panic list. |
Jabra_FreePanicListType | Frees the Jabra_PanicListType structure. |
Jabra_SetTimestamp | Sets a static timestamp in the device. |
Jabra_GetTimestamp | Gets the static timestamp in the device. |
Jabra_PreloadDeviceInfo | Preloads the configuration cache with the content of the specified archive. |
Jabra_PlayRingtone | Play Ringtone in Device. |
Jabra_SetWizardMode | Sets the wizard mode. |
Jabra_GetWizardMode | Reads the current wizard mode. |
Jabra_SetHidEventsFromNonJabraDevices | Enable Hid events from non Jabra devices. |
Jabra_IsHidEventsFromNonJabraDevicesEnabled | Is Hid events from non Jabra devices enabled. |
Jabra_SetStdHidEventsFromJabraDevices | Enable Hid events from Jabra devices. |
Jabra_IsStdHidEventsFromJabraDevicesEnabled | Is Hid events from Jabra devices enabled. |
Jabra_GetCustomerSupportUrl | Get the URL for contacting Jabra customer support. |
Jabra_GetSku | Get device SKU (stock keeping unit). |
Jabra_GetBatteryStatusV2 | Get battery status, if supported by device. |
Jabra_CopyJabraBatteryStatus | Copy the content of a Jabra_BatteryStatus struct. |
Jabra_FreeBatteryStatus | Frees the Jabra_BatteryStatus. |
Jabra_RegisterBatteryStatusUpdateCallbackV2 | Register for battery status update callback. |
Jabra_SetJackConnectorStatusListener | Subscribe/unsubscribe to JackStatus events. |
Jabra_SetHeadDetectionStatusListener | Subscribe/unsubscribe to HeadDetectionStatus events. |
Jabra_SetLinkConnectionStatusListener | Subscribe/unsubscribe to LinkConnectionStatus events. |
Jabra_RebootDevice | Reboot the device. |
Jabra_GetHwAndConfigVersion | Get the hardware and config version of the device. |
Jabra_RegisterDectInfoHandler | Register a listener for DECT density info/error events. |
Jabra_GetLock | Get lock for a particular device |
Jabra_ReleaseLock | Release the lock for a particular device |
Jabra_IsLocked | Check if the lock on device is acquired by us |
Jabra_GetPanicCodes | Gets the panic codes stored in the device |
Jabra_ClearPanicCodes | Clear the list of panic codes stored in the device |
JabraDeviceConfig.h: Device setting interfaces
API Name | Description |
---|---|
Jabra_GetSettings | Gets the attached Jabra device setting. Returns pointer to the device settings structure containing all settings for a particular device |
Jabra_FreeDeviceSettings | Once the device setting is requested by the application, memory needs to be freed by calling this API by the application |
Jabra_SetSettings | Updates/Sets the setting details of the attached Jabra device. Returns a return code to indicate if settings were applied successfully or not |
Jabra_FreeString | Once the device image path is requested, application needs to release the memory by calling this API to prevent memory leak |
Jabra_GetFailedSettingNames | Queries the list of failed setting names |
Jabra_FreeFailedSettings | Memory of failed setting names can be released by the application using this interface to prevent memory leak |
Jabra_IsFactoryResetSupported | Returns whether the device supports factory reset |
Jabra_FactoryReset | Restores to factory settings of the device |
Jabra_FreeDeviceSettings | Memory allocated to device settings can be released by the application using this interface to prevent memory leak |
Jabra_GetSetting | Gets the unique setting identified by a GUID of a device |
Jabra_GetNamedAsset | Requests a named asset for the specified device |
Jabra_FreeAsset | Releases an asset previously obtained with Jabra_GetNamedAsset() |
Jabra_SetSettingsChangeListener | Add a listener for changes to the device settings |
JabraNativeHID.h: RCC interfaces
API Name | Description |
---|---|
Jabra_IsOffHookSupported | Returns true if off hook is supported for a specific Jabra device |
Jabra_SetOffHook | Set the specified device off hook/on hook |
Jabra_IsRingerSupported | Returns true if ringer is supported for a specific Jabra device |
Jabra_SetRinger | Set ringer on/off for the specified device |
Jabra_IsMuteSupported | Returns true if ringer is supported for a specific Jabra device |
Jabra_SetMute | Set mute on/off for the specified device |
Jabra_IsHoldSupported | Returns true if hold is supported for a specific Jabra device |
Jabra_SetHold | Set hold on/off for the specified device |
Jabra_IsOnlineSupported | Returns true if online mode is supported for a specific Jabra device |
Jabra_SetOnline | Turn online mode on/off for a wireless headset. Online mode opens an audio link (radio link) between a base/dongle and a headset |
Jabra_WriteHIDCommand | Interface for sending HID output reports with device ID, Usage Page and Usage. This function is for advanced users. It is recommended to use the dedicated functions: Jabra_SetOffHook, Jabra_SetRinger, Jabra_SetMute, Jabra_SetHold, and Jabra_SetOnline |
Jabra_IsGnHidStdHidSupported | Returns true if the device supports Gn HID and Std HID and able to switch between them |
Jabra_GetHidWorkingState | Gets the HID working state |
Jabra_SetHidWorkingState | Sets the HID working state to either standard HID (usb.org HID specification) or GN HID. HID Events will (default) NOT be triggered for standard HID to avoid conflicts |
Interface_AmbienceModes.h: Ambience mode interfaces
API Name | Description |
---|---|
Jabra_GetAmbienceMode | Get the ambience mode |
Jabra_SetAmbienceMode | Set the ambience mode |
Jabra_GetSupportedAmbienceModes | Get the list of supported ambience levels for a device |
Jabra_GetSupportedAmbienceModeLevels | Get the levels supported by a specific ambience mode |
Jabra_GetAmbienceModeLevel | Get the level for a specific ambience mode |
Jabra_SetAmbienceModeLevel | Set the level for a specific ambience mode |
Jabra_GetSupportedAmbienceModeBalance | Get the supported range for left/right balance for a specific ambience mode |
Jabra_GetAmbienceModeBalance | Get the left/right balance for a specific ambience mode |
Jabra_SetAmbienceModeBalance | Set the left/right balance for a specific ambience mode |
Jabra_GetAmbienceModeNoiseLevel | Get the noise level for the currently active ambience mode |
Jabra_GetAmbienceModeSetting | Get whether a specific setting is enabled for a given ambience mode |
Jabra_SetAmbienceModeSetting | Enable or diasable a specific setting for a given ambience mode |
Jabra_GetAmbienceModeLoop | Get the current ambience mode loop |
Jabra_SetAmbienceModeLoop | Set the current ambience mode loop |
Jabra_SetAmbienceModeChangeListener | Register a listener for the ambience mode change event |
Interface_Bluetooth.h
API Name | Description |
---|---|
Jabra_SetBTPairing | Sets the Bluetooth device into pairing mode |
Jabra_SearchNewDevices | Query for available Bluetooth devices which are switched on, within range and ready to connect |
Jabra_GetSearchDeviceList | Gets the list of new devices which are available to pair & connect |
Jabra_StopBTPairing | Stops the search for available Bluetooth devices |
Jabra_SetAutoPairing | Enables/disables auto pairing. When Bluetooth adapter is plugged into the PC it will attempt to connect with the last connected Bluetooth device. If it cannot connect, it will automatically search for new Bluetooth devices to connect to if auto pairing is set |
Jabra_GetAutoPairing | Queries whether auto pairing mode is enabled or disabled |
Jabra_ClearPairingList | Clears the list of paired Bluetooth devices to the Bluetooth adapter |
Jabra_ConnectBTDevice | Connect/Reconnect Bluetooth device to the Jabra Bluetooth adapter. Ensure the Bluetooth device is switched on and within range |
Jabra_ConnectNewDevice | Connects to Bluetooth device with specified device details |
Jabra_DisconnectBTDevice | Disconnects Bluetooth device from Bluetooth adapter |
Jabra_GetConnectedBTDeviceName | Queries the name of connected Bluetooth device with Bluetooth Adapter |
Jabra_ConnectPairedDevice | Connect a device which was already paired |
Jabra_RegisterPairingListCallback | Register callback to receive list of paired devices with BT adapter |
Jabra_IsPairingListSupported | Checks if pairing list is supported by the device |
Jabra_GetPairingList | Gets the list of devices which are paired previously to Bluetooth adapter |
Jabra_FreePairingList | Frees the memory allocated for the list of paired devices |
Jabra_DisConnectPairedDevice | Disconnect a paired device |
Jabra_ClearPairedDevice | Clears the specified device from paired device list |
Jabra_GetSecureConnectionMode | Gets the secure connection mode for a dongle device. |
Interface_Firmware.h
API Name | Description |
---|---|
Jabra_GetFirmwareVersion | Returns the firmware version of the specified Jabra device |
Jabra_IsFirmwareLockEnabled | Checks if firmware lock is enabled in the device. |
Jabra_EnableFirmwareLock | Enable or disable firmware up-and-downgrade lock. |
Jabra_CheckForFirmwareUpdate | Checks if any latest firmware is available on the server. |
Jabra_GetLatestFirmwareInformation | Gives the latest available firmware on the server based on user request. |
Jabra_FreeFirmwareInfo | Frees the memory allocated for the firmware information. |
Jabra_DownloadFirmware | Downloads the selected firmware version. |
Jabra_GetFirmwareFilePath | Gets the file path where the firmware file for the respective version has been downloaded. |
Jabra_UpdateFirmware | Updates the firmware of the device to the firmware version specified. |
Jabra_CancelFirmwareDownload | Cancels the firmware download. |
Jabra_RegisterFirmwareProgressCallBack | Registers firmware progress callback to get notified about firmware download progress. |
Jabra_GetAllFirmwareInformation | Gets information of all the firmwares present in cloud for the specific device. |
Jabra_FreeFirmwareInfoList | Frees the list of firmware information structure. |
Jabra_DownloadFirmwareUpdater | Downloads the latest FW updater relevant for this device. |
Steps to initialize the library
The below steps are mandatory for initializing the Jabra SDK
- Valid App ID/Client ID must be set to SDK using Jabra_SetAppID API. If app id is not set, SDK initialization will fail. Kindly note, App ID/Client ID must be obtained by the application developers by registering with Jabra portal
- The library is initialized using the Jabra_InitializeV2 API. The arguments consist of pointers to five callback functions, non Jabra device detection parameter and an optional configuration parameter
Parameter | Description |
---|---|
FirstScanForDeviceDoneFunc | This callback function is called when the library has finished the initial scanning for Jabra devices |
DeviceAttachedFunc | This callback function is called when a new Jabra device is attached or the library has been initialized and found a Jabra device |
DeviceRemovedFunc | This callback function is called when a Jabra device is removed |
ButtonInDataRawHidFunc | This callback function is called when new input data has been received. Data is raw HID data. HID Events will (default) NOT be triggered for standard HID to avoid conflicts |
ButtonInDataTranslatedFunc | This callback function is called when new input data has been received. Data is represented at a higher level of abstraction than the raw HID data |
nonJabraDeviceDectection | This is used to detect non Jabra devices. Can be false if not used. |
configParams | This is optional configuration. Can be null if not used. |
Important: As callbacks are executed in SDK context, application must perform only small/light-weight activity. For bulky functionality, it should continue using application thread
Library initialization must be done only once. Before process shutdown Jabra_Uninitialize() must be called in order to perform memory cleanup.
C# Application
User has an option to develop an application using C++ by directly consuming C interfaces. But if the application is developed in C#, a wrapper has to be created to use the APIs from these libraries.
Refer Library Interfaces
64-Bit Support
The library has support for both 32 bit and 64 bit applications. Two separate dll files built for x86(32 bit) and x64(64 bit) would be shared. Application developers must use the respective dll file.
Logging
SDK provides logging to troubleshoot issues. By default, log level is set to Warning.
Log level can be defined by setting the environment variable (LIBJABRA_TRACE_LEVEL) from command prompt or editing LIBJABRA_TRACE_LEVEL in system environment variables. Supported log levels are - fatal, error, warning and info.
The logs will be placed at %appdata%\JabraSDK or...\AppData\Roaming\JabraSDK by default, if the environment variable LIBJABRA_RESOURCE_PATH is not set.
Application log file size is restricted to 10 MB, log exceeding this size new files are created.
10 latest log files can be stored, after that on new log file creation the oldest log is deleted.
Points to Remember
- Concurrency is maintained between all the applications which uses Jabra SDK library and Jabra Direct
- Dependent settings are some special settings which depend on other settings. For example, based on the value of one setting, other setting(s) may get enabled or disabled
- Application needs to handle dependency settings, based on the flag isDepedentsetting in exposed settingInfo structure
- ListKeyValue (structure) in each setting (mainly for drop down control settings) will contain list of possible values. Along with this, ListKeyValue will also have dependent settings details
- For each values in the ListKeyValue structure,
- dependentcount will have the information of how many settings are dependent for this value. It will be zero, if no settings are dependent.
- If dependentcount is non-zero, then DependencySetting (structure) will have the details of the settings, which are dependent
- DependencySetting will have setting GUID and a flag to say whether to enable or disable
- For some settings when disabled because of dependency, the value needs to be changed to default value. dependentDefaultValue in settingInfo structure will have default value
- PC settings are settings, which application needs to handle as it is not device settings. And the exposed settingInfo structure has the flag, isPCsetting, to identify whether it is PC setting or not
- Any string input given should be terminated with a NULL pointer
- Validations like regular expression, min length, max length etc. for string input needs to be handled by application
- The button configurations done for remote MMI should be cleared/reset on device unplug or exit of the application. The application should perform button configuration again on next start up
- Since device does not provide any information on currently configured remote MMI's, it is purely demo app logic to maintain the remote MMI configurations for a device. Different instances of demo app will not know the remote MMI configured as device does not support reading of current remote MMI configurations
- Remote MMI is restricted when supported device is paired with Dongle
- If any of the settings fails while retrieving from the device, device settings structure will be null pointer
- 3rd party developers have to register for the authorization token for firmware updater
- For firmware update feature, firmware updater application (JabraSDKFirmwareUpdater) needs to be installed. It will be downloaded from cloud as part of firmware file download for Jabra device from Jabra_DownloadFirmware API
- Jabra_DownloadFirmware API to be called before calling firmware update API to get the firmware file path
Bluetooth/Dongle devices
- The USB dongle and the paired Bluetooth headset is shown as separate entries
- The call control is not supported for USB dongles (e.g. Jabra Link 360) unless they are paired with a Bluetooth headset
- Only USB devices can be reset to default factory setting
- When Dongle is paired with the Speak 710 device, if the user change shared use setting to off in Speak 710, then the device will disconnect the Bluetooth connection with the Dongle.
Sample application Code
Both source code and binary files for the demo application are packed along with this SDK. The demo application is a C# WPF Application built using .net framework 4.5 and C# bindings. The test program demonstrates library initialization, usage of remote call controls and device settings features using Jabra SDK V2.
Device Information View
Device Settings View
Call Control View
Device information while Bluetooth dongle is connected
Device connected to PC over Bluetooth via dongle
BT Pairing while headset is connected to PC via dongle
Mapping of Button Events with user actions.
Authorization Tab to generate authorization key for Firmware Updater
Firmware Updater view
Firmware updater -- initiate check for updates
Firmware Updater View -- List's latest Firmware available.
Firmware Updater View -- Download specific firmware.
Firmware Updater installation process start's on clicking update if it is not installed
Firmware Updater --Update on clicking update
Firmware Updater -- Update finished.
Device Settings View -- Verify firmware version on update.
Upload ringtone
Upload ringtone file selection
Upload ringtone -- file upload progress view
Upload image
Upload image - file selection
Upload image - file upload success view
Set date and time view
Logging view
Development Setup
- Create a new Sample application using Visual Studio --WPF C# Application
Visual Studio project creation start up view
- Copy the Library (libjabra.dll) from the JabraSDK zip file and place it in application Debug/ Release project folder as shown below or install NuGet package "jabrasdk.x.x.x.xx.nupkg" for application to use Library (libjabra.dll) with JabraSDK.dll(.Net Wrapper).
Copy Library DLL
Sequence Diagrams
This section shows sequence diagrams for the most common use cases. Using the same patterns like the one described here, enables more advanced use cases.
Get device setting Sequence
The following sequence diagrams illustrate how to get settings from device using this library.
Get device settings
Set device setting Sequence
The following sequence diagrams illustrate how to set settings from application to device using this library.
Set device settings
Off-Hook Sequence
The following sequence diagrams illustrate how to implement off-hook/on-hook scenarios in your softphone using this library.
Softphone Initiated
Softphone OffHook initiation
User Initiated
User OffHook initiation
Mute Sequence
The following sequence diagrams illustrate how to implement mute/unmute scenarios in your softphone using this library.
Softphone Initiated
Softphone mute toggle
User Initiated
User mute toggle
Hold Sequence
The following sequence diagrams illustrate how to implement hold/resume call scenarios in your softphone using this library.
Softphone Initiated
Softphone Hold/resume sequence
User Initiated
User Hold/resume sequence
Remote MMI -- Button take over
Button takeover sequence
Child device support
Child device handling sequence
Logging
Logging sequence
Firmware Update
Firmware update sequence
Third party license Notice
License notice for libjsoncpp
Copyright (c) 2007-2010 Baptiste Lepilleur
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Updated license information can be found here.
License notice for pugixml
Copyright (c) 2006-2018 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Updated license information can be found here.
License notice for libcurl
Copyright (c) 2006-2018 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Updated license information can be found here.
License notice for NAudio
Microsoft Public License (Ms-PL)
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
- Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
- Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
- Conditions and Limitations
(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
Updated license information can be found here.