문서의 이전 판입니다!


Log Management API

장치의 로그를 제어하는 API입니다.

typedef void (*OnLogReceived)(uint32_t deviceId, BS2Event* log);


1. OnLogReceived
장치로부터 새로운 로그를 수신했을 때 호출되는 콜백 함수입니다.

BS2Event

typedef struct {
    uint32_t id;
    uint32_t dateTime;
    uint32_t deviceID;
    union {
        char userID[BS2_USER_ID_SIZE];
        uint32_t uid;
        uint32_t doorID;
        uint32_t liftID;
        uint32_t zoneID;
        struct {
            uint32_t ioDeviceID;
            uint16_t port;
            int8_t value;
            uint8_t reserved[25];
        };
        struct {
            uint32_t zoneID;
            uint32_t doorID;
            uint32_t ioDeviceID;
            uint16_t port;
            uint8_t reserved[18];
        } alarm;
        struct {
            uint32_t zoneID;
            uint32_t doorID[4];
            uint8_t reserved[12];
        } interlock;
    };
    union {
        uint16_t code;
        struct {
            uint8_t subCode;
            uint8_t mainCode;
        };
    };
    uint8_t param;
#ifdef LESS_THAN_SDK_2_6_0
    BS2_BOOL image;         // Deprecated in V2.6.0
#else
    uint8_t image: 1;       // bit 단위 분할하여 image 및 DST 지원
    uint8_t isDST: 1;
    uint8_t half: 1;
    uint8_t hour: 4;
    uint8_t negative: 1;
#endif
} BS2Event;


1. id
로그 레코드의 식별자이며 로그가 발생될 때마다 1부터 자동으로 증가합니다.

2. dateTime
로그가 발생된 시간 정보이며, UTC로부터 현재까지 흐른 초(sec) 수를 의미합니다.

3. deviceID
로그가 발생된 장치 식별자입니다.

4. userID
로그와 관련된 사용자 식별자로써 사용자와 관련 없는 로그일 경우 0으로 설정됩니다.

5. uid
출입문에 대한 로그라면 doorID를, 구역에 대한 로그라면 zoneID를 참조하면 되지만,
이를 정확히 알 수 없는 경우 uid를 참조하면 됩니다.
uid, doorID, liftID, zoneID는 union으로 선언되어 있기때문에 기본적으로 같은 정보를 의미합니다.

6. doorID
로그가 발생된 출입문 식별자입니다.

7. liftID
로그가 발생된 리프트 식별자입니다.

8. zoneID
로그가 발생된 구역 식별자입니다.

9. ioDeviceID
Door나 Input 장치의 식별자로 Door나 Input 장치와 관련 없는 로그일 경우 0으로 설정됩니다.

10. port
ioDeviceID에 대한 port를 의미합니다.

11. value
ioDeviceID에 대한 port value를 나타하며 다음을 의미합니다.
BS2_PORT_VALUE_UNKNOWN : -1
BS2_PORT_VALUE_OPEN : 0
BS2_PORT_VALUE_CLOSED : 1
BS2_PORT_VALUE_SUPERVISED_SHORT : 2
BS2_PORT_VALUE_SUPERVISED_OPEN : 3

12. alarm.zoneID
침입탐지 구역 경보 발생 시 구역에대한 식별자를 의미합니다.

13. alarm.doorID
침입탐지 구역 경보를 발생시킨 출입문 식별자를 의미합니다.

14. interlock.zoneID
인터락 위반을 발생시킨 구역 식별자를 의미합니다.

15. interlock.doorID
인터락 위반을 발생시킨 출입문 식별자를 의미합니다.

16. subCode
로그 유형의 하위 코드 값입니다. 추가 정보가 필요할 경우 사용하십시오.

