Список событий предназначен для хранения информации о проходах и о других событиях контроллера. Список храниться в контроллере в памяти FLASH фиксированной длины (банк событий). Размер банка событий можно определить с помощью функции ilg_converter_get_controller_info или функции ilg_controller_get_info (параметр nBankSize).
Максимальное количество событий MaxEvents = nBankSize / 8.
Память циклически перезаписывается новыми событиями после её заполнения, новое событие запишется на место самого старого.
Рис. 1. Банк событий. Бирюзовым цветом выделены заполненные ячейки с информацией о событии. Белым - пустые ячейки.
Указатель записи EventWriteIdx определяет куда будет записано следующее событие. Указатель чтения EventReadIdx определяет откуда следует читать события.
Значения этих указателей можно определить с помощью функции ilg_controller_read_rtc_params, установить указатель чтения можно функцией ilg_controller_write_event_read_idx.
При инициализации контроллера оба указателя устанавливаются в 0. При очередном событии информация о событии заносится в ячейку по указателю записи, затем указатель увеличивается на 1 ячейку (на 8 байт), а указатель чтения не изменяется до тех пор, пока буфер не заполняется до конца и указатель записи перемещается в 0 - в этом случае указатель чтения также увеличивается на 1 ячейку. Далее при записи нового события будут увеличиваться на 1 ячейку оба указателя одновременно. Таким образом в буфере всегда останутся MaxEvents-1
событий.
Количество новых событий NewCount можно вычислить по формуле:
если EventReadIdx <= EventWriteIdx, то NewCount = (EventWriteIdx - EventReadIdx),
иначе NewCount = (MaxEvents - EventReadIdx + EventWriteIdx).
Для чтения событий предназначена функция ilg_controller_read_events. Записи событий имеют разный формат, поэтому для определения формата предназначена функция ilg_controller_decode_event_type.
Тип события | Формат | Описание |
---|---|---|
ILG_EVENT_UNKNOWN | - | Неизвестное событие. Когда не удалось определить тип и формат события |
ILG_EVENT_BUTTON_OPEN | ILG_EVENT_FORMAT_PASSAGE | Открыто кнопкой изнутри. |
ILG_EVENT_KEY_NOT_FOUND | ILG_EVENT_FORMAT_PASSAGE | Ключ не найден в банке ключей. |
ILG_EVENT_KEY_OPEN | ILG_EVENT_FORMAT_PASSAGE | Ключ найден, дверь открыта. |
ILG_EVENT_KEY_ACCESS | ILG_EVENT_FORMAT_PASSAGE | Ключ найден, доступ не разрешен. |
ILG_EVENT_REMOTE_OPEN | ILG_EVENT_FORMAT_PASSAGE | Открыто оператором по сети. |
ILG_EVENT_KEY_DOOR_BLOCK | ILG_EVENT_FORMAT_PASSAGE | Ключ найден, дверь заблокирована. |
ILG_EVENT_BUTTON_DOOR_BLOCK | ILG_EVENT_FORMAT_PASSAGE | Попытка открыть заблокированную дверь кнопкой. |
ILG_EVENT_NO_OPEN | ILG_EVENT_FORMAT_PASSAGE | Дверь взломана. |
ILG_EVENT_NO_CLOSE | ILG_EVENT_FORMAT_PASSAGE | Дверь оставлена открытой (тайм-аут). |
ILG_EVENT_PASSAGE | ILG_EVENT_FORMAT_PASSAGE | Проход состоялся. |
ILG_EVENT_REBOOT | ILG_EVENT_FORMAT_TIME | Перезагрузка контроллера. |
ILG_EVENT_BUTTON_BLOCK | ILG_EVENT_FORMAT_PASSAGE | Заблокирована кнопка открывания. |
ILG_EVENT_DBL_PASSAGE | ILG_EVENT_FORMAT_PASSAGE | Попытка двойного прохода. |
ILG_EVENT_OPEN | ILG_EVENT_FORMAT_PASSAGE | Дверь открыта. |
ILG_EVENT_CLOSE | ILG_EVENT_FORMAT_PASSAGE | Дверь закрыта. |
ILG_EVENT_POWER_OFF | ILG_EVENT_FORMAT_TIME | Изменение состояния питания: пропало питание. |
ILG_EVENT_POWER_ON | ILG_EVENT_FORMAT_TIME | Изменение состояния питания: появилось. |
ILG_EVENT_LOCK_CONNECT | ILG_EVENT_FORMAT_PASSAGE | Включение замка (триггер). |
ILG_EVENT_LOCK_DISCONNECT | ILG_EVENT_FORMAT_PASSAGE | Отключение замка (триггер). |
ILG_EVENT_ELECTROCONTROL | ILG_EVENT_FORMAT_STATE | Изменение состояния электропитания. |
ILG_EVENT_CONTROLLER_MODE | ILG_EVENT_FORMAT_CONTROLLER_MODE | Переключение режима контроллера. |
ILG_EVENT_FIRE | ILG_EVENT_FORMAT_STATE | Изменение состояния Пожара. |
ILG_EVENT_SECURITY | ILG_EVENT_FORMAT_STATE | Изменение состояния Охраны. |
ILG_EVENT_GATEWAY_PASS | ILG_EVENT_FORMAT_PASSAGE | Совершен вход в шлюз. |
ILG_EVENT_GATEWAY_BLOCK | ILG_EVENT_FORMAT_PASSAGE | Заблокирован вход в шлюз (занят). |
ILG_EVENT_GATEWAY_ALLOWED | ILG_EVENT_FORMAT_PASSAGE | Разрешен вход в шлюз. |
ILG_EVENT_ANTIPASSBACK | ILG_EVENT_FORMAT_PASSAGE | Заблокирован проход (Антипассбек). |
ILG_EVENT_HOTEL40 | ILG_EVENT_FORMAT_STATE | Hotel (Изменение режима работы). |
ILG_EVENT_HOTEL41 | ILG_EVENT_FORMAT_STATE | Hotel (Отработка карт). |
ILG_EVENT_KEY_NUMBER | ILG_EVENT_FORMAT_KEY_NUMBER | Номер ключа. |
Формат | Описание |
---|---|
ILG_EVENT_FORMAT_PASSAGE | Дата и время + Направление прохода + Адрес ключа (опционально) |
ILG_EVENT_FORMAT_TIME | Дата и время |
ILG_EVENT_FORMAT_STATE | Дата и время + Флаги состояния + Код условия |
ILG_EVENT_FORMAT_CONTROLLER_MODE | Дата и время + Режим контроллера + Флаги состояния + Код условия |
ILG_EVENT_FORMAT_KEY_NUMBER | Номер ключа. Дополняет другие события. |
Флаги состояния:
Бит | Маска | Описание |
---|---|---|
0 | 0x01 | Состояние питания: =1 вкл, =0 выкл |
1 | 0x02 | Активно включение по временной зоне |
2 | 0x04 | Включено по команде по сети |
3 | 0x08 | Идет отработка задержки |
4 | 0x10 | Карта в поле контрольного считывателя |
Код условия, вызвавшего срабатывание:
Значение | Описание |
---|---|
0x01 | Поднесена валидная карта с другой стороны (для входа) запущена задержка. |
0x03 | Включено командой по сети. |
0x04 | Выключено командой по сети. |
0x05 | Включено по временной зоне. |
0x06 | Выключено по временной зоне. |
0x07 | Поднесена валидная карта к контрольному устройству. |
0x09 | Выключено после отработки тайм-аута. |
0x10 | Выключено по срабатыванию датчика выхода. |
Режим:
Значение | Описание |
---|---|
0 | Норма |
1 | Блок |
2 | Свободный |
3 | Ожидание |
Флаги состояния:
Бит | Маска | Описание |
---|---|---|
2 | 0x04 | 1 – включен по временной зоне |
3 | 0x08 | 1 – включен командой по сети |
4 | 0x10 | 1 – включен картой |
Код условия, вызвавшего срабатывание:
Значение | Описание |
---|---|
0x01-0x04 | Установка командой по сети (режим +1). |
0x05 | Началась временная зона. |
0x06 | Окончилась временная зона. |
0x08 | Установка картой. |
0x81-0x84 | Отказано оператору по сети. |
0x88 | Отказано изменению картой. |
Флаги состояния:
Бит | Маска | Описание |
---|---|---|
0 | 0x01 | Состояние пожарного режима: =1 вкл, =0 выкл. |
1 | 0x02 | Активен пожарный режим по входу FIRE. |
2 | 0x04 | Активен пожарный режим по превышению температуры. |
3 | 0x08 | Активен пожарный режим по внешней команде. |
Код условия, вызвавшего срабатывание:
Значение | Описание |
---|---|
0x00 | Выключено по сети. |
0x01 | Включено по сети. |
0х02 | Выключено по входу FIRE. |
0x03 | Включено по входу FIRE. |
0x04 | Выключено по датчику температуры. |
0x05 | Включено по датчику температуры. |
Флаги состояния:
Бит | Маска | Описание |
---|---|---|
0 | 0x01 | Состояние охранного режима: = 1 вкл, =0 выкл. |
1 | 0x02 | Состояние тревоги. |
2 | 0x04 | Тревога по входу ALARM. |
3 | 0x08 | Тревога по тамперу. |
4 | 0x10 | Тревога по датчику двери. |
5 | 0x20 | Тревога включена по сети. |
Код условия, вызвавшего срабатывание:
Значение | Описание |
---|---|
0 | Выключено по сети. |
1 | Включено по сети. |
2 | Выключено по входу ALARM. |
3 | Включено по входу ALARM. |
4 | Выключено по тамперу. |
5 | Включено по тамперу. |
6 | Выключено по датчику двери. |
7 | Включено по датчику двери. |