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

最近的一个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)。。。导致错误,复位。。

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

 #define MODULE_ID_RANGE_CHECK(ID)                                                                 \
if ((((ID)->module_id) >= PSTORAGE_NUM_OF_PAGES) || \
(m_app_table[(ID)->module_id].cb == NULL)) \
{ \
return NRF_ERROR_INVALID_PARAM; \
}

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

#define PSTORAGE_NUM_OF_PAGES       2//

。。。

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

  1. SQLite实现用户数据存储+Android之app:lintVitalRelease解决办法

    今日所学 SQLite实现用户数据存储 遇到的问题 界面没能显示出存在数据库中的信息 明日计划 查找界面没能显示出存在数据库中的信息的原因 报错:app:lintVitalRelease 解决办法: ...

  2. oracle中的sys用户(修改密码)/////Oracle删除表空间的同时删除数据文件 ///// Oracle中如何保证用户只有一个session登录

    oracle中的sys用户(修改密码) (2011-07-01 09:18:11) 转载▼ 标签: it 分类: oracle 概念: SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用 ...

  3. OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?

    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...

  4. Cocos Creator存储和读取用户数据--官方文档

    存储数据 cc.sys.localStorage.setItem(key, value) 上面的方法需要两个参数,用来索引的字符串键值 key,和要保存的字符串数据 value. 假如我们要保存玩家最 ...

  5. Ruby Rails学习中:User 模型,验证用户数据

    用户建模 一. User 模型 实现用户注册功能的第一步是,创建一个数据结构,用于存取用户的信息. 在 Rails 中,数据模型的默认数据结构叫模型(model,MVC 中的 M).Rails 为解决 ...

  6. 使用python抓取婚恋网用户数据并用决策树生成自己择偶观

    最近在看<机器学习实战>的时候萌生了一个想法,自己去网上爬一些数据按照书上的方法处理一下,不仅可以加深自己对书本的理解,顺便还可以在github拉拉人气.刚好在看决策树这一章,书里面的理论 ...

  7. 微信小程序之用户数据解密(七)

    [未经作者本人同意,请勿以任何形式转载] 经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程: 加密过程微信服务器完成,解密过程在小程序和自身服务器完成, ...

  8. C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据

    我曾经在系列文章中的<C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍>中介绍了微信菜单里面的重定向操作,通过这个重定向操作,我们可以获取一个code值,然后获取用户的open ...

  9. SQL Server 2016五大优势挖掘企业用户数据价值

    SQL Server 2016五大优势挖掘企业用户数据价值 转载自:http://soft.zdnet.com.cn/software_zone/2016/0318/3074442.shtml 3月1 ...

随机推荐

  1. postgreSQL 备份+还原多张表

    -U表示用户 -h表示主机 -p表示端口号 -t表示表名 -f表示备份后的sql文件的名字 -d表示要恢复数据库名 一.打开cmd 进入postgresql安装路径下的bin文件夹,以我的为例: cd ...

  2. Fiddler-在fiddlerscript中修改某个请求的请求头内容

    1.进入  OnBeforeRequest函数 在里面添加如下代码 if(oSession.fullUrl.Contains("url")){// //headers中添加测试参数 ...

  3. Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)

    Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...

  4. 【MySQL】数据库中间件Atlas

    1.介绍 Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改 ...

  5. Java知识回顾 (15) 文档注释

    说明注释允许你在程序中嵌入关于程序的信息. 你可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中,使你更加方便的记录你的程序信息. javadoc 标签 标签 描述 示例 @auth ...

  6. VUE基础回顾6

    1.ref ref可以直接访问元素,而不需要使用querySelector或者其他dom节点的原生方法. <div ref = "box"></div> 在 ...

  7. 基于webpack的前端工程化开发解决方案探索(三):webpack-dev-server

    前两篇中我们使用webpack完成了静态资源(css/js/img)等自动写入HTML模板中,同时还可以为静态资源添加hash版本号,既满足了我们对于静态资源的打包要求,同时又无需开发人员介入打包过程 ...

  8. Windows下安装Scipy和Numpy失败的解决方案

    使用 pip 安装 Scipy 库时,经常会遇到安装失败的问题 pip install numpy pip install scipy 后来网上搜寻了一番才得以解决.scipy 库需要依赖 numpy ...

  9. Python入门篇-StringIO和BytesIO

    Python入门篇-StringIO和BytesIO 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.StringIO(用于文本处理) 1>.使用案例 #!/usr/bin ...

  10. 使用scrapy框架爬取全书网书籍信息。

    爬取的内容:书籍名称,作者名称,书籍简介,全书网5041页,写入mysql数据库和.txt文件 1,创建scrapy项目 scrapy startproject numberone 2,创建爬虫主程序 ...