# Firmware Integration¶

## Steps to Integrate Tapkey¶

1. Get the Tapkey Lock SDK.
2. Integrate the Tapkey libraries into the target application, and implement the interface according to section Interface Integration.
3. Define a production process that allows programming an initial firmware version.
4. Define a process for injecting provisioning data, which is individual to each locking device.
5. Apply for a Tapkey manufacturer ID.
6. Define a versioning scheme that assigns increasing integer version numbers to firmware versions as outlined in the firmware's package structure description.
7. Establish a build process and tooling that allows generating firmware files (.tkmanfw) according to section Firmware Update.

8. Obtain provisioning files from Tapkey for individual locks.

9. Program new devices and inject provisioning data.

Info

Steps 8 and 9 are only required once at manufacturing time.

## TlcpLib¶

The Tapkey Lock SDK contains - among others - a library named TlcpLib. It acts as the SDKs central component and implements the Tapkey Lock Control Protocol (TLCP).

## Getting Started¶

Integration of the Tapkey Lock SDK consists of the following steps:

• Add TlcpLib compiled for your platform to your project.
• Add the static library from the lib folder.
• Add the include files from the include folder to your project's search path for include files. Try to maintain the original folder structure from the Tapkey Lock SDK to make it easy to replace the files with a newer version.

## Interface Integration¶

TlcpLib requires certain functionality that must be implemented by the consuming product. The functions are grouped into several APIs that need to be registered with the Tapkey interface. The APIs functionalities include:

• Get/set date and time (of the lock's clock).
• Get seed for random number generator.
• Trigger mechanical lock after authorization.
• Read measurement values like battery voltage and ambient temperature if applicable.
• Read from/write to non-volatile memory.

The APIs and function signatures are defined in the tkExt.h header file, which is provided in the include folder of TlcpLib.