关于git的firmware

在官网的维基上下载git上的代码(git clone https://TeeFirefly@bitbucket.org/T-Firefly/FireBLE.git)发现firmware的工程烧到板子上能广播,但是每次手机都显示timeout interrogating the peripheral.但是之前直接在官网上下载固件又没有问题?还有一个问题就是为什么lightblue上搜到firmware是1 service 但进去却有多个服务(有qpps和proxr)?

补充下,官网上直接下载出场固件的bin烧进去能正常连接,但是git上的会连接超时

本帖最后由 安安 于 2015-8-21 15:17 编辑

1.lightblue连接失败:这个是由于连接参数设置不当的原因,因为lightblue对连接参数的要求较高。查找并修改如下地方代码

///GAP Peripheral Preferred Connection Parameter - 8 octets
#define GAP_PPCP_CONN_INTV_MAX                              0x00C8
#define GAP_PPCP_CONN_INTV_MIN                              0x0064
#define GAP_PPCP_SLAVE_LATENCY                              0x0000
#define GAP_PPCP_STO_MULT 

将GAP_PPCP_CONN_INTV_MAX 和 GAP_PPCP_CONN_INTV_MIN两个参数改小

#define GAP_PPCP_CONN_INTV_MAX                              0x0012
#define GAP_PPCP_CONN_INTV_MIN                              0x0008

2.只发现一个服务:这个可以自己去看一下广播设置函数,在广播响应函数中是会把包含的服务都发送出去的。而由于开启了 BLE_QPP_SERVER服务,广播到此服务UUID后就直接return了,所以会造成只有一个服务。你可以尝试修改把所有服务都显示出来。

#if BLE_QPP_SERVER
    if (srv_flag & BLE_QPPS_SERVER_BIT)
    {
        app_env.scanrsp_data[0] = ATT_UUID_128_LEN + 1;
        app_env.scanrsp_data[1] = GAP_AD_TYPE_MORE_128_BIT_UUID;
        memcpy(app_env.scanrsp_data + 2, QPP_SVC_PRIVATE_UUID, ATT_UUID_128_LEN);
        return (ATT_UUID_128_LEN + 2);
    }
#endif

搞定啦,谢谢大神:lol