====== Zone Control API ======
하나의 관리 지역을 특정 목적에 맞게 여러 구역으로 나눠 출입을 통제할 수 있습니다. 구역을 설정하면 출입 인증 장치, 출입문의 동작을 제어할 수 있습니다. \\
----
==== 안티패스백 구역 ====
사용자가 자신의 카드를 제삼자에게 빌려준다든지 자신의 지문을 이용하여 제삼자를 안으로 들이는 상황을 방지하려면, 이중출입 방지 구역을 사용합니다. 이 구역은 두 가지 종류의 옵션(소프트, 하드)을 지원합니다. 소프트를 선택하면, 안티패스백을 위반해도 출입을 허용하지만 위반 사실을 사용자 로그에 기록합니다. 하드를 선택하면 모든 안티패스백을 허락하지 않으며 위반 사실을 사용자 로그에 기록합니다.
* [[BS2_GetAntiPassbackZone]]: 주어진 안티패스백 구역을 가져옵니다.
* [[BS2_GetAllAntiPassbackZone]]: 모든 안티패스백 구역을 가져옵니다.
* [[BS2_GetAntiPassbackZoneStatus]]: 주어진 안티패스백 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllAntiPassbackZoneStatus]]: 모든 안티패스백 구역의 상태 정보를 가져옵니다.
* [[BS2_SetAntiPassbackZone]]: 안티패스백 구역을 설정합니다.
* [[BS2_SetAntiPassbackZoneAlarm]]: 안티패스백 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveAntiPassbackZone]]: 주어진 안티패스백 구역을 제거합니다.
* [[BS2_RemoveAllAntiPassbackZone]]: 모든 안티패스백 구역을 제거합니다.
* [[BS2_ClearAntiPassbackZoneStatus]]: 주어진 사용자를 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다.
* [[BS2_ClearAllAntiPassbackZoneStatus]]: 모든 사용자를 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다.
* [[BS2_SetCheckGlobalAPBViolationHandler]]: 안티패스백 경보가 발생했을 때 글로벌 판정을 위해 콜백 함수를 등록합니다.
* [[BS2_CheckGlobalAPBViolation]]: 글로벌 안티패스백 판정 결과를 장치로 전송합니다.
* [[BS2_SetGlobalAPBViolationByDoorOpenHandler]]: [+ 2.7.0] 출입문 센서 기반의 안티패스백 경보가 발생했을 때 글로벌 판정을 위해 콜백 함수를 등록합니다.
* [[BS2_CheckGlobalAPBViolationByDoorOpen]]: [+ 2.7.0] 출입문 센서 기반의 글로벌 안티패스백 판정 결과를 장치로 전송합니다.
----
==== 시간 지정 안티패스백 구역 ====
사용자가 일정 시간내에 재진입하는 것을 막으려면, 인증 제한 구역을 사용합니다. 이 구역은 안티패스백 구역과 동일하게 두 가지 종류의 옵션(소프트, 하드)을 지원합니다.
* [[BS2_GetTimedAntiPassbackZone]]: 주어진 시간 지정 안티패스백 구역을 가져옵니다.
* [[BS2_GetAllTimedAntiPassbackZone]]: 모든 시간 지정 안티패스백 구역을 가져옵니다.
* [[BS2_GetTimedAntiPassbackZoneStatus]]: 주어진 시간 지정 안티패스백 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllTimedAntiPassbackZoneStatus]]: 모든 시간 지정 안티패스백 구역의 상태 정보를 가져옵니다.
* [[BS2_SetTimedAntiPassbackZone]]: 시간 지정 안티패스백 구역을 설정합니다.
* [[BS2_SetTimedAntiPassbackZoneAlarm]]: 시간 지정 안티패스백 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveTimedAntiPassbackZone]]: 주어진 시간 지정 안티패스백 구역을 제거합니다.
* [[BS2_RemoveAllTimedAntiPassbackZone]]: 모든 시간 지정 안티패스백 구역을 제거합니다.
* [[BS2_ClearTimedAntiPassbackZoneStatus]]: 주어진 사용자를 시간 지정 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다.
* [[BS2_ClearAllTimedAntiPassbackZoneStatus]]: 모든 사용자를 시간 지정 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다.
----
==== 화재 경보 구역 ====
출입 통제 구역에서 화재를 감지하고 경보를 제어하려면 화재 경보 구역을 사용합니다. 외부 입력 신호가 BioStar 시스템에 전달되면 BioStar는 자동으로 출입문을 개방하며 미리 정의한 경보를 수행합니다.
* [[BS2_GetFireAlarmZone]]: 주어진 화재 경보 구역을 가져옵니다.
* [[BS2_GetAllFireAlarmZone]]: 모든 화재 경보 구역을 가져옵니다.의
* [[BS2_GetFireAlarmZoneStatus]]: 주어진 화재 경보 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllFireAlarmZoneStatus]]: 모든 화재 경보 구역의 상태 정보를 가져옵니다.
* [[BS2_SetFireAlarmZone]]: 화재 경보 구역을 설정합니다.
* [[BS2_SetFireAlarmZoneAlarm]]: 화재 경보 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveFireAlarmZone]]: 주어진 화재 경보 구역을 제거합니다.
* [[BS2_RemoveAllFireAlarmZone]]: 모든 화재 경보 구역을 제거합니다.
----
==== 스케줄 잠금/개방 구역 ====
시간에 따라 구역을 개방하거나 폐쇄하려면 스케줄 잠금/개방 구역을 사용합니다. 이 구역은 일정 시간동안 모든 출입문을 개방하는 정시간 개방 상태와, 일정 시간동안 모든 출입문을 폐쇄하는 정시간 폐쇄 상태로 배타적으로 동작합니다.
* [[BS2_GetScheduledLockUnlockZone]]: 주어진 스케줄 잠금/개방 구역을 가져옵니다.
* [[BS2_GetAllScheduledLockUnlockZone]]: 모든 스케줄 잠금/개방 구역을 가져옵니다.
* [[BS2_GetScheduledLockUnlockZoneStatus]]: 주어진 스케줄 잠금/개방 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllScheduledLockUnlockZoneStatus]]: 모든 스케줄 잠금/개방 구역의 상태 정보를 가져옵니다.
* [[BS2_SetScheduledLockUnlockZone]]: 스케줄 잠금/개방 구역을 설정합니다.
* [[BS2_SetScheduledLockUnlockZoneAlarm]]: 스케줄 잠금/개방 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveScheduledLockUnlockZone]]: 주어진 스케줄 잠금/개방 구역을 제거합니다.
* [[BS2_RemoveAllScheduledLockUnlockZone]]: 모든 스케줄 잠금/개방 구역을 제거합니다.
----
==== 경비 경보 구역 ====
경비 구역에서 침입이나 이상 신호가 발생할 경우 신호를 수신하여 대처하는 시스템으로 사용합니다. 외부 입력 신호가 BioStar 시스템에 전달되면 BioStar는 자동으로 미리 정의한 경보를 수행합니다.
* [[BS2_GetIntrusionAlarmZone]]: 주어진 경비 경보 구역을 가져옵니다.
* [[BS2_GetIntrusionAlarmZoneStatus]]: 주어진 경비 경보 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllIntrusionAlarmZoneStatus]]: 모든 경비 경보 구역의 상태 정보를 가져옵니다.
* [[BS2_SetIntrusionAlarmZone]]: 경비 경보 구역을 설정합니다.
* [[BS2_SetIntrusionAlarmZoneAlarm]]: 경비 경보 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveIntrusionAlarmZone]]: 주어진 경비 경보 구역을 제거합니다.
* [[BS2_RemoveAllIntrusionAlarmZone]]: 모든 경비 경보 구역을 제거합니다.
* [[BS2_SetIntrusionAlarmZoneArm]]: 경비 경보 구역 상태를 경비/경비해제를 설정합니다.
\\
----
==== 인터락 구역 ====
**[CoreStation]** 이중 문으로 구성되어 다른 한 쪽 문을 통과하기 전에 반드시 반대 쪽이 닫혀 있어야 하는 경우 사용됩니다.\\
현재 CoreStation 만 이 기능을 지원하고 있습니다.
* [[BS2_GetInterlockZone]]: 주어진 인터락 구역을 가져옵니다.
* [[BS2_GetInterlockZoneStatus]]: 주어진 인터락 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllInterlockZoneStatus]]: 모든 인터락 구역의 상태 정보를 가져옵니다.
* [[BS2_SetInterlockZone]]: 인터락 구역을 설정합니다.
* [[BS2_SetInterlockZoneAlarm]]: 인터락 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveInterlockZone]]: 주어진 인터락 구역을 제거합니다.
* [[BS2_RemoveAllInterlockZone]]: 모든 인터락 구역을 제거합니다.
\\
----
==== Ethernet 구역 ====
Zone Master 역할을 BioStar V2.x 서버가 아닌 특정 장치가 하며 장치 사이(Master <-> Member)의 통신 방식으로 Ethernet TCP 통신 방식을 사용하는 Zone입니다.
현재는 기존 1.x Entrance Limit, Fire Alarm Zone에 기능만을 지원합니다. A2(FW 1.4.0 이상), BS2(FW 1.5.0 이상) and P2(FW 1.0.0이상)에서 지원합니다.
* [[BS2_GetDeviceZone]]: 주어진 Ethernet 구역을 가져옵니다.
* [[BS2_GetAllDeviceZone]]: 모든 Ethernet을 가져옵니다.
* [[BS2_SetDeviceZone]]: Ethernet 구역을 설정합니다.
* [[BS2_RemoveDeviceZone]]: 주어진 Ethernet 구역을 제거합니다.
* [[BS2_RemoveAllDeviceZone]]: 모든 Ethernet 구역을 제거합니다.
* [[BS2_SetDeviceZoneAlarm]]: Ethernet 구역의 경보 상태를 갱신합니다.
* [[BS2_ClearDeviceZoneAccessRecord]]: 주어진 사용자를 Ethernet 구역의 규칙을 위반하지 않은 상태로 갱신합니다.
* [[BS2_ClearAllDeviceZoneAccessRecord]]: 모든 사용자를 Ethernet 구역의 규칙을 위반하지 않은 상태로 갱신합니다.
* [[BS2_GetDeviceZoneAGEntranceLimit]]: 주어진 Ethernet Access Group 인증 제한 구역을 가져옵니다.
* [[BS2_GetAllDeviceZoneAGEntranceLimit]]: 모든 Ethernet Access Group 인증 제한 구역을 가져옵니다.
* [[BS2_SetDeviceZoneAGEntranceLimit]]: Ethernet Access Group 인증 제한 구역을 설정합니다.
* [[BS2_RemoveDeviceZoneAGEntranceLimit]]: 주어진 Ethernet Access Group 인증 제한 구역을 제거합니다.
* [[BS2_RemoveAllDeviceZoneAGEntranceLimit]]: 모든 Ethernet Access Group 인증 제한 구역을 제거합니다.
* [[BS2_GetDeviceZoneMasterConfig]]: Ethernet 구역의 master 장치 설정을 가져옵니다.
* [[BS2_SetDeviceZoneMasterConfig]]: Ethernet 구역의 master 장치 설정을 저장합니다.
* [[BS2_RemoveDeviceZoneMasterConfig]]: Ethernet 구역의 master 장치 설정을 제거합니다.
\\
----
==== Lift스케줄 잠금/개방 구역 ====
[+ 2.7.0] Elevator 제어관련, 인증권한과 무관하게 시간대를 기반으로 특정 층에 접근할 수 있도록 하는 새로운 함수들을 제공합니다.
* [[BS2_GetLiftLockUnlockZone]]: 주어진 Lift스케줄 잠금/개방 구역을 가져옵니다.
* [[BS2_GetAllLiftLockUnlockZone]]: 모든 Lift스케줄 잠금/개방 구역을 가져옵니다.
* [[BS2_GetLiftLockUnlockZoneStatus]]: 주어진 Lift스케줄 잠금/개방 구역의 상태 정보를 가져옵니다.
* [[BS2_GetAllLiftLockUnlockZoneStatus]]: 모든 Lift스케줄 잠금/개방 구역의 상태 정보를 가져옵니다.
* [[BS2_SetLiftLockUnlockZone]]: Lift스케줄 잠금/개방 구역을 설정합니다.
* [[BS2_SetLiftLockUnlockZoneAlarm]]: Lift스케줄 잠금/개방 구역의 경보 상태를 갱신합니다.
* [[BS2_RemoveLiftLockUnlockZone]]: 주어진 Lift스케줄 잠금/개방 구역을 제거합니다.
* [[BS2_RemoveAllLiftLockUnlockZone]]: 모든 Lift스케줄 잠금/개방 구역을 제거합니다.
\\
----
===== 콜백 함수 =====
==== OnCheckGlobalAPBViolation ====
안티패스백 경보가 발생했을 때 글로벌 판정을 위한 콜백 함수입니다.
typedef void (*OnCheckGlobalAPBViolation)(uint32_t deviceId, uint16_t seq, const char* userID_1, const char* userID_2, bool isDualAuth);
\\
1. //deviceId// \\
장치 식별자입니다. \\ \\
2. //seq// \\
패킷 일련번호입니다. \\ \\
3. //userID_1// \\
첫 번째 사용자 ID 입니다. \\ \\
4. //userID_2// \\
두 번째 사용자 ID 입니다. \\ \\
5. //isDualAuth// \\
이중인증 여부를 의미합니다. \\ \\
==== OnCheckGlobalAPBViolationByDoorOpen ====
출입문 센서 기반의 안티패스백 경보가 발생했을 때, 인증정보를 바탕으로 글로벌 판정을 요청하는 1차 콜백 함수입니다.
typedef void (*OnCheckGlobalAPBViolationByDoorOpen)(uint32_t deviceId, uint16_t seq, const char* userID_1, const char* userID_2, bool isDualAuth);
\\
1. //deviceId// \\
장치 식별자입니다. \\ \\
2. //seq// \\
패킷 일련번호입니다. \\ \\
3. //userID_1// \\
첫 번째 사용자 ID 입니다. \\ \\
4. //userID_2// \\
두 번째 사용자 ID 입니다. \\ \\
5. //isDualAuth// \\
이중인증 여부를 의미합니다. \\ \\
==== OnUpdateGlobalAPBViolationByDoorOpen ====
출입문 센서 기반의 안티패스백 경보가 발생했을 때, 최종 사용자 출입 상태의 업데이트를 요청하는 2차 콜백 함수입니다.
typedef void (*OnUpdateGlobalAPBViolationByDoorOpen)(uint32_t deviceId, uint16_t seq, const char* userID_1, const char* userID_2, bool isDualAuth);
\\
1. //deviceId// \\
장치 식별자입니다. \\ \\
2. //seq// \\
패킷 일련번호입니다. \\ \\
3. //userID_1// \\
첫 번째 사용자 ID 입니다. \\ \\
4. //userID_2// \\
두 번째 사용자 ID 입니다. \\ \\
5. //isDualAuth// \\
이중인증 여부를 의미합니다. \\ \\
===== 구조체 ======
==== BS2ZoneStatus ====
typedef struct {
uint32_t id;
uint8_t status;
uint8_t disabled;
uint8_t reserved[6];
} BS2ZoneStatus;
1. //id// \\
구역 식별자입니다. \\ \\
2. //status// \\
구역의 현재 상태 값으로 여러 상태값으로 조합될 수 있습니다. \\
^값 ^설명 ^
|0 |정상, 경비해제 |
|1 |알람 발생 |
|2 |Scheduled locked, Lift locked |
|4 |Scheduled unlocked, Lift unlocked |
|8 |경비 |
3. //disabled// \\
비활성화 상태인지를 나타내는 flag 값입니다. \\ \\
4. //reserved// \\
예약된 공간입니다. \\ \\
==== BS2ApbMember ====
typedef struct {
uint32_t deviceID;
uint8_t type;
uint8_t reserved[3];
} BS2ApbMember;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //type// \\
APB reader 유형입니다. \\
^값 ^설명 ^
|-1 |정의되지 않음 |
|0 |입구 리더 |
|1 |출구 리더 |
3. //reserved// \\
예약된 공간입니다. \\
==== BS2TimedApbMember ====
typedef struct {
uint32_t deviceID;
uint8_t reserved[4];
} BS2TimedApbMember;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //reserved// \\
예약된 공간입니다. \\
==== BS2FireSensor ====
typedef struct {
uint32_t deviceID;
uint8_t port;
uint8_t switchType;
uint8_t duration;
} BS2FireSensor ;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //port// \\
장치의 입력 포트입니다. \\ \\
3. //switchType// \\
입력 신호 유형입니다. \\
^값 ^설명 ^
|0 |대기 상태에서 열림 상태로 유지 |
|1 |대기 상태에서 닫힘 상태로 유지 |
4. //duration// \\
입력 신호를 화재 경보 상태로 판단하기까지 걸리는 시간으로 millisecond 단위입니다. \\
==== BS2AntiPassbackZone ====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t type;
uint8_t numReaders;
uint8_t numBypassGroups;
uint8_t disabled;
uint8_t alarmed;
uint8_t reserved[3];
uint32_t resetDuration;
BS2Action alarm[BS2_MAX_APB_ALARM_ACTION];
BS2ApbMember readers[BS2_MAX_READERS_PER_APB_ZONE];
uint8_t reserved2[512];
uint32_t bypassGroupIDs[BS2_MAX_BYPASS_GROUPS_PER_APB_ZONE];
} BS2AntiPassbackZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다. \\
**주의**\\
이중 출입 구역의 식별자와 출입문 식별자가 같을 경우 출입문 기반 이중 출입 구역으로 간주하기 때문에 해당 출입문이 제거될 때 구역 정보도 같이 제거될 수 있습니다.
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //type// \\
안티패스백 구역의 유형입니다. \\
^값 ^설명 ^
|0 |Hard APB(규칙 위반시 출입이 불가능하고 로그에 기록됨)|
|1 |Soft APB(규칙 위반시 출입은 허용하고 로그에 기록됨)|
4. //numReaders// \\
APB reader의 총 개수입니다. \\ \\
5. //numBypassGroups// \\
APB 규칙을 적용하지 않는 출입 그룹 식별자의 총 개수입니다 . \\ \\
6. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
7. //alarmed// \\
현재 구역의 경보 상태입니다. \\ \\
8. //reserved// \\
예약된 공간입니다. \\ \\
9. //resetDuration// \\
APB 위반 상황이 초기화(해제) 될 때까지의 시간을 의미하며, 초 단위로 설정 합니다.
이때 초기화에 소요되는 시간은 마지막 인증이 성공한 시간을 기준으로 계산됩니다.
만일 이 값이 0으로 설정되었다면 초기화하지 않는 것을 의미하며, BS2_ClearAntiPassbackZoneStatus로 초기화 할 수 있습니다.\\ \\
10. //alarm// \\
사용자가 APB 규칙을 위반했을때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
11. //readers// \\
안티패스백 구역에 속한 장치들을 나열한 리스트로 최대 64개까지 지정할 수 있습니다. \\ \\
12. //reserved2// \\
예약된 공간입니다. \\ \\
13. //bypassGroupIDs// \\
APB 규칙을 적용하지 않는 출입 그룹 식별자 리스트로 최대 16개까지 지정할 수 있습니다. \\ \\
==== BS2TimedAntiPassbackZone ====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t type;
uint8_t numReaders;
uint8_t numBypassGroups;
uint8_t disabled;
uint8_t alarmed;
uint8_t reserved[3];
uint32_t resetDuration;
BS2Action alarm[BS2_MAX_TIMED_APB_ALARM_ACTION];
BS2TimedApbMember readers[BS2_MAX_READERS_PER_TIMED_APB_ZONE];
uint8_t reserved2[320];
uint32_t bypassGroupIDs[BS2_MAX_BYPASS_GROUPS_PER_TIMED_APB_ZONE];
} BS2TimedAntiPassbackZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //type// \\
시간 지정 안티패스백 구역의 유형입니다. \\
^값 ^설명 ^
|0 |Hard APB(규칙 위반시 출입이 불가능하고 로그에 기록됨)|
|1 |Soft APB(규칙 위반시 출입은 허용하고 로그에 기록됨)|
4. //numReaders// \\
시간 지정 안티패스백 reader의 총 개수입니다. \\ \\
5. //numBypassGroups// \\
시간 지정 안티패스백 규칙을 적용하지 않는 출입 그룹 식별자의 총 개수입니다 . \\ \\
6. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
7. //alarmed// \\
현재 구역의 경보 상태입니다. \\ \\
8. //reserved// \\
예약된 공간입니다. \\ \\
9. //resetDuration// \\
사용자가 출입 후 동일 장치에 다시 출입하기 위해 대기해야 하는 시간으로 초 단위로 설정할 수 있습니다. 만약, 이 값이 0으로 설정되었다면 초기화하지 않는것을 의미하며, 오직 BioStar 애플리케이션을 통해서만 초기화될 수 있습니다. \\ \\
10. //alarm// \\
사용자가 시간 지정 안티패스백 규칙을 위반했을때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
11. //readers// \\
시간 지정 안티패스백 구역에 속한 장치들을 나열한 리스트로 최대 64개까지 지정할 수 있습니다. \\ \\
12. //reserved2// \\
예약된 공간입니다. \\ \\
13. //bypassGroupIDs// \\
시간 지정 안티패스백 규칙을 적용하지 않는 출입 그룹 식별자 리스트로 최대 16개까지 지정할 수 있습니다. \\ \\
==== BS2FireAlarmZone ====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t numSensors;
uint8_t numDoors;
uint8_t disabled;
uint8_t alarmed;
uint8_t reserved[8];
BS2FireSensor sensor[BS2_MAX_FIRE_SENSORS_PER_FIRE_ALARM_ZONE];
BS2Action alarm[BS2_MAX_FIRE_ALARM_ACTION];
uint8_t reserved2[32];
uint32_t doorIDs[BS2_MAX_DOORS_PER_FIRE_ALARM_ZONE];
} BS2FireAlarmZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //numSensors// \\
화재 경보 센서의 총 개수입니다. \\ \\
4. //numDoors// \\
화재 경보 구역에 속한 총 출입문 개수입니다. \\ \\
5. //alarmed// \\
현재 구역의 경보 상태입니다. \\ \\
6. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
7. //reserved// \\
예약된 공간입니다. \\ \\
8. //sensor// \\
화재 경보 구역에 속한 화재 경보 센서들을 나열한 리스트로 최대 8개까지 지정할 수 있습니다. \\ \\
9. //alarm// \\
화재를 감지했을 때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
10. //reserved2// \\
예약된 공간입니다. \\ \\
11. //doorIDs// \\
화재를 감지했을 때 열어야 할 출입문들을 나열한 리스트로 최대 32개까지 지정할 수 있습니다.\\
==== BS2ScheduledLockUnlockZone ====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint32_t lockScheduleID;
uint32_t unlockScheduleID;
uint8_t numDoors;
uint8_t numBypassGroups;
uint8_t numUnlockGroups;
uint8_t bidirectionalLock;
uint8_t disabled;
uint8_t alarmed;
uint8_t reserved[6];
BS2Action alarm[BS2_MAX_SCHEDULED_LOCK_UNLOCK_ALARM_ACTION];
uint8_t reserved2[32];
uint32_t doorIDs[BS2_MAX_DOORS_IN_SCHEDULED_LOCK_UNLOCK_ZONE];
uint32_t bypassGroupIDs[BS2_MAX_BYPASS_GROUPS_IN_SCHEDULED_LOCK_UNLOCK_ZONE];
uint32_t unlockGroupIDs[BS2_MAX_UNLOCK_GROUPS_IN_SCHEDULED_LOCK_UNLOCK_ZONE];
} BS2ScheduledLockUnlockZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //lockScheduleID// \\
구역에 속한 출입문이 스케줄 잠금 상태로 동작해야 할 출입 일정 식별자입니다. \\ \\
4. //unlockScheduleID// \\
구역에 속한 출입문이 스케줄 개방 상태로 동작해야 할 출입 일정 식별자입니다. \\ \\
5. //numDoors// \\
구역에 속한 출입문의 총 개수입니다. \\ \\
6. //numBypassGroups// \\
스케줄 잠금 상태에서도 출입을 허용하는 출입 그룹의 총 개수입니다. \\ \\
7. //numUnlockGroups// \\
스케줄 개방 일정에서 모든 출입문을 열 수 있는 권한을 가진 출입 그룹의 총 개수입니다. \\ \\
8. //bidirectionalLock// \\
강제 잠금 상태에서 출입문의 입구 장치와 출구 장치에서 모두 출입을 막아야 하는지 여부입니다. \\ \\
9. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
10. //alarmed// \\
현재 구역의 경보 상태입니다. \\ \\
11. //reserved// \\
예약된 공간입니다. \\ \\
12. //alarm// \\
구역 규칙을 위반하였을 때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
13. //reserved2// \\
예약된 공간입니다. \\ \\
14. //doorIDs// \\
구역에 속한 출입문 식별자를 나열한 리스트로 최대 32개까지 설정할 수 있습니다. \\ \\
15. //bypassGroupIDs// \\
스케줄 잠금 상태에서도 출입을 허용하는 출입 그룹 식별자를 나열한 리스트로 최대 16개까지 설정할 수 있습니다. \\ \\
16. //unlockGroupIDs// \\
스케줄 개방 일정에서 모든 출입문을 열 수 있는 권한을 가진 출입 그룹 식별자를 나열한 리스트로 최대 16개까지 설정할 수 있습니다. \\ \\
==== BS2IntrusionAlarmZone====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t armDelay;
uint8_t alarmDelay;
uint8_t disabled;
uint8_t reserved[1];
uint8_t numReaders;
uint8_t numInputs;
uint8_t numOutputs;
uint8_t numCards;
uint8_t numDoors;
uint8_t numGroups;
uint8_t reserved2[10];
} BS2IntrusionAlarmZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //armDelay// \\
경비 수행 지연시간입니다. \\ \\
4. //alarmDelay// \\
경비 해제 수행 지연시간입니다. \\ \\
5. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
6. //reserved[1]// \\
예약된 공간입니다. \\ \\
7. //numReaders// \\
경비 경보 구역에 속한 장치들의 총 개수입니다. \\ \\
8. //numInputs// \\
경비 경보 구역에 속한 침입감지센서 입력의 총 개수입니다. \\ \\
9. //numOutputs// \\
경비 경보 구역에 속한 출력의 총 개수입니다. \\ \\
10. //numCards// \\
경비 경보 구역에 속한 카드의 총 개수입니다. \\ \\
11. //numDoors// \\
경비 경보 구역에 속한 출입문의 총 개수입니다. \\ \\
12. //numGroups// \\
경비 경보 구역에 속한 출입그룹의 총 개수입니다. \\ \\
13. //reserved// \\
예약된 공간입니다. \\ \\
==== BS2IntrusionAlarmZoneBlob====
typedef struct {
BS2IntrusionAlarmZone IntrusionAlarmZone;
BS2AlarmZoneMember* memberObjs;
BS2AlarmZoneInput* inputObjs;
BS2AlarmZoneOutput* outputObjs;
BS2CSNCard* cardObjs;
BS2_DOOR_ID* doorIDs;
BS2_ACCESS_GROUP_ID* groupIDs;
} BS2IntrusionAlarmZoneBlob;
1. //IntrusionAlarmZone// \\
경비 경보 구역의 기본 정보를 정의한 구조체입니다. \\ \\
2. //memberObjs// \\
경비 경보 구역에 속한 장치들을 나열한 리스트로 반드시 **IntrusionAlarmZone.numReaders**만큼 존재해야 합니다. \\ \\
3. //inputObjs// \\
경비 경보 구역에 속한 입력들을 나열한 리스트로 반드시 **IntrusionAlarmZone.numInputs**만큼 존재해야 합니다. \\ \\
4. //outputObjs// \\
경비 경보 구역에 속한 출력들을 나열한 리스트로 반드시 **IntrusionAlarmZone.numOutputs**만큼 존재해야 합니다. 데이터 형식은 \\ \\
5. //cardObjs// \\
경비 경보 구역에 속한 카드들을 나열한 리스트로 반드시 **IntrusionAlarmZone.numCards**만큼 존재해야 합니다. 데이터 형식은 [[Smartcard API]]를 참고하십시오. \\ \\
6. //doorIDs// \\
경비 경보 구역에 속한 출입문 식별자를 나열한 리스트로 반드시 **IntrusionAlarmZone.numDoors**만큼 존재해야 합니다. \\ \\
7. //groupIDs// \\
경비 경보 구역을 위한 출입 그룹 식별자를 나열한 리스트로 반드시 **IntrusionAlarmZone.numGroups**만큼 존재해야 합니다. \\ \\
==== BS2InterlockZone====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t disabled;
uint8_t numInputs;
uint8_t numOutputs;
uint8_t numDoors;
uint8_t reserved[8];
} BS2InterlockZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
4. //numInputs// \\
인터락 구역에 속한 출입문 센서 입력의 총 개수입니다. \\ \\
5. //numOutputs// \\
인터락 구역에 속한 출력의 총 개수입니다. \\ \\
6. //numDoors// \\
인터락 구역에 속한 출입문의 총 개수입니다. \\ \\
7. //reserved// \\
예약된 공간입니다. \\ \\
==== BS2InterlockZoneBlob====
typedef struct {
BS2InterlockZone InterlockZone;
BS2InterlockZoneInput* inputObjs;
BS2InterlockZoneOutput* outputObjs;
BS2_DOOR_ID* doorIDs;
} BS2InterlockZoneBlob;
1. //InterlockZone// \\
인터락 구역의 기본 정보를 정의한 구조체입니다. \\ \\
2. //inputObjs// \\
인터락 구역에 속한 입력들을 나열한 리스트로 반드시 **InterlockZone.numInputs**만큼 존재해야 합니다. \\ \\
3. //outputObjs// \\
인터락 구역에 속한 출력들을 나열한 리스트로 반드시 **InterlockZone.numOutputs**만큼 존재해야 합니다. \\ \\
4. //doorIDs// \\
인터락 구역에 속한 출입문 식별자를 나열한 리스트로 반드시 **InterlockZone.numDoors**만큼 존재해야 합니다. \\ \\
==== BS2DeviceZoneEntranceLimitMaster====
typedef struct {
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t type;
uint8_t reserved1[3];
uint32_t entryLimitInterval_s;
uint8_t numEntranceLimit;
uint8_t numReaders;
uint8_t numAlarm;
uint8_t numBypassGroups;
uint8_t maxEntry[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE];
uint32_t periodStart_s[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE];
uint32_t periodEnd_s[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE];
BS2DeviceZoneEntranceLimitMemberInfo readers[BS2_MAX_READERS_PER_DEVICE_ZONE_ENTRANCE_LIMIT];
BS2Action alarm[BS2_MAX_DEVICE_ZONE_ENTRANCE_LIMIT_ALARM_ACTION];
BS2_ACCESS_GROUP_ID bypassGroupIDs[BS2_MAX_BYPASS_GROUPS_PER_DEVICE_ZONE_ENTRANCE_LIMIT];
uint8_t reserved3[8 * 4];
} BS2DeviceZoneEntranceLimitMaster;
1. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
2. //type// \\
인증 제한 구역의 유형입니다 \\ \\
^값 ^설명 ^
|1 |Soft EntranceLimit(규칙 위반시 출입이 불가능하고 로그에 기록됨)|
|2 |Hard EntranceLimit(규칙 위반시 출입은 허용하고 로그에 기록됨)|
3. //reserved1[3]// \\
예약된 공간입니다. \\ \\
4. //entryLimitInterval_s// \\
인증 출입간의 간격입니다. \\ \\
5. //numEntranceLimit// \\
인증 제한 총 개수입니다. \\ \\
6. //numReaders// \\
인증 제한 구역 reader의 총 개수입니다. \\ \\
7. //numAlarm// \\
인증 제한 구역 경보의 총 개수입니다. \\ \\
8. //numBypassGroups// \\
인증 제한 구역 규칙을 적용하지 않는 출입 그룹 식별자의 총 개수입니다. \\ \\
9. //maxEntry// \\
출입 지정 최대 횟수입니다. \\ \\
10. //periodStart_s// \\
출입 가능한 시작 시간입니다. (초단위) \\ \\
11. //periodEnd_s// \\
출입 가능한 종료 시간입니다. (초단위)\\ \\
12. //readers// \\
인증 제한 구역에 속한 장치들을 나열한 리스트로 최대 64개까지 지정할 수 있습니다. \\ \\
13. //alarm// \\
구역 규칙을 위반하였을 때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
14. //bypassGroupIDs// \\
인증 제한 규칙을 적용하지 않는 출입 그룹 식별자 리스트로 최대 16개까지 지정할 수 있습니다. \\ \\
15. //reserved3// \\
예약된 공간입니다. \\ \\
==== BS2DeviceZoneEntranceLimitMember====
typedef struct {
uint16_t masterPort;
BS2_DEVICE_ZONE_ENTRANCE_LIMIT_DISCONNECTED_ACTION_TYPE actionInDisconnect;
uint8_t reserved1[1];
BS2_IPV4_ADDR masterIP;
} BS2DeviceZoneEntranceLimitMember;
1. //masterPort// \\
master 장치의 port입니다. \\ \\
2. //actionInDisconnect// \\
Disconnect일때의 액션입니다 .\\ \\
^값 ^설명 ^
|1 |Soft EntranceLimit Disconnected action(규칙 위반시 출입이 불가능하고 로그에 기록됨)|
|2 |Hard EntranceLimit Disconnected action(규칙 위반시 출입은 허용하고 로그에 기록됨)|
3. //reserved1[3]// \\
예약된 공간입니다. \\ \\
4. //masterIP// \\
master 장치의 IP입니다. \\ \\
==== BS2DeviceZoneFireAlarmMaster====
typedef struct {
char name[BS2_MAX_ZONE_NAME_LEN];
uint8_t numReaders;
uint8_t numAlarm;
uint8_t reserved1[2];
BS2DeviceZoneFireAlarmMemberInfo readers[BS2_MAX_READERS_PER_DEVICE_ZONE_FIRE_ALARM];
BS2Action alarm[BS2_MAX_DEVICE_ZONE_FIRE_ALARM_ALARM_ACTION];
uint8_t reserved2[8 * 40];
} BS2DeviceZoneFireAlarmMaster;
1. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
2. //numReaders// \\
화재 경보 구역에 속한 장치의 총 개수입니다. \\ \\
3. //reserved1// \\
예약된 공간입니다. \\ \\
4. //readers// \\
화재 경보 구역에 속한 장치입니다. \\ \\
5. //alarm// \\
화재를 감지했을 때 동작할 경보로 최대 5개까지 설정할 수 있습니다 \\ \\
6. //reserved2// \\
예약된 공간입니다. \\ \\
==== BS2DeviceZoneFireAlarmMember====
typedef struct {
BS2_PORT masterPort;
uint8_t reserved1[2];
BS2_IPV4_ADDR masterIP;
uint8_t numSensors;
uint8_t numDoors;
uint8_t reserved2[2];
BS2DeviceZoneFireSensor sensor[BS2_MAX_FIRE_SENSORS_PER_DEVICE_ZONE_FIRE_ALARM_MEMBER];
union {
BS2_DOOR_ID doorIDs[BS2_MAX_DOORS_PER_DEVICE_ZONE_FIRE_ALARM_MEMBER];
BS2_LIFT_ID liftIDs[BS2_MAX_DOORS_PER_DEVICE_ZONE_FIRE_ALARM_MEMBER];
};
} BS2DeviceZoneFireAlarmMember;
1. //masterPort// \\
master 장치의 port입니다. \\ \\
2. //reserved1// \\
예약된 공간입니다. \\ \\
3. //masterIP// \\
master 장치의 IP입니다. \\ \\
4. //numSensors// \\
화재 경보 센서의 총 개수입니다. \\ \\
5. //numDoors// \\
화재 경보 구역에 속한 총 출입문 개수입니다. \\ \\
6. //reserved2// \\
예약된 공간입니다. \\ \\
7. //sensor// \\
화재 경보 구역에 속한 화재 경보 센서들을 나열한 리스트로 최대 8개까지 지정할 수 있습니다. \\ \\
8. //doorIDs// \\
화재를 감지했을 때 열어야 할 출입문들을 나열한 리스트로 최대 8개까지 지정할 수 있습니다. \\ \\
9. //liftIDs// \\
화재를 감지했을 때 열어야 할 Lift들을 나열한 리스트로 최대 8개까지 지정할 수 있습니다. \\ \\
==== BS2DeviceZoneFireAlarmMemberInfo====
typedef struct {
uint32_t readerID;
} BS2DeviceZoneFireAlarmMemberInfo;
1. //readerID// \\
화재 경보에 속한 장치입니다. \\ \\
==== BS2DeviceZoneFireSensor====
typedef struct {
uint32_t deviceID;
uint8_t port;
uint8_t switchType;
uint16_t duration;
} BS2DeviceZoneFireSensor;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //port// \\
장치의 입력 포트입니다. \\ \\
3. //switchType// \\
입력 신호 유형입니다. \\
^값 ^설명 ^
|0 |대기 상태에서 열림 상태로 유지 |
|1 |대기 상태에서 닫힘 상태로 유지 |
4. //duration// \\
입력 신호를 화재 경보 상태로 판단하기까지 걸리는 시간으로 millisecond 단위입니다. \\
==== BS2DeviceZone====
typedef struct {
uint32_t zoneID;
uint8_t zoneType;
uint8_t nodeType;
uint8_t enable;
uint8_t reserved[1];
union {
BS2DeviceZoneEntranceLimitMaster entranceLimitMaster;
BS2DeviceZoneEntranceLimitMember entranceLimitMember;
BS2DeviceZoneFireAlarmMaster fireAlarmMaster;
BS2DeviceZoneFireAlarmMember fireAlarmMember;
};
} BS2DeviceZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //zoneType// \\
경비 수행 지연시간입니다. \\ \\
3. //nodeType// \\
경비 해제 수행 지연시간입니다. \\ \\
4. //enable// \\
활성화 여부 flag값입니다 . \\ \\
5. //reserved[1]// \\
예약된 공간입니다. \\ \\
==== BS2DeviceZoneAGEntranceLimit====
typedef struct {
uint32_t zoneID;
uint16_t numAGEntranceLimit;
uint16_t reserved1;
uint32_t periodStart_s[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE];
uint32_t periodEnd_s[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE];
uint16_t numEntry[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE];
uint16_t maxEntry[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE][BS2_MAX_ACCESS_GROUP_ENTRANCE_LIMIT_PER_ENTRACE_LIMIT];
uint32_t accessGroupID[BS2_MAX_ENTRANCE_LIMIT_PER_ZONE][BS2_MAX_ACCESS_GROUP_ENTRANCE_LIMIT_PER_ENTRACE_LIMIT];
} BS2DeviceZoneAGEntranceLimit;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //numAGEntranceLimit// \\
출입그룹 인증 제한 총 개수입니다. \\ \\
3. //reserved1// \\
예약된 공간입니다. \\ \\
4. //periodStart_s// \\
출입 가능한 시작 시간입니다. \\ \\
5. //periodEnd_s// \\
출입 가능한 종료 시간입니다. \\ \\
6. //numEntry// \\
출입 총 개수입니다. \\ \\
7. //maxEntry// \\
출입 지정 최대 횟수입니다. \\ \\
8. //accessGroupID// \\
출입 그룹 식별자 리스트로 최대 16개까지 지정할 수 있습니다 \\ \\
==== BS2DeviceZoneMasterConfig ====
typedef struct
{
bool enable;
uint8_t reserved1[1];
uint16_t listenPort;
uint8_t reserved[4];
} BS2DeviceZoneMasterConfig;
1. //enable// \\
활성화 여부 flag값입니다. \\ \\
2. //reserved1// \\
예약된 공간입니다. \\ \\
3. //listenPort// \\
Slave 장치들로부터 연결되어질 TCP/IP port 정보입니다. \\ \\
4. //reserved// \\
예약된 공간입니다. \\ \\
==== BS2LiftFloors ====
typedef struct {
uint32_t liftID;
uint16_t numFloors;
uint16_t reserved;
uint8_t floorIndices[256];
} BS2LiftFloors;
1. //liftID// \\
lift 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //numFloors// \\
floorIndices의 개수입니다. \\ \\
3. //reserved// \\
예약된 공간입니다. \\ \\
4. //floorIndices// \\
BS2Lift의 BS2LiftFloor 255개 배열에서 원하는 floor 정보의 인덱스 값을 이곳에서 순서대로 나열합니다. \\
예를들어, 1, 3, 5, 9번째 BS2LiftFloor 정보로 scheduled lock/unlock 구역의 멤버 floor를 구성하고 싶다면, \\
floorIndices[0]부터 순서대로 1, 3, 5, 9로 지정되어야 합니다. \\ \\
==== BS2LiftLockUnlockZone ====
typedef struct {
uint32_t zoneID;
char name[BS2_MAX_ZONE_NAME_LEN];
uint32_t unlockScheduleID;
uint32_t lockScheduleID;
uint8_t numLifts;
uint8_t numBypassGroups;
uint8_t numUnlockGroups;
uint8_t unused;
uint8_t disabled;
uint8_t alarmed;
uint8_t reserved[6];
BS2Action alarm[BS2_MAX_LIFT_LOCK_UNLOCK_ALARM_ACTION];
uint8_t reserved2[32];
BS2LiftFloors lifts[BS2_MAX_LIFTS_IN_LIFT_LOCK_UNLOCK_ZONE];
uint32_t bypassGroupIDs[BS2_MAX_BYPASS_GROUPS_IN_LIFT_LOCK_UNLOCK_ZONE];
uint32_t unlockGroupIDs[BS2_MAX_UNLOCK_GROUPS_IN_LIFT_LOCK_UNLOCK_ZONE];
} BS2LiftLockUnlockZone;
1. //zoneID// \\
구역 식별자로 항상 1이상의 값을 가져야 합니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여줄 구역 이름입니다. \\ \\
3. //unlockScheduleID// \\
구역으로 지정한 lift floor들이 스케줄 개방 상태로 동작해야 할 스케줄정보 식별자입니다. \\ \\
4. //lockScheduleID// \\
구역으로 지정한 lift floor들이 스케줄 잠금 상태로 동작해야 할 스케줄정보 식별자입니다. \\ \\
5. //numLifts// \\
lifts로 지정한 정보의 개수입니다. \\ \\
6. //numBypassGroups// \\
lift스케줄 잠금 상태에서도 출입을 허용하는 출입 그룹의 총 개수입니다. \\ \\
7. //numUnlockGroups// \\
lift스케줄 개방 일정에서 모든 출입문을 열 수 있는 권한을 가진 출입 그룹의 총 개수입니다. \\ \\
8. //unused// \\
사용하지 않는 필드입니다. \\ \\
9. //disabled// \\
활성화 여부 flag값입니다 . \\ \\
10. //alarmed// \\
현재 구역의 경보 상태입니다. \\ \\
11. //reserved// \\
예약된 공간입니다. \\ \\
12. //alarm// \\
구역 규칙을 위반하였을 때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
13. //reserved2// \\
예약된 공간입니다. \\ \\
14. //lifts// \\
lift의 floor 정보입니다. \\ \\
15. //bypassGroupIDs// \\
lift스케줄 잠금 상태에서도 출입을 허용하는 출입 그룹 식별자를 나열한 리스트로 최대 16개까지 설정할 수 있습니다. \\ \\
16. //unlockGroupIDs// \\
lift스케줄 개방 일정에서 모든 출입문을 열 수 있는 권한을 가진 출입 그룹 식별자를 나열한 리스트로 최대 16개까지 설정할 수 있습니다. \\ \\