Beacon Play Set Sev Name

21个帖子/ 0新
最后一篇
anthony42
离线
最后一次露面:5 years 6 months ago
加入:2015-07-17 08:21
Beacon Play Set Sev Name

你好,

  • how to add Write Dev Name and Read Ori Dev Name Characteristic
  • 为什么写开发名称和读取ori dev name使用相同的索引?

    dis_idx_ieee_char,
    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),
    sizeof(dist_pnp_id_char),(uint8_t *)和diss_pnp_id_char},
    // PNP ID特征值
    [dis_idx_pnp_id_val] = {att_char_pnp_id,perm(rd,启用),dis_pnp_id_len,0,null},

    //Read Write Dev Name Characteristic Declaration
    [dis_idx_pnp_id_char] = {att_decl_characterativer,perm(rd,启用),sizeof(dist_pnp_id_char),
    sizeof(dist_pnp_id_char),(uint8_t *)和diss_pnp_id_char},
    //Read Write Dev Name Characteristic Value
    [dis_idx_pnp_id_val] = {att_char_pnp_id,perm(rd,启用),dis_pnp_id_len,0,null},

    //读取ori dev name特征声明
    [dis_idx_pnp_id_char] = {att_decl_characterativer,perm(rd,启用),sizeof(dist_pnp_id_char),
    sizeof(dist_pnp_id_char),(uint8_t *)和diss_pnp_id_char},
    //读取ori dev name特征值
    [dis_idx_pnp_id_val] = {att_char_pnp_id,perm(rd,启用),dis_pnp_id_len,0,null},

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

    为什么?the smart phone app need to read write dev name from a 128bit uuid.
    我可以在原始代码上更改基础,还是我必须重写spotar_create_db_req_handler()等代码?
    谢谢!

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

    嗨Antony42,

    我想你想从智能手机改变设备的名字是正确的吗?您必须将Permmisions更改为适当的特征,并将写命令处理到DA对于特定IDX,使用Sample128作为引用(Gattc_Write_cmd_ind_handler)。我想你可以,但你要改变一个由sig定义的配置文件。

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    你好,mt_dialog.,

    你好,mt_dialog.,
    绝对正确 !

  • in fact I need to configure several parameters from smartphone, include :Dev Name, Beacon UUID, Major ID, Minor ID, Measured Power, Adv interval , User Defined
  • 我需要将这些信息保存到Flash。
    can you give me some suggestions?
    非常感谢 !

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

    嗨Antony42,

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

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,
    I tried but I can't get the right handle index when initialize the data.
    另一个问题:
    why the product header in the following structure is different from AN-B-010 page10 ?
    来自Beacon Ref项目:
    #define product_header_position 0x1f000.
    //Product header for SUOTA
    struct product_header.
    {
    UINT8_T签名[2];
    UINT8_T版[2];
    UINT32_T保留[4];
    uint32_t config_offset;
    };
    struct product_header p_header;
    spi_flash_read_data((uint8_t *)&p_header,(unsigned long)product_header_position,(unsigned long)sizeof(struct product_header));

    app_config_header_offset = p_header.config_offset;

    我打印数据,看起来像:
    0x70 0x52 0x0 0x1 0x0 0x80 0x0 0x0 0x0 0x30 0x1 0x0 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
    same with AN-B-010 (signature 7052, version 0100, offset 1, offset 2)
    但是p_header.config_offset =?
    struct config_header也与AN-B-010不同

    谢谢!

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

    Hi antony42

    你是什​​么意思是不同的,你无法看到偏移量下的其他字段#2字段?这是因为其他字段没有从信标应用程序中使用。您无法读取CONFIG_OFFSET,因为您必须在SPI中加载标题才能读取它,您可以使用SMART SCIPPETS专有头程序员来设置CONFIG_OFFSET和BEACON配置。

    谢谢mt_dialog。

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,

    在UM-B-019(信标参考)中9.7.1内存映射:
    配置存储使用双映像引导加载程序的存储映射。更具体地说,它使用
    如上所述,产品标题中的“保留”字段(Byte Offset 12)的前四个字节
    [6]的第6.1节,用于定义配置区域的内存地址。地址必须点
    SPI Flash扇区的开始,并且没有其他信息必须存储在同一扇区中。
    [6]的第6.1节在哪里
    the UM says use first four bytes of the ‘Reserved’ field to store Configuration address,

  • 什么product_header.config_offset for?
  • 我需要添加到以下标题TXT文件中的哪个字段?
  • struct product_header.
    {
    UINT8_T签名[2];
    UINT8_T版[2];
    UINT32_T保留[4];
    uint32_t config_offset;
    };
    现在我的标题文件(.txt文件)是:
    2签名产品标题签名。必须包含0x7052
    2版本产品标题版本
    4 LE格式的图像标题#1的offset1内存偏移
    4 offset2在Le格式中图像标题#2的内存偏移量
    用专有标题编程器打开,并设置右侧值7052,0001,00800000,00300100。

    谢谢!

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

    嗨Antony42,

    产品标题应在se的形式condary bootloader header. You can use the 12byte offset (BDaddress) or place some padding and use the 17byte (Reserved) offset in order to put the address of the Configuration header format. The product_header.config_offset will contain the offset of the product header that resides the address of the configuration header. You should add an extra field in the product_header.txt in order to place the address of the configuration header file. That configuration offset will point to the configuration header. The configuration data are placed below the configuration header in byte offset 64.

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    Hi MT_Dialog,

    Hi MT_Dialog,
    我不完全明白。

    1. the header in second bootloader is :
    2. //product header structure
      typedef struct __productheader {
      UINT8签名[2];
      uint8 version[2];
      UINT32_T OFFSET1;
      uint32_t offset2;
      S_ProductHeader;

    3. 在Beacon Ref中是:
    4. //Product header for SUOTA
      struct product_header.
      {
      UINT8_T签名[2];
      UINT8_T版[2];
      UINT32_T保留[4];
      uint32_t config_offset;//why this is different from above one?
      };

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

  • 当我尝试在Product_header.txt中添加一个字段时,它会提醒错误,“最多只支持4个参数!”,所以怎么做?
  • 我可以在程序中使用固定地址,所以始终读取0x1f000 + sizeof的配置数据(struct product_header)吗?
  • 谢谢!

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

    Hi antony42

    The above 2 structs are different because in beacon we don't specify the image offsets and we just add some
    padding uint32_t reserved[4].

    1-uint32_t用于图像offset1,2-uint32_t的图像offset2,3-4 uint32_t为dbaddress和一些额外的
    保留数据。

    在信标应用程序中,如果配置已启用,则必须在产品中添加额外的字段
    例如,标题.... configOffset。然后在您制作产品_header.txt之后,您可以从智能播放
    snippets tool and add the values to the corresponding fields. The app_read_config_header will find the
    product_header and read the config_offset of the configuration header......from then the app_read_config
    数据将使用配置数据填充相应的结构。您可以使产品标题
    对应于如此:

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

    2 String Signature Product Header Signature(7052)
    2字符串版本产品标题版本
    16整数保留保留填充
    4 Integer ConfigOffset配置

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

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    Hi MT_Dialog,

    Hi MT_Dialog,

    1. I want to add a led to a beacon, when a device connected then turn the led on.
      I called led_on() in app_connection_func, set pin low,
      但是LED只有闪烁一次,我找不到IO输出设置得高?
    2. 在app_button_press_callback()

      app_adv_stop();
      Switch(app_advertise_mode)
      {
      案例GAPM_ADV_NON_CONN:

      app_advertise_mode = gapm_adv_undirect;
      休息;

      case GAPM_ADV_UNDIRECT:
      app_advertise_mode = GAPM_ADV_NON_CONN;
      休息;
      }
      this will change the advertise mode, but it doesn't call app_adv_start(), so when the advertise mode will change?

    3. 我什么时候需要定义cfg_connectable_adv_mode?
      你能解释一下关于app_asynch_trm()的更多信息吗?

      this func also has the code:
      Switch(app_advertise_mode)
      {
      案例GAPM_ADV_NON_CONN:

      app_advertise_mode = gapm_adv_undirect;
      休息;

      case GAPM_ADV_UNDIRECT:
      app_advertise_mode = GAPM_ADV_NON_CONN;
      休息;
      }
      我需要添加到按钮来更改广告模式。

    4. 当我在app_button_press_callback中设置计时器(500ms)时,
      定时器立即触发,然后我设置了一个标志,
      in the following, works fine,为什么?
      app_adv_undirect_complete.
      {
      if (flag) {
      set_timer();
      标志= false;
      }
      在计时器处理程序中,我清除了另一个计时器,不行,
      set another flag like above, I cleared the timer successfully,为什么?

    谢谢,
    Anthony

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

    嗨Antony,

    您可以定义您的设备将在DA14580_Config中的可连接工作中工作.H检查您正在使用的Dev套件并定义CFG_CONNECTABLE_ADV_MODE在那里。如果定义了CFG_CONECTABLE_ADV_MODE,则无需按钮更改为可连接模式,设备将在可连接和不可连接的模式之间旋转。如果未定义,则必须使用按钮以更改ADV模式(有一个定义)。我想你正在使用睡眠,当你的设备唤醒引脚返回句子的句子periph_init()函数命令....如果要保持按钮点亮,则必须放置一个将记住以前状态的变量每当您的da醒来时,LED并设置对应的值。在app_asynch_trm中,如果您定义了CFG_CONNECTABLE_ADV_MODE作为我在非可连接模式之间提到的设备周期。由于App_adv_stop()发出的app_adk.c案Gapm_adv_undirect,该设备再次启动广告案例Gapm_adv_non_conn。如果您尝试从外部中断设置计时器,请在App_button_press_cb()函数中建议SmartTag参考设计,并检查此外常见问题解答http://support.dialog-semiconductor.com/faq-page#n1508

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    Hi MT_dialog

    Hi MT_dialog

    1. 在app_adv_undirect_complete()中:
      call app_timer_set(APP_RESTART_ADV_TIMER, TASK_APP, timer_ticks) to restart adv,
      is this the method to advertise periodically?
      我在这个func中设置了一个断点,似乎这个函数未调用,但app_adv_stop()将要做。
    2. As you mentioned "The device starts advertising again because of the app_adv_undirect_complete()
      which is issued from the app_adv_stop() ",
      now I need to store 10 different adv data in an array, and advertise array[0], then array[1] ...
      each one is 32 bytes.
      I think add code to app_adv_undirect_complete() is a good choice,
      我可以单独设置adv间隔,并在app_restart_adv_timer处理程序中更改adv数据。
      所以如何在每次广告后调用app_adv_undirect_complete()?
      is this possible or any other better solution?

    谢谢,
    Anthony

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

    嗨Antony,

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

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    Hi MT_dialog

    Hi MT_dialog

    在app_restart_adv_timer_handler中:
    app_adv_start();
    app_adv_stop();//can I add this here to call app_adv_undirect_complete?
    return(ke_msg_consumed);

    • 我需要在X MS之后宣传Adv_Data_Array1,宣传Adv_Data_Array2一次,。。。
    • how can I know one advertising has finished?
      我应该何时调用app_adv_stop()?

    谢谢,
    Anthony

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

    嗨Antony42,

    When the da boots you can start advertise and start a timer, when the timer elapses you can call app_adv_stop(), when the advertising stops, the app_adv_undirect_complete will execute (this functions executes right after you invoke app_adv_stop whether is undirect advertising or non-connectable) and then you can call the app_adv_start(); You can change your advertising string in the app_adv_func() if you like where the advertising string is populated.

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,
    Thank you for your reply, I will try it.
    当我打电话给app_adv_start()时,广告开始,而不是一次,它是连续的,

    1. 内核中有一个计时器重启广告,对吗?
    2. 如何保证广告Data1只有一次,那么广告Data2,Data3 ...

    谢谢,
    Anthony

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

    嗨Antony,

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

    谢谢mt_dialog.

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,

    非常感谢你!
    它现在正在运作。

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

    in timer handler()
    {
    app_adv_stop();
    }

    我将定时器与副房(100ms)设置相同的值,
    从嗅探器中,我可以看到每个adv数据只广告一次!

    谢谢,
    Anthony

    anthony42
    离线
    最后一次露面:5 years 6 months ago
    加入:2015-07-17 08:21
    嗨mt_dialog,

    嗨mt_dialog,

    谢谢你的回复。
    now it works fine, I set flags in button_press_callback() and set/clear timer in app_adv_undirect_complete().
    I also found two old but useful topics:
    http://support.dialog-semiconductor.com/ketimerset-not-executewhy
    http://support.dialog-semicondiondiond.com/problem-about-wakeup-timer-inter ...

    顺便说一下,如果我使用ext睡眠,则无需使用__attribute __((部分(“保留_mem_area0”),zero_init)
    这样对吗?

    谢谢,
    Anthony

    MHv_Dialog
    离线
    最后一次露面:2个月1周前
    职员
    加入:2013-12-06 15:10
    你好,

    你好,

    That is correct. In extended sleep, all data in RAM, including global variables, is retained.

    主题锁定