범주 이벤트 코드 설명
Verify BS2_SUB_EVENT_VERIFY_ID_PIN 0x01 주어진 사용자 식별자로 PIN 인증 성공
BS2_SUB_EVENT_VERIFY_ID_FINGER 0x02 주어진 사용자 식별자로 지문 인증 성공
BS2_SUB_EVENT_VERIFY_ID_FINGER_PIN 0x03 주어진 사용자 식별자로 지문과 PIN 인증 성공
BS2_SUB_EVENT_VERIFY_ID_FACE 0x04 주어진 사용자 식별자로 얼굴 인식 성공
BS2_SUB_EVENT_VERIFY_ID_FACE_PIN 0x05 주어진 사용자 식별자로 얼굴 인식과 PIN 인증 성공
BS2_SUB_EVENT_VERIFY_CARD 0x06 스마트 카드 인증 성공
BS2_SUB_EVENT_VERIFY_CARD_PIN 0x07 스마트 카드와 PIN 인증 성공
BS2_SUB_EVENT_VERIFY_CARD_FINGER 0x08 스마트 카드와 지문 인증 성공
BS2_SUB_EVENT_VERIFY_CARD_FINGER_PIN 0x09 스마트 카드, 지문, PIN 인증 성공
BS2_SUB_EVENT_VERIFY_CARD_FACE 0x0A 스마트 카드 인증과 얼굴 인식 성공
BS2_SUB_EVENT_VERIFY_CARD_FACE_PIN 0x0B 스마트 카드, 얼굴 인식, PIN 인증 성공
BS2_SUB_EVENT_VERIFY_AOC 0x0C AOC 카드 인증 성공
BS2_SUB_EVENT_VERIFY_AOC_PIN 0x0D AOC 카드와 PIN 인증 성공
BS2_SUB_EVENT_VERIFY_AOC_FINGER 0x0E AOC 카드와 지문 인증 성공
BS2_SUB_EVENT_VERIFY_AOC_FINGER_PIN 0x0F AOC 카드, 지문, PIN 인증 성공
Identify BS2_SUB_EVENT_IDENTIFY_FINGER 0x01 지문 인증으로 사용자 식별
BS2_SUB_EVENT_IDENTIFY_FINGER_PIN 0x02 지문과 PIN 인증으로 사용자 식별
BS2_SUB_EVENT_IDENTIFY_FACE 0x03 얼굴 인식으로 사용자 식별
BS2_SUB_EVENT_IDENTIFY_FACE_PIN 0x04 얼굴 인식과 PIN 인증으로 사용자 식별
Auth BS2_SUB_EVENT_DUAL_AUTH_FAIL_TIMEOUT 0x01 이중 인증(2인 인증) 시간 만료
BS2_SUB_EVENT_DUAL_AUTH_FAIL_ACCESS_GROUP 0x02 유효하지 않은 사용자로 2인 인증 시도
Credential BS2_SUB_EVENT_CREDENTIAL_ID 0x01 등록되지 않은 사용자 식별자
BS2_SUB_EVENT_CREDENTIAL_CARD 0x02 유효하지 않은 스마트 카드
BS2_SUB_EVENT_CREDENTIAL_PIN 0x03 유효하지 않은 PIN
BS2_SUB_EVENT_CREDENTIAL_FINGER 0x04 유효하지 않은 지문
BS2_SUB_EVENT_CREDENTIAL_FACE 0x05 유효하지 않은 얼굴
BS2_SUB_EVENT_CREDENTIAL_AOC_PIN 0x06 유효하지 않은 AOC PIN
BS2_SUB_EVENT_CREDENTIAL_AOC_FINGER 0x07 유효하지 않은 AOC 지문
Auth BS2_SUB_EVENT_AUTH_FAIL_INVALID_AUTH_MODE 0x01 유효하지 않은 인증 모드
BS2_SUB_EVENT_AUTH_FAIL_INVALID_CREDENTIAL 0x02 인증 모드에 설정되지 않은 인증 수단
BS2_SUB_EVENT_AUTH_FAIL_TIMEOUT 0x03 인증 시간 만료
Access BS2_SUB_EVENT_ACCESS_DENIED_ACCESS_GROUP 0x01 출입 통제 구역에 등록되지 않아 출입 실패
BS2_SUB_EVENT_ACCESS_DENIED_DISABLED 0x02 비활성화된 사용자이기 때문에 출입 실패
BS2_SUB_EVENT_ACCESS_DENIED_EXPIRED 0x03 사용자 유효 기간 만료되어 출입 실패
BS2_SUB_EVENT_ACCESS_DENIED_ON_BLACKLIST 0x04 블랙리스트 카드로 등록되어 출입 실패
BS2_SUB_EVENT_ACCESS_DENIED_APB 0x05 APB 규칙 위반하여 출입 실패
BS2_SUB_EVENT_ACCESS_DENIED_TIMED_APB 0x06 Timed APB 구역을 재진입 대기 시간내에 출입
BS2_SUB_EVENT_ACCESS_DENIED_FORCED_LOCK 0x07 강제 잠금 구역이기 때문에 출입 실패
APB BS2_SUB_EVENT_ZONE_HARD_APB 0x01 하드 APB 구역
BS2_SUB_EVENT_ZONE_SOFT_APB 0x02 소프트 APB 구역

