更新时间:2023-10-16 06:56:41下载pdf
蓝牙子设备接入旨在降低蓝牙网关的开发门槛,涂鸦提供软硬一体化方案,硬件上使用涂鸦蓝牙模组,软件上开启蓝牙功能,可以零代码实现蓝牙网关开发,能够接入涂鸦生态 Bluetooth LE 和 Bluetooth Mesh 子设备。
本文档将介绍如何使用 TuyaOS 网关开发框架提供的蓝牙网关功能。
开发一款蓝牙网关门槛较高,并且开发周期长,为了降低开发门槛,涂鸦提供了软硬一体化方案,即使没有蓝牙背景知识也能开发蓝牙网关产品。
硬件上通过串口连接涂鸦蓝牙模组,软件上开启蓝牙功能,该产品就具备了蓝牙网关能力,支持接入涂鸦生态子设备。
本小节将介绍在 TuyaOS 网关开发框架如何开启蓝牙网关功能,您无需关心具体的实现方式,通过调用接口就能实现蓝牙网关功能。
开启蓝牙功能主要涉及两个接口:蓝牙服务初始化和蓝牙服务启动,参数都是相同的 JSON 数据,主要是配置信息。
JSON 数据字段说明如下:
字段 | 描述 |
---|---|
dev_name | 指定串口设备号。 |
enable_hb | 是否使能心跳管理:
|
scan_timeout | Bluetooth LE 模式的扫描超时时间,单位是秒。 |
mode | 设置蓝牙工作模式,工作模式的定义为 TAL_BLE_ROLE_E 。通过按位与操作,设置多模式共存。推荐的值为:( TAL_BLE_ROLE_CENTRAL | TAL_MESH_ROLE_ADV_PROVISIONER ) 注意:v3.7.0 及以下版本使用该字段,v3.7.0 以上版本用 subdev_type 字段代替。 |
subdev_type | 设置蓝牙支持的子设备类型。通过按位与操作,设置多类型。 子设备类型定义如下:
|
// ...
#include "tuya_bt_api.h"
#include "tal_bluetooth_def.h"
int main(int argc, char **argv)
{
ty_cJSON *app_cfg = ty_cJSON_CreateObject();
if (app_cfg == NULL) {
return OPRT_CJSON_GET_ERR;
}
ty_cJSON_AddStringToObject(app_cfg, "storage_path", "./");
ty_cJSON_AddStringToObject(app_cfg, "cache_path", "/tmp/");
// 设置存储路径
TUYA_CALL_ERR_RETURN(tuya_set_config(app_cfg));
ty_cJSON *bt_cfg = ty_cJSON_CreateObject();
if (bt_cfg == NULL) {
return OPRT_CJSON_GET_ERR;
}
ty_cJSON_AddStringToObject(bt_cfg, "dev_name", "/dev/ttyS2");
ty_cJSON_AddNumberToObject(bt_cfg, "enable_hb", 1);
ty_cJSON_AddNumberToObject(bt_cfg, "scan_timeout", 60);
// 老版本设置蓝牙工作模式
ty_cJSON_AddNumberToObject(bt_cfg, "mode", (TAL_BLE_ROLE_CENTRAL | TAL_MESH_ROLE_ADV_PROVISIONER));
// 新版本设置蓝牙支持的子设备类型
// ty_cJSON_AddNumberToObject(bt_cfg, "subdev_type", (0x0001 | 0x0002)); // Blutooth LE & Bluetooth Mesh
// 初始化蓝牙服务
TUYA_CALL_ERR_RETURN(tuya_bt_svc_init(bt_cfg));
// 启动蓝牙服务
TUYA_CALL_ERR_RETURN(tuya_bt_svc_start(bt_cfg));
// ...
return 0;
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