Цель создания этих интерфейсов - изоляция кода, определяющего порты и устройства ввода/вывода, доступные в шлюз-контроллере, от кода, выполняющего разбор команд. Это делает структуру ПО шлюза более модульной и упрощает перенос ПО на новые устройства, с другим набором доступных портов и устройств ввода-вывода.
В настоящее время интерфейсы привязаны к устройствам на основе микроконтроллеров (далее - МК) Atmel AVR. Возможно создание уровня абстракции, позволяющего использовать и другие МК.
Порт представляет собой группу выводов МК, которыми можно управлять совместно или каждым по отдельности. Группировка выводов в порты соответствует структуре примененного МК. Интерфейсы доступа к портам позволяют использовать выводы портов для цифрового ввода/вывода.
Устройство ввода/вывода позволяет управлять группой выводов МК по определенному алгоритму. Устройство ввода/вывода может быть как привязано к внутреннему устройству МК (например, SPI, АЦП или таймер с ШИМ), так и реализовывать собственный алгоритм работы (например, управление электродвигателями). Каждому устройству ставится в соответствие набор регистров. Регистр - это уникальный идентификатор. Драйвер устройства предоставляет набор функций, позволяющих осуществлять запись в регистр и чтение из регистра. Функции, выполняемые устройством при записи или чтении того или иного регистра, целиком определяются драйвером устройства.
1.5.6