17. mainCode
로그 유형의 주코드 값입니다.

범주 이벤트 코드 설명
Auth BS2_EVENT_VERIFY_SUCCESS 0x1000 1:1 인증 성공
BS2_EVENT_VERIFY_FAIL 0x1100 1:1 인증 실패
BS2_EVENT_VERIFY_DURESS 0x1200 협박 지문으로 1:1 인증 성공에 성공
BS2_EVENT_IDENTIFY_SUCCESS 0x1300 1:N 인증 성공
BS2_EVENT_IDENTIFY_FAIL 0x1400 1:N 인증 실패
BS2_EVENT_IDENTIFY_DURESS 0x1500 협박 지문으로 1:N 인증 성공에 성공
BS2_EVENT_DUAL_AUTH_SUCCESS 0x1600 이중 인증(2인 인증) 성공
BS2_EVENT_DUAL_AUTH_FAIL 0x1700 이중 인증(2인 인증) 실패
BS2_EVENT_AUTH_FAILED 0x1800 등록되지 않은 인증 수단으로 인증 시도
BS2_EVENT_ACCESS_DENIED 0x1900 유효하지 사용자가 인증을 시도하거나 APB 규칙에 위반
BS2_EVENT_FAKE_FINGER_DETECTED 0x1A00 위조지문 감지됨
User BS2_EVENT_USER_ENROLL_SUCCESS 0x2000 사용자 등록 성공
BS2_EVENT_USER_ENROLL_FAIL 0x2100 사용자 등록 실패
BS2_EVENT_USER_UPDATE_SUCCESS 0x2200 사용자 정보 갱신 성공
BS2_EVENT_USER_UPDATE_FAIL 0x2300 사용자 정보 갱신 실패
BS2_EVENT_USER_DELETE_SUCCESS 0x2400 사용자 삭제 성공
BS2_EVENT_USER_DELETE_FAIL 0x2500 사용자 삭제 실패
BS2_EVENT_USER_DELETE_ALL_SUCCESS 0x2600 전체 사용자 삭제 성공
BS2_EVENT_USER_ISSUE_AOC_SUCCESS 0x2700 Access card로 인증 성공
Device BS2_EVENT_DEVICE_SYSTEM_RESET 0x3000 시스템 다시 시작
BS2_EVENT_DEVICE_SYSTEM_STARTED 0x3100 시스템이 시작됨
BS2_EVENT_DEVICE_TIME_SET 0x3200 시스템 시간 변경
BS2_EVENT_DEVICE_LINK_CONNECTED 0x3300 LAN 케이블 연결됨
BS2_EVENT_DEVICE_LINK_DISCONNETED 0x3400 LAN 케이블 빠짐
BS2_EVENT_DEVICE_DHCP_SUCCESS 0x3500 DHCP로 IP할당됨
BS2_EVENT_DEVICE_ADMIN_MENU 0x3600 관리자 메뉴로 진입
BS2_EVENT_DEVICE_UI_LOCKED 0x3700 잠금 화면 시작
BS2_EVENT_DEVICE_UI_UNLOCKED 0x3800 잠금 화면 끝
BS2_EVENT_DEVICE_COMM_LOCKED 0x3900 RS485 통신 잠금
BS2_EVENT_DEVICE_COMM_UNLOCKED 0x3A00 RS485 통신 잠금 해제
BS2_EVENT_DEVICE_TCP_CONNECTED 0x3B00 TCP 연결됨
BS2_EVENT_DEVICE_TCP_DISCONNECTED 0x3C00 TCP 연결이 끊어짐
BS2_EVENT_DEVICE_RS485_CONNECTED 0x3D00 RS485 연결됨
BS2_EVENT_DEVICE_RS485_DISCONNCTED 0x3E00 RS485 연결이 끊어짐
BS2_EVENT_DEVICE_INPUT_DETECTED 0x3F00 입력 장치가 검색됨
BS2_EVENT_DEVICE_TAMPER_ON 0x4000 장치 혹은 주변 장치가 제거됨
BS2_EVENT_DEVICE_TAMPER_OFF 0x4100 장치 혹은 주변 장치가 다시 연결됨
BS2_EVENT_DEVICE_EVENT_LOG_CLEARED 0x4200 로그 삭제됨
BS2_EVENT_DEVICE_FIRMWARE_UPGRADED 0x4300 펌웨어가 업데이트됨
BS2_EVENT_DEVICE_RESOURCE_UPGRADED 0x4400 리소스가 업데이트됨
BS2_EVENT_DEVICE_CONFIG_RESET 0x4500 시스템 구성 정보가 초기화됨
BS2_EVENT_DEVICE_DATABASE_RESET 0x4501 데이터베이스가 초기화됨
BS2_EVENT_DEVICE_FACTORY_RESET 0x4502 공장 초기화됨
BS2_EVENT_DEVICE_CONFIG_RESET_EX 0x4503 시스템 구성 정보가 초기화됨
Supervised Input BS2_EVENT_SUPERVISED_INPUT_SHORT 0x4600 Supervised Input (단락 감지)
BS2_EVENT_SUPERVISED_INPUT_OPEN 0x4700 Supervised Input (단선 감지)
Device-Ex BS2_EVENT_DEVICE_AC_FAIL 0x4800 AC Power 실패
BS2_EVENT_DEVICE_AC_SUCCESS 0x4900 AC Power 성공
Door BS2_EVENT_DOOR_UNLOCKED 0x5000 출입문 잠금이 풀림
BS2_EVENT_DOOR_LOCKED 0x5100 출입문이 잠김
BS2_EVENT_DOOR_OPENED 0x5200 출입문이 열림
BS2_EVENT_DOOR_CLOSED 0x5300 출입문이 닫힘
BS2_EVENT_DOOR_FORCED_OPEN 0x5400 출입문이 강제로 열림
BS2_EVENT_DOOR_HELD_OPEN 0x5500 출입문 열림이 일정 시간동안 지속됨
BS2_EVENT_DOOR_FORCED_OPEN_ALARM 0x5600 BS2_EVENT_DOOR_FORCED_OPEN 이벤트 발생 경보 시작
BS2_EVENT_DOOR_FORCED_OPEN_ALARM_CLEAR 0x5700 BS2_EVENT_DOOR_FORCED_OPEN 이벤트 발생 경보 해제
BS2_EVENT_DOOR_HELD_OPEN_ALARM 0x5800 BS2_EVENT_DOOR_HELD_OPEN 이벤트 발생 경보 시작
BS2_EVENT_DOOR_HELD_OPEN_ALARM_CLEAR 0x5900 BS2_EVENT_DOOR_HELD_OPEN 이벤트 발생 경보 해제
BS2_EVENT_DOOR_APB_ALARM 0x5A00 APB 경보 시작
BS2_EVENT_DOOR_APB_ALARM_CLEAR 0x5B00 APB 경보 해제
BS2_EVENT_DOOR_RELEASE 0x5C00 출입문 해제
BS2_EVENT_DOOR_LOCK 0x5D00 출입문 잠금
BS2_EVENT_DOOR_UNLOCK 0x5E00 출입문 개방
Zone BS2_EVENT_ZONE_APB_VIOLATION 0x6000 구역내 APB 규칙 위반
BS2_EVENT_ZONE_APB_ALARM 0x6100 BS2_EVENT_ZONE_APB_VIOLATION 이벤트 발생 경보 시작
BS2_EVENT_ZONE_APB_ALARM_CLEAR 0x6200 BS2_EVENT_ZONE_APB_VIOLATION 이벤트 발생 경보 해제
BS2_EVENT_ZONE_TIMED_APB_VIOLATION 0x6300 구역내 TIMED APB 규칙 위반
BS2_EVENT_ZONE_TIMED_APB_ALARM 0x6400 BS2_EVENT_ZONE_TIMED_APB_VIOLATION 이벤트 발생 경보 시작
BS2_EVENT_ZONE_TIMED_APB_ALARM_CLEAR 0x6500 BS2_EVENT_ZONE_TIMED_APB_VIOLATION 이벤트 발생 경보 해제
BS2_EVENT_ZONE_FIRE_ALARM_INPUT 0x6600 화재 발생
BS2_EVENT_ZONE_FIRE_ALARM 0x6700 BS2_EVENT_ZONE_FIRE_ALARM_INPUT 이벤트 발생 경보 시작
BS2_EVENT_ZONE_FIRE_ALARM_CLEAR 0x6800 BS2_EVENT_ZONE_FIRE_ALARM_INPUT 이벤트 발생 경보 해제
BS2_EVENT_ZONE_FORCED_LOCK_VIOLATION 0x6900 구역내 강제 잠금 위반 감지
BS2_EVENT_ZONE_FORCED_LOCK_START 0x6A00 구역내 강제 잠금 시작
BS2_EVENT_ZONE_FORCED_LOCK_END 0x6B00 구역내 강제 잠금 끝
BS2_EVENT_ZONE_FORCED_UNLOCK_START 0x6C00 구역내 강제 잠금 해제 시작
BS2_EVENT_ZONE_FORCED_UNLOCK_END 0x6D00 구역내 강제 잠금 해제 끝
BS2_EVENT_ZONE_FORCED_LOCK_ALARM 0x6E00 구역내 강제 잠금 경보 시작
BS2_EVENT_ZONE_FORCED_LOCK_ALARM_CLEAR 0x6F00 구역내 강제 잠금 경보 해제

