亲爱的对话框
我的问题是
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应用程序,它有客户端(中央/主机)和服务器(外围/设备)实现。
目前,客户端应用程序只是简单地扫描任何DSPS外设,并连接到它找到的第一个。
您需要修改应用程序的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}, (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)
Q2:根据什么参数MASTER(DSPS_HOST)将决定哪个slave(DSPS_Device)它必须连接??(central(DSPA_HOST)与Slave (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将收到一个测试str从DSPS_HOST和做比较与预定义的数据,如果它匹配,然后DSPS_DEVICE发送它的数据到DSPS_HOST。
如果你能给出一个状态图,告诉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代码时(我从(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);
periodic_timer_handler ();
}
periodic_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 code =>
/******************************************************************************************************/
初始化,成功
{
如果{
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)))
{
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