gpt4 book ai didi

java - 使用kura框架,连接BLE设备时如何指定地址类型为 "random static"

转载 作者:行者123 更新时间:2023-11-30 06:30:04 26 4
gpt4 key购买 nike

我正在尝试创建一个安装在 eurotech 网关 (reliagate 10 05) 上的 OSGi bundle 。该 bundle 本质上会将网关连接到 BLE 设备。

为此,我使用了 eurotech 提供的名为 Everyware™ 软件框架 (ESF) 的框架,该框架在 kura v1.2.0 之上添加了一个额外的层框架。

问题是,BLE 设备仅接受随机静态地址类型。

我设法在控制台中使用以下命令将网关手动连接到 BLE 设备:

hcitool -i hci0 lecc --random <BD_ADDR>

然后

gatttool -i hci0 -b <BD_ADDR> --interactive

这很好用。困难的部分是当我尝试使用 ESF/kura 框架在代码中执行相同的操作时。

这是我在 page 上找到的示例中的一个片段。

public boolean connect(String adapterName) {
this.bluetoothGatt = this.device.getBluetoothGatt();
boolean connected = false;
try {
connected = this.bluetoothGatt.connect(adapterName);
} catch (KuraException e) {
logger.error(e.toString());
}
if (connected) {
this.bluetoothGatt.setBluetoothLeNotificationListener(this);
this.isConnected = true;
return true;
} else {
// If connect command is not executed, close gatttool
this.bluetoothGatt.disconnect();
this.isConnected = false;
return false;
}
}

以下是示例用于扫描和建立连接的一些对象的列表:

org.eclipse.kura.bluetooth.BluetoothAdapter;
org.eclipse.kura.bluetooth.BluetoothDevice;
org.eclipse.kura.bluetooth.BluetoothGattSecurityLevel;
org.eclipse.kura.bluetooth.BluetoothGattService;
org.eclipse.kura.bluetooth.BluetoothLeScanListener;
org.eclipse.kura.bluetooth.BluetoothService;
org.eclipse.kura.bluetooth.BluetoothDevice;
org.eclipse.kura.bluetooth.BluetoothGatt;
org.eclipse.kura.bluetooth.BluetoothGattCharacteristic;
org.eclipse.kura.bluetooth.BluetoothLeNotificationListener;

所以我搜索了api doc但没有找到任何东西。

不过,有一个有趣的 SO post提到要发送到设备的命令代码。

我在 kura 框架中找到了一种可能有帮助的方法。这是签名:

void ExecuteCmd(java.lang.String ogf, java.lang.String ocf, java.lang.String parameter)

但我无法在任何文档中找出与操作码命令字段 (ocf) 关联的操作码组字段 (ogf)(我浏览了蓝牙 4.0 核心规范的约 2300 页)。如果有人知道在哪里搜索...:)

最后,问题是:有没有办法使用 kura 框架将地址类型设置为随机(与 hcitool 命令一样)?或者我完全被误导了? :/

无论如何,我对 kura 和 ble 生态系统真的很陌生,所以,很抱歉,如果这看起来是一件显而易见的事情,但我觉得我已经没有灵感了,完全可以求助!

PS:恭喜你坚持到了最后!

最佳答案

哈哈哈哈哈。 Kura 似乎只是启动一个 gatttool 进程,以文本形式发送命令,并将输出解析为其接口(interface)......

这里是这样声明的,使用地址作为参数:https://github.com/eclipse/kura/blob/0339ac787f90debdfc270c1dee0c16de16ea6f7e/kura/org.eclipse.kura.linux.bluetooth/src/main/java/org/eclipse/kura/linux/bluetooth/util/BluetoothUtil.java#L319 。不幸的是,Kura 开发人员似乎错过了 BLE 标准中称为“随机地址”的内容,而且我不知道如何使用当前的 API 来解决这个问题。

关于java - 使用kura框架,连接BLE设备时如何指定地址类型为 "random static",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com