Обработка асинхронных команд

Данная последовательность действий выполняется, когда полученная от устройства Команда распознается как асинхронная.

Сначала драйвер вычисляет Выражение классификатора события/обновления переменной, чтобы определить, является ли Команда Событием (сгенерированным устройством уведомлением) или Обновлением переменной (доставкой изменения значения на стороне устройства, которая содержит новое значение). Квалифицированное выражение должно вернуть:

  • 0, если Команда является Событием
  • 1, если Команда является Обновлением переменной

Обработка асинхронных событий

Если Команда считается событием, вычисляются выражения в группе Обработка асинхронных событий:

  • Выражение имени события должно возвращать имя SberMobile-события.
  • Выражение временной метки события должно возвращать время появления события в устройстве. По умолчанию данное выражение установлено на now(), т.е. временная метка события будет установлена на конкретное время, когда она создается на сервере.
  • Выражение уровня события должно возвращать уровень SberMobile>-события. Если возвращает NULL, будет использован уровень по умолчанию, определенный таблицей Статические события.
  • Выражение данных события должно создавать и возвращать Таблицу со специфичными для события данными. Обычно создание Таблицы, представляющей данные события, осуществляется при помощи функции table() языка выражений. Функция table() должна использовать формат события, который можно извлечь функцией eventFormat() языка выражений.

После вычисления описанных выше выражений драйвер инициирует новое SberMobile Server-событие, представляющее событие устройства. Затем данное событие хранится и обрабатывается обычным способом.

Обработка асинхронных обновлений пременных

Если Команда считается обновлением переменной,  вычисляются выражения в группе Обработка асинхронного обновления переменной:

  • Выражение имени переменной должно возвращать имя измененной SberMobile-переменной.
  • Выражение временной метки переменной должно возвращать время, когда произошло изменение на стороне устройства. По умолчанию данное выражение установлено на now(), т.е. временная метка обновления переменной будет установлена на конкретное время при обработке на сервере.
  • Выражение качества переменной должно возвращать качество нового значения переменной либо NULL, если метрика качества должна быть не определена.
  • Выражение значения переменной должно создавать и возвращать Таблицу данных, представляющую новое значение переменной. Обычно создание Таблицы, представляющей значение переменной, осуществляется при помощи функции table() языка выражений. Функция table() должна использовать формат переменной, который можно извлечь функцией variableFormat() языка выражений.

После вычисления описанных выше выражений драйвер регистрирует новое обновление SberMobile Server -переменной устройства, которое потом хранится и обрабатывается обычным способом.