问题1:我想从物联网传感器设备向运行在DA14580上的DSPS主机发送数据,怎么做?我必须做哪些改变?问题2:类似地,我想在第7.3.6节项目之后将自定义概要文件-sample128_中的数据发送到运行在DA14580上的DSPS主机,如何执行?谢谢……对话
你好,普拉桑特·维利扬吉里,
1.这些是不同的项目,所需的更改远远不是小的修改,DSPS主机会检查特定的配置文件(DSPS配置文件),因此您应该更改主机的服务发现操作,并使其适应物联网可用的服务和特征。发现服务后,启用可用特征的通知,您可以通过UART推送收到通知的数据。
2.这同样适用于自定义项目,您必须更改主机的查找过程才能查找自定义配置文件的特征。
谢谢你的对话
Q:如何为客户端角色创建自定义配置文件,该配置文件搜索服务(第7.3.6.zip节(@server-role))后的sample128_,连接到服务,查找特征并读取/写入特征?我已经通过了RW-BLE-GATT-IS.doc。本文档仅提供协议。因此,如果您提供自定义配置文件创建之类的分步教程,那就太好了。谢谢。。!!!
不幸的是,没有关于服务和特征发现过程实施的可用教程,但您可以以DSP(一种自定义128位服务)主机端为例,以实现您自己的连接、搜索和发现客户端设备中特定服务的中心。
亲爱的对话这些是我在第7.3.6节项目之后在DSPS主机-sample128_中所做的更改-@服务器角色步骤1:根据我的自定义配置文件服务和特性更改sps_client.h中的UUIDSPS_服务_UUID=sample128_svcSPS_服务器_TX_UUID=sample128_1_valSPS_服务器_RX_UUID=sample128_2_valSPS\u FLOW\u CTRL\u UUID=sample128\u 3\u val第二步:下一步常量结构prf_char_def_128 spsc_sps_char[spsc_char_MAX]={[spsc_srv_tx_data_char] = {sample128_1_val,att_mandatory,att_char_prop_rd |ATT_CHAR_PROP_WR},[SPSC_SRV_RX_DATA_CHAR]={sample128_2_val,ATT_强制性,ATT_CHAR_PROP_RD | ATT_CHAR_PROP_NTF},[spsc_flow_ctrl_char] = {sample128_3_val,att_mandatory,att_char_prop_rd |ATT_CHAR_PROP_NTF}};
步骤3:在sps\u客户端\u启用\u请求\u处理程序和gattc\u cmp\u evt\u处理程序中分配UUID。。。
uint8_t sps_data_uu service_uuid[]=sample128_svc;
但代码停止在global_int_start();// Arch_Main.我错过了什么......?我还有什么要改变的?
嗨,普拉桑,
首先,您提到了您的代码在GLOBAL_INT_start()处停止;我不认为你的代码停在那里,它只是在主函数中循环,因为设备只是扫描,不做任何其他事情,这是你的代码传递得更频繁的一点,因此你应该像所有示例一样正确地运行while循环。
通过将DSP UUID更改为项目的UUID,但发现函数填充DSP环境结构,该结构占据了链接另一侧发现的服务的信息,因此您必须修改它的可供选择也需要。为了检查发现是否正常工作,您必须检查应用程序环境中的信息是否适当,对应于外围数据库的实际处理。
你能告诉我,客户档案教程什么时候可以使用吗??谢谢对话
据我所知,没有任何正在进行的关于创建主机和发现过程的指南计划。
亲爱的对话在DSPS_主机项目中Q1:您能否指定与从DSPS\U设备(服务器项目)读取特征相关的功能
在580中,没有向应用程序指示中央已读取您的特征,这是由堆栈处理的,如果这是您的意思,则没有配置文件应用程序功能可执行此操作。有关DSP应用程序配置文件功能的更多信息,请参阅用户手册(UM-B-038),第6.7节“串行端口服务的应用程序任务接口”。
msgstmm msgid,limemer结构gapm\u cmp\u evt const*参数,KEU task\u id\u t const dest\u id,ke_任务id_t常量src_id){
ke_定时器设置(应用程序样本128定时器,任务应用程序,50);Sample128_PlaceHolder ++;
结构样本128_upd_char2_req*req=KE_MSG_ALLOC(样本128_UPD_CHAR2_REQ,任务单元样本128,任务应用程序,样本128_upd_char2_需求);req->val=样本128_占位符;req->conhdl=app_env.conhdl;发送消息(请求);}我想在我们正在传输的数据的dsps设备项目中实现上面的计时器处理程序,所以dsps设备项目会定期传输..如何做到这一点…我已经在-user\u sps\u server\u data\u tx\u cfm\u处理程序中尝试过-但似乎不起作用
sample128使用与DSPS项目不同的消息来触发通知。您提到的函数发送一个SAMPLE128_UPD_CHAR2_REQ消息,因为DSP不支持此消息,所以DSP中没有处理此类消息的处理程序。您提到的处理程序处理SPS_SERVER_DATA_TX_CFM,以确认数据已放置在TX缓冲区中。如果你想让设备定期发送数据,你可以按照下面的帖子http://support.dialog-semiconductor.com/dsps-panasonic-evalpan1740.
亲爱的Dialog,
/ *************************************************************** /类型定义结构wrbl_环境{
无效(*wrbl_timer_cb)();
uint16_t sensor_read_time;// vp.uint16传感器读取时间/副总裁uint16传感器读取时间2;//副总裁
}wrbl_环境结构;
/****************************************************************/
无效用户拉取(bool init,bool success){if(init){周期性数据计时器处理器();}其他的{周期性数据计时器处理器();}}
/********************************************************************/作废定期\数据\计时器\处理程序(作废){静态uint16_t长度;uint8_t*p_data=NULL;用户发送数据(p_数据,长度);wrbl_env.sensor_read_time=app_easy_timer(100,周期性数据计时器处理器);
}
/**********************************************************************/断开连接时无效用户(结构gapc断开连接ind const*param){断开连接时的默认应用(参数);arch_printf(“设备已断开连接\r\n”);如果(wrbl_环境传感器_读取时间==1){应用程序轻松定时器取消(wrbl环境传感器读取时间);}
/*********************************************************************/
问题1:我在DSPS设备项目中做了上述更改-代码在这里停止->如果((GetWord16(SYS\u STAT\u REG)&DBG\u is\u UP)=DBG\u is\u UP)__asm(“BKPT#0\n”);
可能是什么问题?我遗漏了什么??非常感谢。
我猜您的代码会在NMI或Hardfault处理程序中停止,您的代码可能会在某个地方阻塞,很可能是在读取SPI传感器时(如果启用了看门狗,则为NMI处理程序)或者您正在访问一个空指针和Hardfault处理程序触发器。SDK提供了该功能,为了找出错误发生的位置,请查看UM-B-051文档以获取更多信息,以便对此进行调试。
亲爱的对话问题1:即使添加了这个功能,我也没有发现传输延迟。你能帮我解决这个问题吗??作废定期\数据\计时器\处理程序(作废){//静态uint16_t长度;//uint8_t*p_data=NULL;user_send_ble_data(“别人”,6);wrbl_env.sensor_read_time=app_easy_timer(20000,周期性数据计时器处理器);
/*如果(wrbl_环境传感器_读取时间!=NULL){应用程序轻松定时器取消(wrbl环境传感器读取时间);}*/}
问题2:如果我想使用ke_timer_set();直接用于定期传输,如何在DSPS设备项目中使用此功能??
我不明白这个问题,内核计时器没有触发?您可以使用arch_set_pxact_gpio()检查计时器是否过期。我在一个新的DSPS项目中测试了上述代码,并在连接时触发了计时器,它工作正常,我可以在手机应用程序上正确接收数据。
使用app_easy_timer()api,它使用ke_timer_set(),当处理程序执行时,您可以执行代码并重置计时器。如果你想直接使用ke_定时器设置,请检查其他帖子http://support.dialog-semiconductor.com/apptimerset-0.
我没有在连接时触发计时器??实际上我正在调用-periodic_data_timer_handler();-函数内部-无效用户布尔布尔布尔布尔布尔布尔布尔布尔拉(布尔初始化,布尔成功)。。。你能建议我把-periodic_data_timer_handler()放在哪里吗DSPS设备项目中的调用函数??这将是伟大的,如果你给我的工作示例代码。。。
您必须建立连接才能开始向中心发送通知,如果没有连接,我看不出这是怎么可能的。因此,连接到中央处理器并启动计时器,当处理程序触发时,您将通过用户发送数据发送通知,并重置计时器。前周期_data_timer_handler()只是一个处理程序,当您使用该回调启动计时器时,该回调将在时间流逝时执行。
你好,普拉桑特·维利扬吉里,
1.这些是不同的项目,所需的更改远远不是小的修改,DSPS主机会检查特定的配置文件(DSPS配置文件),因此您应该更改主机的服务发现操作,并使其适应物联网可用的服务和特征。发现服务后,启用可用特征的通知,您可以通过UART推送收到通知的数据。
2.这同样适用于自定义项目,您必须更改主机的查找过程才能查找自定义配置文件的特征。
谢谢你的对话
Q:如何为客户端角色创建自定义配置文件,该配置文件搜索服务(第7.3.6.zip节(@server-role))后的sample128_,连接到服务,查找特征并读取/写入特征?
我已经通过了RW-BLE-GATT-IS.doc。本文档仅提供协议。因此,如果您提供自定义配置文件创建之类的分步教程,那就太好了。谢谢。。!!!
你好,普拉桑特·维利扬吉里,
不幸的是,没有关于服务和特征发现过程实施的可用教程,但您可以以DSP(一种自定义128位服务)主机端为例,以实现您自己的连接、搜索和发现客户端设备中特定服务的中心。
谢谢你的对话
亲爱的对话
这些是我在第7.3.6节项目之后在DSPS主机-sample128_中所做的更改-@服务器角色
步骤1:根据我的自定义配置文件服务和特性更改sps_client.h中的UUID
SPS_服务_UUID=sample128_svc
SPS_服务器_TX_UUID=sample128_1_val
SPS_服务器_RX_UUID=sample128_2_val
SPS\u FLOW\u CTRL\u UUID=sample128\u 3\u val
第二步:下一步
常量结构prf_char_def_128 spsc_sps_char[spsc_char_MAX]={
[spsc_srv_tx_data_char] = {sample128_1_val,att_mandatory,att_char_prop_rd |ATT_CHAR_PROP_WR},
[SPSC_SRV_RX_DATA_CHAR]={sample128_2_val,ATT_强制性,ATT_CHAR_PROP_RD | ATT_CHAR_PROP_NTF},
[spsc_flow_ctrl_char] = {sample128_3_val,att_mandatory,att_char_prop_rd |ATT_CHAR_PROP_NTF}
};
步骤3:在sps\u客户端\u启用\u请求\u处理程序和gattc\u cmp\u evt\u处理程序中分配UUID。。。
uint8_t sps_data_uu service_uuid[]=sample128_svc;
但代码停止在global_int_start();// Arch_Main.
我错过了什么......?我还有什么要改变的?
嗨,普拉桑,
首先,您提到了您的代码在GLOBAL_INT_start()处停止;我不认为你的代码停在那里,它只是在主函数中循环,因为设备只是扫描,不做任何其他事情,这是你的代码传递得更频繁的一点,因此你应该像所有示例一样正确地运行while循环。
通过将DSP UUID更改为项目的UUID,但发现函数填充DSP环境结构,该结构占据了链接另一侧发现的服务的信息,因此您必须修改它的可供选择也需要。为了检查发现是否正常工作,您必须检查应用程序环境中的信息是否适当,对应于外围数据库的实际处理。
谢谢你的对话
你能告诉我,客户档案教程什么时候可以使用吗??
谢谢对话
嗨,普拉桑,
据我所知,没有任何正在进行的关于创建主机和发现过程的指南计划。
谢谢你的对话
亲爱的对话
在DSPS_主机项目中
Q1:您能否指定与从DSPS\U设备(服务器项目)读取特征相关的功能
嗨,普拉桑,
在580中,没有向应用程序指示中央已读取您的特征,这是由堆栈处理的,如果这是您的意思,则没有配置文件应用程序功能可执行此操作。有关DSP应用程序配置文件功能的更多信息,请参阅用户手册(UM-B-038),第6.7节“串行端口服务的应用程序任务接口”。
谢谢你的对话
msgstmm msgid,limemer
结构gapm\u cmp\u evt const*参数,
KEU task\u id\u t const dest\u id,
ke_任务id_t常量src_id)
{
ke_定时器设置(应用程序样本128定时器,任务应用程序,50);
Sample128_PlaceHolder ++;
结构样本128_upd_char2_req*req=KE_MSG_ALLOC(
样本128_UPD_CHAR2_REQ,
任务单元样本128,
任务应用程序,
样本128_upd_char2_需求
);
req->val=样本128_占位符;
req->conhdl=app_env.conhdl;
发送消息(请求);
}
我想在我们正在传输的数据的dsps设备项目中实现上面的计时器处理程序,所以dsps设备项目会定期传输..如何做到这一点…我已经在-user\u sps\u server\u data\u tx\u cfm\u处理程序中尝试过-但似乎不起作用
嗨,普拉桑,
sample128使用与DSPS项目不同的消息来触发通知。您提到的函数发送一个SAMPLE128_UPD_CHAR2_REQ消息,因为DSP不支持此消息,所以DSP中没有处理此类消息的处理程序。您提到的处理程序处理SPS_SERVER_DATA_TX_CFM,以确认数据已放置在TX缓冲区中。如果你想让设备定期发送数据,你可以按照下面的帖子http://support.dialog-semiconductor.com/dsps-panasonic-evalpan1740.
谢谢你的对话
亲爱的Dialog,
/ *************************************************************** /
类型定义结构wrbl_环境
{
无效(*wrbl_timer_cb)();
uint16_t sensor_read_time;// vp.
uint16传感器读取时间/副总裁
uint16传感器读取时间2;//副总裁
}wrbl_环境结构;
/****************************************************************/
无效用户拉取(bool init,bool success)
{
if(init)
{
周期性数据计时器处理器();
}
其他的
{
周期性数据计时器处理器();
}
}
/********************************************************************/
作废定期\数据\计时器\处理程序(作废)
{
静态uint16_t长度;
uint8_t*p_data=NULL;
用户发送数据(p_数据,长度);
wrbl_env.sensor_read_time=app_easy_timer(100,周期性数据计时器处理器);
}
/**********************************************************************/
断开连接时无效用户(结构gapc断开连接ind const*param)
{
断开连接时的默认应用(参数);
arch_printf(“设备已断开连接\r\n”);
如果(wrbl_环境传感器_读取时间==1)
{
应用程序轻松定时器取消(wrbl环境传感器读取时间);
}
}
/*********************************************************************/
问题1:我在DSPS设备项目中做了上述更改-代码在这里停止->如果((GetWord16(SYS\u STAT\u REG)&DBG\u is\u UP)=DBG\u is\u UP)
__asm(“BKPT#0\n”);
可能是什么问题?我遗漏了什么??非常感谢。
嗨,普拉桑,
我猜您的代码会在NMI或Hardfault处理程序中停止,您的代码可能会在某个地方阻塞,很可能是在读取SPI传感器时(如果启用了看门狗,则为NMI处理程序)或者您正在访问一个空指针和Hardfault处理程序触发器。SDK提供了该功能,为了找出错误发生的位置,请查看UM-B-051文档以获取更多信息,以便对此进行调试。
谢谢你的对话
亲爱的对话
问题1:即使添加了这个功能,我也没有发现传输延迟。你能帮我解决这个问题吗??
作废定期\数据\计时器\处理程序(作废)
{
//静态uint16_t长度;
//uint8_t*p_data=NULL;
user_send_ble_data(“别人”,6);
wrbl_env.sensor_read_time=app_easy_timer(20000,周期性数据计时器处理器);
/*如果(wrbl_环境传感器_读取时间!=NULL)
{
应用程序轻松定时器取消(wrbl环境传感器读取时间);
}*/
}
问题2:如果我想使用ke_timer_set();直接用于定期传输,如何在DSPS设备项目中使用此功能??
嗨,普拉桑,
我不明白这个问题,内核计时器没有触发?您可以使用arch_set_pxact_gpio()检查计时器是否过期。我在一个新的DSPS项目中测试了上述代码,并在连接时触发了计时器,它工作正常,我可以在手机应用程序上正确接收数据。
使用app_easy_timer()api,它使用ke_timer_set(),当处理程序执行时,您可以执行代码并重置计时器。如果你想直接使用ke_定时器设置,请检查其他帖子http://support.dialog-semiconductor.com/apptimerset-0.
谢谢你的对话
我没有在连接时触发计时器??实际上我正在调用-periodic_data_timer_handler();-函数内部-无效用户布尔布尔布尔布尔布尔布尔布尔布尔拉(布尔初始化,布尔成功)。。。你能建议我把-periodic_data_timer_handler()放在哪里吗DSPS设备项目中的调用函数??这将是伟大的,如果你给我的工作示例代码。。。
嗨,普拉桑,
您必须建立连接才能开始向中心发送通知,如果没有连接,我看不出这是怎么可能的。因此,连接到中央处理器并启动计时器,当处理程序触发时,您将通过用户发送数据发送通知,并重置计时器。前周期_data_timer_handler()只是一个处理程序,当您使用该回调启动计时器时,该回调将在时间流逝时执行。
谢谢你的对话