nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突

昨天 遇到了一个烦心的问题,被老外客户怼了两句,恼火,很想发火,发现英文不够用,算了,就不跟直肠的鬼佬一般见识。说正事。

最近的一个nRF51822+MT2503 钱包防丢项目,准备接近量产了。昨天做APP的老外发现设备没有 配对绑定功能,就不明真相的说为什么一开始不加上。

WTF,记住MAC地址就可以了啊,做销售的老外以为没有配对绑定功能的意思是手机不能连接上,做APP的老外才真正配对绑定功能是为看手机省电和连接方便,..好吧,

加上去。

据说,配对功能就是为了 手机绑定设备后,可以直接启动连接设备而不用首先进行扫描,一直扫描的话太耗电。

 还有,苹果手机的一些蓝牙功能也需要配对完成才能用。否则是用不了的。

下面是老外的原话:

@ceiba if device paired, Android system save BT device profile in system and can get Bluetooth device object to connect to it (trying to connect). If profile doesn‘t exist in system, need always scan nearby devices and compare saved addresses to get device and connect it

流程应该是这样的:

  1.手机与设备首次进行了连接,

  2.手机向设备请求绑定(配对,bond&pair)

  3.设备如果有配对功能,返回自身的一些配对信息给手机,否则就啥都不管,或者回一句,“我不支持配对功能”

  4.设备本身将手机发来的手机配对信息进行存储

  5.手机接收到设备返回的配对信息后,也进行储存

  6.下次连接,手机可能不需要扫描就可以直接启动连接设备(经过和经验丰富的老外沟通后,我认为是这样),

   设备接受连接后也会检查配对信息是否正确,正确了就返回告诉手机

  7.直接进行通信。

以上是这两天的收获,感谢老外和我的技术支持。

  

  下面开始移植 device manager 模块,也就是 设备的绑定配对功能,

  。。。。

  我就不写了,还是直接给个链接跳去看论坛上人家的做法吧,

https://devzone.nordicsemi.com/tutorials/15/

  下面是第二个关键的问题,因在移植 device manager 这个模块的代码之前,加有对 pstorage 的操作, 而device manager 里面也有,这时候就有点冲突了,因为pstorage_init 只需要调用一次。

  OK,那就把 我自己的 pstorage_init() 删掉,但还是不行,pstorage_register 分配了同一块地址(返回0x00000007)。。。导致错误,复位。。

  后来再进去,发现下面这块代码的时候出了错:

1 #define MODULE_ID_RANGE_CHECK(ID)                                                                 2         if ((((ID)->module_id) >= PSTORAGE_NUM_OF_PAGES) ||                                       3             (m_app_table[(ID)->module_id].cb == NULL))                                            4         {                                                                                         5             return NRF_ERROR_INVALID_PARAM;                                                       6         }

哦,原来是 PSTORAGE_NUM_OF_PAGES 这个宏的问题,原来是1,OK ,改成2 ,问题完美解决。。。

#define PSTORAGE_NUM_OF_PAGES       2// 1

。。。

时间: 2024-10-21 20:55:48

nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突的相关文章

三种iOS应用程序用户数据存储方法

本文通过偏好设置,plist文件,归档解档三种方法来演示iOS应用程序用户数据存储机制. 首先,我们创建一个Person类,并定义三个成员属性,用来存储数据 @property (nonatomic,copy) NSString *name; @property (nonatomic,assign)NSInteger age; @property (nonatomic,assign)BOOL isTrue; 一.通过偏好设置 1.通过偏好设置存储数据 //获取偏好设置的对象 NSUserDefa

华为网盘停止用户数据存储

5月3日消息,继金山快盘.新浪微盘等多家网盘停止存储服务后,华为网盘今日也宣布停止用户数据存储分享服务. 华为网盘发布公告称,为配合国家有关部门积极开展网盘涉黄.涉盗版内容的清查工作,即日起停止用户数据存储分享服务,所有用户数据将保留到2016年6月30日止.2016年7月1日起,DBank华为网盘免费永久空间资格将被终止,付费服务将根据套餐剩余时间进行退款,必于2017年1月1日之前通过客服渠道进行申请,2017年1月1日起,DBank华为网盘将全面停止客服咨询.退费等工作. 不过华为方面表示

