Библиотека 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\). |
| Зависимости: |
библиотека 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 страницы буфера |