主题中讨论的其他器件:SysConfig、
工具与软件:
您好、我想 读取我的器件的 BD 地址并将其附加到 attDeviceName 并开始广播、但我无法执行此操作、因为 attDeviceName 被称为 uint8_t、我无法更改 ti_ble_config.c、并且无法使用任何函数(例如 snprintf)将地址附加到 attDeviceName。
如果我是 TI 的新手、请帮我。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好、我想 读取我的器件的 BD 地址并将其附加到 attDeviceName 并开始广播、但我无法执行此操作、因为 attDeviceName 被称为 uint8_t、我无法更改 ti_ble_config.c、并且无法使用任何函数(例如 snprintf)将地址附加到 attDeviceName。
如果我是 TI 的新手、请帮我。
您好!
感谢您联系我们。
我希望这将有所帮助、
此致、
您好!
在 SysConfig 中、我将 attDeviceName 定义为 BLE_。 然后、在使用 BlEAppUtil_init API 初始化堆栈之前、我想提取设备地址并将其附加到 attDeviceName BLE_中、然后将其传递给 BLEAppUtil_init API 将使用的 appMainParams。 我定义了一个函数、我在其中使用以下代码行
uint8_t * devAddr = GAP_GetDevAddress( true );然后执行一个 memcpy 以将地址放在 BLE_ attDeviceName 之后。 然后、我在调用栈初始化 API 之前调用 appMain 中的函数、但没有发生任何情况。 我无法理解出了什么问题、因为没有错误。
我请您提供一个示例、说明如何操作、以便我掌握使用方法
您好!
根据您编写的代码、您似乎要保留 attDeviceName 并在末尾添加地址 您是否在 SysConfig 中的 attDeviceName 变量中添加了一些虚值? 可表示为:
attDeviceName ="myDeviceName=123456"或沿这些行的其他内容。
我建议这样做、以确保不会超出分配给该变量的内存的范围。 BLEAppUtil_convertBdAddr2Str 假设您为其提供一个长度为6的数组、该数组仅包含地址的十六进制值。 因此我不希望该函数能够像您那样正常工作。
我建议添加一个自定义函数、该函数获取地址数组、将其转换为字符串、然后将其附加到 attDeviceName (在确保 attDeviceName 字符串足够长、能够容纳名称+地址之后)。 之后、尝试使用 MenuModule_printf()来打印新附加的字符串、以查看我们是否已正确更新它。
此致、
1月
您好!
我能够通过更新 scanResDATA1使其成功运行
uint8_t * addr = NULL;
Addr = GAP_GetDevAddress (true);
uint8_t num = 6;
char * arr = BLEAppUtil_convertBdAddr2Str (addr);
memcpy (&scanResData1[8]、&arr[8]、num);
advSetInitParamsSet_1.scanRespData = scanResData1;
下面的代码行帮助我将地址更新为 attDeviceName、并且它按照我的预期工作。
这样做的目的是、我们将在生产中拥有许多器件、因此我们需要基于每个器件的 BT 地址的唯一名称、这就是我们为什么要编写代码、以便每个器件都具有唯一名称、而不是许多生产硬件的一个名称
您好!
它现在工作正常。 在声明中做了一些修改。
我还有一个疑问。
BLEAppUtil_init (App_Stack itDoneHandler,
&appMainParams,&appMainPeriCentParams)-调用 stackInitDoneHandler、我们将在其中 start_Peripheral()、start_Connection ()、start_Pairing ()、start_GATT()。
我的问题是,我想在调用 bleapputil_init ()后,一一一启用所有单独的功能。
1.首先执行堆栈初始化
2.然后我执行 start_Peripheral()-从不同的函数定义和调用
3.然后我做 start_connection()
但我无法理解如何做。 如果我单独定义和调用这些函数并在 bleapputil_init 之后调用、表示该函数无效。 是否有办法从 stackInitToneHandler 回调解耦这些初始化并单独调用所有内容?
您好!
感谢您的澄清。 我猜是在 BLEAppUtil_init ()完成之前调用 enableAdvertisement ()函数。 您是否可以尝试 在 App_Stack 35itDoneHandler 的末尾将调用添加到 enableAdvertisement()? 或者在 stackInit ()之后在信标上可能挂起并在 App_Stack itschafeHandler 的末尾张贴信标?
此致、
1月
您好 Jan:
我已经定义了2个128位服务、将它们放置在1个属性表中并注册了该服务。 但是、从电话到电话、服务发现各不相同。 我有一个加10专业在只有一个服务被发现。 在 iPhone 中、两种服务都被发现、在其他 Android 手机中、两种服务都被发现。 在一个三星只有第一个服务被发现? 为什么会发生这种变化? 请提供帮助。 但是、如果我在2个不同的表中定义服务 、则它可以正常工作、但我只希望它在一个表中工作。
您好!
过去我们已经发现、特定版本上特定 Android 版本在特定手机上的行为在 BLE 连接期间可能与预期不完全一致、这就是了解正在使用哪个 Android 设备可能有帮助的原因。 我认为绑定的最大特性将只是发生断开时在本地保存的特性数。 您仍然可以拥有超过该数字的数字、但一旦连接、您需要重新读取它们、或者将它们保存在 GapBondMgr 之外。
应该可以提供多种服务。 您能否参考以下 GATT 表生成器? 提供的生成器适用于 F2 SDK、而不是 F3 SDK、但绝大多数代码应该可以重复使用。
您是否可以尝试创建单个服务并查看您的代码是否与输出 提供的内容匹配?
此致、
1月
您好、Jan:
我正在使用 Android 版本14和 Oneplus 10 pro 5G
我的问题是、我想在一个属性表中添加2个128位服务。 目前、我已在2个属性表中添加了2个主服务、我将单独进行注册。 该部件能够正常工作。
当我在一个属性表中添加2个主服务时、第二个服务未注册。 所有示例在1个属性表中仅显示一个服务。
另外、我需要 将5个特性保存在接合表中、并且贯穿整个应用。
请说明为什么对仅将4个特性放入 接合表有限制?
您好!
我懂了。 我认为我这边有些混乱、为此我道歉。 可以将某个服务保留在其单独的属性表中。 我相信我们的大多数示例都在自己的表格中实现每个服务。 例如、简单 GATT 配置文件和 OAD 服务都位于各自的表中。 您希望所有内容都集中在单个表中有什么特殊原因吗?
为清楚起见、最大特性数是指最大特性配置数:
这是指每个特征的通知/指示设置、因此您可以具有五个或更多特征、但可以保存并在连接之间持续的特征配置是其中四个特征的。 您不受此限制的特性量。
此致、
1月