===== Version 2.3 =====
Date 2016-08-03
New Features
* Supports Multi Wiegand Format
* Supports BioEntry W2
Added & Changed Features
1. Multi-wiegand feature has been added. You will now be able to use multiple types of formats with one device. If the device supports different card types, you will also be able to use multiple types of formats with various types of cards. Maximum 15 types of formats are supported.
* Add API [[BS2_GetWiegandMultiConfig]]
* Add API [[BS2_SetWiegandMultiConfig]]
* Add structure [[Configuration API#BS2WiegandMultiConfig]]
2. Field **wiegandMultiSupported** has been added to the [[Device API#BS2SimpleDeviceInfo]] structure \\
The [[Device API#BS2SimpleDeviceInfo]] structure is used to show information of the device following by which feature the device supports or not. Since the multi-wiegand feature has been implemented to the devices, this field has been added to show whether the device supports the multi-wiegand feature.
\\
3. Mask **Value 0x0D**(BioEntry W2) has been added for the type field of [[Device API#BS2SimpleDeviceInfo]] structure \\
The [[Device API#BS2SimpleDeviceInfo]] structure is used to give simple information about the device. Since the newly released BioEntry W2 is now supported from the BioStar 2 Device SDK, the mask for this product has been added.
\\
4. Parameter **IsAcceptableUserID** has been added to the [[BS2_GetUserList]] API \\
This callback function is irrelevant to BioStar 2 Device SDK developers. This is used by the BioStar v1.91 which is the latest BioStar 1 integrated with the BioStar 2 devices such as BioStation 2, BioStation A2, BioStation L2. The maximum user ID of BioStar 1 is 4294967295, but the V2 devices’ maximum user ID can go up to 32 digits when creating a user directly from the device. To avoid uploading users having a user ID that is beyond the limit of BioStar 1, this callback function had to be added. BioStar 2 Device SDK developers just can put null for this parameter.
**BEFORE** \\
#include "BS_API.h"
int BS2_GetUserList(void* context, uint32_t deviceId, char** uidsObjs, uint32_t* numUid);
**AFTER** \\
#include "BS_API.h"
int BS2_GetUserList(void* context, uint32_t deviceId, char** uidsObjs, uint32_t* numUid, IsAcceptableUserID ptrIsAcceptableUserID);
**EXAMPLE** \\
BS2_GetUserList(context, deviceId, uidsObjs, numUid, null);
\\
5. Add API [[BS2_GetLastFingerprintImage]] \\
An API that gets the actual image of the fingerprint has been added. This function has been implemented to provide a feature that has been existed in the BioStar 2 SW. This will allow you to monitor the actual status of the fingerprint by showing the image of the fingerprint instead of the fingerprint template. However, this image will not be used in any kind of matching.
\\
6. Parameter **templateFormat** has been added to the [[BS2_ScanFingerprint]] API \\
Suprema’s fingerprint devices supports 3 types of fingerprint formats such as Suprema Template, ISO 19794-2, and ANSI 384.
^Value ^Description ^
|0 |Suprema Template |
|1 |ISO19794-2 |
|2 |ANSI-378 |
**BEFORE** \\
#include "BS_API.h"
int BS2_ScanFingerprint(void* context, uint32_t deviceId, BS2Fingerprint* finger, uint32_t templateIndex, uint32_t quality, OnReadyToScan ptrReadyToScan);
**AFTER**\\
#include "BS_API.h"
int BS2_ScanFingerprint(void* context, uint32_t deviceId, BS2Fingerprint* finger, uint32_t templateIndex, uint32_t quality, uint8_t templateFormat, OnReadyToScan ptrReadyToScan);
\\
7. Field **wiegandMultiConfig** has been added to [[Configuration API#BS2Configs]] structure \\
All structures related to configurations has been managed from the [[Configuration API#BS2Configs]] structure. Since a new structure for multi wiegand has been added, this structure was added to the [[Configuration API#BS2Configs]] structure.
\\
8. Field **wiegandInputMask** has been added to the [[Configuration API#BS2WiegandConfig]] structure \\
Since multi-wiegand is now supported, there needs to be a bitmask field to set which format indexes will be used. This field is used to select the formats that will be understood by the master device when a card ID is sent through wiegand by a 3rd party wiegand reader or a slave device that is connected via RS-485. This can be used when the device is set to receive wiegand signals. For example, if you want to use format index 0, 2, 6, you need to set the bitmask to 0000000010001010. The 0th bit is reserved for the backward compatibility.
\\
9. Field **wiegandCardMask** has been added to the [[Configuration API#BS2WiegandConfig]] structure \\
Since multi-wiegand is now supported, there needs to be a bitmask field to set which format indexes will be used. This field is used to select the formats that will be understood by the device when the card is directly placed to the device. This can be used when the device is set to send out wiegand signals. For example, if you want to use format index 0, 1, 2, 3, you need to set the value to 0000000000011110. The 0th bit is reserved for the backward compatibility.
\\
10. Field **wiegandCSNIndex** has been added to the [[Configuration API#BS2WiegandConfig]] structure \\
When using a card that uses only the CSN of the card, you can still set the device to send out a wiegand signal in a specific format. This can be used when the device can only read Mifare cards or EM cards, but still needs to send out wiegand signals to another device in a certain format. For example, if you want to use format index 0, you need to set the value as 0.
\\
11. Field **reserved** from the [[Configuration API#BS2WiegandConfig]] structure has been changed to **uint8_t reserved[27]** from **uint8_t reserved[32]** \\
There were 3 additional fields that have been added to the [[Configuration API#BS2WiegandConfig]] structure, which are mentioned right above. Because of this, there were 5 bytes used from the reserved space, and the reserved space now has been reduced to 27 bytes.
\\
12. Field **alarmFlags** from the [[Door Control API#BS2Door]] sturcture has been changed to **uint8_t unconditionalLock** from **uint8_t alarmFlags** \\
The **alarmFlags** is not used in the [[Door Control API#BS2Door]] structure as now the **alarmFlags** can be displayed from the [[Door Control API#BS2DoorStatus]] structure. Instead, the **unconditionalLock** field has been added for the new feature and is using the memory of the **alarmFlags**. The **unconditionalLock** field has been added to control automatic slide doors. When using a traditional dead-bolt lock, the lock shouldn’t be locked after the configured time has passed unless the door is closed. However, when using an automatic slide door, there are needs for the door to be closed even when there is still an input on the door sensor. You can change this field to true to close the door regardless to the door sensor input.
\\