18. param
이벤트 발생 장치의 추가 정보가 필요할 경우에만 사용되고, 주로 근태 코드나 출입문이나 입력 장치의 포트 번호가 저장됩니다. 근태 코드가 저장될 때는 아래의 코드표를 참고하십시오.

장치 종류 근태 코드
BioStation 2BS2_TNA_UNSPECIFIED(N/A)0
BS2_TNA_KEY_1F11
BS2_TNA_KEY_2F22
BS2_TNA_KEY_3F33
BS2_TNA_KEY_4F44
BS2_TNA_KEY_515
BS2_TNA_KEY_626
BS2_TNA_KEY_737
BS2_TNA_KEY_848
BS2_TNA_KEY_959
BS2_TNA_KEY_10610
BS2_TNA_KEY_11711
BS2_TNA_KEY_12812
BS2_TNA_KEY_13913
BS2_TNA_KEY_14Call14
BS2_TNA_KEY_15015
BS2_TNA_KEY_16Esc16



19. image
SDK V2.5까지는 1byte를 사용하여 다음을 의미했습니다.
- 이벤트 발생되었을 때 이미지 정보가 포함되었는지 여부 (ture/false).
SDK V2.6부터는 1byte의 bit 단위로 세분화하여,
- 이미지 정보가 포함되었는지 여부
- DST 적용 여부
를 로그에 포함시키도록 변경되었습니다.

