Управляющая программа

Управляющая программа будет «заводить» драйвер считывателя посылая ему сообщение с указанием послать импульс когда считыватель получит данные о карте. После этого управляющая программа может продолжать свою работу. Спустя какое-то время, когда карта будет считана, драйвер пошлет импульс управляющей программе. Этим драйвер даст знать управляющей программе, что данные доступны и управляющая программа может их получить без опасения быть заблокированной. Получив импульс, управляющая программа может послать запрос на чтение данных и моментально получить ответ от драйвера.

Используя такую стратегию поведения мы можем сказать, что считыватель находится на нижнем уровне нашей «иерархии отправки сообщений», а управляющая программа на верхнем. Это значит что управляющая программа может посылать сообщения драйверу, но драйвер должен использовать импульсы, если хочет оповестить управляющую программу. Но мы могли бы поменять их местами – переместить драйвер считывателя на верхний уровень, а управляющую программу – на нижний. В такой схеме драйвер будет посылать данные вниз управляющей программе, а та, в свою очередь, будет посылать импульсы для управления цветом индикаторов доступа на панели считывателя.

Какая структура более предпочтительна? Какое решение будет выгоднее и с какими ограничениями мы можем столкнуться?

Ответ на это кроется в это объеме передаваемых данных.

Так как с помощью импульсов можно передавать только короткие сообщения (всего 40 бит – 8 бит для передачи «кода команды» и 32 бита для данных) объем передаваемых «импульсом» данных весьма ограничен. В нашем примере этого вполне достаточно для передачи состояния индикаторов. Мы можем использовать 8 бит кода для команды «установить цвет индикатора» и 32 бита данных для передачи цвета: зеленый (доступ разрешен), красный (доступ запрещен) и возможно желтый (ожидание обработки запроса). Если бы нам нужно было передать больше данных, мы уперлись бы в 40-битное ограничение. Например, если бы считыватель был оснащен кроме цветового индикатора еще и клавиатурой с матричным дисплеем, то их можно было бы использовать для запроса пароля. Тогда управляющей программе необходимо будет принять введенные пользователем данные.

С другой стороны, 40 бит вполне достаточно для того, чтобы драйвер считывателя мог послать сообщение управляющий программе «я получил данные, можешь запросить их у меня».