ble堆栈状态

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
7个帖子/ 0个新
最后发表
dmueller.
离线
最后看到:3年10个月前
加入:2017-04-12 10:04
ble堆栈状态

亲爱的对话框支持,

是否有一个简单的方法来检查ble堆栈状态是自由的?

我想写一个程序,它总是通过蓝牙发送一个数值,一旦旧的数值发送。

亲切的问候。

设备:
MT_dialog
离线
最后看到:两个月两个星期前
工作人员
加入:2015-06-08 34
嗨DMueller,

嗨DMueller,

对不起,我不太明白你的问题,你能解释一下吗?

如果你想做你在你的帖子的第二行所描述的,你可以使用指示(中央必须确认接收消息,所以你将得到一个完成的消息,一旦中央收到指示)。另一方面,也会使用通知,但是在应用程序级别上,客户端不会对接收进行确认。

由于MT_dialog

dmueller.
离线
最后看到:3年10个月前
加入:2017-04-12 10:04
嗨MT_dialog,

嗨MT_dialog,

如果我想发送两个字节,这些字节被存储在一个堆栈上。我可以像缓冲区一样填满这个堆栈。或者这不是真的?

我的问题是,我可以通过标志或其他指示符来识别这个堆栈/缓冲区是满的还是空的?

是的,我想这样做。在中心有通知。但我希望服务器能够识别它是否可以发送或不。

亲切的问候。

MT_dialog
离线
最后看到:两个月两个星期前
工作人员
加入:2015-06-08 34
嗨DMueller,

嗨DMueller,

与缓冲区一样交换BLE堆栈是非常简单的,因为它实现了整个BLE堆栈,事情并不是那么简单,并且作为最终用户,您可以与BLE概念接口,而不是堆栈如何处理RX / TX消息,但在底线让我们可以假设我们可以通过通知发送具有2个字节长度长度的特征的值,然后堆栈将与指针队一起队列,该指针将指向该特征数据到18中的指针长度消息缓冲区。因此,如同通知,所以允许拍摄例如在BLE_APP_PERITELAL中实现的自定义配置文件,该应用程序将发送CUSTS1_VAL_IND_REQ(应用程序特定消息),配置文件将发出CUTTC_SEND_EVT_CMD,以将堆栈发送到TX缓冲区在下一个连接间隔中会发生发送。现在,通知不涉及从另一侧的确认(来自连接主机的ACK),但一旦发送Gattc_send_evt_cmd,堆栈将回复该消息,即通知已放入缓冲区中。为了让您知道通知已输入缓冲区,它将与GattC_CMP_EVT和来自GattC_CMP_EVT_HANDLER()回复配置文件将通知应用程序(使用CUSTS1_VAL_NTF_CFM消息)通知已成功输入缓冲区和它将留在下一个连接间隔。您可以在user_catch_rest_hndl()中捕获此消息。

由于MT_dialog

dmueller.
离线
最后看到:3年10个月前
加入:2017-04-12 10:04
嗨MT_dialog,

嗨MT_dialog,

谢谢你的回答。不幸的是,这并不完全是我的意思,因为CUSTS1_VAL_NTF_CFM消息只是在我发送一些东西之后才出现的。但我也想知道,如果什么都没有在ble堆栈中。

当ble堆栈中没有值时,我想每次发送一个新值。在程序的开始,ble堆栈通常是空的。我想实现这样的东西:
如果(ble堆栈中没有东西)
{
struct custs1_val_ntf_req* req = KE_MSG_ALLOC_DYN(custs1_val_ntf_req, TASK_CUSTS1, TASK_APP, custs1_val_ntf_req, DEF_CUST1_ADC_VAL_1_CHAR_LEN);

静态uint16_t样本;
Sample = (Sample <= 0xffff) ?(sample + 1): 0;

申请- > conhdl = app_env - > conhdl;
申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;
申请- >长度= DEF_CUST1_ADC_VAL_1_CHAR_LEN;
顺利进行,memcpy(请求- >价值DEF_CUST1_ADC_VAL_1_CHAR_LEN);
ke_msg_send(要求的);

if (ke_state_get(TASK_APP) == APP_CONNECTED)
{
//再次设置,直到在控制特性中接收到停止命令
timer_used = app_easy_timer(APP_PERIPHERAL_CTRL_TIMER_DELAY, app_adcval1_timer_cb_handler);
}
}

存在一种实现这一目标的方法吗?

亲切的问候。

MT_dialog
离线
最后看到:两个月两个星期前
工作人员
加入:2015-06-08 34
嗨DMuller,

嗨DMuller,

我不确定我理解这种实现的原因,是的,确认消息被发送回应用程序,一旦通知被成功地放置在TX缓冲区,直到连接间隔时刻到来和数据被释放。您可以尝试使用l2cm_get_nb_buffer_available()函数,它将返回低级别缓冲区中数据的可用大小。

由于MT_dialog

dmueller.
离线
最后看到:3年10个月前
加入:2017-04-12 10:04
嗨MT_dialog,

嗨MT_dialog,

我想在下一个值之后发送一个值。新值可能直到前一个值被发送后才会被发送。

非常感谢您的帮助。现在它的工作原理。

亲切的问候。