범주 비트 수 변수 설명
SDK 2.5 까지 8 image 이벤트 발생되었을 때 이미지 정보가 포함될 경우에 사용됩니다.
SDK 2.6 부터 1 image 이벤트 발생되었을 때 이미지 정보가 포함될 경우에 사용됩니다.
1 isDST 현재 로그가 DST의 적용을 받았는지 여부를 표시
1 half DST가 30분 단위의 적용을 받는지여부. 0은 0분, 1은 30분
4 hour 시간을 표시. 1~12시
1 negative 0은 +시간, 1은 -시간

BS2EventBlob

typedef struct {
    uint16_t eventMask;
    uint32_t id;
    BS2EventExtInfo info; 
    union
    {
	BS2_USER_ID userID;                       // valid if eventMask has BS2_EVENT_MASK_USER_ID
	uint8_t cardID[BS2_CARD_DATA_SIZE];       // valid if eventMask has BS2_EVENT_MASK_CARD_ID
	BS2_DOOR_ID doorID;                       // valid if eventMask has BS2_EVENT_MASK_DOOR_ID
	BS2_ZONE_ID zoneID;                       // valid if eventMask has BS2_EVENT_MASK_ZONE_ID
	BS2EventExtIoDevice ioDevice;             // valid if eventMask has BS2_EVENT_MASK_IODEVICE
    };
    uint8_t tnaKey;
    uint32_t jobCode;    
    uint16_t imageSize;
    uint8_t image[BS2_EVENT_MAX_IMAGE_SIZE];
    uint8_t reserved;
} BS2EventBlob;


