Список событий предназначен для хранения информации о проходах и о других событиях контроллера. Список храниться в контроллере в памяти 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 | Включено по датчику двери. |