您的好,我修改DSPS_5.150.2版本,知道CFG_MAX_CONNECTIONS最多能同时连接6个从机,如何才能实现呢?假设连接好了1个,从机向主机发送数据,主机处理数据,在处理数据过程中,打开另外一个从机,如何实现连接并处理新的从机发送的数据呢?请帮助回答上面两个问题,谢谢!
关键词:
设备:
您的好,我修改DSPS_5.150.2版本,知道CFG_MAX_CONNECTIONS最多能同时连接6个从机,如何才能实现呢?假设连接好了1个,从机向主机发送数据,主机处理数据,在处理数据过程中,打开另外一个从机,如何实现连接并处理新的从机发送的数据呢?请帮助回答上面两个问题,谢谢!
哈利人回答吗?我设置#define cfg_max_connections 6,然后我在void user_on_chonection(uint8_t connection_idx,struct gapc_connection_req_ind const * param)over系数末行user_scan_start();主机能当时连接个奴隶,虽然是的话的时间很短,主机就死掉,然后就开头连接,有没有什么方法能跑车,数码传输稳定?
因为580年设计的限制,一般都是先扫完设备,然后再用direct_connection模式去直连设备,这样的方法去保证连多个。
可以参照sdk5里的host_apps \ windows \ proximity \ monitor \ src \ app.ch下的app_connect in.
我在user_on_adv_report_ind (struct gapm_adv_report_ind const * param)函数体里面,注释掉app_easy_gap_start_connection_to_set和user_gapm_cancel函数,把需要扫描到的奴隶全部保存在一个链表里,我想知道如何把这些链表里的奴隶全部连接主人?我需要如何
修改主里面的user_on_connection回调函数,我把user_on_connection和app_easy_gap_start_connection_to_set添加一个参数(链表中奴隶
的下标),接下来我还需要修改什么地方呢,请多多指教!谢谢!
做了一个测试版本,你可以参考。我这里挂了2个设备没什么问题。之前有一点讲错了,是可以连上设备再扫描的。
以地址uint8_t peer_addr [6] = {0 xff 0 xff 0 x00, 0 xca 0 xea, 0 x80}作为过滤,其中前两个0 xff里可以填任何数。
你好,我在使用这个工程时机,us用user_gapm_cancel()这这读数时代也等待十几秒之跳到wrap_platform_reset()中数中的情况,板子是用来的,上衣有32k晶振,不夹。
你好,非常感谢帮助!
在你提供的例程中,两个同时连接之后,大约1分钟后,中央进入虚空wrap_platform_reset (uint32_t错误),错误= 0 xf2f2f2f2;然后
程序死掉,无法运行。请问是咋回事?
现在在出差,手边暂时没环境再确认…这个错一般是内存分配溢出。应该进HardFault_HandlerC了,你看看保存的
*(volatile unsigned long *)(STATUS_BASE + 0x14) = hardfault_args[5];/ / LR
*(volatile unsigned long *)(STATUS_BASE + 0x18) = hardfault_args[6];/ /电脑
然后再对应的汇编里面找找是在哪里停住的
你确定吗?我这里重新又跑了一下,没问题啊。你是拿的演示板跑的吗?如果不是,请确认外接有32 k时钟。
附上嗅探捕获数据的文件,大概7 - 8分钟
非常感谢,我把你的项目移植到官网提供的DSPS_V5.150.2同时连接两个成功了,疑问是否需要把你项目中app_mid.h中line229, KE_MSG_ALLOC_DYN申请内存参数sizeof (struct gap_bdaddr)改为CFG_MAX_CONNECTIONS * sizeof (struct gap_bdaddr)。
参考你的工程,我修改是需求方示例项目,同时连接两个奴隶,分别给中央发送数据,中央能同时正确接收两个奴隶的数据,现在我在收到数据需要给奴隶返回一个应答包,现在只有一个奴隶能收到应答包,另外一个奴隶只能发送数据而接收不到中央应答包,请问我如何能够区分给不同奴隶回指定的应答包,如何修改吗?谢谢!!
(DSPS_V5.150.2)598770358 @qq.com]谢谢
< p >可以把移植好的DSPS_V5.150.2发我一份吗?邮箱:< a href = "598770358">mailto: 598770358 @qq.com”> 598770358@qq.com < / > |谢谢< / p >
1.这个看你怎么用,如果你需要只发送一次连接命令,连多个地址,就改成CFG_MAX_CONNECTIONS * sizeof(struct gap_bdaddr)。但是demo里面还是一个地址一个地址依次连接,所以sizeof(struct gap_bdaddr)就够了。
2 .不同的奴隶,会有不同的处理,连接的时候会获得。我想可以修改一下user_send_ble_data函数
空白user_send_ble_data (const uint8_t *数据,uint16_t长度,uint16_t conidx) / /添加句柄参数吧
{
struct sps_client_data_tx_req * req = KE_MSG_ALLOC_DYN(sps_client_data_tx_req,
KE_BUILD_ID(TASK_SPS_CLIENT,conidx), TASK_APP, sps_client_data_tx_req, length);//加一个句柄参数吧
申请- >长度=长度;
memcpy(请求- >[0]的数据,数据长度);
ke_msg_send(要求的);
}
非常感谢帮助!
我需要在user_sps_client_data_rx_ind_handler (ke_msg_id_t const是否,struct sps_client_data_rx_ind const *参数,ke_task_id_t const dest_id,
ke_task_id_t const src_id)调用空白user_send_ble_data (const uint8_t *数据,uint16_t长度,uint16_t conidx),请问uint16_t conidx为spsc_envs.con_info.conidx的值吗?我调用该如何设置uint16_t conidx参数?不好意思,需求有点紧急,只好多问你了。
这个conidx就是你在user_on_connection函数里面拿到的connection_idx,,每个连接都会有一个分配的值。
然后在default_app_on_connection函数里面调用app_prf_enable去使能之前已经分配好内存的数据库。
非常感谢帮助,中央同时连接两个奴隶后,中央继续一直扫描,这都没问题,Q1:请问断开一个后为啥不执行user_on_disconnect函数?且两个断开都不执行该函数,
Void user_on_disconnect(struct gapc_disconnect_ind const *param)
{
default_app_on_disconnect(参数);
/ /重新扫描
user_scan_start();
arch_printf(“设备断开连接\ r \ n”);
}
Q2:断开一个奴隶后,中央能接收另一个连接状态奴隶的数据,但是中央不能给该奴隶回应答数据,只有把断开的一个连接中央后奴隶才
能接收应答数据,请问是否和修改后user_send_ble_data函数中KE_BUILD_ID (TASK_SPS_CLIENT conidx),有关吗?请问该如何解决?
给奴隶回应答数据在int user_sps_client_data_rx_ind_handler (ke_msg_id_t const是否,struct sps_client_data_rx_ind const *参数,
ke_task_id_t const dest_id ke_task_id_t const src_id)调用user_send_ble_data (ask_buf 7参数- > conhdl);
空白user_send_ble_data (const uint8_t *数据,uint16_t长度,uint16_t conidx) / /添加句柄参数吧
{
struct sps_client_data_tx_req * req = KE_MSG_ALLOC_DYN(sps_client_data_tx_req,
KE_BUILD_ID(TASK_SPS_CLIENT,conidx), TASK_APP, sps_client_data_tx_req, length);//加一个句柄参数吧
申请- >长度=长度;
memcpy(请求- >[0]的数据,数据长度);
ke_msg_send(要求的);
}
谢谢帮助!
你好当时的需求方的演示还在吗?