TL;DR;
在 SimplePeripheral off chip OAD 示例中、如果我们向 BLE 配置文件添加引用、即使我们未注册它、服务发现也会失败。

我们的 CPP 项目的唯一调用是622。 但不执行此调用、因为 addMyProfile 变量为0。 因此、与原始 SimplePeripheral 项目的唯一区别是正在链接 CPP 文件。 他们从未被称为。
我们尝试了 SimpleLink 4.30.0.08和5.10.0.02版的 SimplePeripheral。
更长版本:
我们一直在使用 CPP 开发中级库、以简化我们的开发流程。 我们隐藏了几乎所有的函数、TI 公开的所有头文件都使代码更具便携性。 我们成功地将库用于不同的项目、并希望移植使用 TI 框架的旧项目之一。 在使用新的中级类之前、我们将.c 文件转换为.cpp 文件并编译了代码。 但是、当我们将配置文件添加到 BLE 器件时、服务发现失败。 我们添加的内容如下所示:
blePeripheralDevice()->addLegacyProfile(MyProfile_AddService());
然后、我们没有添加配置文件、而是尝试了以下操作:
LegacyBlePeripheralProfile myProfile(MyProfile_AddService); //blePeripheralDevice()->addProfile(&myProfile);
注意:我出于 NDA 的目的使用了 MyProfile。
我们调用 LegacyBlePeripheralProfile,因为在我们的 CPP 库中,我们自动生成低级内容,例如用于服务的 ATT 表以简化开发,并且在移植旧代码时,我们创建了一个调用寄存器函数的中级类,而不是生成 ATT 表等。 LegacyBlePeripheralProfile 只是保存指向 给定函数的指针的类。
此代码也失败。 它不会调用任何移植的模块、只保留参考。 然后我们决定尝试 SimplePeripheral 示例中移植的模块、以查看我们是否处理了任何与 BLE 相关的功能。 我们复制了源代码、并添加了一个受保护的调用、如 TL;DR;部分所示。 结果是相同的。。。 即使不调用 CPP 模块中的任何函数、只需将 CPP 模块链接到 SimplePeripheral 案例服务发现就会失败。
我们错过了什么? 谢谢。。。