亲爱的对话支持,
是否有一种简单的方法来检查BLE堆栈状态是否是免费的?
我想编写一个程序,一旦发送旧的数值,就会通过蓝牙发送数值。
亲切的问候。
嗨dmueller,
对不起,但我不太明白,你能澄清吗?
如果您想在帖子的第二行进行描述,您可以使用指示(中央必须确认消息的接收,以便在中央收到指示时,您将获得完成的消息。另一方面,也使用通知,但客户端没有确认应用程序级别的接收。
谢谢mt_dialog.
嗨mt_dialog,
如果我想发送两个字节,则此字节存储在堆栈上。我可以像缓冲区一样填充堆栈。或者这不是真的吗?
我的问题是,我可以通过标志或另一个指示符来认识到这个堆栈/缓冲区是否已满或空白?
是的,我想做。在中央有通知。但我希望服务器能够识别它是否可以发送。
与缓冲区一样交换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()中捕获此消息。
谢谢你的答案。不幸的是,这不是我的意思,因为我发送了一些东西,只有在发送某些东西后才会出现。但我也想认识到BLE堆栈中的任何东西。
我想每次发送一个新值,当没有值堆栈时。在Programm的Begin,通常BLE堆栈是oft。我想实施这样的东西:如果(BLE堆栈中没有什么){struct susts1_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)?(样品+ 1):0;
req-> conhdl = app_env-> conhdl;req-> handle = cust1_idx_adc_val_1_val;req-> length = def_cust1_adc_val_1_char_len;memcpy(req->值,和样本,def_cust1_adc_val_1_char_len);KE_MSG_SEND(REQ);
if(ke_state_get(task_app)== app_connected){//再次设置它,直到控制特性接收到停止命令timer_used = app_easy_timer(app_peripheral_ctrl_timer_delay,app_adcval1_timer_cb_handler);}}
存在一种实现这一目标的方法吗?
嗨dmuller,
我不确定我理解这种实现的原因,是的,确认消息一旦通知成功放置在TX缓冲区中,直到连接间隔瞬间出现并且数据被释放,就会发送回到应用程序。您可以尝试使用l2cm_get_nb_buffer_available()函数,该函数将返回低级缓冲区中数据的可用大小。
我想在下一个值后发送一个值。在发送PROVOST ONE之前,可能不会发送新值。
非常感谢您的帮助。现在它有效。
嗨dmueller,
对不起,但我不太明白,你能澄清吗?
如果您想在帖子的第二行进行描述,您可以使用指示(中央必须确认消息的接收,以便在中央收到指示时,您将获得完成的消息。另一方面,也使用通知,但客户端没有确认应用程序级别的接收。
谢谢mt_dialog.
嗨mt_dialog,
如果我想发送两个字节,则此字节存储在堆栈上。我可以像缓冲区一样填充堆栈。或者这不是真的吗?
我的问题是,我可以通过标志或另一个指示符来认识到这个堆栈/缓冲区是否已满或空白?
是的,我想做。在中央有通知。但我希望服务器能够识别它是否可以发送。
亲切的问候。
嗨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.
嗨mt_dialog,
谢谢你的答案。不幸的是,这不是我的意思,因为我发送了一些东西,只有在发送某些东西后才会出现。但我也想认识到BLE堆栈中的任何东西。
我想每次发送一个新值,当没有值堆栈时。在Programm的Begin,通常BLE堆栈是oft。我想实施这样的东西:
如果(BLE堆栈中没有什么)
{
struct susts1_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)?(样品+ 1):0;
req-> conhdl = app_env-> conhdl;
req-> handle = cust1_idx_adc_val_1_val;
req-> length = def_cust1_adc_val_1_char_len;
memcpy(req->值,和样本,def_cust1_adc_val_1_char_len);
KE_MSG_SEND(REQ);
if(ke_state_get(task_app)== app_connected)
{
//再次设置它,直到控制特性接收到停止命令
timer_used = app_easy_timer(app_peripheral_ctrl_timer_delay,app_adcval1_timer_cb_handler);
}
}
存在一种实现这一目标的方法吗?
亲切的问候。
嗨dmuller,
我不确定我理解这种实现的原因,是的,确认消息一旦通知成功放置在TX缓冲区中,直到连接间隔瞬间出现并且数据被释放,就会发送回到应用程序。您可以尝试使用l2cm_get_nb_buffer_available()函数,该函数将返回低级缓冲区中数据的可用大小。
谢谢mt_dialog.
嗨mt_dialog,
我想在下一个值后发送一个值。在发送PROVOST ONE之前,可能不会发送新值。
非常感谢您的帮助。现在它有效。
亲切的问候。