CR开发笔记-6用户数据存储

仍然是贴代码 using UnityEngine; using System.Collections; public class DateControl : MonoBehaviour { public static string Name; public static int Num; bool JBstart; float fullWidth; float fullHeight; Rect fullScreen; //窗口 Rect NameText; Rect GoBtn; Rect po

NRF51822配对绑定要点

NRF51822配对绑定要点: 当手机发来配对请求,协议栈触发事件 BLE_GAP_EVT_SEC_PARAMS_REQUEST,将事件传送到设备管理器事件处理函数中: dm_ble_evt_handler() 该事件处理函数在ble_evt_dispatch()中注册. 在对该事件的处理中,需要调用回复API回复配对参数 sd_ble_gap_sec_params_replysd_ble_gap_sec_params_repl 的第三个参数g_pair_params参数就是要回复的配对绑定参数

关于如何保证用户唯一性的一点想法

今天在网上看了会资料关于如何保证用户的唯一性   我感觉可以这么来  将用户存入到session中  并在数据库中设置一个字段用来区分用户登陆与否   当用户发送请求的时候从数据库判断当前用户是否登陆   如果已经登陆 就看是不是同一台机器登陆   是的话就显示已经登陆过了   不是同一台机器就将session的记录清除然后在将用户重新保存到session中(次方法不知道对不对   没验证)

再烧7亿 嘀嘀就能保证用户不变心?

打车应用自2012年下半年发布以来,惨烈的竞争就从未停止.而当滴滴打车和快的打车迅速找到"金主"腾讯和阿里后,开始垄断市场,其他打车应用迅速销声匿迹.在一年多的时间中,滴滴打车和快的打车这两大巨头展开你死我活的竞争,烧掉20亿左右人民币!结果虽然谁也没能奈何谁,但烧钱拼市场的模式却已经固定下来. 近日,滴滴打车宣布获得超过7亿美元融资,由国际知名投资机构淡马锡.国际投资集团DST.中国互联网领袖企业腾讯主导投资.滴滴表示,本轮融资意味着中国移动互联网领域最大的一笔投资诞生.从另一方面来

SharePoint 2010 升级到2013时 保证用户能够连接但不能修改正升级的数据

SharePoint 2010 升级到2013时 保证用户能够连接但不能修改正升级的数据 我总结的步骤 红色请注意他们的意义. 步骤1:连接到SQL DBS 上的SharePoint 2010数据库的内容. 步骤2:设置SharePoint内容数据库的只读状态为True. 步骤3:把SharePoint 2010内容数据库备份文件恢复到SharePoint 2013场. 步骤4:SharePoint内容数据库的只读状态设置为False(读写). 步骤5:分离SharePoint 2010内容数据

如何保证用户登陆时提交密码已经加密

如何保证用户登陆时提交密码已经加密?密码是否已加密,需要客户端和服务端建立约定,双方按约定办事就行了. 这里提到的另一个问题是,如何保证传输安全?最理想的方案当然是走 HTTPS 协议. HTTPS 在理论上是可靠的,但在国内会打一些折扣:你可以随便找一台电脑看看有没有安装商业公司或机构的根证书,这些根证书为线路某节点成为中间人提供了可能性:同时,在木马横行的年代,密码在加密提交前可能就被拿到了,此时 HTTPS 成了摆设,这是为什么国内流行密码控件的一个重要原因. 从成本和需求上考虑,对于众多

[Java][activiti]同步或者重构activiti identify用户数据的方法

同步或者重构Activiti Identify用户数据的多种方案比较 相信每个涉及到用户的系统都有一套用户权限管理平台或者模块,用来维护用户以及在系统内的功能.数据权限,我们使用的Activiti工作流引擎配套设计了包括User.Group的Identify模块,怎么和业务数据同步呢,这个问题是每个新人必问的问题之一,下面介绍几种同步方案,最后总结比较. 如果你在考虑直接使用Activiti引擎的Identify模块作为系统的用户数据管理模块,您真是奇才-开个玩笑 方案一:调用IdentifyS