Список ключей предназначен для хранения разрешенных для прохода ключей, а также для сервисных ключей (блокирующих и мастер-ключей). Список храниться в контроллере в памяти FLASH фиксированной длины (банк ключей). Размер банка ключей/событий можно определить с помощью функции ilg_converter_get_controller_info или функции ilg_controller_get_info (параметр nBankSize).
Максимальное количество ключей = (nBankSize - 0xC0) / KeySize.
где KeySize - размер записи ключа: если в nCtrFlags установлен флаг ILG_CTR_F_X2, то KeySize = 4, иначе KeySize = 8.
У контроллера может быть 2 банка ключей: в первом хранятся ключи для входа, во втором - для выхода. Но если в nCtrFlags установлен флаг ILG_CTR_F_JOIN, то ключи обоих банков используются и для входа и для выхода.
Каждая запись в банке ключей может быть занята ключом или может быть пустой (свободной ячейкой). Поэтому при удалении записи о ключе вначале списка, остальные записи не смещаются, т.е. в списке могут быть "дыры".
Параметры ключа:
Для чтения ключей предназначен метод ReadKeys, для записи - ilg_controller_write_keys, для стирания - ilg_controller_erase_keys и ilg_controller_erase_keys2.
Количество ячеек в банке доступных для чтения или для записи может ограничиваться лицензией (в режиме ADVANCED конвертера).
Верхняя граница ключей (KeyTop) – это переменная, которая хранится в контроллере, она определяет позицию, начиная с которой идут только свободные ячейки. Контроллер обновляет эту переменную автоматически при записи ключей (возможно с задержкой). При поднесении ключа к считывателю контроллер ищет его номер в диапазоне от 0 до "верхней границы ключей" (не включительно).
Для чтения верхней границы ключей предназначен функции ilg_controller_read_key_top_idx.
Рис. 1. Верхняя граница ключей. Бирюзовым цветом выделены ячейки с ключом, белым - пустые записи.
В режиме объединения банков (ILG_CTR_F_JOIN) для равномерного заполнения банков рекомендуется записывать ключи так: четные позиции ключей в первый банк, нечётные - во второй банк.
Рис. 2. Режим Join