Changelog for the BALTECH SDK
- Fixed a NULL pointer exception which could occur when disconnecting a USB HID device while running brp_open()call_made. This bug was already fixed in release 3.14.00 for protocol objects that were created with snr <> 0. Now, it also works with snr = 0 (see brp_create_usb_hid()call_made).
- When receiving a command response with an undefined enum value, the wrapper silently ignored this in the past and returned an invalid enum. Now it either returns an error or (for some extendable commands) it returns a special *_undefined enum value.
- Fixed a NULL pointer exception which could occur when disconnecting a USB HID device while running brp_open()call_made.
- If the reader returned a payload that was too short or too long, the BALTECH API library returned INVALID_API_ERRCODE or ignored the error. Now it correctly returns BRP_ERR_PAYLOAD_FORMATcall_made.
- When connecting USB HID readers of different report sizes at the same time, only one of the reader types could be opened. For customers working with our standard products, this bug couldn't occur as long as they didn't connect readers with a customized (USB) firmware in parallel.
- Windows only: When connecting via RS-232 (not virtual COM port!) and running a command with a very long response, BRP_ERR_FRAMEFORMATcall_made was usually returned instead of the correct answer.
- macOS only: RS-232/virtual COM port didn't work at all.
- Linux and macOS only: Working with more than one RS-232/virtual COM port interface didn't work (see also version 3.11.00).
Working with more than one RS-232 or virtual COM port interface didn't work. The SDK successfully opened the second interface, but all commands sent to the first device failed.
This is a quickfix for Windows only. The fix for macOS and Linux was implemented in version 3.12.00.
- Windows only: The statically linked C runtime introduced in version 3.02.00
was accidentally changed back to a dynamically linked C runtime in version 3.05.00.
MSVCRTxx.DLLwas always required.
- When opening HID devices with version 3.08.00, the devices could no longer be detected by tools such as BALTECH ToolSuite. Now the interoperability with ToolSuite has been improved.
BALTECH API breaking changes
- Removed the card type
brp_CardType_Myd, as it hadn't been supported by the firmware for a long time.
- Renamed the message type definition
- Simplified the signature of Sys.GetBootStatuscall_made
- Fixed incorrect numerical values mapped with the brp_MessageTypecall_made
- The app notes "tcp_client", "tcp_server", and "udp_introspection" got a makeover. There's more detailed information in the comment sections now, and also the command line output has been reworded.
- After the installation of USBpcapcall_made (part of Wireshark), the SDK could no longer open an HID connection to devices that were additionally configured for keyboard emulation, virtual COM port, or PC/SC.
- Windows only: 2 applications could connect to the same HID device simultaneously and thus interfere with each other. Now the application connecting first gets exclusive access to an HID device.
- macOS only: The SDK did no longer compile since version 3.03.00.
- Since version 3.03.00, the SDK contained a buffer overflow when monitoring wasn't suppressed explicitlycall_made. This overflow caused macOS software to crash, while Windows and Linux applications kept running. Now it's fixed and all OSes work as expected.
- Since version 3.03.00, the SDK failed to compile on Windows SDK 10.0.18363 and newer without warnings.
- Removed Visual Studio projects files. Please use CMake to create them after unpacking – it's natively supported as of Visual Studio 2017.
- Changed the error code names in the monitoring log files. They now match the names
in the BALTECH API (e.g. BRP_VHL_ErrNoTagcall_made
VHL.ErrNoTag), so it's easier to search for them in the API reference.
- Since version 3.02.00, compiling the SDK on Windows showed the warning
replace /MT by /MD.
- Since version 3.03.00, the SDK didn't compile on Linux/macOS any more.
- Added support for
- Added the brp_get_io_id()call_made command. You can use it to retrieve the actual interface identification name.
- Added a monitoring mechanism. You can now log all commands and responses exchanged with a reader and view them in an HTML file.
- BALTECH API changed
brp.hhad a dependency to
brplib.h, which required the directory with the
brp_lib-headerfilesto be in the include path. Now this dependency is optional (and can be activated via BRP_SDK_COMPATIBILITY).
- Added support for opening HID devices with specific serial numbers
(although in a non-backward-compatible way via
- Fixed a memory leak on closing a connection.
- On Linux/macOS, the RS-232 implementation printed log messages to
stdoutwhen trying to open a connection.
brp_get_response()didn't reset the return value
resp_lento 0 in case of an error. This caused applications relying on this behavior to crash.
- The general BRP status codes
are now returned as error code
BRP_ERR_STATUS. (They were mapped to other error codes in the past).
- Moved the documentation online: https://docs.baltech.de/developers/sdk.html
It has also grown quite a bit, so you're welcome to check out the new parts as well. Feedback appreciated at email@example.com
libBrpDriver.dylib(macOS) relocatable: They search for
brp_libin their own directory via relative RPATH settings.
- Switched the Windows DLL to a statically compiled C runtime.
This has increased the DLL sizes by about 100 kB per file, but made them standalone, so you don't have to include
MSVCRTxx.DLLin your application anymore.
- In the RS-232 implementation of Linux/macOS, the characters 0x11 and 0x13 were swallowed, resulting in the error BRP_ERR_FRAMEFORMATcall_made (0x04000003). This was caused by the XON/XOFF protocol, which was accidentally enabled and has now been disabled.
- The main
CMakeLists.txtwasn't part of the SDK ZIP file and has now been added.
- The pre-built
/binaries/winXX/ImportLibs/Release/baltech_api.libwasn't part of the SDK ZIP file and has now been added.
- Added support for custom HID report formats.
- The USB HID interface doesn't detect non-HID devices any more. Thus, brp_create_usb_hid(0)call_made now works reliably if a non-HID BALTECH USB device is connected additionally to the HID BALTECH USB device.
- Added support for macOS. You can now create macOS applications that access our readers.
- Added support for "secure channels" to use (AES) encryption/authentication when communicating with a reader.
- Added wrapper for legacy driver
BrpDriver.DLLthat maps all calls to
- Added support for ID-engine SD and PAD reader with USB connection. (Until now, every connection attempt failed with a timeout.)
- Added application note
secure_communicationto demonstrate how to use secure channels.
- brp_create_pki()call_made now supports
session_timeout=BRP_INFINITEfor sessions that never shall time out (additionally to the already supported
brp_lib.hcan now be included from C++ files. (Until now, the include statement had to be embraced by an external "C" statement.)
- Simplified API for PKI by adding brp_pki_get_session_buf_size()call_made as a replacement for brp_pki_save_session(, NULL, 0, )call_made.
- The RS-232 interface is less restrictive: Now, it accepts not only
/dev/ttyS0(Linux), but also
- You can now chain multiple protocol stacks ("composite protocols") by setting the I/O layer of the upper stack to a composite protocol stack that implements the lower part.
- BALTECH API has been changed (
- If a BRP command timed out, the protocols RS-232 and USB HID returned BRP_ERR_TIMEOUTcall_made. Now, they return BRP_ERR_CMD_TIMEOUTcall_made. (BRP/TCP already worked correctly before this fix).
- Skipped to version 2.20.00 to be able to distinguish between original
BrpDriver.dllwhen looking at the version string.
- RS-232/virtual COM port used the wrong protocol ID. (In practice, most applications don't check this ID.)
- The Windows version of
appnote_tcp_serverdidn't work. (The path to the certificate file was invalid.)
- Version 2.05.00 was invalid as the generated ZIP file didn't contain the
- Version 2.04.00 was invalid as the generated ZIP file was empty.
- Added application note
- Updated documentation
- BALTECH API changed:
- signature of
- signature of
- signature of
- brp_open()call_made hung for ~20 seconds if the IP address didn't exist (i.e. the reader lost power). Now it blocks for the millisecond time period specified in (see BRP_DEFAULT_TCPIP_ROUNDTRIP_TIMEOUTcall_made) in the worst case.
- BALTECH C API header file has been split into multiple header files. Now, there's 1 header file per command group.
- BALTECH API changed
- Missing files for app notes added
- Added "BALTECH C API" so you can execute BALTECH commands via simple C function calls now
- Added support for RS-232 and USB/virtual COM port connections
- Restructured directory layout
intparameters/return values that specify the size of a buffer/object were replaced by
- Added app note for reading/writing data to/from card via VHL commands
- Updated documentation
- Possible memory leak in BRP and TCP/IP protocol fixed
- Timeouts in TCP/IP connections had only an accuracy of 1 sec (instead of 1 ms)
- Added support for Linux. You can now create Linux applications that access our readers.
- License files of subprojects used by
brp_lib(and other files not necessary for building
brp_lib) weren't distributed. Now they can be found in
- Added support for USB HID.
- BRP communication library is now deployed as part of
6003_baltech_sdktogether with the reference manual.
- Fixed memory leak during protocol destruction.
- Added support for 64-bit Windows
- Added support for Base64-encoded PKI certificates/keys (see filename extensions
- Added user manual
- Added app note for UDP introspection
- Added encryption to BRP-over-TCP app note
- Added app note for C#
- Switched from Visual Studio 2008 to Visual Studio 2015
- Package was renamed from
- Replaced app note that demonstrates how to create a BRP-over-TCP client with an app note that demonstrates how to create a BRP-over-TCP server.
- Fixed a bug where
brp_libcould enter an endless loop under specific circumstances if a TCP connection was canceled.
- Added support for CMake
- Added support for the MinGW compiler
- The default roundtrip timeout of 500 ms on TCP/IP protocols is now configurable via brp_set_tcpip_roundtrip_timeout()call_made. This is required for very slow connections (i.e. GSM).
- Added support for continuous and repeat modes.
- Security related bug fix: RAM where keys are stored will be overwritten with zeros on close (session key) or on destroy (private ecc key) respectively.
- Added support for saving and restoring PKI sessions via brp_pki_save_session()call_made and brp_pki_restore_session()call_made