嗨对话小组,
如果DEF_SVC1_BUTTON_STATE_CHAR_LEN较大,则DA14585芯片将溢出为24(字节),同时发送间隔每20ms(或更少),
请告知如何每20ms正确发送240个字节。
请参阅示例代码:
//更新按钮特征
struct susts1_val_ntf_ind_req * req = ke_msg_alloc_dyn(custs1_val_ntf_req,
prf_get_task_from_id(task_id_custs1),
task_app,
custs1_val_ntf_ind_req,
def_svc1_button_state_char_len);
req-> conidx = app_env-> conidx;
req-> notification = true;
req-> handle = svc1_idx_button_state_val;
req-> length = def_svc1_button_state_char_len;
req->值[0] = count ++;
KE_MSG_SEND(REQ);
// Android Code.
公共空白on特征(Bluetoothgatt Gatt,BluetoothGatt Characteristic特征)
{
Super.OnonCrondChanged(GATT,特征);
byte [] messageBytes = charactistististing.getValue();
log.w(标记,“on特征突出:”+ messagebytes.length);//软件包显示Curent MTU(最多可测试240bytes)
}
问候,
ro
设备:
嗨罗伊哈,
我假设内存溢出位于DA14585侧。如果是的话,可以请说明代码卡在哪里吗?在platform_reset_func()中?
谢谢,PM_DIALOG.
嗨pm_dialog,
是的,platform_reset_func pop with reset_mem_alloc_fail(0xf2f2f2f2)一个clasic内存溢出
谢谢,
ro
嗨罗伊哈,
perform_reset()调用τheplatform_reset_func(),该平台()在ROM代码中实现。为什么您获得此断言的最可能原因是由于内存不足,因为您正在分配从未消耗的消息。例如,如果要分配通知消息,并且您有一个小的连接间隔,则邮件堆叠堆积,直到连接事件到达,但在连接事件到达之前,使用大的连接间隔耗尽内存。您可以增加连接间隔。可能,在您的应用程序中,每次连接后可能会有某种内存泄漏,因为错误代码是reset_mem_alloc_fail。为此,请检查是否有任何挂起的消息,并确保在处理消息时会消耗您获得的消息,或者如果您正在分配它们应该释放的数据。例如,如果您正在分配消息,则在分配消息,以便在有一个连接的情况下将数据发送到通知后,设备最终会用完内存,并且如果设备运行内存,则会导致设备重置。此外,尝试通过在DA1458x_config_Advanced.h标题文件中定义DB_HEAP_SZ来提高堆大小。
谢谢,PM_DIALOG.
你好,
谢谢您的解释,内存溢出显然是根本原因的副作用。
我的问题是:如何每20ms发送240byte通知?
谢谢,
ro
嗨pm_dialog,
只是要更多清除关于测试代码/设置:
1)。用ble_app_all_in_one.在SDK 6.0.10.511中找到
2)。在user_custs1_def.h中编辑/更新定义为:#define def_svc1_adc_val_1_char_len 120
3)。编辑/更新user_app_adcval1_timer_cb_handler间隔到20ms
4)。编译和运行
预期结果:
实际结果:
请建议每20ms传输120字节数据到Android(优先考虑示例代码)是什么
*笔记:120byte每20ms = 48kbps远低于1米极限
问候,
ro
示例代码:
嗨罗伊哈,
我工作在SDK6.0.10的清晰BLE_APP_ALL_IN_ONE项目上,我使用了附加的代码片段。但是,我无法复制您的问题。变量“count”每隔20ms发送思想通知。你能在干净的ble_app_all_in_one项目中测试吗?你完成了任何其他修改吗?
谢谢,PM_DIALOG.
嗨pm_dialog,
要重现问题,只需更改数据大小
从:
至:
#define def_svc1_adc_val_1_Char_Len 240.
问候,
ro
嗨roie,
刚刚用240字节的大小测试,但我仍然无法复制它。您使用的堆大小?默认大小为2048字节。你能提升吗?
谢谢,PM_DIALOG.
嗨pm_dialog,
在使用#define db_heap_sz 2048后溢出在〜3,000 - 3,200包后
当使用#define db_heap_sz 2048 * 4 overflow以〜6,800 - 7,200数据包之后
请注意,何时Android手机MTU处于默认状态(即20)db_heap_sz 2048 * 4是稳定的没有溢出〜300,000包(我手动停止它)
请建议您是否在测试台中使用Android手机?
如果是,请共享Android版本和使用示例测试代码。
*笔记:这里使用的设置是:三星A5,S9 Android版本8,两部手机都显示出同样的eApvior
问候,
ro
嗨roie,
让我问你一些额外的澄清。您使用的是自定义移动应用程序吗?
谢谢,PM_DIALOG.
嗨pm_dialog,
是的,我正在使用自定义android应用程序。
还有很少的应用商店(例如,LightBlue等)的应用程序
任何推荐的测试应用程序,您可以分享的示例?
问候,
ro
嗨pm_dialog,
任何更新?
问候,
ro
嗨roie,
我仍然无法复制它。正在努力,如果有任何更新,我会通知您。我会尝试复制它。
谢谢,PM_DIALOG.
嗨pm_dialog,
请建议是否有任何我可以发送任何我可以发送到图的根本原因(例如:register dump,启用一些调试Printf标志等)
regartds,
ro
嗨roie,
您可以使用BLE Sniffer工具来检查通过空中传输的数据包。
谢谢,PM_DIALOG.
嗨pm_dialog,
我没有嗅探器,请建议购买/安装的工具
问候,
ro
嗨roie,
为延迟道歉。我可以错过你的最后一次评论。你有没有解决这个问题?如果您的问题与DA14585相关,如上所述,这是由于效率低下尺寸,所以您应该增加它。
谢谢,PM_DIALOG.