微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BlueZ:在“通用属性1801”中添加“服务更改指示2A05”时出错

如何解决BlueZ:在“通用属性1801”中添加“服务更改指示2A05”时出错

我需要在“通用属性(1801)”中添加“服务更改指示(2A05)”。有一个 nRF Connect 的 UI 示例,它显示“服务更改指示”位于“通用属性”(http://forum.espruino.com/conversations/357737/) 下。我们使用的是 BlueZ 5.48。但是没有关于如何执行此操作的文档或 Python 代码示例(请参阅 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test)。我尝试通过修改 example-gatt-server 来添加它:

class ServiceChangedChrc(Characteristic):
    SCI_UUID = '00002a05-0000-1000-8000-00805f9b34fb'

    def __init__(self,bus,index,service):
        Characteristic.__init__(
                self,self.SCI_UUID,['indicate'],service)
    
    def IndicateValue(self,options):
        # This function doesn't exist. Just list it here.
        pass


class ServiceChangedService(Service):
    MY_UUID = '00001801-0000-1000-8000-00805f9b34fb'

    def __init__(self,index):
        Service.__init__(self,self.MY_UUID,True)
        self.add_characteristic(ServiceChangedChrc(bus,self))


class Application(dbus.service.Object):
    """
    org.bluez.GattApplication1 interface implementation
    """
    def __init__(self,bus):
        self.path = '/'
        self.services = []
        dbus.service.Object.__init__(self,self.path)
        self.add_service(HeartRateService(bus,0))
        self.add_service(BatteryService(bus,1))
        self.add_service(TestService(bus,2))
        self.add_service(ServiceChangedService(bus,3))

当我运行它时,出现“无法注册应用程序:org.bluez.Error.Failed:无法在数据库中创建条目”。那是在 BlueZ 代码中 gatt-database.c 中的函数 client_ready_cb() 中。有大佬知道怎么解决吗?

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。