Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:configuration_api [2024/10/24 14:56]
127.0.0.1 external edit
en:configuration_api [2025/06/13 10:43] (current)
Line 92: Line 92:
   * [[BS2_GetCustomCardConfig]]:​ [+ 2.9.4] Retrieves Custom smart card settings.   * [[BS2_GetCustomCardConfig]]:​ [+ 2.9.4] Retrieves Custom smart card settings.
   * [[BS2_SetCustomCardConfig]]:​ [+ 2.9.4] Stores Custom smart card settings.   * [[BS2_SetCustomCardConfig]]:​ [+ 2.9.4] Stores Custom smart card settings.
 +  * [[BS2_GetMifareCardConfigEx]]:​ [+ 2.9.9] Gets the setting information used for AES128-encrypted Mifare cards on the device.
 +  * [[BS2_SetMifareCardConfigEx]]:​ [+ 2.9.9] Saves the setting information used for AES128-encrypted Mifare cards on the device.
 +  * [[BS2_GetFacilityCodeConfig]]:​ [+ 2.9.9] Gets the BS2FacilityCode used as an authentication code when the OSDP connection between the ''​Door Interface (DI-24)''​ and the master device is lost.
 +  * [[BS2_SetFacilityCodeConfig]]:​ [+ 2.9.9] Saves the BS2FacilityCode setting used as an authentication code when the OSDP connection between the ''​Door Interface (DI-24)''​ and the master device is lost.
 +  * [[BS2_GetRS485ConfigExDynamic]]:​ [+ 2.9.9] Gets the RS485 network setting information for ''​CoreStation''​.
 +  * [[BS2_SetRS485ConfigExDynamic]]:​ [+ 2.9.9] Saves the RS485 network setting information for ''​CoreStation''​.
 \\ \\
 ===== Structure ===== ===== Structure =====
Line 717: Line 723:
     uint8_t formatID;     uint8_t formatID;
     uint8_t cipher;     uint8_t cipher;
-    uint8_t reserved[24];+    ​uint8_t smartCardByteOrder;​ 
 +    ​uint8_t reserved[1]; 
 +    BS2_MIFARE_ENCRYPTION mifareEncType;​ 
 +uint8_t reserved[20];
 } BS2CardConfig;​ } BS2CardConfig;​
 </​code>​ </​code>​
Line 789: Line 798:
 |0  |Deactivate ​ | |0  |Deactivate ​ |
 |1  |Activate ​ | |1  |Activate ​ |
-**24. //reserved5//** \\ +**24. //smartCardByteOrder//​** \\ 
 +[+2.8.2] Previously, card information written to the data area of a smart card was fixed to the MSB format. \\ 
 +As a result, when integrating with certain controllers that use the LSB format, the byte information was reversed and output as a completely different value. \\ 
 +With the smartCardByteOrder value, you can now flexibly change the output to either MSB or LSB format. \\ 
 +<WRAP group 50%> 
 +^Value ​ ^Description ​ ^ 
 +|0  |MSB  | 
 +|1  |LSB  | 
 +</​WRAP>​ 
 +**25. //​reserved//​** \\  
 +Reserved space. \\ \\ 
 +**26. //​mifareEncType//​** \\  
 +[+2.9.9] Specifies the encryption method for Mifare cards. Mifare Classic cards support only CRYPTO1, while Mifare Plus cards support both CRYPTO1 and AES128. \\ 
 +When set to CRYPTO1, the Mifare settings of BS2MifareCard are applied. When set to AES128, the BS2MifareCardConfigEx settings, which can be configured using BS2_SetMifareCardConfigEx and BS2_GetMifareCardConfigEx,​ are applied. \\  
 +<WRAP group 50%> 
 +^Value ​ ^Description ​ ^ 
 +|0  |CRYPTO1 ​ | 
 +|1  |AES128 ​ | 
 +</​WRAP>​ 
 +**27. //reserved//** \\ 
 Reserved space. \\  ​ Reserved space. \\  ​
 </​WRAP>​ </​WRAP>​
