Discuz! Board

标题: 青风,想向你请教下,关于外设和iPhone的连接过程。 [打印本页]

作者: 沉默的暴躁    时间: 2015-11-24 14:56
标题: 青风,想向你请教下,关于外设和iPhone的连接过程。
Hi 青风 And All:
    我手上一个项目,有关ble midi(类似于ble串口通信)的,Peripheral选择的是nrf51822,Central端选择的是IOS系统。我从苹果开发社区下载了相关的规范书。但是目前不能够建立连接。PS:我的代码是在ble uart的基础上,进行的二次开发。
在ble协议栈事件中,整个连接过程会调用如下方法:
   1.响应on_ble_evt方法的BLE_GAP_EVT_CONNECTED的事件。
   2.响应ble_conn_params_on_ble_evt方法的on_connect事件,并会执行conn_params_negotiation();方法。
   3.响应ble_nus_on_ble_evt(&m_nus, p_ble_evt); 的on_connect事件。    PS:此刻是否已经建立起连接了?为何以后还会断开连接呢?
   4.on_ble_evt方法  ----- default
   5.ble_conn_params_on_ble_evt方法   on_write事件,if (    (p_evt_write->handle == m_conn_params_config.start_on_notify_cccd_handle)  //p_evt_write->handle == 0x000B  data = 0x02       &&        (p_evt_write->len == 2)    )   该判断执行失败。
   6.ble_nus_on_ble_evt方法的on_write事件,if (
        (p_evt_write->handle == p_nus->rx_handles.cccd_handle) //验证回调函数是否已经设置
        //(p_evt_write->handle == p_nus->midi_io_handles.cccd_handle) //验证回调函数是否已经设置
        &&
        (p_evt_write->len == 2)
       )  
      判断和
      if (
             (p_evt_write->handle == p_nus->rx_handles.value_handle)  //验证回调函数是否已经设置  ,the before code :     p_nus->tx_handles.value_handle   //changed by kobew
             //(p_evt_write->handle == p_nus->midi_io_handles.value_handle)
             &&
             (p_nus->data_handler != NULL)
            )
   均没有执行成功。  并且p_ble_evt->evt.gatts_evt.params.write.data[0] = 0x02   
  7. on_ble_evt 、ble_conn_params_on_ble_evt、ble_nus_on_ble_evt方法均会相继调用on_disconnect。
  8.on_ble_evt的BLE_GAP_EVT_TIMEOUT事件

请问,会调用on_write方法,是否说明这些数据是否是central端发送过来用于配对使用的呢?还是说,我在前面基础部分就有哪些关键性的东西忽略了?还望admin能指点下。或者告诉我,我应该照着哪个方向试试,可能会解决问题。谢谢。


作者: 沉默的暴躁    时间: 2015-11-24 15:48
有人说,连接请求发出后,会有一套为从设备准备的连接参数。上面的数据该不会是连接参数吧。另外,广播设备如何接收连接呀?
作者: 沉默的暴躁    时间: 2015-11-24 16:11
在接收到connect事件后,在执行conn_params_negotiation() 中。我的代码执行is_conn_params_ok方法会return false 。因为我设置max connecton interval小于0x18了。  我的文档只有告诉我最小连接间隔应该是多少,但是不知道最大应该设置为多少呢?
作者: admin    时间: 2015-11-25 12:51
沉默的暴躁 发表于 2015-11-24 16:11
在接收到connect事件后,在执行conn_params_negotiation() 中。我的代码执行is_conn_params_ok方法会return ...

问下你ios用的什么app处理的?
作者: 沉默的暴躁    时间: 2015-11-25 14:17
因为不知到你是否接触过midi,所以我没有过多的描述。IOS上light bluetooth是可以连接的。但是支持ble midi 的app发送连接,就不能连接成功。
作者: 沉默的暴躁    时间: 2015-11-25 14:32
在ble uart实验中,on_ble_evt(p_ble_evt);
    ble_conn_params_on_ble_evt(p_ble_evt);
    ble_nus_on_ble_evt(&m_nus, p_ble_evt);  这三个方法,调用顺序有规定吗?
作者: admin    时间: 2015-11-25 15:15
沉默的暴躁 发表于 2015-11-25 14:17
因为不知到你是否接触过midi,所以我没有过多的描述。IOS上light bluetooth是可以连接的。但是支持ble midi ...

苹果的识别识别码 需要把,和ibeacon里一样的
作者: 沉默的暴躁    时间: 2015-11-26 09:36
青风,有以nordic芯片为例子的中文ble 学习教程吗?好像网上TI的比较多,如果找不到,学习TI的是不是也可以啊?原理相同,也能有帮助吧?
作者: admin    时间: 2015-11-26 10:40
沉默的暴躁 发表于 2015-11-26 09:36
青风,有以nordic芯片为例子的中文ble 学习教程吗?好像网上TI的比较多,如果找不到,学习TI的是不是也可以 ...

我们产品光盘里不是有详解篇的教程么。你可以在找本蓝牙原理的书一起看。TI的就是编程方面区别比较大
作者: 沉默的暴躁    时间: 2015-11-26 16:31
我的案子中,应用层的on_write函数会被调用,但是ble_evt_t 事件参数的连接句柄是0。为什么呢?在响应协议栈事件时,已经调用过on_connect是否证明已经建立过连接了。接下来之所以会调用on_write是打算配对吗?
作者: 沉默的暴躁    时间: 2015-11-26 16:52
C:\Users\kobe\Desktop\temp.png  像这样的要求,我需要设置哪些参数呀?
作者: admin    时间: 2015-11-26 18:43
沉默的暴躁 发表于 2015-11-26 16:52
像这样的要求,我需要设置哪些参数呀?

读,写,通知,这就是和我们前面两个实验用的属性相同,LED的读写,按键通知
作者: 沉默的暴躁    时间: 2015-11-27 08:56
属性中包含了,Pairing required 。  需要配对,但这种配对应该和“两部手机配对输入同样的passkey来配对”的方式不一样吧?有以nordic芯片配对的例子吗?
作者: 沉默的暴躁    时间: 2015-11-27 10:56
青风,我的案例中,对特性的描述中,说是需要加密和写一定不要回复。请问该怎么实现?我在特性添加函数中,将BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);改成了BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(&cccd_md.read_perm);后,设备不能进入广播模式了?




欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3