Устройство библиотек Tibbo
Большинство библиотек Tibbo поставляются парой файлов: файл .tbs со всем кодом и заголовочный файл .tbh с объявлениями. Оба файла нужно добавить в проект.
Библиотеки Tibbo состоят из набора процедур (подпрограмм и функций), которые, как правило, делятся на три категории:
- Процедуры API позволяют программе управлять библиотекой и взаимодействовать с ней. Например, в библиотеке DHCP есть функция dhcp_start(), которая запускает клиент DHCP на указанном сетевом интерфейсе. Когда и как вызывать процедуры API, обычно решаете вы.
- Процедуры событий нужно вызывать из соответствующих обработчиков событий, и свободы в том, как это сделать, у вас нет. Каждая процедура события должна вызываться правильно, иначе библиотека не будет работать как положено. Как правило, достаточно просто вызвать процедуру, без какого-либо условного кода вокруг вызова. Если несколько библиотек «цепляются» к одному событию, процедуры событий разных библиотек можно вызывать в любом порядке.
- Процедуры обратного вызова имеют тела вне своей библиотеки. То есть библиотеки ожидают, что вы напишете тела процедур обратного вызова где-то в своём коде (советуем разместить их в файле device.tbs проекта). Библиотеки используют процедуры обратного вызова, чтобы сообщить «остальному коду» о событиях, происходящих внутри библиотеки. Например, библиотека DHCP вызывает процедуру callback_dhcp_ok() всякий раз, когда процесс DHCP успешно завершается. Аргументы этой процедуры содержат только что полученный IP-адрес и связанные с ним параметры. Нужный код вы можете разместить внутри callback_dhcp_ok(). Он должен обновить IP-адрес устройства и прочие параметры в соответствии с данными, которые передала библиотека DHCP.
Практически в каждой библиотеке в файле .tbh (заголовочном) есть ряд определений (defines). Они определяют, как работает библиотека, то есть являются её «параметрами». Каждое определение выглядит так:
#ifndef DHCP_DEBUG_PRINT
#define DHCP_DEBUG_PRINT 0
#endif
Библиотеки с конфигураторами обрабатывают все определения автоматически. Достаточно изменить настройки в конфигураторе, и всё готово. У некоторых библиотек конфигураторов нет, в основном потому, что настраивать там почти нечего. В таких библиотеках нужно добавлять собственные операторы #define, как описано в документации.
Не редактируйте заголовочные файлы библиотек! Вместо этого помещайте свои операторы #define в файл global.tbh, например так:
'DEFINES-------------------------------------------------------------
#define DHCP_DEBUG_PRINT 1 'this overrides the default value, which is 0
'INCLUDES------------------------------------------------------------
include "dhcp\trunk\dhcp.tbh"