Beacon Play Set Sev Name

21个帖子/ 0新
最后一篇
安东尼42.
离线
最后一次露面:5年6个月前
加入:2015-07-17 08:21
Beacon Play Set Sev Name

你好,

  • 如何添加写开发名称和读取ori dev name特征
  • 为什么写开发名称和读取ori dev name使用相同的索引?

    DIS\u IDX\u IEEE\u字符,
    dis_idx_ieee_val,
    dis_idx_pnp_id_char,
    dis_idx_pnp_id_val,
    dis_idx_nb,

    // PNP ID特征声明
    [dis_idx_pnp_id_char] = {att_decl_characterativer,perm(rd,启用),sizeof(dist_pnp_id_char),
    大小(diss\u pnp\u id\u char),(uint8\u t*)和diss\u pnp\u id\u char},
    //PnP ID特征值
    [dis_idx_pnp_id_val] = {att_char_pnp_id,perm(rd,启用),dis_pnp_id_len,0,null},

    //读写dev name特征声明
    [dis_idx_pnp_id_char] = {att_decl_characterativer,perm(rd,启用),sizeof(dist_pnp_id_char),
    大小(diss\u pnp\u id\u char),(uint8\u t*)和diss\u pnp\u id\u char},
    //读写dev name特征值
    [dis_idx_pnp_id_val] = {att_char_pnp_id,perm(rd,启用),dis_pnp_id_len,0,null},

    //读取设备名称特征声明
    [dis_idx_pnp_id_char] = {att_decl_characterativer,perm(rd,启用),sizeof(dist_pnp_id_char),
    大小(diss\u pnp\u id\u char),(uint8\u t*)和diss\u pnp\u id\u char},
    //读取ori dev name特征值
    [dis_idx_pnp_id_val] = {att_char_pnp_id,perm(rd,启用),dis_pnp_id_len,0,null},

    • 另一个问题:我可以在diss中添加128位特征吗?如何添加?

    为什么?智能手机应用程序需要从128bit uuid中读取写开发名称。
    我可以在原始代码的基础上进行更改,还是必须重写spotar\u create\u db\u req\u handler()之类的代码?
    谢谢您!

    关键词:
    设备:
    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    嗨,安东尼42,

    嗨,安东尼42,

    我猜你想把设备的名字从智能手机改过来,对吗?您必须将permmisions更改为适当的特征,并将写入命令处理为特定IDX的da,使用SAMPLE128作为参考(gattc\u write\u cmd\u ind\u handler)。我想你可以,但是你要改变一个由SIG定义的配置文件。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨,mt_dialog,

    嗨,mt_dialog,
    绝对正确 !

  • 实际上我需要从智能手机配置多个参数,包括:dev名称,信标uuid,主要ID,次要ID,测量功率,adv间隔,用户定义
  • 我需要将这些信息保存到Flash。
    你能给我一些建议吗?
    非常感谢 !

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    嗨,安东尼42,

    嗨,安东尼42,

    我建议您不要更改普通的配置文件(您可能对其他设备有兼容性问题),而是可以将其与您的服务一起包含并创建新的自定义配置文件(Sample128教程),其中包含您需要的额外信息。正如我之前提到的那样,幻灯片是从蓝牙SIG定义的服务。您可以使用信标项目来处理您的邮件的广告。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨,MT\u dialog,

    嗨,MT\u dialog,
    我尝试了,但在初始化数据时,我无法获得正确的句柄索引。
    另一个问题:
    为什么产品标题以下结构中的不同与AN-B-010 Page10不同?
    来自Beacon Ref项目:
    #定义产品标题位置0x1F000
    // Suota的产品标题
    结构产品标题
    {
    单位签名[2];
    UINT8_T版[2];
    UINT32_T保留[4];
    uint32_t config_offset;
    };
    结构产品标题;
    spi\u flash\u read\u data((uint8\u t*)&p\u header,(unsigned long)PRODUCT\u header\u POSITION,(unsigned long)sizeof(struct PRODUCT\u header));

    app\u config\u header\u offset=p\u header.config\u offset;

    我把数据打印出来,看起来像:
    0x70 0x52 0x0 0x1 0x0 0x80 0x0 0x0 0x0 0x0 0x30 0x1 0x0 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
    与AN-B-010相同(签名7052,版本0100,偏移1,偏移2)
    但是p_header.config_offset =?
    struct config_header也与AN-B-010不同

    谢谢您!

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    嗨Antony42.

    嗨Antony42.

    什么意思不同,你看不到偏移量2字段下的其他字段?这是因为Beacon应用程序没有使用其他字段。您不能读取config\u偏移量,因为您必须在SPI中加载头才能读取它,您可以使用Smart Snippets专有头程序员来设置config\u偏移量和信标配置。

    谢谢你的对话。

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨,MT\u dialog,

    嗨,MT\u dialog,

    在UM-B-019(信标参考)9.7.1内存映射中:
    配置存储使用双映像引导加载程序的存储映射。更具体地说,它使用
    如上所述,产品标题中的“保留”字段(Byte Offset 12)的前四个字节
    [6]的第6.1节定义了配置区域的内存地址。地址必须指向
    SPI Flash扇区的开始,并且没有其他信息必须存储在同一扇区中。
    [6]第6.1节在哪里
    UM表示使用“保留”字段的前四个字节来存储配置地址,

  • 什么product_header.config_offset for?
  • 我需要在下面的头文件中添加什么字段?
  • 结构产品标题
    {
    单位签名[2];
    UINT8_T版[2];
    UINT32_T保留[4];
    uint32_t config_offset;
    };
    现在我的头文件(.txt文件)是:
    2签名产品标题签名。必须包含0x7052
    2版本产品标题版本
    4 LE格式的图像标题#1的offset1内存偏移
    4偏移量2 LE格式的图像头#2的内存偏移量
    用专用头编程序打开并设置正确的值70520001008000000000300100。

    谢谢您!

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    嗨,安东尼42,

    嗨,安东尼42,

    产品标题应为辅助引导程序标题的形式。您可以使用12byte offset(bdaddress)或放置一些填充,并使用17byte(保留)偏移量以放置配置标题格式的地址。product_header.config_offset将包含驻留的偏移量,它位于配置标题的地址。您应该在product_header.txt中添加额外的字段,以便放置配置头文件的地址。配置偏移将指向配置标题。配置数据位于字节偏移64中的配置标题下方。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,
    我不完全明白。

    1. 第二个引导加载程序中的标题是:
    2. //产品标题结构
      typedef结构\uuu产品标题{
      UINT8签名[2];
      UINT8版本[2];
      uint32\t抵消1;
      uint32_t offset2;
      S_ProductHeader;

    3. 在信标参考中:
    4. // Suota的产品标题
      结构产品标题
      {
      单位签名[2];
      UINT8_T版[2];
      UINT32_T保留[4];
      uint32_t config_offset;//为什么这与上面不同?
      };

    5. 在AN-B-010 Page 10:
    6. 似乎是一个完整的版本。
      在此文件12-31保留
      32-37 BD地址......

  • 当我试图在product\u header.txt中添加一个字段时,它警告错误:“最多只支持4个参数!”,那怎么做呢?
  • 我可以在程序中使用固定地址,所以始终读取0x1f000 + sizeof的配置数据(struct product_header)吗?
  • 谢谢您!

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    嗨Antony42.

    嗨Antony42.

    以上2个结构是不同的,因为在信标中,我们没有指定图像偏移,我们只添加一些
    填充UINT32_T保留[4]。

    1-uint32\t用于图像偏移量1,2-uint32\t用于图像偏移量2,3-4 uint32\t用于数据地址和一些附加的
    保留数据。

    在信标应用程序中,如果启用了配置,则必须在产品中添加一个额外字段
    例如,标题.... configOffset。然后在您制作产品_header.txt之后,您可以从智能播放
    片段工具并将值添加到相应的字段。app_read_config_header会找到
    Product_Header并读取配置标题的Config_offset ......从App_Read_Config
    数据将使用配置数据填充相应的结构。您可以使产品标题
    对应于这样的结构:

    创建一个product_header.txt文件并添加以下字段

    2字符串签名产品标题签名(7052)
    2字符串版本产品标题版本
    16整数保留填充
    4整数配置偏移配置

    是的,我想您可以使用硬编码地址并从那里读取配置数据。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,

    1. 我想将LED添加到信标,当连接的设备然后打开LED时。
      我在app_connection_func中调用LED_ON(),设置PIN低,
      但led只闪烁了一次,我找不到io输出被设置在哪里高?
    2. 应用程序中的按钮按下回调()

      app_adv_stop();
      Switch(app_advertise_mode)
      {
      案例GAPM\ U ADV\ U NON\ U CONN:

      app\u advised\u mode=GAPM\u ADV\u UNDIRECT;
      中断;

      案例GAPM_ADV_UNDIRECT:
      app_advertise_mode = gapm_adv_non_conn;
      中断;
      }
      这将改变广告模式,但它不会调用app_adv_start(),因此当广告模式将改变?

    3. 何时需要定义CFG\u CONNECTABLE\u ADV\u MODE?
      你能解释一下关于app_asynch_trm()的更多信息吗?

      此Func还有代码:
      Switch(app_advertise_mode)
      {
      案例GAPM\ U ADV\ U NON\ U CONN:

      app\u advised\u mode=GAPM\u ADV\u UNDIRECT;
      中断;

      案例GAPM_ADV_UNDIRECT:
      app_advertise_mode = gapm_adv_non_conn;
      中断;
      }
      我需要添加到按钮来更改广告模式。

    4. 当我在app_button_press_callback中设置计时器(500ms)时,
      计时器被立即触发,然后我设置了一个标志,
      在下文中,工作正常,为什么?
      app_adv_undirect_complete.
      {
      if(标志){
      设置计时器();
      标志= false;
      }
      在计时器处理程序中,我清除了另一个计时器,不正常,
      设置上面的另一个标志,我成功清除了计时器,为什么?

    谢谢,
    安东尼

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    你好,安东尼,

    你好,安东尼,

    您可以在da14580\u config.h中定义您的设备将在可连接状态下工作检查您正在使用的开发工具包并定义cfg_connectable_adv_mode.在那里。如果定义了CFG_CONECTABLE_ADV_MODE,则无需按钮更改为可连接模式,设备将在可连接和不可连接的模式之间旋转。如果未定义,则必须使用按钮以更改ADV模式(有一个定义)。我想你正在使用睡眠,当你的设备唤醒引脚返回句子的句子periph_init()函数命令....如果要保持按钮点亮,则必须放置一个将记住以前状态的变量每当您的da醒来时,LED并设置对应的值。在app_asynch_trm中,如果您定义了CFG\u CONNECTABLE\u ADV\u MODE正如我之前提到的,设备在非连接模式和可连接模式之间循环。设备再次开始广告,因为app\u adv\u undirect\u complete()是从app\u adv\u stop()发出的检查app\u task.c case GAPM\u adv\u undirect;case GAPM \u ADV \u NON \u CONN.如果您试图从外部中断设置计时器,请在app \u button \u press \u cb()函数中建议SmartTag参考设计,并检查此常见问题解答http://support.dialog-semicondiondiondum/faq-page#n1508.

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨mt_dialog.

    嗨mt_dialog.

    1. 在app\u adv\u undirect\u complete()中:
      调用app_timer_set(app_restart_adv_timer,task_app,timer_ticks)重新启动adv,
      这是定期宣传的方法吗?
      我在这个func中设置了一个断点,似乎这个函数未调用,但app_adv_stop()将要做。
    2. 如您所提到的,“由于APP_ADV_UNDIRECT_COMPLETE(),该设备再次启动广告
      从App_adv_stop()发出,
      现在我需要在数组中存储10个不同的adv数据,并宣传阵列[0],然后阵列[1] ...
      每个都是32字节。
      我认为将代码添加到app_adv_undirect_complete()是一个不错的选择,
      我可以单独设置adv间隔并在APP\u RESTART\u adv\u TIMER处理程序中更改adv数据。
      那么,如何让app\u adv\u undirect\u complete()在每次发布广告后调用呢?
      这是可能还是其他更好的解决方案?

    谢谢,
    安东尼

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    你好,安东尼,

    你好,安东尼,

    app_adv_undirect()在Adv_Stop()完成后执行并将计时器设置为Timer以便再次启动广告,请在IF语句上设置您的断点。是的,您可以在广告停止时更改广告数据。每次停止广告时都会调用app_adv_undirect_complete。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨mt_dialog.

    嗨mt_dialog.

    在app_restart_adv_timer_handler中:
    app_adv_start();
    app_adv_stop()//我可以在这里添加它来调用app_adv_undirect_complete吗?
    return(ke_msg_consumed);

    • 我需要播发一次adv_data_array1,在x ms后,播发一次adv_data_array2。
    • 我如何知道一个广告已经完成了?
      我应该何时调用app_adv_stop()?

    谢谢,
    安东尼

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    嗨,安东尼42,

    嗨,安东尼42,

    当DA靴子您可以启动并启动计时器时,当定时器过去时,您可以调用app_adv_stop(),当广告停止时,app_adv_undirect_complete将执行(此函数在调用app_adv_stop之后执行opp_adv_stop是未连接的广告或不可连接之后)然后你可以调用app_adv_start();如果您喜欢填充广告字符串的位置,您可以在App_adv_Func()中更改广告字符串。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨,MT\u dialog,

    嗨,MT\u dialog,
    谢谢你的回复,我会尝试一下。
    当我打电话给app_adv_start()时,广告开始,而不是一次,它是连续的,

    1. 内核中有一个计时器来重启广告,对吗?
    2. 如何保证广告数据1只有一次,然后广告数据2,数据3。。。

    谢谢,
    安东尼

    mt_dialog.
    离线
    最后一次露面:2个月1周前
    职员
    加入:2015-06-08 11:34
    你好,安东尼,

    你好,安东尼,

    广告程序是持续的,意思是,如果您不发送取消命令,广告将继续。如果要在3广告字符串之间旋转,您可以在广告功能中制作开关盒检查当前的通告模式并切换到下一个模式(每个模式加载不同的广告字符串)。当设置广告字符串时,将设置指定设备在特定模式中宣传的长度的计时器。当计时器经过时,更改广告模式,调用app_adv_stop.并在获得广告已停止的指示时重新启动广告。

    谢谢mt_dialog.

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨,MT\u dialog,

    嗨,MT\u dialog,

    非常感谢你!
    它正在工作。

    在app_adv_undirect_complete()
    {
    app_set_timer(x,y);
    app_adv_start();
    }

    在Timer Handler()
    {
    app_adv_stop();
    }

    我将计时器设置为相同的值,时间间隔为100ms,
    从嗅探器中,我可以看到每个adv数据只广告一次!

    谢谢,
    安东尼

    安东尼42.
    离线
    最后一次露面:5年6个月前
    加入:2015-07-17 08:21
    嗨,MT\u dialog,

    嗨,MT\u dialog,

    谢谢你的回复。
    现在它可以正常工作,我在button_press_callback()中设置标志,并在app_adv_undirect_complete()中设置/清除计时器。
    我也发现了两个旧但有用的主题:
    http://support.dialog-semicondiondiondum/ketcerset-not-execute why.
    http://support.dialog-semiconductor.com/problem-about-wakeup-timer-inter...

    顺便说一下,如果我使用ext sleep,就不需要使用uu attribute(section(“retention\u mem\u area0”),zero\u init)
    这样对吗?

    谢谢,
    安东尼

    mhv_dialog.
    离线
    最后一次露面:2个月4天前
    职员
    加入:2013-12-06 15:10
    你好,

    你好,

    那是正确的。在延长睡眠中,保留包含全局变量的RAM中的所有数据。

    主题锁定