====== Door Control API ======
출입문의 내외부에 어떤 장치가 설치되어 있는지, 장치가 출입문을 어떻게 제어할것인지, 이중 인증 방지 구역을 어떻게 적용할 것인지 설정할 수 있습니다.. \\
* [[BS2_GetDoor]]: 주어진 출입문을 가져옵니다.
* [[BS2_GetAllDoor]]: 모든 출입문을 가져옵니다.
* [[BS2_GetDoorStatus]]: 주어진 출입문의 상태 정보를 가져옵니다.
* [[BS2_GetAllDoorStatus]]: 모든 출입문의 상태 정보를 가져옵니다.
* [[BS2_SetDoor]]: 출입문을 설정합니다.
* [[BS2_SetDoorAlarm]]: 출입문의 경보 상태를 갱신합니다.
* [[BS2_RemoveDoor]]: 주어진 출입문를 제거합니다.
* [[BS2_RemoveAllDoor]]: 모든 출입문를 제거합니다.
* [[BS2_ReleaseDoor]]: 출입문의 우선 순위를 제거합니다.
* [[BS2_LockDoor]]: 출입문이 닫힐 때의 우선 순위를 설정하며, 열릴 때의 우선 순위보다 높아야 문이 닫힙니다.
* [[BS2_UnlockDoor]]: 출입문이 열릴 때의 우선 순위를 설정하며, 닫힐 때의 우선 순위보다 높아야 문이 열립니다.
* [[BS2_TimedLockDoor]]: [+ 2.9.12] 시간 제한 출입문 잠금을 수행합니다.
* [[BS2_TimedUnlockDoor]]: [+ 2.9.12] 시간 제한 출입문 개방을 수행합니다.
===== 구조체 ======
==== BS2DoorRelay ====
typedef struct {
uint32_t deviceID;
uint8_t port;
uint8_t reserved[3];
} BS2DoorRelay;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //port// \\
릴레이 port number입니다. \\ \\
3. //reserved// \\
예약된 공간입니다. \\
==== BS2DoorSensor ====
typedef struct {
uint32_t deviceID;
uint8_t port;
uint8_t switchType;
uint8_t apbUseDoorSensor;
uint8_t reserved[1];
} BS2DoorSensor;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //port// \\
입력 port number입니다. \\ \\
3. //switchType// \\
입력 신호 유형입니다. \\
^값 ^설명 ^
|0 |대기 상태에서 열림 상태로 유지 |
|1 |대기 상태에서 닫힘 상태로 유지 |
4. //apbUseDoorSensor// \\
APB 사용 시 door sensor를 사용할지 여부를 설정합니다. \\
5. //reserved// \\
예약된 공간입니다. \\ \\
==== BS2ExitButton ====
typedef struct {
uint32_t deviceID;
uint8_t port;
uint8_t switchType;
uint8_t reserved[2];
} BS2ExitButton ;
1. //deviceID// \\
장치 식별자입니다. \\ \\
2. //port// \\
입력 port number입니다. \\ \\
3. //switchType// \\
입력 신호 유형입니다. \\
^값 ^설명 ^
|0 |대기 상태에서 열림 상태로 유지 |
|1 |대기 상태에서 닫힘 상태로 유지 |
4. //reserved// \\
예약된 공간입니다. \\ \\
==== BS2DoorStatus ====
typedef struct {
uint32_t id;
uint8_t opened;
uint8_t unlocked;
uint8_t heldOpened;
uint8_t unlockFlags;
uint8_t lockFlags;
uint8_t alarmFlags;
uint8_t reserved[2];
uint32_t lastOpenTime;
} BS2DoorStatus;
1. //id// \\
출입문 식별자입니다.\\ \\
2. //opened// \\
출입문이 열려있는지 나타내는 flag 입니다.\\ \\
3. //unlocked// \\
출입문이 개방되어있는지 나타내는 flag 입니다.\\ \\
4. //heldOpened// \\
출입문이 장시간 열림 상태인지 나타내는 flag 입니다.\\ \\
5. //unlockFlags// \\
출입문이 열릴 때의 우선 순위로 닫힐 때의 우선 순위보다 낮으면 수행되지 않습니다. 예를 들어, 관리자 권한으로 출입문을 닫은 상태라면(OPERATOR), 모든 사용자의 출입이 허용되지 않습니다. 유의해야 할 사항으로 unlockFlags와 lockFlags는 기본 우선 순위(NONE)를 제외하고는 동일 우선 순위를 가질 수 없습니다.\\
^값 ^설명 ^우선순위 ^
|0 |기본 |보통 |
|1 |일정 |약간 높음 |
|4 |관리자 |높음 |
|2 |긴급 |매우 높음 |
6. //lockFlags// \\
출입문이 닫힐 때의 우선 순위로 열릴 때의 우선 순위보다 낮으면 수행되지 않습니다.\\ \\
^값 ^설명 ^우선순위 ^
|0 |기본 |보통 |
|1 |일정 |약간 높음 |
|4 |관리자 |높음 |
|2 |긴급 |매우 높음 |
7. //alarmFlags// \\
현재 출입문의 경보 상태 정보입니다.\\
^값 ^설명 ^
|0 |경보 없음 |
|1 |강제 문열림 |
|4 |장시간 문열림 |
|2 |APB 위반 |
8. //reserved// \\
예약된 공간입니다.\\ \\
9. //lastOpenTime// \\
출입문이 마지막으로 열렸던 시간입니다.\\ \\
==== BS2Door ====
typedef struct {
uint32_t doorID;
char name[BS2_MAX_DOOR_NAME_LEN];
uint32_t entryDeviceID;
uint32_t exitDeviceID;
BS2DoorRelay relay;
BS2DoorSensor sensor;
BS2ExitButton button;
uint32_t autoLockTimeout;
uint32_t heldOpenTimeout;
uint8_t instantLock;
uint8_t unlockFlags;
uint8_t lockFlags;
uint8_t unconditionalLock;
BS2Action forcedOpenAlarm[BS2_MAX_FORCED_OPEN_ALARM_ACTION];
BS2Action heldOpenAlarm[BS2_MAX_HELD_OPEN_ALARM_ACTION];
uint32_t dualAuthScheduleID;
uint8_t dualAuthDevice;
uint8_t dualAuthApprovalType;
uint16_t extendedAutoLockTimeout;
uint32_t dualAuthTimeout;
uint8_t numDualAuthApprovalGroups;
uint8_t unused[2];
uint8_t reserved2[1];
uint32_t dualAuthApprovalGroupID[BS2_MAX_DUAL_AUTH_APPROVAL_GROUP];
BS2AntiPassbackZone apbZone;
} BS2Door;
1. //doorID// \\
출입문 식별자입니다. 1세대 장치는 최대값 65535로 제한됩니다.\\ \\
2. //name// \\
BioStar 애플리케이션에서 보여질 출입문 이름입니다. 1세대 장치는 이름 설정이 불가합니다. \\ \\
3. //entryDeviceID// \\
입구 장치 식별자입니다.\\ \\
4. //exitDeviceID// \\
출구 장치 식별자입니다.\\ \\
5. //relay// \\
출입문 릴레이입니다.\\ \\
6. //sensor// \\
출입문 열림/닫힘 상태를 감지하는 센서입니다.\\ \\
7. //button// \\
Exit 버튼입니다.\\ \\
8. //autoLockTimeout// \\
출입문이 열린 후 자동으로 닫힐때까지 걸리는 시간으로 초 단위입니다.\\ \\
9. //heldOpenTimeout// \\
장시간 출입문 열림 상태를 판별하는 시간으로 초 단위입니다.\\ \\
10. //instantLock// \\
출입문 센서가 닫힌 상태로 감지할 때 출입문을 즉시 닫을지 결정하는 flag입니다.\\ \\
11. //unlockFlags// \\
출입문이 열릴 때의 우선 순위로 닫힐 때의 우선 순위보다 낮으면 수행되지 않습니다. 예를 들어, 관리자 권한으로 출입문을 닫은 상태라면(OPERATOR), 모든 사용자의 출입이 허용되지 않습니다. 유의해야 할 사항으로 unlockFlags와 lockFlags는 기본 우선 순위(NONE)를 제외하고는 동일 우선 순위를 가질 수 없습니다.\\
^값 ^설명 ^우선순위 ^
|0 |기본 |보통 |
|1 |일정 |약간 높음 |
|4 |관리자 |높음 |
|2 |긴급 |매우 높음 |
12. //lockFlags// \\
출입문이 닫힐 때의 우선 순위로 열릴 때의 우선 순위보다 낮으면 수행되지 않습니다.\\ \\
^값 ^설명 ^우선순위 ^
|0 |기본 |보통 |
|1 |일정 |약간 높음 |
|4 |관리자 |높음 |
|2 |긴급 |매우 높음 |
13. //unconditionalLock// \\
autoLock timeout 이후에 door lock 결정하는 flag입니다.\\ \\
^값 ^설명 ^
|0 |autoLock timeout 이후에 door close할 경우에만 door lock을 함. (door open시 실제로 door가 close될때까지 기다림)|
|1 |autoLock timeout 이후에 door open/close에 상관없이 door lock을 함|
14. //forcedOpenAlarm// \\
강제로 문이 열릴 때 수행되는 경보로 최대 5개까지 지정할 수 있습니다.\\ \\
15. //heldOpenAlarm// \\
장시간 문이 열린 상태로 유지될 때 수행되는 경보로 최대 5개까지 지정할 수 있습니다.\\ \\
16. //dualAuthScheduleID// \\
이중 인증이 필요한 타임 스케줄로 이중 인증이 필요 없다면 0을, 항상 필요하면 1을, 아니면 적절한 타임 스케줄 식별자를 지정할 수 있습니다.\\ \\
17. //dualAuthDevice// \\
어떤 장치가 이중 인증을 수행해야 하는지를 나타내는 flag입니다.\\
^값 ^설명 ^
|0 |없음 |
|1 |입구 장치만 이중 인증 |
|2 |출구 장치만 이중 인증 |
|3 |입출구 장치 모두 이중 인증 |
18. //dualAuthApprovalType// \\
출입을 허용할 때 사용자의 출입 그룹이 이중 인증 출입 권한을 가지는 그룹에 속한지 검사하는 flag입니다.\\
^값 ^설명 ^
|0 |없음 |
|1 |마지막 사용자의 권한 확인 |
19. //extendedAutoLockTimeout// \\
[+ 2.9.12] 연장된 출입 허용 시간을 초 단위로 설정합니다. 기본 값은 10초입니다. \\ \\
20. //dualAuthTimeout// \\
첫 번째 사용자 인증 완료 후, 두 번째 사용자의 인증 시도까지 대기하는 시간입니다. (단위: 초) \\ \\
21. //numDualAuthApprovalGroups// \\
이중 출입 권한을 가지는 그룹의 총 개수입니다. \\ \\
22. //unused// \\
예약된 공간입니다. \\ \\
23. //reserved2// \\
예약된 공간입니다. \\ \\
24. //dualAuthApprovalGroupID// \\
이중 출입 권한을 가지는 그룹을 나열한 리스트로 최대 16까지 설정할 수 있습니다.\\ \\
25. //apbZone// \\
이 출입문을 출입문 기반 이중 출입 방지 구역으로 설정합니다. 주의 사항으로 출입문 식별자와 구역 식별자는 동일한 값을 가져야 합니다. 자세한 정보는 [[zone_control_api]]를 참고하십시오.\\ \\