Библиотека AGG (AggreGate)

Внимание

Этот раздел сейчас дорабатывается. Приносим извинения за неудобства. Если вам нужна срочная помощь, обратитесь в службу поддержки Tibbo.

Библиотека AGG реализует интерфейс к серверу Tibbo AggreGate Server (http://aggregate.tibbo.com). Это «агент», который работает на вашем устройстве с Tibbo BASIC/C и подключает его к серверу по собственному протоколу Tibbo - AggreGate Communication Protocol, или ACP (http://aggregate.tibbo.com/docs/ap_protocol.htm). Из шести способов подключить устройство к серверу AggreGate (http://aggregate.tibbo.com/technology/connectivity.html) библиотека ускоряет путь по «второму» и «четвёртому».

Второй способ - «Подключение существующего устройства с помощью агента AggreGate» - предполагает, что есть «унаследованное» устройство, которое уже разработано и, возможно, выпускается серийно. Оно ничего не знает о технологии Tibbo AggreGate, но вы хотите подключить его к серверу AggreGate. Для этого модуль или контроллер с Tibbo BASIC/C (EM1000, DS1206 и т. д.) используется как «адаптер», который преобразует собственный протокол (или сигналы) унаследованного устройства в протокол сервера AggreGate и обратно. Быстрее всего этого добиться, написав приложение на Tibbo BASIC/C, которое опирается на библиотеку AGG в части реализации ACP.

Четвёртый способ - «Разработка нового устройства на базе программируемого модуля» - подходит, когда вы создаёте новое устройство с нуля и хотите, чтобы оно работало с AggreGate. Вы берёте один из очень функциональных модулей Tibbo (например, EM1000) и используете его как «процессор» нового устройства. Затем поручаете этому «процессору» всё, что нужно для работы устройства. Одна из задач - связь с сервером AggreGate - решается библиотекой AGG.

Протокол AggreGate Communication Protocol (ACP) довольно сложен, и на то, чтобы прочитать его описание, разобраться и реализовать, ушло бы немало времени - не будь библиотеки AGG. При работе с библиотекой вся эта сложность скрыта за удобным конфигуратором. Заполните все необходимые «элементы», и сервер будет знать, как работать с вашим устройством.

Не пересказывая руководство по AggreGate (http://aggregate.tibbo.com/docs/), напомним, что с точки зрения AggreGate ваше устройство - это «объект», состоящий из элементов трёх видов: переменных (свойств), функций (методов) и событий. Чтобы не путать их с внутренними переменными, методами и событиями Tibbo BASIC/C, элементы AggreGate мы будем называть A-переменными, A-функциями и A-событиями.

A-переменная может быть простой одиночной величиной, массивом значений или полноценной таблицей данных (и всё равно останется «переменной» с точки зрения AggreGate). Для хранения одиночных и массивных A-переменных библиотека AGG опирается на библиотеку STG (настройки). Это обеспечивает постоянное и надёжное хранение A-переменных, а также, через pre-get и post-set, управление работой устройства и её контроль с помощью A-переменных (настроек). Для последнего, естественно, придётся написать собственный код и поместить его в callback_stg_pre_get() и callback_stg_post_set().

Табличные A-переменные обрабатываются библиотекой TBL (таблицы) [пока не документирована].

Для A-функций и A-событий нужно писать собственный код, так что одних данных в конфигураторе недостаточно.

Сведения о библиотеке

Поддерживаемые платформы:Любая платформа. Если выбранная платформа не поддерживает RTC, учёт даты и времени придётся реализовать самостоятельно (например, подключив внешнюю микросхему RTC и написав необходимый код).
Подключаемые файлы:aggregate.tbs, aggregate.tbh (из current_library_set\aggregate\trunk\).
Зависимости:

библиотека SOCK;

библиотека TIME [пока не документирована];

библиотека WLN, если приложение будет подключаться к серверу AggreGate по Wi-Fi;

библиотека GPRS, если приложение будет подключаться к серверу AggreGate по GPRS.

Процедуры API:

Используйте процедуры API для взаимодействия с библиотекой.

agg_start() - запускает библиотеку AGG, разбирает файл конфигурации, подготавливает все необходимые переменные.

agg_stop() - останавливает библиотеку AGG, при этом она освобождает занятые буферы.

agg_get_connection_state() - возвращает текущее состояние соединения с сервером AggreGate

agg_record_decode() - извлекает значение указанного аргумента из закодированной строки, содержащей значения всех аргументов A-функции.

agg_record_encode() - добавляет значение аргумента в закодированную строку аргументов A-функции при подготовке этой строки к отправке на сервер AggreGate.

agg_fire_instant_event() - генерирует A-событие и отправляет его на сервер AggreGate, не сохраняя в журнале.

agg_stored_event_added() - нужно вызывать каждый раз, когда в файл журнала добавляется сохраняемое A-событие.

agg_proc_stored_events() - подталкивает библиотеку AGG к обработке сохранённых A-событий.

Процедуры событий:

Вызывайте процедуры событий из соответствующих обработчиков событий, как описано здесь.

agg_proc_timer() - вызывайте из обработчика события on_sys_timer().

agg_proc_data() - вызывайте из обработчика события on_sock_data_arrival().

agg_proc_data_sent() - вызывайте из обработчика события on_sock_data_sent().

agg_proc_sock_event() - вызывайте из обработчика события on_sock_event().

Процедуры обратного вызова:

Реализуйте тела процедур обратного вызова в другом месте проекта.

callback_agg_get_firmware_version() - запрашивает строку версии текущего приложения.

callback_agg_device_function() - вызывается, когда устройству нужно выполнить A-функцию.

callback_agg_synchronized() - сообщает о завершении синхронизации между устройством и сервером AggreGate.

callback_agg_pre_buffrq() - вызывается, когда библиотеке нужно выделить место под буфер, а требуемого места нет.

callback_agg_buff_released() - вызывается, когда библиотеке буферы больше не нужны и она их освободила.

callback_agg_error() - сообщает об ошибке или состоянии, обнаруженном внутри библиотеки.

callback_agg_convert_setting() - вызывается при каждом чтении или записи A-переменной. Позволяет изменить значение или тип перед записью в настройку или после чтения из настройки.

callback_agg_convert_event_field() - вызывается каждый раз, когда сохранённое A-событие извлекается из журнала и отправляется на сервер. Позволяет изменить значение или тип аргументов A-события перед отправкой сохранённого A-события на сервер.

callback_agg_rtc_sg() - вызывается, когда библиотеке нужно получить или установить дату и время устройства. Необходима только при выбранной в конфигураторе опции «use custom RTC».

Необходимое место под буферы:4 страницы буфера
Исходный материал Tibbo обновлён 29 июля 2025Оригинал на docs.tibbo.com · Сообщить об ошибке