차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
ko:zone_control_api [2018/03/12 08:29]
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:
 ---- ----
 ==== 인터락 구역 ==== ==== 인터락 구역 ====
-이중 문으로 구성되어 다른 한 쪽 문을 통과하기 전에 반드시 반대 쪽이 닫혀 있어야 하는 경우 사용됩니다. ​(CoreStation40 ​만 해당)+**[CoreStation]** ​이중 문으로 구성되어 다른 한 쪽 문을 통과하기 전에 반드시 반대 쪽이 닫혀 있어야 하는 경우 사용됩니다.\\ 
 +현재 CoreStation ​만 이 기능을 지원하고 있습니다.
   * [[BS2_GetInterlockZone]]:​ 주어진 인터락 구역을 가져옵니다.  ​   * [[BS2_GetInterlockZone]]:​ 주어진 인터락 구역을 가져옵니다.  ​
   * [[BS2_GetInterlockZoneStatus]]:​ 주어진 인터락 구역의 상태 정보를 가져옵니다.   * [[BS2_GetInterlockZoneStatus]]:​ 주어진 인터락 구역의 상태 정보를 가져옵니다.
줄 80: 줄 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을 가져옵니다.  ​
줄 90: 줄 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 인증 제한 구역을 가져옵니다.  ​
줄 100: 줄 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 ====
줄 118: 줄 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> ​
  
줄 228: 줄 299:
 예약된 공간입니다. \\ \\ 예약된 공간입니다. \\ \\
 9. //​resetDuration//​ \\  9. //​resetDuration//​ \\ 
-사용자가 ​APB 규칙을 ​위반했을때 ​초기화하기까지의 ​걸리는 ​시간으로 ​초 단위로 설정할 수 있습니다. 만약 이 값이 0으로 설정되었다면 초기화하지 않는것을 의미하며, ​오직 BioStar 애플리케이션을 통해서만 ​초기화될 수 있습니다. \\ \\+APB 위반 ​상황이 ​초기화(해제) 될 때까지의 시간을 의미하며, ​초 단위로 설정 ​합니다. 
 +이때 초기화에 소요되는 시간은 마지막 인증이 성공한 시간을 기준으로 계산됩니다. 
 +일 이 값이 0으로 설정되었다면 초기화하지 않는 것을 의미하며, ​BS2_ClearAntiPassbackZoneStatus로 ​초기화 ​할 수 있습니다.\\ \\
 10. //alarm// \\  10. //alarm// \\ 
 사용자가 APB 규칙을 위반했을때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\ 사용자가 APB 규칙을 위반했을때 동작할 경보로 최대 5개까지 설정할 수 있습니다. \\ \\
줄 476: 줄 549:
 활성화 여부 flag값입니다 . \\ \\  활성화 여부 flag값입니다 . \\ \\ 
 4. //​numInputs//​ \\  4. //​numInputs//​ \\ 
-경비 경보 ​구역에 속한 ​감지센서 입력의 총 개수입니다. \\ \\ +인터락 ​구역에 속한 ​문 센서 입력의 총 개수입니다. \\ \\ 
 5. //​numOutputs//​ \\  5. //​numOutputs//​ \\ 
-경비 경보 ​구역에 속한 출력의 총 개수입니다. \\ \\+인터락 ​구역에 속한 출력의 총 개수입니다. \\ \\
 6. //​numDoors//​ \\  6. //​numDoors//​ \\ 
-경비 경보 ​구역에 속한 출입문의 총 개수입니다. \\ \\ +인터락 ​구역에 속한 출입문의 총 개수입니다. \\ \\ 
 7. //​reserved//​ \\  7. //​reserved//​ \\ 
 예약된 공간입니다. \\ \\ 예약된 공간입니다. \\ \\
줄 730: 줄 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개까지 설정할 수 있습니다. \\ \\