亲爱的对话框
我的问题是
1.多个DSPS设备将处于睡眠模式(约6个DSPS设备)
2. DSPS主机调查一个DSP设备,因此DSP设备唤醒并准备发送数据。
3.轮询完成后,下一步,DSPS主机将轮询下一个DSP设备。这该怎么做 ??请指导我...!
谢谢对话框
关键词:
设备:
亲爱的对话框
我的问题是
1.多个DSPS设备将处于睡眠模式(约6个DSPS设备)
2. DSPS主机调查一个DSP设备,因此DSP设备唤醒并准备发送数据。
3.轮询完成后,下一步,DSPS主机将轮询下一个DSP设备。这该怎么做 ??请指导我...!
谢谢对话框
嗨prasanth.velliyangiri,
我想你的意思是设备未连接,您不希望实现多个同时连接,而是连接多个同时连接,而是连接,交换数据和断开方案。
1.外围设备必须醒来一次,虽然广告,但是核心无法看到非广告设备。
2.为了发送数据,必须有一个连接,因此扫描仪从外围找到广告,您可以在广告字符串或BD地址中查看信息并从中央发出连接请求。
3.交换数据后,主机可以发出断开连接并继续扫描下一个外设以连接和交换数据。
谢谢mt_dialog.
是的,您应该能够采取最新的DSPS应用程序,它有客户端(中央/主机)和服务器(外围/设备)实现。
目前,客户端应用程序只是扫描任何DSP外围设备,并连接到它发现的第一个。
您需要修改应用程序的Client部分来完成您需要它做的事情。
谢谢,马丁
嗨对话框
感谢你的回复。我正在使用DSP项目,我可以配置BLE设备地址
Q1:我看到不同的ble地址,为什么??
1. #define bt_default_bdaddr {{0x01,0x23,0x45,0x67,0x89,RIPPLE_ID}}(IN => CO_BT.H)
2. ///设备的BD地址
.peer_addr_0 = {0x0,0x0,0x0,0x0,0x0,0x0},(in => user_config.h-line 340)
3.在DSPS android应用程序
Device_address 90:B6:86:97:D2:A7(这个地址我不能在dsps_device项目内找到??)
4. #define cfg_nvds_tag_bd_address {0x00,0x00,0x00,0xca,0xea,0x80}(在nvds.c中)
Q2:基于哪个参数大师(DSPS_HOST)将决定它必须连接哪个从站(DSPS_DEVICE)?(中央(DSPA_HOST)与从机(DSPS_DEVICE)连接所需的参数是什么。
谢谢对话框......
嗨prasanth.velliyangiri,
Q1。是的您可以配置bd地址,参考设计,他们从nvd bd地址结构,可以配置和bd地址CFG_NVDS_TAG_BD_ADDRESS da1458x_config_advanced.h文件,如果你改变这个然后你的设备的bd地址应该改变。SDK首先检查OTP头设备id字段是否被烧毁,包含一个不同于0的值。如果Header的值不等于0,这就是设备将使用的地址。因此,如果你在NVDS中定义bd地址,并且你的OTP头有设备id字段烧毁,OTP的地址将被使用。在多个连接的情况下,您正在指示的结构成员关注已连接设备的bd地址。
Q2。中央将尽快发送连接参数的广告显示,在user_on_adv_report_ind的app_easy_gap_start_connection_to_set()调用,传递的参数是间隔12.5毫秒,其余参数取自user_central_conf结构。
谢谢mt_dialog.
嗨对话框
感谢你的回复。
Q1。在DSPS_DEVICE项目中,广告启动和停止?我想实现一个逻辑,在DSPS_HOST中发生连接后,DSPS_DEVICE会从DSPS_HOST接收测试STR,如果它匹配,则与预定定义数据进行比较,然后DSPS_DEVICE将数据发送到DSPS_HOST。
Q2:如果您可以为DSPS_HOST函数提供讲述DSPS_DEVICE广告,接收数据和SIMLAR的状态图,那将是很好的。
谢谢对话框
嗨prasanth.velliyangiri,
Q1。启动后,设备启动广告并继续广告,直到中央连接在设备上,一旦中央断开从设备断开连接,就会再次启动广告。关于您的问题,您的意思是当发生连接和断开连接时触发到外围设备的函数?这些函数将是user_on_connection()和user_on_disconnect。关于启动广告的广告,您调用default_advertise_operation,它在default_app_on_db_init_complete中调用(一旦创建数据库),并且在您的设备连接或取消时,就会出现广告停止。
Q2。在DSPS用户手册UM-B-038(图4和图5)中,说明了用于外设和中央的应用FSM。
谢谢mt_dialog.
嗨对话框
感谢你的回复..
在调试DSPS_DEVICE代码时(我从(app_task.c / line 383)=> EXECUTE_CALLBACK_VOID(app_on_db_init_complete)开始),代码在函数下面停止
ke_msg_id_t const msgid,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
INT I = 0;
enum ke_msg_status_tag process_msg_handling_result;
虽然(我
嗨prasanth.velliyangiri,
您提到的函数是处理从BLE堆栈接收的所有消息的主处理程序。代码完全困住的地方?您是否对SDK进行了任何更改?
谢谢mt_dialog.
Hi对话框关于DSPS_HOST轮询dsps_device
我做了以下事情
DSPS_HOST -
// *** in user_sps_scheduler.c
///用户投票数据
#定义USER_POLL_DATA " \ x1a \ x1b \ x1c \ x1d \ x1e \ x1f”
初始化,成功
{
如果{
user_send_ble_data(user_poll_data,6);
}
别的{
user_send_ble_data(user_poll_data,6);
}
}
/****************************************************************************************************************/
//在DSPS_DEVIECE中
// *** in user_sps_scheduler.c
void user_ble_push(uint8_t * wrdata,uint16_t write_amount)
{
//写入项到缓冲区;
user_buffer_write_items (&ble_to_periph_buffer wrdata write_amount);
seriond_timer_handler();
}
句号_timer_handler()
{
user_send_ble_data(“prasanth”,8);//将定期发送数据
}
Master发送poll数据=>设备通过UART接收任何数据,定时定时器被调用,现在deviec将发送自己的数据…
但我没有看到DSPS_HOST侧的任何数据?任何帮助
谢谢你!
嗨prasanth.velliyangiri,
您已经删除了user_ble_pull中的所有实现,删除了所有检查和初始化,并将其替换为一个简单的不带条件的if(),并且只执行对某个特征的写入。让假设你不想更新或数据推送到缓冲区,所以你不需要上述所有和你只是想直接写其他特征(只是为了让事情清楚通过上述你绕过缓冲发送数据到另一边和你直接写数据到外围特征)。user_ble_pull被DSPS应用程序中的许多函数调用,包括user_on_system_powered(),这意味着您正在向堆栈发送数据,甚至当您未连接时,这是我无法预测将发生什么。如果您只是想直接写入从设备的特征,您可以在连接时从主机设置一个计时器,并开始使用user_send_ble_data()向另一端发送数据(确保在UART上建立了正确的连接)。如果你这样做了,你在另一边获得数据,在你的设备的数据接收上启动周期性处理程序你应该开始在你的主机上获取数据,如果不检查主机上的接收处理程序是否被触发。还要确保您已经正确连接了流量控制引脚,并且您的终端在定义的流量控制下运行。
谢谢mt_dialog.
嗨对话小组
在DSPS_HOST代码=>
/ ****************************************************************************************************** /
初始化,成功
{
如果{
user_send_ble_data(“user_poll_data”,14);
}
别的{
user_send_ble_data(“user_poll_data”,14);
}
}
/****************************************************************************************************************/
//在DSPS_DEVIECE中
#dsps_polldata“dsps_polldata”
// *** in user_sps_scheduler.c
void user_ble_push(uint8_t * wrdata,uint16_t write_amount)
{
//写入项到缓冲区;
user_buffer_write_items (&ble_to_periph_buffer wrdata write_amount);
如果(!memcmp (wrdata DSPS_POLLDATA, sizeof (DSPS_POLLDATA)))
{
seriond_timer_handler();
}
}
/ ********************************************************************************** /
句号_timer_handler()
{
user_send_ble_data(“prasanth”,8);//将定期发送数据
}
上面的轮询逻辑工作正常与主机<=>一个dsps_device,但是通过host <=>多维DSPS_DEVICE我没有得到任何数据,通过此轮询逻辑我的主机<=>多维DSPS_DEVICE代码正常工作(我能够连接两个设备同时,我正在将数据从DSPS_DEVICE获取到主机端),可能是问题
谢谢你!
嗨prasanth.velliyangiri,
正如在许多文章中提到的,DSPS的例子不支持在一个外设上连接多个从服务器,你可以看看这篇文章,一个客户实现了这个实现,但是对话框不支持这个https://support.dialog-semicondiondiondum/ multiple-slaveda14580-connectio ....我认为首先要看的是连接索引,当您试图从您的中心发送数据,检查两个连接的从属您试图传递数据奴隶1或奴隶2。
谢谢mt_dialog.