网关参考实现¶
为了能够监控社交互动,SDT提供了一个从设备检索日志的接口。为了加快上市时间,参考实现提供了C源代码。网关使用BLUEZ蓝牙栈和gattlib在树莓派上进行测试。
功能概述¶
调用gateway_scan_and_log.c的脚本将扫描具有BLE服务UUID的设备d643d847 - 157 f - 07 - a1 - e741 - 6 - fef4d79e9c6
广告。如果发布的UUID发生了更改,请确保也进行更改#定义UUID_FILTER_VALUE在文件gateway_scan_and_log.c中反映更改。
任何发现的设备都将被放入一个列表中,并为每个元素创建一个单独的线程来处理特定的设备。
每个线程将尝试连接到远程SDT,并设置远程设备的时间(通过当前时间服务)。设置的时间为网关的UTC时间源。
接下来,设备将请求远程设备信息以检索远程设备唯一ID。远程设备唯一ID将用于构造将为特定设备创建的日志文件的文件名。文件的文件名是#定义PATH_AND_FILENAME常量和远端设备唯一标识符。缺省情况下,日志保存在Desktop中。
然后SDT网关将请求存储在远端设备的Flash上的所有zone的日志。一旦读取了所有的日志,SDT网关将截断Remote Device的所有文件夹,释放Flash中日志所占用的所有空间,将其释放回用于新日志。
最后,线程将关闭打开的文件,然后释放MUTEX并断开连接,允许其他线程为其他设备执行相同的进程。
符号¶
从这一点开始,每当使用下列术语时,它们将反映下面给出的含义。
GATTLIB -master——这是解压后的GATTLIB库的主文件夹。
client_folder——这是将Gateway文件复制到的地方,它将反映客户端选择的名称。
环境的准备¶
为了运行该示例,应该遵循以下步骤。
Gateway软件运行在运行Raspberry Pi 3 Model B+的Raspbian Buster上。想了解更多关于树莓Buster的信息,请查看Raspbian官方下载网页.
软件要求BLUEZ 5.50版本或更高版本。的桌面和推荐软件的覆盆子Buster包包含BLUEZ 5.50。如果您使用的是旧版本的BLUEZ,请务必更新它,以确保兼容性。
从下面下载Gattlib库的开放源代码在这里.
将下载的文件解压缩到您选择的目的地。
打开终端并执行安装和缺失的依赖项…
sudo恰当的安装libbluetooth-dev
sudo恰当的安装libreadline-dev
sudoapt-get安装cmake
导航到gattlib-master/examples文件夹
创建一个新文件夹并选择您所选择的名称。从现在开始,它将被称为client_folder。
复制其中的Gateway文件。
在gattlib-master中编辑cmakelist .txt文件。在那里找到片段…
如果(GATTLIB_BUILD_EXAMPLES)
#例子
并将client_folder添加为子目录。
添加子目录(例子/ < client_folder >)
在终端中导航到gattlib-master文件夹,创建一个名为build的文件夹并输入它。
mkdir构建& &cd构建
制作Gateway文件。
cmake..& &使
如果没有安装Doxygen,请在cmake之后立即添加参数-DGATTLIB_BUILD_DOCS=OFF。命令应该如下所示:
cmake-DGATTLIB_BUILD_DOCS =了..& &使
可选步骤:为了能够从终端中的任何目录调用程序,导航到/home/pi文件夹,并使用文本编辑器修改.profile文件,在文件末尾添加以下行…
路径= " ${路径:+ ${}路径:}~ / < path-to-gattlib-master > /构建/例子/ < client_folder >”
…替换
使用gattlib-master文件夹的路径和名称为client_folder的client_folder。 注意:重启系统后才会生效。
使用¶
如果可选步骤已完成,则键入终端…
>gtw_scan_and_log
从终端导航到gattlib-master/build/examples/client_folder,然后在终端中输入上面的命令。