Техническое задание на ядро Caps-Clock¶
- Table of contents
- Техническое задание на ядро Caps-Clock
- 1. Введение
- 2. Сервер Caps-Clock (CCS)
- 3. Внутренняя структура Часовой Машины
- 3.1. Синхронизация
- 3.2. Получение информации из сети
- 3.3. Получение информации от локального оборудования (ВОЗМОЖНО???)
- 3.4. Начальная настройка Часовой Машины
- 3.5. Действия при старте
- 3.6. Действия во время работы
- 3.8. Файл привязки сигналов (SIGNALMAP XML) (ВОЗМОЖНО???)
- 3.9. Файл конфигурации модели дисплея (CDSCONFIG.XML)
- 3.10. Файл сетевой конфигурации (NETCONFIG.XML)
- 3.11. Модель дисплея
- 4. Обмен в сети Caps-Clock
- 4.1. Протокол CCP
- 4.1.1. RQ.RESET
- 4.1.2. RQ.START
- 4.1.3. RQ.STOP
- 4.1.4. RQ.GETID
- 4.1.5. RQ.GETCONFIG
- 4.1.6. RS.CONFIG
- 4.1.7. RQ.SAVECONFIG
- 4.1.9. RQ.LOADCONFIG
- 4.1.10. RQ.SETSTATE
- 4.1.11. RQ.GETSTATE
- 4.1.12. RS.STATE
- 4.1.13. RQ.SETDATA
- 4.1.14. RQ.GETDATA
- 4.1.15. RS.DATA
- 4.1.16. RS.ERROR
- 4.1.17. RQ.CONNECTSTREAM
- 4.1.18. RQ.DISCONNECTSTREAM
- 4.1.19. RS.NOTIFY
- 4.1.20. Список CONTROL_LIST
- 4.1.21. Список HW_LIST
- 4.2. Протокол ENMP
- 4.1. Протокол CCP
1. Введение¶
Система «Caps-Clock» предназначена для отображения текущего времени и различных временных интервалов, а также информации о состоянии подключенного внешнего звукового и другого оборудования в сетевой среде в режиме реального времени. Она представляет собой комплекс, состоящий из различного количества Серверов — машин, собирающих информацию, и Часовых Машин(ЧМ) — машин, отображающих информацию. Все эти машины объединены между собой локальной сетью, в которой и происходит обмен сигналами точного времени и различной служебной информацией, включая и сообщения о событиях на подключенном по USB оборудовании.
В общем случае модель системы можно представить в следующем виде:
{{Image("Config.jpg","width=600px")}}
Система допускает произвольную конфигурацию как структуры сети, так и каждой Часовой Машины в отдельности. То есть размещение на каждой из них нужного набора органов отображения и задание реакции на каждый из поступающих сигналов.
2. Сервер Caps-Clock (CCS)¶
CCS - это стандартный сервис Windows, запускаемый автоматически при старте системы и предназначенный для связи с сетью и локальным оборудованием, а также для конфигурации подключенных ЧМ и порядка обмена сигналами. Конфигурация CCS задаётся при помощи 3-х конфигурационных файлов:
- NETCONFIG.XML содержит описание сетевой конфигурации – списка управляемых данным сервером ЧМ, номера портов обмена по протоколу CCP (Caps-Clock Communication Protocol), который является внутренним протоколом обмена, и протоколу ENMP (External Network Message Protocol), который является протоколом обмена CCS с внешними компонентами сети
- SIGNALMAP.XML содержит описание реакции сервера на сигналы от локального оборудования, подключенного через USB, и поступающие по протоколам CCP и ENMP ответы.
- MACROREGISTRY.XML содержит список всех макросов, выполняемых данным сервером
{{Image("ССSRV.jpg","width=600px")}}
2.1. Действия при старте¶
Действия, которые должны быть выполнены при старте системы (например, при включении питания или рестарте).
2.1.1. Конфигурация¶
При старте или рестарте сервер:
- находит и загружает файл конфигурации NETCONFIG.XML и производит настройку в соответствии с установленными там параметрами
- после установления соединения с сетью и получения таблиц контролов находит и загружает файл MACROREGISTRY.XML, а также производит при необходимости трансляцию макрокоманд в соответствии с полученными таблицами контролов. Сообщения об ошибках в макрореестре выводятся в специальный файл MACRO.LOG.
- после загрузки макрореестра находит и загружает файл SIGNALMAP.XML и производит настройку связей сигналов USB и загруженных макросов
При отсутствии какого – либо из файлов конфигурации делается соответствующая запись в журнале сервера и выводится диалоговое окно с сообщением об ошибке. При возникновении любой ошибки делается соответствующая запись в журнале сервера, а если дальнейшее функционирование невозможно, то также выводится диалоговое окно с сообщением об ошибке.
2.1.2. Работа с сетью¶
При старте или рестарте сервер выполняет следующие действия:
- проверяет наличие сетевого соединения
- при отсутствии сетевого соединения соответствующая запись делается в журнале сервера, а сервер переходит в режим ожидания сетевого соединения
- при наличии сети составляет у себя внутренний список подключенных серверов, на которых установлен СCS и запоминает их IP
- при получении установочного запроса ССP отсылает в ответ сообщение со своим ID
- при установлении соединения с ЧМ, запрашивает её ID. Если ID входит в список подключенных ЧМ, то запрашивает с неё таблицу контролов ЧМ и запоминает её IP. Если ID не входит в список, то отправляется ответ типа NOT_SUPPORTED. В журнале сервера делается соответствующая запись.
2.2. Действия во время работы¶
Действия, которые выполняются в процессе нормальной работы системы.
2.2.1. Работа с локальным оборудованием¶
При получении данных от USB сервер принимает оттуда информацию, находит соответствующий макрос и выполняет его. Если в процессе поиска и выполнения макроса возникает ошибка, то об этом делается соответствующая запись в журнале сервера.
2.2.2. Работа с сетью¶
При наличии сети сервер принимает сетевые сообщения по протоколу ENMP, передаёт соответствующие команды в ЧМ по протоколу CCP, получает ответ от ЧМ и при необходимости пересылает его назад отправителю.
2.2.3. Конфигурация¶
В процессе работы возможно изменение on-the-fly различной конфигурационной информации : конфигурация портов, состава сетевых ЧМ и серверов, добавление/удаление макросов, конфигурации сигналов USB. При получении таких команд по протоколу ENMP сервер помимо стандартной реакции на ENM меняет свою конфигурацию, сохраняет её в конфигурационных файлах, уведомляет все зависящие от данной конфигурации стороны и переключается на новую конфигурацию.
2.2.4. Приоритеты сигналов¶
При наличии HW на USB сигналы, полученные для данного HW из сети, игнорируются.
2.3. Файлы конфигурации
h4. 2.3.1. Файл сетевой конфигурации (NETCONFIG.XML)
NETCONFIG.XML – это файл, в котором содержится настройка портов CCP и ENMP, список ID поддерживаемых ЧМ и CCS. Для серверов может указываться не ID, а IP адрес (или сетевое имя). В нём также указывается собственный ID сервера, по которому он будет идентифицироваться в сети Caps-Clock, и интервал посылки сообщений типа PING.
2.3.2 Макрореестр (MACROREGISTRY.XML)¶
MACROREGISTRY.XML – это файл, в котором содержатся все макросы, исполняемые на данном сервере. Макрос представляет собой процедуру с параметрами, которая может содержать в себе команды CCP, команды пересылки сообщений ENMP, команды вызова OS и команды чтения/записи файлов.
2.3.3. Файл привязки сигналов (SIGNALMAP.XML)¶
SIGNALMAP XML — это файл, содержащий текущую привязку поступающих от HW через USB сигналов и поступающих по протоколам ENMP и CCP сообщений типа ERROR и RESPONSE к конкретным макросам данного сервера. Например, какой макрос должен вызываться для включения транспарантов на различных ЧМ при поступлении сигнала «Микрофон включен». Изначально этот файл записывается на сервер при установке и в дальнейшем может изменяться либо вручную, либо через команды ENMP. В данном файле хранится обработка общих ситуаций с ERROR и RESPONSE, которая может быть перегружена для конкретного RID при помощи описания блоков реакции в макросах в файле MACROREGISTRY.XML.
2.4. Макросы сервера Caps-Clock¶
Серверные макросы представляют собой описание действий, выполняемых сервером при получении команды ENMP CALLMACRO, при получении сигнала HW через USB или при получении ответа на конкретный запрос по протоколу ENMP или CCP, сделанный в процессе выполнения другого макроса. Макросы имеют имя и набор именованных параметров, которые при вызове могут быть опущены в произвольном порядке. Внутри тела макроса могут использоваться псевдопеременные, которые имеют область видимости только внутри своего макроса. Макросы содержатся в макрореестре сервера, который хранится в файле MACROREGISTRY.XML в формате XML.
2.4.1. Псевдопеременные¶
Псевдопеременные внутри макроса могут использоваться в любом месте, где могут использоваться любые другие данные. Псевдопеременная выглядит как:
ИМЯ_ПЕРЕМЕННОЙ
Если псевдопеременная используется для адресации к параметрам макроса, то ИМЯ_ПЕРЕМЕННОЙ = ИМЯ_ПАРАМЕТРА. Если она используется как буфер для чтения из файла, то она будет называться FILEBUFFER. Если псевдопеременная используется для получения ответа через RESPONSE, то она будет иметь вид CCPRESPONSE и ENMPRESPONSE для протоколов CCP и ENMP соответственно. Если псевдопеременная используется для получения ответа через ERROR, то она будет иметь вид CCPERROR и ENMPERROR для протоколов CCP и ENMP соответственно, а для получения статуса фаловых операций и вызовов OS - OSERROR.
2.4.2. Состав макроса¶
Макрос состоит из:
* Имени макроса
* Списка именованных параметров
* Название параметра
* Тип параметра
- Тела макроса
- Краткого текстового описания
Имя макроса представляет из себя строку символов, которая может состоять из любых символов, за исключением служебных символов XML, кавычек, непечатаемых символов и символов, которые используются для обозначения псевдопеременных: % и *.
Название параметра также представляет собой строку символов A-Za-z0-9 без пробелов.
Тип параметра может быть:
- Int – длинное знаковое целое число
- Float – число с плавающей запятой
- String – строка символов
- Если тип параметра опущен, то проверка типа не осуществляется, а подставляется из псевдопеременной «как есть».
Краткое текстовое описание используется для пояснения смысла макроса и его параметров. Поскольку обычно вызов макроса осуществляется посылкой команды ENMP с его именем и параметрами, то есть смысл сделать эти передаваемые имена покороче с целью оптимизации сетевого трафика, а описание вынести сюда.
2.4.3. Тело макроса¶
Тело макроса представляет собой набор команд, которые сервер выполняет при вызове макроса. Каждая команда может представлять собой:
- Команду CCP
- Команду ENMP
- Команду чтения файла
- Команду записи в файл
- Команду вызова OS
Поэтому каждая команда должна иметь:
- Тип команды: CCP, ENMP, READFILE, WRITFILE или OSCALL
- Блок ветвления по наличию параметров
- Тело команды
- Блок реакции на RESPONSE
- Блок реакции на ERROR
Тело команды может состоять из одной команды или блока команд. Блоки команд не могут быть вложенными.
Одиночная команда CCP или ENMP представляет собой CCP или ENMP REQUEST, который будет передан с уникальным RID, и на который будет послан соответствующий RESPONSE или ERROR с этим RID. Реакция на такой ответ может быть предусмотрена при помощи блока реакции RESPONSE или блока реакции ERROR: при получении RS с данным RID по соответствующему протоколу сервер должен выполнить указанный блок реакции, который может состоять только из вызова макроса. В качестве параметра может передаваться CCPRESPONSE, ENMPRESPONSE, CCPERROR или ENMPERROR.
Одиночная команда READFILE или WRITEFILE используют имя файла для открытия файла на запись/чтение. Позиционирование внутри файла не выполняется: при чтении файл читается с начала и до конца, при записи файл затирается и запись осуществляется с начала. Статус выполнения операции заносится в переменную OSERROR. Этот статус может быть получен при необходимости в блоке реакции ERROR.
Одиночная команда OS представляет собой системный вызов OS со строкой команды, передаваемой OS на выполнение. Статус выполнения операции заносится в переменную OSERROR. Этот статус может быть получен при необходимости в блоке реакции ERROR.
Блок ветвления представляет собой последовательность, состоящую из команд проверки параметров, соединённых между собой простыми логическими операциями типа AND и OR без группировки. Такими операциями могут быть:
- EXIST
- NOTEXIST
- EQUAL
- NOTEQUAL
- GRATER
- LESS
- NOTGRATER
- NOTLESS
Последние четыре операции всегда возвращают FALSE для нетипизированных параметров.
3. Внутренняя структура Часовой Машины¶
Программное обеспечение Часовой Машины (ЧМ) представляет собой графическое полноэкранное приложение LINUX, содержащая внутри себя определённое количество разных органов управления (controls), управляемое по протоколу CCP и предназначенное для отображения времени, различных временных интервалов и различных сигналов и сообщений. Оно состоит из нескольких основных частей:
- Модели дисплея, которая содержит в себе отображаемые Контролы
- Модуля протокола CCP, который занимается общением с сервером Caps-Clock
- XML-парсера, который осуществляет загрузку файлов конфигурации (и может быть использован также в процессе разбора CCP команд)
- Модуля интерфейса с HW таймером, который позволяет задавать различные временные интервалы
- Управления моделью дисплея, которое является центром принятия решений на основе поступающих сигналов от внешнего оборудования и команд сервера Caps-Clock.
- (ВОЗМОЖНО???) Модуль принятия сигналов USB.
В дальнейшем это приложение называется Caps-Clock Display (CDS).
{{Image("CDS.jpg","width=600px")}}
3.1. Синхронизация¶
Отображаемое время считывается блоком управления таймером CDS с внутренних часов часовой машины, которые при наличии сети синхронизируются от сервера NTP с помощью настройки стандартных механизмов синхронизации. Модуль управления таймером также получает задания на установку различных временных интервалов от модуля управления моделью дисплея, а при наступлении событий от таймера отправляет соответствующие уведомления модулю управления моделью.
3.2. Получение информации из сети¶
Сообщения и потоки данных, передаваемые по сети в формате протокола CCP, принимаются модулем обработки CCP от сетевого драйвера и передаются модулю управления моделью дисплея для принятия решения на отображение.
3.3. Получение информации от локального оборудования (ВОЗМОЖНО???)¶
Информацию о различных состояниях подключенного локально звукового оборудования (HW) USB-модуль CDS получает от драйвера USB, находит соответствующие этим сигналам команды CCP в файле конфигурации SIGNALMAP.XML и передаёт их модулю управления моделью.
3.4. Начальная настройка Часовой Машины¶
При первом запуске ЧМ она должна быть настроена на работу в сети. Для этого на ней запускается Web-server, к которому можно подключиться с удалённого компьютера. Для этого нужно в поле URL ввести IP-адрес ЧМ. После этого появится страница настройки, на которой нужно будет выставить:
- IP адрес (или сетевое имя) CCS или ID сервера в системе Caps-Clock (в случае одноранговой сети)
- номер порта протокола CCP
- интервал посылки команды PING в автономном режиме
- идентификатор CDS
- IP адрес NTP сервера, от которого будут получаться сигналы точного времени.
- При необходимости выбрать начальную конфигурацию ЧМ (одну из существующих на ЧМ)
3.5. Действия при старте¶
Действия, выполняемые при запуске системы или при перезагрузке.
3.5.1 Конфигурация¶
При старте CDS находит и загружает файлы конфигурации:
- NETCONFIG.XML, который содержит информацию о сервере Caps-Clock, интервалах PING, etc.
- CSDCONFIG.XML, в котором содержится информация о текущей модели дисплея
- (ВОЗМОЖНО???) SIGNALMAP.XML, в котором содержится информация о текущей привязке поступающих от HW через USB сигналов к конкретным control-ам CDS
Если какой-то из файлов отсутствует или произошла ошибка при разборе, то в журнал вносится соответствующая запись. Если продолжение работы невозможно, то появляется диалоговое окно с сообщением об ошибке. Если запуск происходит нормально, то происходит переключение в полноэкранный режим, а курсор мыши отключается.
3.5.2. Работа с сетью¶
При старте CDS может работать 2-мя способами, в зависимости от информации в файле NETCONFIG.XML. В случае, когда указан конкретный IP адрес или сетевое имя сервера, CDS проверяет наличие сетевого соединения и устанавливает соединение с указанным в конфигурации сервером Caps-Clock. В случае, если указан ID сервера Caps-Clock, то посылается сообщение всем машинам в данной подсети на порт CCP. Получив такое сообщение, CCS отсылает обратно сообщение со своим ID. CDS выбирает среди полученных в ответ сообщений сообщение с нужным ID и устанавливает соединение с этим сервером. Если соединение установить не удаётся, то об этом делается запись в журнале и передаётся сигнал на индикатор сети, если он имеется, а CDS переходит в автономный режим.
3.5.3. Запуск компонент¶
При старте модуль управления моделью дисплея CDS передаёт команды создания и начальной конфигурации контролов модели дисплея в соответствии с информацией, полученной из файла начальной конфигурации, посылает команды установки таймеров в модуль управления таймером.
3.6. Действия во время работы¶
Действия, выполняемые CDS во время нормального рабочего цикла.
3.6.1. Проверка сетевого соединения¶
CDS в автономном режиме периодически проверяет наличие сетевого соединения с сервером Caps-Clock. При появлении сетевого соединения передаёт команду на отображение наличия сетевого соединения контролам, которым эта информация нужна. При пропадании сетевого соединения передаёт команду на отображение отсутствия сетевого соединения.
3.6.2. Работа с сетью¶
При наличии сети CDS принимает сетевые сообщения в формате протокола CCP, обрабатывает и в случае ошибки отправляет серверу сообщение об ошибке, а в журнале делает соответствующую запись. В противном случае отдаёт их контролам на отображение, получает ответ и отправляет его на сервер. CDS также отправляет сообщения типа CPP NOTIFY серверу Caps-Clock от контролов.
3.6.3. Работа с локальным оборудованием (ВОЗМОЖНО???)¶
CDS определяет наличие HW в порту USB и принимает оттуда информацию, затем находит команду CCP в соответствии с текущей привязкой и отправляет её контролам для отображения.
3.6.4. Приоритеты сигналов (ВОЗМОЖНО???)¶
При наличии HW на USB сигналы, полученные для данного HW из сети, игнорируются.
3.6.5. Конфигурация¶
Возможны 3 варианта работы с конфигурационной информацией:
- Запрос текущей конфигурации с сервера Caps-Clock. При получении такого запроса CDS получает полную информацию от Модели дисплея и пересылает её серверу в формате протокола CCP.
- Запрос на сохранение текущей модели. При получении такого запроса от сервера CDS сохраняет её в текущем файле конфигурации или в файле с указанным именем.
- Запрос на загрузку конфигурации из файла. При получении такого запроса CDS считывает конфигурацию из указанного файла, и перезапускает Модель дисплея.
3.8. Файл привязки сигналов (SIGNALMAP XML) (ВОЗМОЖНО???)¶
SIGNALMAP XML — это файл, содержащий текущую привязку поступающих от HW через USB сигналов и сообщений к конкретным control-ам CDS. Например, какой транспарант должен загораться при поступлении сигнала «Микрофон включен». Изначально этот файл записывается в часовую машину при установке. В дальнейшем при получении с сервера команды привязки сигналов CDS автоматически сохраняет их в SIGNALMAP XML.
3.9. Файл конфигурации модели дисплея (CDSCONFIG.XML)¶
В файле конфигурации модели полностью прописывается полный список контролов с параметрами и ссылками на соответствующие темы. При этом каждому контролу присваивается свой уникальный идентификатор, по которому он может в дальнейшем адресоваться с сервера Caps-Clock. Темы, используемые для графического отображения — изображения, строки, цветовые схемы - прописываются в CDS при установке и в дальнейшем не могут быть загружены средствами системы Caps-Clock, в отличие от конфигурационной информации. Это можно сделать с помощью системных средств Linux – FTP, SSH etc.
3.10. Файл сетевой конфигурации (NETCONFIG.XML)¶
В файле сетевой конфигурации прописывается IP адрес (или сетевое имя) CCS или ID сервера в системе Caps-Clock (в случае одноранговой сети), номер порта протокола CCP, интервал посылки команды PING в автономном режиме, а также идентификатор CDS, по которому к ЧМ будет обращаться CCS, и справочная информация, которая является необязательной. Этот файл прописывается на ЧМ при установке и в дальнейшем может меняться только через установочный Web-интерфейс.
3.11. Модель дисплея¶
Модель дисплея содержит в себе список всех созданных контролов, их параметров, возможно графические буфера контролов, осуществляет синхронизацию с графическим адаптером для оптимизации процесса графического вывода и сглаживания эффектов дрожания и мерцания.
Пример окна :
{{Image("MainWin.jpg","width=600px")}}
3.11.1. Главное окно¶
Главное окно является контейнером для содержащихся внутри органов управления (controls). В качестве фона используется определённое изображение в формате JPG , которое при установке записывается вместе c исполняемым файлом, файлом конфигурации и другими служебными файлами на часовую машину. В процессе работы фоновое изображение может быть изменено при помощи команды CCP. Главное окно не имеет своего ControlID, а вместо этого используется ID часовой машины. Поэтому обращение ко всем его свойствам осуществляется по ID часовой машины.
Для главного окна задаётся:
- Фоновый рисунок
- Список контролов
- Цвет и стиль текста по умолчанию
{{Image("Controls.jpg","width=600px")}}
3.11.2. Controls¶
Control - это дочернее окно (орган управления) основного окна CDS, обладающее набором свойств, различных ресурсов и методов управления. Каждый control располагается внутри основного окна и имеет метод (свойство), позволяющий ему становиться видимым и невидимым по команде CCP ON и OFF. Также каждый контрол имеет признак, позволяющий CDS определить, нужна ли ему информация о наличии сетевого соединения c сервером Caps-Clock.
3.11.2.1. Часы¶
Часы представляют собой круглый циферблат с поминутной разметкой по окружности. Время на нём может отображаться с помощью стрелок или подсветкой минутных меток. По центру циферблата может включаться цифровое табло с текущим временем. Цветовая схема и способ отображения (стрелки, минутные метки, цифровое табло, количество секторов, пороги) задаётся в файле конфигурации до старта ЧМ и в процессе работы может изменяться с помощью команд CCP. В этом же файле задаётся смещение отображаемого времени относительно текущего времени в минутах (оно может быть как положительным, так и отрицательным).
Для ЧАСОВ задаётся:
* вид часов: комбинация отображения стрелок, мнемонических меток, цифрового табло и штрихов
* информация о циклах:
* число циклов (от 1 до 12)
* цвет сектора: S_CURRENT_COLOR
* цвет сектора после порога завершения: S_FINALIZE_COLOR
* цвет сектора после критического порога: S_CRITICAL_COLOR + BLINKING
* прозрачность сектора
* порог завершения (в секундах до окончания цикла) + флаг отсылки CCP NOTIFY
* критический порог (в секундах до окончания цикла) + флаг отсылки CCP NOTIFY
* информация о цифровом табло
* цифровое табло с текущим временем: ВКЛ/ВЫКЛ
* цвет, стиль и размер шрифта цифрового табло (цвет и стиль м.б. опущены)
* формат отображения времени : ЧЧ:ММ:СС или ЧЧ:ММ или ММ:СС или ЧЧ:ММ/СС
* место отображения цифрового табло
* цветовая схема меток
* неактивные метки : L_INACTIVE_COLOR
* активные метки до порогов: L_CURRENT_COLOR
* активные метки после порога завершения: L_FINALIZE_COLOR
* активные метки после критического порога: L_CRITICAL_COLOR + BLINKING
* диаметр минутных меток
* диаметр пятиминутных меток
* диаметр пятнадцатиминутных меток
* диаметр активных меток
* информация о стрелках
* shape
* цвет
* прозрачность
* центр вращения
* цветовая схема штрихов
* минутные штрихи
* толщина
* длина
* цвет
* расстояние от края
* пятиминутные штрихи
* толщина
* длина
* цвет
* расстояние от края
* пятнадцатиминутные штрихи
* толщина
* длина
* цвет
* расстояние от края
* информация о подложке
* фоновая картинка
* цвет фона, если нет картинки : BACK_COLOR
* прозрачность фона, если нет картинки
* маска
- смещение в минутах относительно текущего времени
- частота BLINKING в миллисекундах (0 – ВЫКЛ)
- будильник ЧЧ:ММ:СС
Текущее время передаётся основным окном, а ЧАСЫ добавляют к нему заданное смещение. Когда минутная стрелка или минутная метка находится внутри сектора, сектор считается текущим и закрашивается цветом S_CURRENT_COLOR. Когда она внутри сектора переходит за порог завершения, сектор закрашивается цветом S_FINALIZE_COLOR. Когда она внутри сектора переходит за порог завершения, сектор закрашивается цветом S_CRITICAL_COLOR и может включать мигание BLINKING. При выходе минутной метки/стрелки из сектора, он закрашивается цветом BACK_COLOR, если нет фоновой картинки, в противном случае он становится совершенно прозрачным. При прохождении порога завершения происходит событие STATE_FINALIZE, а при прохождении критического порога – STATE_CRITICAL. Уведомления об этих событиях могут посылаться серверу по протоколу CCP, если выставлен флаг CCP NOTIFY. Если установлен будильник, то при достижении этого времени (с учётом смещения) на сервер отсылается уведомление. При наличии маски части фоновой картинки за пределами маски полностью прозрачны. Секунды отображаются либо секундной стрелкой, либо подсветкой минутных меток на мнемонических часах.
Пример часов со стрелками:
{{Image("ClockH.jpg","width=400px")}}
Пример мнемонических часов:
{{Image("ClockM.jpg","width=400px")}}
3.11.2.2. Транспарант¶
Транспарант представляет собой окно, отображающее:
- прямоугольник
- прямоугольник со скруглёнными углами
- трапецию
- овал
- или треугольник
с текстом или пиктограммой внутри.
Для транспаранта задаётся:
* геометрический вид окна
* признак: текст или пиктограмма
* текст или имя пиктограммы (картинка в формате JPG)
* маска для пиктограммы
* пассивный режим
* цвет, стиль и размер текста (цвет и стиль м.б. опущены)
* цвет заливки
* прозрачность заливки
* рамочка : ВКЛ/ВЫКЛ
* цвет рамочки
* активный режим
* цвет, стиль и размер текста (цвет и стиль м.б. опущены)
* цвет заливки
* прозрачность заливки
* рамочка : ВКЛ/ВЫКЛ
* цвет рамочки
* BLINKING в миллисекундах (0 – ВЫКЛ)
Параметры в процессе работы могут меняться по командам CCP. Переход в активный режим происходит по команде CCP SETSTATE ACTIVE или SETSTATE ACTIVE+BLINK, а переход в пассивный режим – по команде SETSTATE INACTIVE.
{{Image("Transp.jpg","width=400px")}}
3.11.2.3. Бегущая строка¶
Бегущая строка представляет собой прямоугольное окно с текстом внутри, расположенным в одну строчку.
Для бегущей строки задаётся:
- текст
- цвет, стиль и размер текста (цвет и стиль м.б. опущены)
- цвет заливки
- прозрачность заливки
- скорость вращения (0 – стоп)
Вращение текста осуществляется справа налево путём задания скорости вращения. В случае, если невозможно будет избежать эффекта мерцания, в режиме вращения можно считать заливку полностью непрозрачной. В режиме СТОП текст может быть длиннее чем, тот который помещается в окне. В этом случае он разбивается на страницы по размеру окна, а навигация по страницам осуществляется по командам CCP SETDATA PAGE N, SETDATA PAGE LEFT, SETDATA PAGE RIGHT, SETDATA PAGE LAST. Номер текущей страницы возвращается серверу при запросе CCP GETDATA CURRENTPAGE. Количество символов, которое помещается в окне возвращается по команде CCP GETDATA PAGEWIDTH.
Пример бегущей строки с новостями:
{{Image("String.jpg","width=400px")}}
Пример бегущей строки в состоянии STOP:
{{Image("String2.jpg","width=400px")}}
3.11.2.4. Текстовое окно с прокруткой¶
Текстовое окно с прокруткой представляет собой прямоугольное окно с текстом внутри, расположенным в несколько строк.
Для текстового окна задаётся:
- текст
- цвет, стиль и размер текста (цвет и стиль м.б. опущены)
- цвет заливки
- прозрачность заливки
- скорость вращения (0 – стоп, >0 – снизу вверх, <0 – сверху вниз)
Control должен сам разбивать текст на строки в зависимости от ширины окна. Вращение текста осуществляется путём задания скорости вращения. В случае, если невозможно будет избежать эффекта мерцания, в режиме вращения можно считать заливку полностью непрозрачной. В режиме СТОП текст может быть длиннее чем, тот который помещается в окне. В этом случае он разбивается на страницы по размеру окна, а навигация по страницам осуществляется по командам CCP SETDATA PAGE N, SETDATA PAGE LEFT, SETDATA PAGE RIGHT, SETDATA PAGE LAST. Номер текущей страницы возвращается серверу при запросе CCP GETDATA CURRENTPAGE. Количество символов, которое помещается в окне возвращается по команде CCP GETDATA PAGEWIDTH, а число строк – по команде GETDATA PAGEHEIGHT.
3.11.2.5. Прогресс-индикатор прямоугольный¶
Прямоугольный прогресс-индикатор представляет собой прямоугольное окно, состоящее из 2 половин, залитых разным цветом. Поверх индикатора может выводиться число: (текущее значение) или (максимальное значение — текущее значение).
Для прямоугольного прогресс-индикатора задаётся:
* вид : горизонтальный или вертикальный
* порог завершения (в секундах до окончания цикла) + флаг отсылки CCP NOTIFY
* критический порог (в секундах до окончания цикла) + флаг отсылки CCP NOTIFY
* цвета заливки
* неактивный
* активный
* после порога завершения
* после критического порога
* цвет рамочки
* рамочка : ВКЛ/ВЫКЛ
* заливка
* признак: картинка или фон
* название картинки JPG
* цвет и прозрачность фона
* частота BLINKING в миллисекундах (0 – ВЫКЛ)
* работа по таймеру или по команде
* флаг автостарта : ON или OFF (если работает по таймеру)
* время автостарта ЧЧ:ММ:СС (если включен автостарт)
* тип таймера: однократный или циклический
* выводимое значение
* цвет, стиль и размер текста (цвет и стиль м.б. опущены)
* вид выводимого значения : прямое, обратное
* формат выводимого значения: N, ММ:СС, ЧЧ:ММ:СС
* место выводимого значения
- начальное и конечное значения
- текущее значение
- родительский контрол
Текущее значение индикатора устанавливается по команде CCP SETDATA VALUE или по таймеру. При работе по таймеру автоматически производится увеличение значения на 1 единицу через 1 секунду, по достижении максимального значения текущее значение сбрасывается в начальное, если тип таймера – циклический, в противном случае он просто останавливается. Формат вывода числа может быть либо в виде целого значения, либо в виде времени ЧЧ:ММ:СС или ММ:СС.
{{Image("ProgR1.jpg","width=400px")}}
При достижении порога завершения цвет заливки меняется на FINALIZE_COLOR, а при достижении критического порога заливка индикатора сбрасывается, а окно индикатора вырождается в набор прямоугольников, число которых равно числу оставшихся до конца шагов. Эти прямоугольники закрашиваются по-очереди цветом CRITICAL_COLOR (аналог стрелочки на круглом прогресс-индикаторе).
{{Image("ProgR2.jpg","width=400px")}}
Прогресс-индикатор может быть не самостоятельным, а ведомым от родительского контрола типа ЧАСЫ. В этом случае пороги этих контролов совпадают, максимальное значение прогресс-индикатора становится равным длительности цикла, текущее значение становится равным текущему смещению от начала цикла, а работа такой пары осуществляется синхронно – ведущий родительский контрол. Тип таймера становится циклическим.
Прогресс-индикатор может быть запущен по команде CCP SETSTATE RUN и остановлен по команде SETSTATE STOP в случае, если он установлен в режим работы по таймеру.
Если таймер установлен в режим автостарта, то таймер должен запуститься в это время автоматически. Если время запуска уже прошло, но период таймера ещё не закончился, то таймер запускается сразу же, а его текущее значение устанавливается на время, прошедшее со времени, когда он должен был запуститься.
3.11.2.6. Прогресс-индикатор круглый¶
Круглый прогресс-индикатор представляет собой круг, состоящий из 2 половин, залитых разным цветом. Поверх индикатора может выводиться число: (текущее значение) или (максимальное значение — текущее значение).
Для круглого прогресс-индикатора задаётся:
* порог завершения (в секундах до окончания цикла) + флаг отсылки CCP NOTIFY
* критический порог (в секундах до окончания цикла) + флаг отсылки CCP NOTIFY
* цвета заливки
* неактивный
* активный
* после порога завершения
* после критического порога
* цвет рамочки
* рамочка : ВКЛ/ВЫКЛ
* заливка
* признак: картинка или фон
* название картинки JPG
* цвет и прозрачность фона
* частота BLINKING в миллисекундах (0 – ВЫКЛ)
* работа по таймеру или по команде
* флаг автостарта : ON или OFF (если работает по таймеру)
* время автостарта ЧЧ:ММ:СС (если включен автостарт)
* тип таймера: однократный или циклический
* выводимое значение
* цвет, стиль и размер текста (цвет и стиль м.б. опущены)
* вид выводимого значения : прямое, обратное
* формат выводимого значения: N, ММ:СС, ЧЧ:ММ:СС
* место выводимого значения
- начальное и конечное значения
- текущее значение
- родительский контрол
Текущее значение индикатора устанавливается по команде CCP SETCONTROLDATA VALUE или по таймеру. При работе по таймеру автоматически производится увеличение значения на 1 единицу через 1 секунду, по достижении максимального значения текущее значение сбрасывается в начальное, если тип таймера – циклический, в противном случае он просто останавливается. Формат вывода числа может быть либо в виде целого значения, либо в виде времени ЧЧ:ММ:СС или ММ:СС.
{{Image("ProgC1.jpg")}}
При достижении порога завершения цвет заливки меняется на FINALIZE_COLOR, а при достижении порога завершения появляется стрелочка цвета CRITICAL_COLOR.
{{Image("ProgC2.jpg")}}
Прогресс-индикатор может быть не самостоятельным, а ведомым от родительского контрола типа ЧАСЫ. В этом случае пороги этих контролов совпадают, максимальное значение прогресс-индикатора становится равным длительности цикла, текущее значение становится равным текущему смещению от начала цикла, а работа такой пары осуществляется синхронно – ведущий родительский контрол. Тип таймера становится циклическим.
Прогресс-индикатор может быть запущен по команде CCP SETSTATE RUN и остановлен по команде SETSTATE STOP в случае, если он установлен в режим работы по таймеру.
Если таймер установлен в режим автостарта, то таймер должен запуститься в это время автоматически. Если время запуска уже прошло, но период таймера ещё не закончился, то таймер запускается сразу же, а его текущее значение устанавливается на время, прошедшее со времени, когда он должен был запуститься.
3.11.2.7. Индикатор сети¶
Индикатор сети представляет собой контрол типа транспарант. Единственное отличие заключается в том, что он не принимает команды CCP типа SET ACTIVE/INACTIVE, а вместо этого переходит в активное состояние, если при работе ЧМ регистрируется отсутствие соединения с сервером Caps-Clock. В противном случае он остаётся в пассивном состоянии.
3.11.2.8. Календарь¶
Календарь представляет собой контрол типа бегущая строка в состоянии СТОП. Единственное отличие заключается в том, что он не принимает команды CCP типа SET TEXT, а вместо этого при загрузке и смене текущей даты отображает текущую дату в заданном формате. Форматы – стандартные форматы OS.
3.11.2.9. Индикатор уровня¶
Индикатор уровня представляет собой прямоугольное окно, состоящее из трёх областей:
- области меток
- области штрихов
- и области сегментов
Все 3 области заливаются одним и тем же цветом PANEL_COLOR с одинаковой прозрачностью PANEL_TRANSPARENCY. В качестве подложки индикатора уровня может использоваться картинка JPG, в этом случае панели считаются полностью прозрачными. Область сегментов состоит из нескольких одинаковых прямоугольных сегментов, следующих один за другим, возможно имеющих рамку и залитых разными цветами. Каждый сегмент имеет два состояния — подсвеченный и неподсвеченный. В подсвеченном состоянии сегмент заполняется своим цветом, в неподсвеченном — заполняется цветом BACKGROUND_COLOR c прозрачностью BACRGROUND_TRANSPARENCY. Для каждого сегмента задаётся:
- SEGMENT_LEVEL - уровень сигнала для сегмента в дБ (float)
- SEGMENT_LINE - признак, показывающий рисовать штрих для данного сегмента или нет
- SEGMENT_LABEL – метка, которая выводится напротив данного сегмента (может быть пустая)
Для индикатора уровня задаются:
* вид : вертикальный или горизонтальный
* общее число сегментов
* COLORSET - раскраска индикатора, представляющая собой список типа:
* FILL_COLOR - цвет заполнения сегментов во включенном состоянии
* AREA_START - индекс первого сегмента, заполненного этим цветом
* AREA_END - индекс последнего сегмента, заполненного этим цветом
* PANEL_COLOR
* PANEL_TRANSPARENCY
* BACKGROUND_COLOR
* BACKGROUND_TRANSPARENCY
* DELTA_DB – смещение в dB относительно приходящего уровня (float)
* информация о панели LABEL
* LABEL_SIDE - признак, с какой стороны от области сегментов расположены штрихи и надписи (Справа/Слева или Сверху/Снизу).
* LABEL_VISIBLE - признак, показывающий, выводить панель меток или нет
* LABEL_WIDTH - ширина области меток
* FONT_STYLE - цвет, стиль и размер шрифта (цвет и стиль м.б. опущены)
* информация о панели штрихов
* LINE_VISIBLE - признак, показывающий, выводить панель штрихов или нет
* LINE_WIDTH - ширина области штрихов
* LINE_HEIGHT – толщина штриха в пикселах
* LINE_COLOR – цвет штрихов
* информация о панели сегментов
* SEGMENT_WIDTH - ширина области сегментов
* SEGMENT_BORDER - признак, показывающий, нужно ли рисовать рамку вокруг каждого сегмента, толщина и цвет рамки вокруг сегмента
* SEGMENT_LIST - список сегментов с признаками: SEGMENT_LEVEL, SEGMENT_LINE, SEGMENT_LABEL
{{Image("Ind1.jpg")}}
Индикатор должен поддерживать следующий набор команд:
- УСТАНОВИТЬ ТЕКУЩЕЕ ЗНАЧЕНИЕ - при установке текущего значения сегменты от начала до указанного по индексу заливаются каждый своим цветом, а остальные сегменты - цветом BACKGROUND_COLOR с BACKGROUND_TRANSPARENCY.
- УСТАНОВИТЬ ТЕКУЩИЙ УРОВЕНЬ - при установке текущего уровня все сегменты от начала до первого сегмента, имеющего SEGMENT_LEVEL больший или равный , включительно заливаются каждый своим цветом, а остальные сегменты - цветом BACKGROUND_COLOR с BACKGROUND_TRANSPARENCY. Например, если один сегмент имеет метку 0, а предыдущий –5, то значение –3 будет поджигать сегмент/столбик 0:
{{Image("Ind2.jpg","width=400px")}}
- УСТАНОВИТЬ ПИК ПО ЗНАЧЕНИЮ - при установке пика по значению сегмент с номером зажигается своим цветом.
- УСТАНОВИТЬ ПИК ПО УРОВНЮ - при установке пика по уровню первый сегмент, имеющий SEGMENT_LEVEL больший или равный , зажигается своим цветом.
- ПОГАСИТЬ ПИК - текущий пик заливается цветом BACKGROND_COLOR с BACKGROUND_TRANSPARENCY.
- УСТАНОВИТЬ ТЕКУЩЕЕ ЗНАЧЕНИЕ И ПИК , - аналогично выполнению одновременно трёх команд: ПОГАСИТЬ ПИК, УСТАНОВИТЬ ТЕКУЩЕЕ ЗНАЧЕНИЕ и УСТАНОВИТЬ ПИК ПО ЗНАЧЕНИЮ.
- УСТАНОВИТЬ ТЕКУЩИЙ УРОВЕНЬ , - аналогично выполнению одновременно трёх команд: ПОГАСИТЬ ПИК, УСТАНОВИТЬ ТЕКУЩИЙ УРОВЕНЬ и УСТАНОВИТЬ ПИК ПО УРОВНЮ.
При пропадании сетевого соединения с сервером (когда индикатор сети загорается) уровень и пик сбрасываются до 0 и все сегменты заливаются цветом BACKGROUND_COLOR c BACKGROUND_TRANSPARENCY.
3.11.2.10. Проигрыватель мультимедиа¶
Проигрыватель мультимедиа представляет собой прямоугольное окно для проигрывания различных видео-файлов и потоковых видео-данных. Может подключаться к видеопотоку по команде CCP CONNECTSTREAM и отключаться от потока по команде CCP DISCONNECTSTREAM.
4. Обмен в сети Caps-Clock¶
Обмен между между машинами Caps-Clock осуществляется по локальной сети. В данном документе протокол обмена не специфицируется, даётся только общее описание передаваемой информации. Протокол обмена может свободно выбираться разработчиком в зависимости от типа сети и подключаемого оборудования.
Передаваемая информация передаётся с помощью 2-х протоколов верхнего уровня, надстраиваемых над системным протоколом обмена:
- Caps-Clock Communication Protocol (CCP) – внутренний протокол обмена между серверами Caps-Clock и часовыми машинами.
- Extended Network Message Protocol (ENMP) – протокол обмена между CCS и внешними компонентами системы. Т.е. внешние компоненты никогда не общаются с часовыми машинами напрямую.
Для каждого протокола выделяется свой порт. Способ получения информации о конфигурации протоколов будет описан позднее.
4.1. Протокол CCP¶
Clock Communication Protocol (CCP) - это протокол внутреннего обмена между различными компонентами системы. Описание его приводится здесь в виде псевдокода.
Каждая команда может быть одного из двух типов:
- REQUEST (RQ) – при запросе на выполнение
- RESPONSE (RS) – при ответе на запрос или при реакции на событие
Каждый запрос имеет свой уникальный RID (Request ID), который передаётся назад в RESPONSE при ответе.
4.1.1. RQ.RESET¶
Команда предназначена для сброса ЧМ в исходное состояние.
Параметры :
ID - идентификатор часовой машины или ALL_ID для сброса всех ЧМ в системе. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
Пример:
RESET
RESET CLK1
RESET ALL_ID
Тип:
IN - для CDS и CCS
OUT - для CCS
4.1.2. RQ.START¶
Команда предназначена для старта остановленной часовой машины.
Параметры :
ID - идентификатор часовой машины или ALL_ID для старта всех ЧМ в системе. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
Пример :
START
START CLK1
START ALL_ID
Тип:
IN - для CDS и СCS
OUT - для CCS
4.1.3. RQ.STOP¶
Команда предназначена для остановки (паузы) часовой машины.
Параметры :
ID - идентификатор часовой машины или ALL_ID для остановки всех ЧМ в системе. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
Пример :
STOP
STOP CLK1
STOP ALL_ID
Тип:
IN - для CDS и СCS
OUT - для CCS
4.1.4. RQ.GETID¶
Команда предназначена для запроса ID CCS в сети Caps-Clock (в том числе и с помощью установочных сообщений типа broadcast).
Параметры :
Нет.
Пример :
GETID
Тип:
IN - для СCS
OUT - для CDS и CCS
4.1.5. RQ.GETCONFIG¶
Команда предназначена для запроса конфигурации органов управления и подключенного локально звукового оборудования на часовой машине (на сервере можно запрашивать только HW).
Параметры :
ID - идентификатор CDS или CCS. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
TYPE - Тип запроса:
- CONTROL_TYPE - запрос конфигурации органов управления.
- HW_TYPE - запрос подключенного локально (через USB) оборудования
Пример :
GETCONFIG HW_TYPE
GETCONFIG CLK1 CONTROL_TYPE
Тип :
IN - для CDS и CCS
OUT - для CCS
4.1.6. RS.CONFIG¶
Команда предназначена для передачи информации часовой машиной о конфигурации органов управления и подключенного локально звукового оборудования, или сервером о конфигурации подключенного локально звукового оборудования.
Параметры:
ID - идентификатор часовой машины.
TYPE - Тип запроса:
- CONTROL_TYPE - запрос конфигурации органов управления.
- HW_TYPE - запрос подключенного локально (через USB) оборудования
LIST - список органов управления или подключенного оборудования. Может быть CONTROL_LIST или HW_LIST.
Пример:
CONFIG CLK1 HW_TYPE MIC_ON_AIR EVENT_TYPE, MASTER_LEVEL NUMBER_TYPE
Тип:
OUT - для CDS и СCS
IN - для CCS
4.1.7. RQ.SAVECONFIG¶
Команда предназначена для подачи команды ЧМ на сохранение текущей конфигурации органов управления и подключенного локально звукового оборудования в локальном файле конфигурации.
Параметры :
ID - идентификатор CDS или CCS. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
TYPE - Тип запроса:
- CONTROL_TYPE - запрос конфигурации органов управления.
- HW_TYPE - запрос подключенного локально (через USB) оборудования
CONFIG – Имя файла конфигурации. По умолчанию для контролов используется имя CDSCONFIG, а для USB-оборудования – SIGNALMAP.
Пример :
SAVECONFIG HW_TYPE
SAVECONFIG CLK1 CONTROL_TYPE CDS_DEMO1
Тип :
IN - для CDS
OUT - для CCS
4.1.9. RQ.LOADCONFIG¶
Команда предназначена для подачи команды ЧМ на загрузку конфигурации органов управления и подключенного локально звукового оборудования из локального файла конфигурации.
Параметры :
ID - идентификатор CDS или CCS. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
TYPE - Тип запроса:
- CONTROL_TYPE - запрос конфигурации органов управления.
- HW_TYPE - запрос подключенного локально (через USB) оборудования
CONFIG – Имя файла конфигурации. По умолчанию для контролов используется имя CDSCONFIG, а для USB-оборудования – SIGNALMAP.
Пример :
LOADCONFIG HW_TYPE
LOADCONFIG CLK1 CONTROL_TYPE CDS_DEMO1
Тип :
IN - для CDS
OUT - для CCS
4.1.10. RQ.SETSTATE¶
Команда предназначена для смены состояния какого-либо органа управления на часовой машине.
Параметры :
ID - идентификатор часовой машины. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
CONTROL_ID - Идентификатор органа управления.
STATE - В какое состояние должен быть переведён:
- ON - сделать видимым.
- OFF - сделать невидимым
- BLINK - сделать мигающим
- ACTIVE – включить (для транспаранта)
- INACTIVE – выключить (для транспаранта)
- SCROLL - прокрутка содержимого
- RUN – запустить (для таймера)
- STOP - вернуть в пассивное состояние, если была включена прокрутка, мигание или запуск.
Пример :
SETSTATE PHONE1 ON
SETSTATE CLK1 MIC1 BLINK
Тип :
IN - для CDS и CCS
OUT - для CCS
4.1.11. RQ.GETSTATE¶
Команда предназначена для запроса информации о состоянии какого-либо органа управления на часовой машине.
Параметры :
ID - идентификатор часовой машины. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
CONTROL_ID - Идентификатор органа управления.
Пример :
GETSTATE TEXT1
GETSTATE CLK1 MIC1
Тип :
IN - для CDS и CCS
OUT - для CCS
4.1.12. RS.STATE¶
Команда предназначена для передачи информации о состоянии какого-либо органа управления на часовой машине.
Параметры :
ID - идентификатор часовой машины.
CONTROL_ID - Идентификатор органа управления.
STATE - Текущее состояние:
- ON - видимый
- OFF - невидимый
- BLINK – мигающий
- ACTIVE – включен (для транспаранта)
- INACTIVE – выключен (для транспаранта)
- SCROLL - в прокрутке
- RUN – работает (для таймера)
Пример :
STATE CLK1 MIC1 BLINK STATE CLK1 TEXT1 ON
Тип :
OUT - для CDS и CCS
IN - для CCS
4.1.13. RQ.SETDATA¶
Команда предназначена для передачи данных какому-либо органу управления на часовой машине.
Параметры :
ID - идентификатор часовой машины. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
CONTROL_LIST – список, состоящий из одного или нескольких элементов, каждый из которых содержит значения изменяемых параметров контрола.
Пример :
SETDATA CLK1 MIC1 COLOR RED
SETDATA TEXT1 TEXT <Последние новости…..>, SCROLL YES; MIC2 STATE OFF
Тип :
IN - для CDS и CCS
OUT - для CCS
4.1.14. RQ.GETDATA¶
Команда предназначена для запроса данных какого-либо органа управления на часовой машине.
Параметры :
ID - идентификатор часовой машины. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
CONTROL_LIST – список, состоящий из одного или нескольких элементов, в каждом из которых содержатся имена запрашиваемых параметров контрола.
Пример :
GETDATA MIC1 COLOR
GETDATA TEXT1 TEXT, SCROLL YES; MIC2 STATE
Тип :
IN - для CDS и CCS
OUT – для CCS
4.1.15. RS.DATA¶
Команда предназначена для передачи информации часовой машиной запрошенных данных с запрошенных органов управления.
Параметры:
ID - идентификатор часовой машины.
LIST - список органов управления с параметрами.
Пример:
DATA CLK1 MIC1 STATE ON, COLOR RED; TEXT1 TEXT "Новости …"
Тип:
OUT - для CDS и СCS
IN - для CCS
4.1.16. RS.ERROR¶
Команда предназначена для передачи информации об ошибке в ответ на какой-либо запрос.
Параметры :
ID - идентификатор часовой машины или сервера.
ERROR_ID - идентификатор ошибки.
DESCRIPTION – дополнительная информация.
Пример :
ERROR SRV1 NOT_SUPPORTED "Машина не входит в список подключенных"
ERROR CLK1 OK ERROR CLK1 WRONG_PARAMETER "Неверное имя параметра TEXT для контрола CLOCK1"
Тип :
OUT - для CDS и CCS
IN - для CCS
4.1.17. RQ.CONNECTSTREAM¶
Команда предназначена для подключения потока данных с сервера к конкретному органу управления на часовой машине.
Параметры :
ID - идентификатор часовой машины. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
CONTROL_ID - идентификатор органа управления
SOURCE_ID - идентификатор сервера, с которого будет передаваться поток STREAM_ID - идентификатор потока
TBD
Пример :
CONNECTSTREAM CLK1 VIDEO1 SRV1 VIDEO_NEWS
Тип :
OUT - для CCS
IN - для CCS и CDS
4.1.18. RQ.DISCONNECTSTREAM¶
Команда предназначена для отключения органа управления на часовой машине от потока данных.
Параметры :
ID - идентификатор часовой машины. ID может быть опущен, если команда пересылается от CCS на конкретную ЧМ.
CONTROL_ID - идентификатор органа управления.
Пример :
DISCONNECTSTREAM CLK1 VIDEO1
Тип :
OUT - для CCS
IN - для CCS и CDS
4.1.19. RS.NOTIFY¶
Команда предназначена для передачи информации о произошедшем событии (типа, будильник сработал).
Параметры :
ID - идентификатор часовой машины или сервера.
CONTROL_ID - идентификатор контрола, где произошло событие.
EVENT_NAME – идентификатор события
EVENT_DATA – дополнительная информация.
Пример :
NOTIFY CLK1 MAIN_CLOCK WATCHDOG "15:31:25"
NOTIFY CLK1 WATCHDOG1 CRITICAL_THRESHOLD
Тип :
OUT - для CDS и CCS
IN - для CCS
4.1.20. Список CONTROL_LIST¶
Список органов управления на CDS с параметрами:
* Записи о контролах
* ID контрола
* Тип контрола
* Краткое текстовое описание
* Список параметров
* Название параметра
* Тип параметра
* Значение параметра
4.1.21. Список HW_LIST¶
Список звукового оборудования, подключенного через USB к серверу или ЧМ:
* Записи о HW сигналах
* ID сигнала
* Тип сигнала (сигнал или значение)
* Данные (если значение)
* Краткое текстовое описание
* Макро (???)
4.2. Протокол ENMP¶
Extended Network Message Protocol (ENMP) - это протокол обмена между различными внешними компонентами системы и CCS. Описание его приводится здесь в виде псевдокода, хотя желательна его реализация в виде пакетов XML, пересылаемых по локальной сети. В этом случае пересылаемая команда может иметь вид:
enm>
command>ИМЯ_КОМАНДЫ parameters>
parameter>
name>ИМЯ_ПАРАМЕТРА value>ЗНАЧЕНИЕ_ПАРАМЕТРА type>ТИП_ПАРАМЕТРА
/parameter> parameter>
….
/parameter>
…..
/parameters>
/enm>
Так же как и в CCP, каждая команда может быть одного из двух типов:
- REQUEST (RQ) – при запросе на выполнение
- RESPONSE (RS) – при ответе на запрос или при реакции на событие
Каждый запрос имеет свой уникальный RID (Request ID), который передаётся назад в RESPONSE при ответе.
4.2.1. RQ.RESET¶
Команда предназначена для сброса CCS в исходное состояние. Аналогично RESTARTу сервиса на локальном компьютере.
Параметры :
Нет.
Пример :
RESET
Тип :
OUT – для приложения или CCS
IN - для CCS
4.2.2. RQ.GETLIST¶
Команда предназначена для запроса с CCS информации о подключенных часовых машинах и серверах, о доступных макросах и обработчиках USB сигналов.
Параметры :
TYPE - тип списка:
- CLOCK_TYPE - для получения списка подключенных часовых машин.
- SERVER_TYPE - для получения списка подключенных серверов
- MACRO_TYPE – для получения списка макросов, доступных для вызова
- SIGNAL_TYPE – для получения списка HW сигналов с обработчиками
FILTER – состояние машин:
- CONNECTED – подключенные в настоящее время
- DISCONNECTED – внесённые в список, но неподключенные в настоящее время
- ALL – все внесённые в список
Пример :
GETLIST CLOCK_TYPE CONNECTED
Тип :
OUT - для приложения или CCS
IN – для CCS
4.2.3. RS.LIST¶
Команда предназначена для передачи приложению информации о подключенных часовых машинах и серверах, о доступных макросах и обработчиках USB сигналов.
Параметры :
ID – ID сервера.
TYPE - тип списка:
- CLOCK_TYPE - для получения списка подключенных часовых машин.
- SERVER_TYPE - для получения списка подключенных серверов
- MACRO_TYPE – для получения списка макросов, доступных для вызова
- SIGNAL_TYPE – для получения списка HW сигналов с обработчиками
LIST - список подключенных часовых машин или серверов. Может быть CLOCK_LIST, SERVER_LIST, MACRO_LIST или SIGNAL_LIST.
Пример :
LIST SRV1 CLOCK_TYPE CLK1 "Часы в студии" ON, CLK2 "Часы операторы" OFF, CLK3 "Дисплей главного инженера" ON
Тип :
IN - для приложения и CCS
OUT – для CCS
4.2.3. RQ.SETCDSLIST¶
Команда предназначена для изменения списка часовых машин на CCS.
Параметры :
COMMAND – команда обработки списка:
- ADD – список добавляется к текущему списку
- DELETE – машины удаляются из текущего списка
- SET – текущий список на сервере удаляется и заменяется на новый
CLOCK_LIST – список часовых машин.
Пример :
SETCDSLIST DELETE CLK1, CLK4, CLK8
Тип :
OUT - для приложения или CCS
IN – для CCS
4.2.4. RQ.SETMACRO¶
Команда предназначена для работы с макрореестром CCS.
Параметры :
COMMAND – команда обработки:
- ADD – добавить макрос
- DELETE – удалить макрос
- SET – заменить макрос
MACRO – макрос:
- NAME – имя макроса
- BODY – тело макроса (может быть опущено для команды DELETE)
- Краткое текстовое описание (может отсутствовать)
Пример :
SETMACRO ADD TurnMIC TurnMIC….
Тип :
OUT - для приложения или CCS
IN – для CCS
4.2.5. RQ.SETSIGNAL¶
Команда предназначена для работы с обработчиками сигналов на CCS.
Параметры :
COMMAND – команда обработки:
- ADD – добавить обработчик
- DELETE – удалить обработчик
- SET – заменить обработчик
SIGNAL – обработчик:
- ID сигнала
- Тип сигнала: HWSIGNAL, ENMPNOTIFY, CCPNOTIFY, ENMPERROR или CCPERROR.
- Наличие данных для проверки: есть | нет
- Данные (если есть)
- Вызов макроса при срабатывании (м.б. опущено для команды DELETE)
- Краткое текстовое описание (м.б. опущено)
Пример :
SETSIGNAL ADD KEY_1 DATA_TYPE 0xFF … "Включить транспарант MIC"
Тип :
OUT - для приложения или CCS
IN – для CCS
4.2.6. RQ.CALLMACRO¶
Команда предназначена для запроса выполнения макроса сервером CCS.
Параметры :
CALL – вызов макроса:
- NAME – имя макроса
- PARAMS – параметры вызова (м.б. опущены):
Пример :
CALLMACRO TurnMIC State=ON
Тип :
OUT - для приложения или CCS
IN – для CCS
4.2.7. RS.ERROR¶
Команда предназначена для передачи информации об ошибке в ответ на какой-либо запрос.
Параметры :
ID - идентификатор часовой машины или сервера.
ERROR_ID - идентификатор ошибки.
DESCRIPTION – дополнительная информация.
Пример :
ERROR SRV1 NOT_SUPPORTED "Машина не входит в список подключенных"
ERROR SRV1 OK ERROR SRV1 WRONG_PARAMETER "Неверное имя параметра TEXT для контрола CLOCK1"
Тип :
OUT - для CCS
IN - для CCS и приложений
4.2.8. Список CLOCK_LIST¶
Список подключенных к серверу ЧМ:
* Записи о ЧМ:
* ID ЧМ
* IP ЧМ (если есть)
* Состояние : CONNECTED | DISCONNECTED
* Краткое текстовое описание (может отсутствовать)
4.2.9. Список SERVER_LIST¶
Список подключенных к серверу других серверов, оснащённых SCS:
* Записи о серверах
* ID сервера
* IP сервера (возможно)
* Краткое текстовое описание
4.2.10. Список MACRO_LIST¶
Список макросов :
* Записи о макросах
* Имя макроса
* Параметры (могут отсутствовать):
* Имя параметра
* Тип параметра
* Тело макроса
* Краткое текстовое описание
4.2.11. Список SIGNAL_LIST¶
Список сигналов с обработчиками:
* Записи об обработчиках
* ID сигнала
* Тип сигнала: HWSIGNAL, ENMPNOTIFY, CCPNOTIFY, ENMPERROR или CCPERROR.
* Наличие данных для проверки: есть | нет
* Данные (если есть)
* Вызов макроса при срабатывании (м.б. опущено для команды DELETE)
* Краткое текстовое описание (м.б. опущено)