Zone Control API

하나의 관리 지역을 특정 목적에 맞게 여러 구역으로 나눠 출입을 통제할 수 있습니다. 구역을 설정하면 출입 인증 장치, 출입문의 동작을 제어할 수 있습니다.


안티패스백 구역

사용자가 자신의 카드를 제삼자에게 빌려준다든지 자신의 지문을 이용하여 제삼자를 안으로 들이는 상황을 방지하려면, 이중출입 방지 구역을 사용합니다. 이 구역은 두 가지 종류의 옵션(소프트, 하드)을 지원합니다. 소프트를 선택하면, 안티패스백을 위반해도 출입을 허용하지만 위반 사실을 사용자 로그에 기록합니다. 하드를 선택하면 모든 안티패스백을 허락하지 않으며 위반 사실을 사용자 로그에 기록합니다.


시간 지정 안티패스백 구역

사용자가 일정 시간내에 재진입하는 것을 막으려면, 인증 제한 구역을 사용합니다. 이 구역은 안티패스백 구역과 동일하게 두 가지 종류의 옵션(소프트, 하드)을 지원합니다.


화재 경보 구역

출입 통제 구역에서 화재를 감지하고 경보를 제어하려면 화재 경보 구역을 사용합니다. 외부 입력 신호가 BioStar 시스템에 전달되면 BioStar는 자동으로 출입문을 개방하며 미리 정의한 경보를 수행합니다.


스케줄 잠금/개방 구역

시간에 따라 구역을 개방하거나 폐쇄하려면 스케줄 잠금/개방 구역을 사용합니다. 이 구역은 일정 시간동안 모든 출입문을 개방하는 정시간 개방 상태와, 일정 시간동안 모든 출입문을 폐쇄하는 정시간 폐쇄 상태로 배타적으로 동작합니다.


경비 경보 구역

경비 구역에서 침입이나 이상 신호가 발생할 경우 신호를 수신하여 대처하는 시스템으로 사용합니다. 외부 입력 신호가 BioStar 시스템에 전달되면 BioStar는 자동으로 미리 정의한 경보를 수행합니다.



인터락 구역

[CoreStation] 이중 문으로 구성되어 다른 한 쪽 문을 통과하기 전에 반드시 반대 쪽이 닫혀 있어야 하는 경우 사용됩니다.
현재 CoreStation 만 이 기능을 지원하고 있습니다.



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이상)에서 지원합니다.



Lift스케줄 잠금/개방 구역

[+ 2.7.0] Elevator 제어관련, 인증권한과 무관하게 시간대를 기반으로 특정 층에 접근할 수 있도록 하는 새로운 함수들을 제공합니다.



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개까지 설정할 수 있습니다.