Line 1065: Line 1093:
 Input mask for the wiegand input of the master device. \\ \\ Input mask for the wiegand input of the master device. \\ \\
 **16. //​wiegandCSNIndex//​** \\ **16. //​wiegandCSNIndex//​** \\
-Index that determines in which format the device will send out a wiegand ouput after the card has been read. This field is used only for Mifare and EM devices. Please check the //​useWiegandFormat//​ field of the [[configuration api#​BS2CardConfig]] structure before configuring. \\ \\+Index that determines in which format the device will send out a wiegand ouput after the card has been read. This field is used only for Mifare and EM devices. Please check the //​useWiegandFormat//​ field of the [[configuration api#​BS2CardConfig]] structure before configuring. ​Only one index can be set to this field. 
 + \\ \\
 **17. //​useWiegandUserID//​** \\ **17. //​useWiegandUserID//​** \\
 The flag you can select whether card ID or user ID to be sent via Wiegand output. \\ The flag you can select whether card ID or user ID to be sent via Wiegand output. \\
Line 2623: Line 2652:
     uint8_t ​   numInputs;     uint8_t ​   numInputs;
     uint8_t ​   numSupervised;​     uint8_t ​   numSupervised;​
-    ​uint8_t ​   ​reserved[18];+    ​union { 
 +        uint16_t value; 
 +        struct { 
 +            uint16_t tamperAuxIndex : 4; 
 +            uint16_t acFailAuxIndex : 4; 
 +            uint16_t aux0Type : 1; 
 +            uint16_t aux1Type : 1; 
 +            uint16_t aux2Type : 1; 
 +            uint16_t reserved : 1; 
 +            uint16_t fireAuxIndex : 4; 
 +        } field; 
 +    } aux; 
 +    uint8_t ​    reserved[16];
  
     struct {     struct {
Line 2632: Line 2673:
         uint8_t ​   reserved;         uint8_t ​   reserved;
         uint8_t ​   supervisedResistor;​         uint8_t ​   supervisedResistor;​
-        ​uint8_t ​   reserved1[16];+        ​BS2SupervisedInputConfig ​ supervisedConfig;
     ​     ​
         uint8_t ​   reserved2[26];​         uint8_t ​   reserved2[26];​
Line 2644: Line 2685:
 2. //​​numSupervised//​​ \\ 2. //​​numSupervised//​​ \\
 Number of supervised input port. \\ \\ Number of supervised input port. \\ \\
-3. //​​reserved//​​ \\+3. //​tamperAuxIndex,​ acFailAuxIndex,​ fireAuxIndex//​ \\ 
 +[+2.9.9] Sets the Aux input. It is 4bit in size and CS-20, DI-24 are fixed and cannot be changed. \\ 
 +<WRAP group 50%> 
 +^Aux Name  ^Index ​ ^ 
 +|AC Fail  |0  | 
 +|TAMPER ​ |1  | 
 +|FIRE  |2  | 
 +</​WRAP>​  
 +4. //aux0Type, aux1Type, aux2Type// \\ 
 +[+2.9.9] Sets the Aux input signal type. \\ 
 +<WRAP group 50%> 
 +^Value ​ ^Description ​ ^ 
 +|0  |Normally Open  | 
 +|1  |Normally Closed ​ | 
 +</​WRAP>​ 
 +5. //​​reserved//​​ \\
 Reserved Space. \\ \\ Reserved Space. \\ \\
-4. //​​portIndex//​​ \\ +6. //​​portIndex//​​ \\ 
 Input Port Number. \\ \\ Input Port Number. \\ \\
-5. //​switchType//​ \\+7. //​switchType//​ \\
 Input Signal Type. \\  Input Signal Type. \\ 
 <WRAP group 50%> <WRAP group 50%>
Line 2655: Line 2711:
 |1  |Normally Closed ​ | |1  |Normally Closed ​ |
 </​WRAP> ​ </​WRAP> ​
-6. //​​duration//​​ \\ +8. //​​duration//​​ \\ 
 Input Signal Duration Time Measurement is milliseconds(ms). \\ \\ Input Signal Duration Time Measurement is milliseconds(ms). \\ \\
-7. //​​reserved//​​ \\+9. //​​reserved//​​ \\
 Reserved Space. \\ \\ Reserved Space. \\ \\
-8. //​​supervisedResistor//​​ \\+10. //​​supervisedResistor//​​ \\
 You can set Supervised input resistance value type or unsupervise it. \\ You can set Supervised input resistance value type or unsupervise it. \\
 <WRAP group 50%> <WRAP group 50%>
Line 2669: Line 2725:
 |254  |Unsupervised(Default) ​ | |254  |Unsupervised(Default) ​ |
 </​WRAP> ​ </​WRAP> ​
-9. //​reserved1//​ \\+11. //​reserved2//​ \\
 Reserved Space. \\ \\ Reserved Space. \\ \\
-10. //​​reserved2//​​ \\ +12. //​​reserved2//​​ \\
-Reserved Space. \\ \\ +
-11. //​​reserved2//​​ \\+
 Reserved Space. \\ \\ Reserved Space. \\ \\
     
Line 3272: Line 3326:
 ==== BS2CustomCardConfig ==== ==== BS2CustomCardConfig ====
 <code cpp> <code cpp>
 +typedef struct {
 + uint8_t primaryKey[16];​
 + uint8_t secondaryKey[16];​
 + uint16_t startBlockIndex;​
 + uint8_t dataSize;
 + uint8_t skipBytes;
 + uint8_t reserved[16];​
 +} BS2CustomMifareCardEx;​
 +
 typedef struct { typedef struct {
  BS2_CARD_DATA_TYPE dataType;  BS2_CARD_DATA_TYPE dataType;
Line 3279: Line 3342:
  BS2CustomMifareCard mifare;  BS2CustomMifareCard mifare;
  BS2CustomDesFireCard desfire;  BS2CustomDesFireCard desfire;
- uint8_t reserved2[24]+ BS2CustomMifareCardEx mifareEx; 
- uint8_t reserved3[96];+ BS2_MIFARE_ENCRYPTION mifareEncType
 + uint8_t reserved3[67]; 
  
  BS2_CARD_BYTE_ORDER smartCardByteOrder;​  BS2_CARD_BYTE_ORDER smartCardByteOrder;​
Line 3288: Line 3352:
 } BS2CustomCardConfig;​ } BS2CustomCardConfig;​
 </​code>​ </​code>​
-1. //​dataType//​ \\ +1. //​primaryKey//​ \\ 
 +The first encryption key for accessing Mifare card information. \\ \\ 
 +2. //​secondaryKey//​ \\ 
 +The second encryption key for accessing Mifare card information. \\ \\ 
 +3. //​startBlockIndex//​ \\ 
 +The start block index in Mifare data storage. \\ \\ 
 +4. //​datasize//​ \\ 
 +Indicates the size of the card data in bytes. \\ \\ 
 +5. //​skipBytes//​ \\ 
 +Indicates the position where the card data appears. \\ 
 +Indicates the starting point for reading the card data. If reading from the beginning, it is 0; if reading after the first byte, it indicates the number of bytes skipped. \\ \\ 
 +6. //​reserved//​ \\ 
 +Reserved space. \\ \\ 
 + 
 +7. //​dataType//​ \\ 
 Type of card data. \\  Type of card data. \\ 
 <WRAP group 50%> <WRAP group 50%>
Line 3297: Line 3375:
 |3  |BCD  | |3  |BCD  |
 </​WRAP>​ </​WRAP>​
-2. //​useSecondaryKey//​ \\ +8. //​useSecondaryKey//​ \\ 
 Decides whether to use the secondary encryption key. \\ \\  Decides whether to use the secondary encryption key. \\ \\ 
-3. //​reserved1//​ \\ +9. //​reserved1//​ \\ 
 Reserved space. \\ \\  Reserved space. \\ \\ 
-4. //mifare// \\ +10. //mifare// \\ 
 Set the Mifare custom card information. \\ \\  Set the Mifare custom card information. \\ \\ 
-5. //desfire// \\ +11. //desfire// \\ 
 Set the DESFire custom card information. \\ \\  Set the DESFire custom card information. \\ \\ 
-6. //reserved2// \\ +12. //mifareEx// \\ 
 +[+2.9.9] Saves the setting information used for AES128-encrypted Mifare Custom cards on the device. \\ \\ 
 +13. //​mifareEncType//​ \\ 
 +[+2.9.9] Specifies the encryption method for Mifare Custom cards. Mifare Classic cards support only CRYPTO1, while Mifare Plus cards support both CRYPTO1 and AES128. \\ 
 +When set to CRYPTO1, the Mifare settings of BS2CustomMifareCard are applied. When set to AES128, applied to mifareEx settings of BS2CustomMifareConfigEx. \\  
 +<WRAP group 50%> 
 +^Value ​ ^Description ​ ^ 
 +|0  |CRYPTO1 ​ | 
 +|1  |AES128 ​ | 
 +</​WRAP>​ 
 +14. //reserved3// \\ 
 Reserved space. \\ \\  Reserved space. \\ \\ 
-7. //​reserved3//​ \\  +15. //​smartCardByteOrder//​ \\
-Reserved space. \\ \\  +
-8. //​smartCardByteOrder//​ \\+
 The output method can be selected from MSB or LSB. \\ The output method can be selected from MSB or LSB. \\
 <WRAP group 50%> <WRAP group 50%>
Line 3316: Line 3402:
 |1  |LSB  | |1  |LSB  |
 </​WRAP>​ </​WRAP>​
-9. //​reserved4//​ \\ +16. //​reserved4//​ \\ 
 Reserved space. \\ \\ Reserved space. \\ \\
-10. //​formatID//​ \\ +17. //​formatID//​ \\ 
 This is an identifier that can be used when the BioStar 2 application needs to manage the card configuration as a database. \\ \\  This is an identifier that can be used when the BioStar 2 application needs to manage the card configuration as a database. \\ \\ 
-11. //​reserved5//​ \\ +18. //reserved5// \\  
 +Reserved space. \\ \\ 
 + 
 +==== BS2MifareCardConfigEx ==== 
 +<code cpp> 
 +typedef struct { 
 +    uint8_t primaryKey[16];​ 
 +    uint8_t secondaryKey[16];​ 
 +    uint16_t startBlockIndex;​ 
 +    uint8_t reserved[14];​ 
 +} BS2MifareCardEx;​  
 + 
 +typedef struct { 
 +    BS2MifareCardEx mifareEx; 
 +    uint8_t reserved[16];​ 
 +} BS2MifareCardConfigEx;​ 
 +</​code>​ 
 +1. //​primaryKey//​ \\  
 +This is the first encryption key for accessing Mifare card information. \\ 
 +\\ 
 +2. //​secondaryKey//​ \\ 
 +This is the second encryption key for accessing Mifare card information. \\ 
 +\\ 
 +3. //​startBlockIndex//​ \\ 
 +This is the start block index in Mifare data storage. \\ 
 +\\ 
 +4. //​reserved//​ \\ 
 +Reserved space. 
 + 
 +==== BS2FacilityCodeConfig ==== 
 +<code cpp> 
 +typedef struct{ 
 +    uint8_t code[4];  
 +} BS2FacilityCode;​  
 + 
 +typedef struct{ 
 +        uint8_t numFacilityCode;​ 
 +        uint8_t reserved0[3];​ 
 +        BS2FacilityCode facilityCodes[16];​  
 +        uint8_t reserved1[128];​  
 +} BS2FacilityCodeConfig;​ 
 +</​code>​ 
 +1. //​numFacilityCode//​ \\ 
 +Set the number of FacilityCode to set. Up to 16 are supported. \\ \\ 
 +2. //​reserved0//​ \\ 
 +Reserved space. \\ \\ 
 +3. //​BS2FacilityCode//​ \\ 
 +Used as an authentication code when the OSDP connection between the Door Interface (DI-24) and the master device is lost. \\ \\ 
 +4. //​reserved1//​ \\ 
 +Reserved space. \\ \\ 
 + 
 +==== BS2Rs485ConfigEXDynamic ==== 
 +<code cpp> 
 +typedef struct { 
 +    uint32_t ​       deviceID; ​      ///<​  
 +    uint16_t ​       deviceType; ​    ///<​ 2 bytes 
 +    uint8_t ​        ​enableOSDP; ​    ///<​ 1 byte 
 +    uint8_t ​        ​connected; ​     ///< 1 bytes (packing) 
 + 
 +    union { 
 +            uint8_t ​        ​channelInfo;​ 
 +            uint32_t ​       parentID; 
 +    }; 
 +} BS2Rs485SlaveDeviceEX;​ 
 + 
 +typedef struct { 
 +    uint32_t ​               baudRate; 
 +    uint8_t ​                ​channelIndex;​ 
 +    uint8_t ​                ​useRegistance;​ 
 +    uint8_t ​                ​numOfDevices;​ 
 +    uint8_t ​                ​channelType;​ 
 +    BS2Rs485SlaveDeviceEX ​ *slaveDevices;​ 
 +} BS2Rs485ChannelEXDynamic;​ 
 + 
 +typedef struct { 
 +    BS2_RS485_MODE mode[8]; 
 +    uint16_t numOfChannels;​ 
 +    uint8_t reserved[2];​ 
 +    uint8_t reserved1[32];​ 
 +    BS2Rs485ChannelEXDynamic channels[8];​ 
 +} BS2Rs485ConfigEXDynamic;​ 
 +</​code>​ 
 +<WRAP info> 
 +All values ​​except baudRate are read-only and cannot be changed. \\ 
 +''​Supported devices:'':​ CoreStation 20(CS-20, CS-20P), Door Interface(DI-24) 
 +</​WRAP>​ 
 +1. //​baudRate//​ \\  
 +The RS-485 communication speed which can be configured as below. \\ 
 +<WRAP group 50%> 
 +^Value ​ ^ 
 +|9600  | 
 +|19200 ​ | 
 +|38400 ​ | 
 +|57600 ​ | 
 +|115200 ​ | 
 +</​WRAP>​ 
 +2. //​channelIndex//​ \\  
 +Communication channel index of the RS-485 network. \\ \\ 
 +3. //​useRegistance//​ \\  
 +Decides whether to use a resistance. \\ \\ 
 +4. //​numOfDevices//​ \\  
 +Number of slave devices. \\ \\ 
 +5. //​channelType//​ \\ 
 +Type of slave device connected to the port. \\ 
 +<WRAP group 50%> 
 +^Value ​ ^Description ​ ^ 
 +|0  |No connection ​ | 
 +|1  |Suprema device ​ | 
 +|2  |OSDP standard device ​ | 
 +|3  |Cannot connect anymore ​ | 
 +</​WRAP>​ 
 +6. //​slaveDevices//​ \\  
 +List of slave devices connected to the device. \\ 
 +<WRAP group 50%> 
 +Maximum Number of Devices Connectable per Port 
 +|Host port  |16  | 
 +|Port 0  |2  | 
 +|Port 1  |2  | 
 +</​WRAP>​ 
 +7. //mode// \\  
 +This flag determines the operating mode on the RS485 network. \\ 
 +<WRAP group 50%> 
 +^Value ​ ^Description ​ ^ 
 +|1  |Master ​ | 
 +|2  |Slave ​ | 
 +|3  |Standalone ​ | 
 +</​WRAP>​ 
 +<WRAP info> 
 +CoreStation can only be used as a Master. Other values cannot be configured. 
 +</​WRAP>​ 
 +8. //​numOfChannels//​ \\  
 +Number of RS485 channel. \\ \\  
 +9. //​reserved//​ \\  
 +Reserved space. \\ \\  
 +10. //reserved1// \\ 
 Reserved space. \\ \\ Reserved space. \\ \\
 +11. //​channels//​ \\ 
 +List of RS-485 channels, which can be configured up to 8 channels. \\ \\