The SDK provides callbacks for the application bond database functions, which can be replaced with user functions. However, the struct bond_db is defined in the app_bond_db.c file (not in the header) and the bond_db declaration is static in app_bond_db.c, so it is very difficult to provide meaningful user-defined replacements for the app_bond_db_callbacks without modifying the SDK files. I try not do do this because it makes upgrading the SDK very difficult when custom modifications have been made.
Our application will store the bond DB in the flash memory of another processor in the design, so the canned SPI_FLASH and I2C_EEPROM functions are not suitable. It would be really nice if the SDK provided a function to retrieve the bond_db structure address and size, which would allow override of the default callbacks without modifying the SDK. As it is now, I will need to modify the SDK to provide this function.
作为我的第一篇文章的后续,是否有一种良好的方法来处理邦德数据库的“异步”?例如,如上所述,我们的系统将在单独的处理器中存储绑定数据库。因此,当是时候才能初始化键盘数据库时,DA14585将请求(通过SPI总线)从其他处理器转移键盘DB;实际转移后将在一段时间后完成。SPI处理通过回调处理(特别是在user_on_system_powered()回调)中处理,因此我不能只阻止App_bdb_init()调用,同时在等待此传输举行时。
我只能从App_bdb_init()函数返回,“回填”绑定DB收到后,但我担心这可能导致其他问题。关于处理这种情况的任何建议?谢谢。
嗨米克伍德,
Could you please try to explain a bit more what you would like to accomplish? If I am able to understand from your thread, that you want to accomplish is to start reading the bonding data but you want to start the procedure before the procedure is not finished? And when the bonding procedure has been finished, a callback should be triggered? Please, provide as further clarification on that.
Thanks, PM_Dialog
你好pm_dialog,
这大致正确。问题是我需要在检索绑定数据库之前从app_bdb_init()返回,或者在调用调度程序允许spi总线处理的同时在user_on_system_powered()回调中继续,类似于什么是在bond_db_erase_flash_sectors()中完成。在第一种情况下,一旦从另一个处理器检索了键数据库,就会通过消息处理或直接在SPI处理代码中填充键绑定结构。这种情况更容易实现,但是从App_dbd_init()返回而没有有效的绑定数据库到位可能是危险的。第二种情况(块和来自app_dbd_init()中的呼叫调度程序)可能更安全但更难以正确实现,并且如果RWIP_Schedule()调用将允许SPI处理以根据需要调用user_on_system_powered(),则只能工作。
所以我的问题是(a)从app_bdb_init()返回它是安全的,并且在键盘数据库可用之前继续应用程序启动,如果不是,则(b)将通过调用user_on_system_powered(b)块和调度方案工作。)根据需要,直到收到债券数据库?
此外,根据我的第一篇文章,由于键控数据库加载和存储机制不挂钩到App_Bond_DB_Callbacks,因此我别无选择,只能修改SDK以实现自定义负载和存储机制,这是不幸的。
嗨米克伍德,
谢谢你的信息。我将检查你的空间站ue and I will let you know shortly.
Thanks, PM_Dialog
你好pm_dialog,
我实现了以上方案A:从App_bdb_init()使用无效数据库继续,然后从其他处理器检索到绑定绑定数据库。这似乎正常工作。我想有一个小窗口,其中没有有效的数据库就可以发生配对事件(任何修改将被过写入),但我估计在第一个广告数据包甚至在收音机上熄灭之前整个过程完成。无论如何,我们可能必须与那种风险一起生活。
确认这项计划没有其他(对我不知道)警告会很好。您可以提供的任何信息都会受到赞赏。
嗨米克伍德,
为延迟表示歉意,感谢您提供的程序。如果此程序修复您的问题,请澄清您是否可以澄清?如你所提到的,你的SDK修改了SDK(我不会推荐它),但我没有任何新闻。
Thanks, PM_Dialog
嗨pm_dialog,
所描述的程序似乎为我们工作。我通过延迟广告的开始,在检索到绑定数据库并到位之前关闭窗口,因此不应有无效数据库的连接尝试。此过程确实需要更改APP_BOND_DB.C中的SDK。我同意这是不幸的,但邦德数据库的发布回调结构不支持实现债券数据库的自定义存储方法(这是我原始帖子的原因)。我希望开发团队在某些时候将纠正这一点。
With best regards,
MKE
嗨米克伍德,
正如在最后一个帖子中提到的那样,不建议修改SDK,但很高兴您铭记了您的问题,并感谢您的迹象。
Thanks, PM_Dialog