1. eventMask
Event mask값입니다. mask값에 따라서 해당 ID(User, card, door, zone)값을 인식할 수 있습니다.

설명
0 없음
1 BS2EventExtInfo 구조체
2 User ID
4 Card ID
8 Door ID
16 Zone ID
32 BS2EventExtIoDevice 구조체
64 Door ID
128 Zone ID
256 TNA Key
512 Job Code
1024 Image
65535 ALL

2. id
로그 레코드의 식별자이며 로그가 발생될 때마다 1부터 자동으로 증가합니다.

3. info
BS2EventExtInfo 구조체 정보입니다.

4. userID
로그와 관련된 사용자 식별자로써 사용자와 관련 없는 로그일 경우 0으로 설정됩니다.

5. cardID
로그와 관련된 card 식별자로써 card와 관련 없는 로그일 경우 0으로 설정됩니다.

6. doorID
로그와 관련된 door 식별자로써 door와 관련 없는 로그일 경우 0으로 설정됩니다.

7. zoneID
로그와 관련된 zone 식별자로써 zone와 관련 없는 로그일 경우 0으로 설정됩니다.

8. ioDevice
Door나 Input 장치의 식별자로 Door나 Input 장치와 관련 없는 로그일 경우 0으로 설정됩니다. (BS2EventExtIoDevice 구조체 참고)

9. tnaKey
이벤트 발생 장치의 추가 정보가 필요할 경우에만 사용되고, 주로 근태 코드나 출입문이나 입력 장치의 포트 번호가 저장됩니다

10. jobCode
사용자 정보에 JobCode가 존재했을 경우에, JobCode 사용하여 인증 할 때 사용자의 JobCode 값을 말합니다.

11. imageSize
이벤트 발생되었을 때 이미지 size를 말합니다.

12. image
이벤트 발생되었을 때 이미지 정보가 포함될 경우에 사용됩니다

13. reserved
예약된 공간입니다.

BS2EventExtInfo

typedef struct {
    uint32_t dateTime;
    uint32_t deviceID;    
    union {                                       ///< 2 bytes
		BS2_EVENT_CODE code;
		struct {
			uint8_t subCode;
			uint8_t mainCode;
		};
	};
	uint8_t reserved[2];
} BS2EventExtInfo;


1. dateTime
로그가 발생된 시간 정보이며, UTC로부터 현재까지 흐른 초(sec) 수를 의미합니다.

2. deviceID
로그가 발생된 장치 식별자입니다.

3. subCode
로그 유형의 하위 코드 값입니다. 추가 정보가 필요할 경우 사용하십시오

4. mainCode
로그 유형의 주코드 값입니다.

5. reserved
예약된 공간입니다.

BS2EventExtIoDevice

typedef struct {
    uint32_t ioDeviceID;
    uint16_t port;    
    uint8_t value;
    uint8_t reserved[1];
} BS2EventExtInfo;


1. ioDeviceID
Door나 Input 장치의 식별자로 Door나 Input 장치와 관련 없는 로그일 경우 0으로 설정됩니다.

2. port
입력 port number입니다.

3. value
입력 port 상태를 말합니다.

설명
-1 UNKNOWN
0 Open
1 Closed
2 Supervised Short
3 Supervised Open

4. reserved
예약된 공간입니다.