键DB回调覆盖
DA14585.
2年前
键DB回调覆盖
张贴了米克伍德0分 8回复SDK为应用程序绑定数据库函数提供回调,可以用用户函数替换。但是,struct bond_db在app_bond_db.c文件中定义(不是在标题中),并且键入键在app_bond_db.c中静态,因此很难为app_bond_db_callbacks提供有意义的用户定义替换,而无需修改SDK文件。我尽量不这样做,因为它使得在进行自定义修改时升级SDK非常困难。
我们的应用程序将在设计中将绑定DB存储在另一个处理器的闪存中,因此罐头SPI_FLASH和I2C_EEPROM功能不合适。如果SDK提供了检索键合结构地址和大小的函数,则非常好,这将允许覆盖默认回调而不修改SDK。正如现在,我需要修改SDK以提供此功能。
2年前
嗨米克伍德,
你能试着再解释一下你想做的事情吗?如果我能从你的线程中理解,你想要完成的是要开始阅读绑定数据,但要在程序尚未完成之前启动过程?当结束过程完成后,应触发回调?请提供进一步澄清。
谢谢,PM_DIALOG.
2年前
你好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以实现自定义负载和存储机制,这是不幸的。
2年前
你好pm_dialog,
我实现了以上方案A:从App_bdb_init()使用无效数据库继续,然后从其他处理器检索到绑定绑定数据库。这似乎正常工作。我想有一个小窗口,其中没有有效的数据库就可以发生配对事件(任何修改将被过写入),但我估计在第一个广告数据包甚至在收音机上熄灭之前整个过程完成。无论如何,我们可能必须与那种风险一起生活。
确认这项计划没有其他(对我不知道)警告会很好。您可以提供的任何信息都会受到赞赏。
2年前
嗨米克伍德,
为延迟表示歉意,感谢您提供的程序。如果此程序修复您的问题,请澄清您是否可以澄清?如你所提到的,你的SDK修改了SDK(我不会推荐它),但我没有任何新闻。
谢谢,PM_DIALOG.
2年前
嗨pm_dialog,
所描述的程序似乎为我们工作。我通过延迟广告的开始,在检索到绑定数据库并到位之前关闭窗口,因此不应有无效数据库的连接尝试。此过程确实需要更改APP_BOND_DB.C中的SDK。我同意这是不幸的,但邦德数据库的发布回调结构不支持实现债券数据库的自定义存储方法(这是我原始帖子的原因)。我希望开发团队在某些时候将纠正这一点。
最诚挚的问候,
麦克
2年前
作为我的第一篇文章的后续,是否有一种良好的方法来处理邦德数据库的“异步”?例如,如上所述,我们的系统将在单独的处理器中存储绑定数据库。因此,当是时候才能初始化键盘数据库时,DA14585将请求(通过SPI总线)从其他处理器转移键盘DB;实际转移后将在一段时间后完成。SPI处理通过回调处理(特别是在user_on_system_powered()回调)中处理,因此我不能只阻止App_bdb_init()调用,同时在等待此传输举行时。
我只能从App_bdb_init()函数返回,“回填”绑定DB收到后,但我担心这可能导致其他问题。关于处理这种情况的任何建议?谢谢。