차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
ko:zone_control_api [2018/03/12 08:38] kkshin [인터락 구역] |
ko:zone_control_api [2023/08/31 09:39] (현재) kkshin [BS2ZoneStatus] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Zone Control API ====== | ====== Zone Control API ====== | ||
- | 하나의 관리 지역을 특정 목적에 맞게 여러 구역으로 나눠 출입을 통제할 수 있습니다. 구역을 설정하면 출입 인증 장치, 출입문의 동작을 제어할 수 있으며, BioStart 시스템에서는 4 종류의 구역을 설정할 수 있습니다.\\ | + | 하나의 관리 지역을 특정 목적에 맞게 여러 구역으로 나눠 출입을 통제할 수 있습니다. 구역을 설정하면 출입 인증 장치, 출입문의 동작을 제어할 수 있습니다. \\ |
---- | ---- | ||
줄 16: | 줄 16: | ||
* [[BS2_ClearAntiPassbackZoneStatus]]: 주어진 사용자를 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | * [[BS2_ClearAntiPassbackZoneStatus]]: 주어진 사용자를 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | ||
* [[BS2_ClearAllAntiPassbackZoneStatus]]: 모든 사용자를 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | * [[BS2_ClearAllAntiPassbackZoneStatus]]: 모든 사용자를 안티패스백 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | ||
+ | * [[BS2_SetCheckGlobalAPBViolationHandler]]: 안티패스백 경보가 발생했을 때 글로벌 판정을 위해 콜백 함수를 등록합니다. | ||
+ | * [[BS2_CheckGlobalAPBViolation]]: 글로벌 안티패스백 판정 결과를 장치로 전송합니다. | ||
+ | * [[BS2_SetGlobalAPBViolationByDoorOpenHandler]]: [+ 2.7.0] 출입문 센서 기반의 안티패스백 경보가 발생했을 때 글로벌 판정을 위해 콜백 함수를 등록합니다. | ||
+ | * [[BS2_CheckGlobalAPBViolationByDoorOpen]]: [+ 2.7.0] 출입문 센서 기반의 글로벌 안티패스백 판정 결과를 장치로 전송합니다. | ||
---- | ---- | ||
줄 69: | 줄 73: | ||
---- | ---- | ||
==== 인터락 구역 ==== | ==== 인터락 구역 ==== | ||
- | [**CoreStation**] 이중 문으로 구성되어 다른 한 쪽 문을 통과하기 전에 반드시 반대 쪽이 닫혀 있어야 하는 경우 사용됩니다.\\ | + | **[CoreStation]** 이중 문으로 구성되어 다른 한 쪽 문을 통과하기 전에 반드시 반대 쪽이 닫혀 있어야 하는 경우 사용됩니다.\\ |
- | 현재 **CoreStation** 만 이 기능을 지원하고 있습니다. | + | 현재 CoreStation 만 이 기능을 지원하고 있습니다. |
* [[BS2_GetInterlockZone]]: 주어진 인터락 구역을 가져옵니다. | * [[BS2_GetInterlockZone]]: 주어진 인터락 구역을 가져옵니다. | ||
* [[BS2_GetInterlockZoneStatus]]: 주어진 인터락 구역의 상태 정보를 가져옵니다. | * [[BS2_GetInterlockZoneStatus]]: 주어진 인터락 구역의 상태 정보를 가져옵니다. | ||
줄 81: | 줄 85: | ||
---- | ---- | ||
==== Ethernet 구역 ==== | ==== Ethernet 구역 ==== | ||
- | Zone Master 역할을 BioStar V2.x 서버가 아닌 특정 장치가 하며 장치 사이(Master <-> Member)의 통신 방식으로 Ethernet TCP 통신 방식을 사용하는 Zone이다. | + | Zone Master 역할을 BioStar V2.x 서버가 아닌 특정 장치가 하며 장치 사이(Master <-> Member)의 통신 방식으로 Ethernet TCP 통신 방식을 사용하는 Zone입니다. |
- | 기존 1.x Entrance Limit, Fire Alarm 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_GetDeviceZone]]: 주어진 Ethernet 구역을 가져옵니다. | ||
* [[BS2_GetAllDeviceZone]]: 모든 Ethernet을 가져옵니다. | * [[BS2_GetAllDeviceZone]]: 모든 Ethernet을 가져옵니다. | ||
줄 91: | 줄 95: | ||
* [[BS2_ClearDeviceZoneAccessRecord]]: 주어진 사용자를 Ethernet 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | * [[BS2_ClearDeviceZoneAccessRecord]]: 주어진 사용자를 Ethernet 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | ||
* [[BS2_ClearAllDeviceZoneAccessRecord]]: 모든 사용자를 Ethernet 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | * [[BS2_ClearAllDeviceZoneAccessRecord]]: 모든 사용자를 Ethernet 구역의 규칙을 위반하지 않은 상태로 갱신합니다. | ||
- | * [[BS2_GetAccessGroupEntranceLimit]]: 주어진 인증 제한 구역을 가져옵니다. | ||
- | * [[BS2_GetAllAccessGroupEntranceLimit]]: 모든 인증 제한 구역을 가져옵니다. | ||
- | * [[BS2_SetAccessGroupEntranceLimit]]: 인증 제한 구역을 설정합니다. | ||
- | * [[BS2_RemoveAccessGroupEntranceLimit]]: 주어진 인증 제한 구역을 제거합니다. | ||
- | * [[BS2_RemoveAllAccessGroupEntranceLimit]]: 모든 인증 제한 구역을 제거합니다. | ||
* [[BS2_GetDeviceZoneAGEntranceLimit]]: 주어진 Ethernet Access Group 인증 제한 구역을 가져옵니다. | * [[BS2_GetDeviceZoneAGEntranceLimit]]: 주어진 Ethernet Access Group 인증 제한 구역을 가져옵니다. | ||
* [[BS2_GetAllDeviceZoneAGEntranceLimit]]: 모든 Ethernet Access Group 인증 제한 구역을 가져옵니다. | * [[BS2_GetAllDeviceZoneAGEntranceLimit]]: 모든 Ethernet Access Group 인증 제한 구역을 가져옵니다. | ||
줄 101: | 줄 100: | ||
* [[BS2_RemoveDeviceZoneAGEntranceLimit]]: 주어진 Ethernet Access Group 인증 제한 구역을 제거합니다. | * [[BS2_RemoveDeviceZoneAGEntranceLimit]]: 주어진 Ethernet Access Group 인증 제한 구역을 제거합니다. | ||
* [[BS2_RemoveAllDeviceZoneAGEntranceLimit]]: 모든 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 ==== | ||
+ | 안티패스백 경보가 발생했을 때 글로벌 판정을 위한 콜백 함수입니다. | ||
+ | <code cpp> | ||
+ | typedef void (*OnCheckGlobalAPBViolation)(uint32_t deviceId, uint16_t seq, const char* userID_1, const char* userID_2, bool isDualAuth); | ||
+ | </code> | ||
+ | \\ | ||
+ | |||
+ | 1. //deviceId// \\ | ||
+ | 장치 식별자입니다. \\ \\ | ||
+ | 2. //seq// \\ | ||
+ | 패킷 일련번호입니다. \\ \\ | ||
+ | 3. //userID_1// \\ | ||
+ | 첫 번째 사용자 ID 입니다. \\ \\ | ||
+ | 4. //userID_2// \\ | ||
+ | 두 번째 사용자 ID 입니다. \\ \\ | ||
+ | 5. //isDualAuth// \\ | ||
+ | 이중인증 여부를 의미합니다. \\ \\ | ||
+ | |||
+ | ==== OnCheckGlobalAPBViolationByDoorOpen ==== | ||
+ | 출입문 센서 기반의 안티패스백 경보가 발생했을 때, 인증정보를 바탕으로 글로벌 판정을 요청하는 1차 콜백 함수입니다. | ||
+ | <code cpp> | ||
+ | typedef void (*OnCheckGlobalAPBViolationByDoorOpen)(uint32_t deviceId, uint16_t seq, const char* userID_1, const char* userID_2, bool isDualAuth); | ||
+ | </code> | ||
+ | \\ | ||
+ | |||
+ | 1. //deviceId// \\ | ||
+ | 장치 식별자입니다. \\ \\ | ||
+ | 2. //seq// \\ | ||
+ | 패킷 일련번호입니다. \\ \\ | ||
+ | 3. //userID_1// \\ | ||
+ | 첫 번째 사용자 ID 입니다. \\ \\ | ||
+ | 4. //userID_2// \\ | ||
+ | 두 번째 사용자 ID 입니다. \\ \\ | ||
+ | 5. //isDualAuth// \\ | ||
+ | 이중인증 여부를 의미합니다. \\ \\ | ||
+ | |||
+ | ==== OnUpdateGlobalAPBViolationByDoorOpen ==== | ||
+ | 출입문 센서 기반의 안티패스백 경보가 발생했을 때, 최종 사용자 출입 상태의 업데이트를 요청하는 2차 콜백 함수입니다. | ||
+ | <code cpp> | ||
+ | typedef void (*OnUpdateGlobalAPBViolationByDoorOpen)(uint32_t deviceId, uint16_t seq, const char* userID_1, const char* userID_2, bool isDualAuth); | ||
+ | </code> | ||
+ | \\ | ||
+ | |||
+ | 1. //deviceId// \\ | ||
+ | 장치 식별자입니다. \\ \\ | ||
+ | 2. //seq// \\ | ||
+ | 패킷 일련번호입니다. \\ \\ | ||
+ | 3. //userID_1// \\ | ||
+ | 첫 번째 사용자 ID 입니다. \\ \\ | ||
+ | 4. //userID_2// \\ | ||
+ | 두 번째 사용자 ID 입니다. \\ \\ | ||
+ | 5. //isDualAuth// \\ | ||
+ | 이중인증 여부를 의미합니다. \\ \\ | ||
+ | |||
===== 구조체 ====== | ===== 구조체 ====== | ||
==== BS2ZoneStatus ==== | ==== BS2ZoneStatus ==== | ||
줄 119: | 줄 188: | ||
<WRAP group 50%> | <WRAP group 50%> | ||
^값 ^설명 ^ | ^값 ^설명 ^ | ||
- | |0 |정상 | | + | |0 |정상, 경비해제 | |
|1 |알람 발생 | | |1 |알람 발생 | | ||
- | |2 |scheduled lock | | + | |2 |Scheduled locked, Lift locked | |
- | |4 |scheduled unlock | | + | |4 |Scheduled unlocked, Lift unlocked | |
+ | |8 |경비 | | ||
</WRAP> | </WRAP> | ||
줄 229: | 줄 299: | ||
예약된 공간입니다. \\ \\ | 예약된 공간입니다. \\ \\ | ||
9. //resetDuration// \\ | 9. //resetDuration// \\ | ||
- | 사용자가 APB 규칙을 위반했을때 초기화하기까지의 걸리는 시간으로 초 단위로 설정할 수 있습니다. 만약 이 값이 0으로 설정되었다면 초기화하지 않는것을 의미하며, 오직 BioStar 애플리케이션을 통해서만 초기화될 수 있습니다. \\ \\ | + | APB 위반 상황이 초기화(해제) 될 때까지의 시간을 의미하며, 초 단위로 설정 합니다. |
+ | 이때 초기화에 소요되는 시간은 마지막 인증이 성공한 시간을 기준으로 계산됩니다. | ||
+ | 만일 이 값이 0으로 설정되었다면 초기화하지 않는 것을 의미하며, BS2_ClearAntiPassbackZoneStatus로 초기화 할 수 있습니다.\\ \\ | ||
10. //alarm// \\ | 10. //alarm// \\ | ||
사용자가 APB 규칙을 위반했을때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\ | 사용자가 APB 규칙을 위반했을때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\ | ||
줄 477: | 줄 549: | ||
활성화 여부 flag값입니다 . \\ \\ | 활성화 여부 flag값입니다 . \\ \\ | ||
4. //numInputs// \\ | 4. //numInputs// \\ | ||
- | 경비 경보 구역에 속한 침입감지센서 입력의 총 개수입니다. \\ \\ | + | 인터락 구역에 속한 출입문 센서 입력의 총 개수입니다. \\ \\ |
5. //numOutputs// \\ | 5. //numOutputs// \\ | ||
- | 경비 경보 구역에 속한 출력의 총 개수입니다. \\ \\ | + | 인터락 구역에 속한 출력의 총 개수입니다. \\ \\ |
6. //numDoors// \\ | 6. //numDoors// \\ | ||
- | 경비 경보 구역에 속한 출입문의 총 개수입니다. \\ \\ | + | 인터락 구역에 속한 출입문의 총 개수입니다. \\ \\ |
7. //reserved// \\ | 7. //reserved// \\ | ||
예약된 공간입니다. \\ \\ | 예약된 공간입니다. \\ \\ | ||
줄 731: | 줄 803: | ||
8. //accessGroupID// \\ | 8. //accessGroupID// \\ | ||
출입 그룹 식별자 리스트로 최대 16개까지 지정할 수 있습니다 \\ \\ | 출입 그룹 식별자 리스트로 최대 16개까지 지정할 수 있습니다 \\ \\ | ||
+ | |||
+ | ==== BS2DeviceZoneMasterConfig ==== | ||
+ | <code cpp> | ||
+ | typedef struct | ||
+ | { | ||
+ | bool enable; | ||
+ | uint8_t reserved1[1]; | ||
+ | uint16_t listenPort; | ||
+ | uint8_t reserved[4]; | ||
+ | } BS2DeviceZoneMasterConfig; | ||
+ | </code> | ||
+ | 1. //enable// \\ | ||
+ | 활성화 여부 flag값입니다. \\ \\ | ||
+ | 2. //reserved1// \\ | ||
+ | 예약된 공간입니다. \\ \\ | ||
+ | 3. //listenPort// \\ | ||
+ | Slave 장치들로부터 연결되어질 TCP/IP port 정보입니다. \\ \\ | ||
+ | 4. //reserved// \\ | ||
+ | 예약된 공간입니다. \\ \\ | ||
+ | |||
+ | ==== BS2LiftFloors ==== | ||
+ | <code cpp> | ||
+ | typedef struct { | ||
+ | uint32_t liftID; | ||
+ | uint16_t numFloors; | ||
+ | uint16_t reserved; | ||
+ | uint8_t floorIndices[256]; | ||
+ | } BS2LiftFloors; | ||
+ | </code> | ||
+ | 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 ==== | ||
+ | <code cpp> | ||
+ | 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; | ||
+ | </code> | ||
+ | 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개까지 설정할 수 있습니다. \\ \\ | ||