亲爱的对话框
我的问题是
1.多个DSPS设备将处于睡眠模式(大约6个DSPS设备)
2.DSPS主机轮询一个DSPS设备,因此DSPS设备唤醒并准备发送数据。
3.轮询结束后,“下一步”,DSPS主机将轮询下一个DSPS设备。如何做到这一点?请指引我!
谢谢你的对话框
关键词:
设备:
亲爱的对话框
我的问题是
1.多个DSPS设备将处于睡眠模式(大约6个DSPS设备)
2.DSPS主机轮询一个DSPS设备,因此DSPS设备唤醒并准备发送数据。
3.轮询结束后,“下一步”,DSPS主机将轮询下一个DSPS设备。如何做到这一点?请指引我!
谢谢你的对话框
嗨prasanth.velliyangiri,
我想你的意思是设备没有连接,你不希望实现多个同时连接,而是一个连接、交换数据和断开的方案。
1.外围设备必须时不时地醒过来做广告,中央设备无法看到非广告设备。
2.为了发送数据,必须有一个连接,所以一旦扫描器发现来自外设的广告,你可以检查广告字符串或bd地址中的信息,并从中央发出一个连接请求。
3.在交换数据之后,主机可以断开连接并继续扫描下一个连接和交换数据的外设。
由于MT_dialog
是的,您应该能够使用最新的DSPS应用程序,该应用程序同时具有客户机(中央/主机)和服务器(外围/设备)实现。
目前,Client应用程序只是扫描任何DSPS外设,并连接到它找到的第一个外设。
您需要修改应用程序的Client部分来完成您需要它完成的工作。
谢谢你,马丁
嗨对话框
谢谢你的回复。我正在使用DSPS项目,我可以配置BLE设备地址
我看到不同的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}, (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} (in nvds.c)
基于什么参数主(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 Header设备id字段是否被烧毁,包含一个不同于0的值。如果Header的值不等于0,这就是设备将使用的地址。因此,如果你在NVDS中定义了bd地址,而你的OTP Header有设备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_DEVICE广告、接收连接请求、发送数据和类似的DSPS_HOST函数,那就太好了。
谢谢你的对话框
嗨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代码时(i从(app_task.c / line 383)=> EXECUTE_CALLBACK_VOID(app_on_db_init_complete)),代码停止在以下函数
Int app_entry_point_handler (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
关于DSPS_HOST轮询dsps_device的对话框
我正在做以下事情
DSPS_HOST -
//指定调度程序
///用户轮询数据
#定义USER_POLL_DATA " \ x1a \ x1b \ x1c \ x1d \ x1e \ x1f”
Void user_ble_pull (bool init, bool success)
{
如果{
user_send_ble_data (USER_POLL_DATA 6);
}
其他{
user_send_ble_data (USER_POLL_DATA 6);
}
}
/****************************************************************************************************************/
/ /在DSPS_DEVIECE
//指定调度程序
Void user_ble_push(uint8_t* wrdata, uint16_t write_amount)
{
//将数据写入缓冲区;
user_buffer_write_items (&ble_to_periph_buffer wrdata write_amount);
periodic_timer_handler ();
}
periodic_timer_handler ()
{
user_send_ble_data(“PRASANTH”,8);//将定期发送数据
}
Master发送轮询数据=>设备通过UART接收任何数据,定时定时器被调用,现在设备将发送自己的数据…
但是我没有在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代码=>
/******************************************************************************************************/
Void user_ble_pull (bool init, bool success)
{
如果{
user_send_ble_data(“USER_POLL_DATA”,14);
}
其他{
user_send_ble_data(“USER_POLL_DATA”,14);
}
}
/****************************************************************************************************************/
/ /在DSPS_DEVIECE
# DSPS_POLLDATA“DSPS_POLLDATA”
//指定调度程序
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)))
{
periodic_timer_handler ();
}
}
/**********************************************************************************/
periodic_timer_handler ()
{
user_send_ble_data(“PRASANTH”,8);//将定期发送数据
}
轮询以上逻辑主机< = >一个DSPS_DEVICE没问题,但随着主机< = >,因此DSPS_DEVICE我得不到任何数据,与我这轮询逻辑主机< = >,因此DSPS_DEVICE代码工作正常(我能够连接两个设备在同一时间,我让数据从DSPS_DEVICE主机侧),可能会出现什么问题
谢谢你!
嗨prasanth.velliyangiri,
如许多帖子所述,DSP示例不支持在一个外设上连接的多个从站,您可以看一下这篇文章,其中客户达到该帖子,但对话框不支持这一点https://support.dialog-semiconductor.com/multiple-slaveda14580-connectio..。.我认为首先要看的是连接索引,当你试图从你的中央发送数据,检查两个连接的奴隶,你试图传递数据奴隶1或奴隶2。
由于MT_dialog