找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 18902|回复: 26

[QCC3系列] QCC BLE 开启广播之后 用lightblue 老是连接不上 请问哪位大神...

[复制链接]
连续签到天数:1天
签到总天数:154天
签到总奖励:1016金币
发表于 2018-11-29 22:43:00 | 显示全部楼层 |阅读模式
1      BLE 初始化: 添加如下: /* Initialise GAP */
  1.     sinkBleGapInitialise();
  2.     ConnectionDmBleConfigureLocalAddressReq(ble_local_addr_generate_resolvable, NULL);/*  配置用于BLE连接的本地设备地址*/
复制代码

2  设置广播参数  :修改如下:
  1. void sinkBleSetAdvertisingParamsDefault(uint16 adv_interval_min, uint16 adv_interval_max)
  2. {
  3.     ble_adv_params_t params;

  4.     params.undirect_adv.adv_interval_min = adv_interval_min;
  5.     params.undirect_adv.adv_interval_max = adv_interval_max;
  6.     params.undirect_adv.filter_policy = ble_filter_none;

  7.     BLE_INFO(("Set BLE Default Advertising Params\n"));

  8.     ConnectionDmBleSetAdvertisingParamsReq(ble_adv_ind, FALSE, BLE_ADV_CHANNEL_ALL, ¶ms);
  9. }

  10. ConnectionDmBleSetAdvertisingParamsReq(ble_adv_ind, FALSE, BLE_ADV_CHANNEL_ALL, ¶ms);   // FALSE 改为TURE
复制代码

3  初始化上电完成后广播:  
   
  1. case ble_gap_event_power_on:        {
  2.             /*On bootup, start whitelist scan/adverts only if LE device available in paired device list*/
  3.          /*   if(ConnectionDmBleCheckTdlDeviceAvailable())*/
  4.             {
  5.                 /* Move to scanning and advertising state */
  6.                 sinkBleSetGapState(ble_gap_state_scanning_advertising); /*开启广播*/
  7.                 /* This will trigger scanning and advertising */
  8.                 sinkBleCheckNoConnectionsEvent();
  9.             }
复制代码
4   广播完成之后读取本地蓝牙名称之后设置广播数据: 无修改
  1. void sinkBleGapReadLocalNameComplete(CL_DM_LOCAL_NAME_COMPLETE_T * cfm)
  2. {      
  3.     BLE_GAP_INFO(("CL_DM_LOCAL_NAME_COMPLETE\n"));

  4.     if (cfm->status != success)
  5.     {
  6.         BLE_GAP_ERROR(("  Failed!\n"));
  7.     }

  8.     if (GAP.name_read & ble_gap_read_name_gap_server)
  9.     {
  10.         /* Use local name to respond as GAP server */
  11.         BLE_GAP_INFO(("    Gap server response\n"));
  12.         sinkGattGapServerSendLocalNameResponse(cfm);
  13.     }
  14.     if (GAP.name_read & ble_gap_read_name_advertising)
  15.     {
  16.         /* Use local name to setup advertising data */
  17.         BLE_GAP_INFO(("    Set advertising data bondable=[%u]\n", sinkBleGetGapState() == ble_gap_state_bondable_scanning_advertising ? TRUE : FALSE));
  18.         bleSetupAdvertisingData(cfm->size_local_name,
  19.                                 cfm->local_name,
  20.                                 sinkBleGetGapState() == ble_gap_state_bondable_scanning_advertising ? adv_discoverable_mode_limited : adv_non_discoverable_mode);
  21.     }

  22.     GAP.name_read = 0;
  23. }
复制代码
5  广播完成之后 用lightblue 连接  总是断开 最后跟踪发现不是绑定设备所以就会断开 所以修改如下: 屏蔽非绑定设备的判断处理
  1. bool gattServerConnectionAdd(uint16 cid, const typed_bdaddr *client_taddr)
  2. {
  3.     sink_attributes attributes;
  4.     typed_bdaddr public_taddr;
  5.     uint16 index;
  6.     bool is_bonded_device = sinkBleCheckBdAddrtIsBonded(client_taddr, &public_taddr);

  7.     if(is_bonded_device)
  8.     {
  9.         /* If we are trying to connect already bonded device in bondable
  10.          * state, then we should be in proper state to allow the connection
  11.          */
  12.         if(!sinkBleGapIsConnectable())
  13.             return FALSE;
  14.     }
  15.     #if 0 /*屏蔽掉设备绑定*/
  16.     else
  17.     {
  18.         /* If the user has requested for bonding, and also the device is still in connectable state
  19.          * only then we should allow non-bonded device to connect */
  20.         if(!sinkBleGapIsBondable() || !sinkBleGapIsConnectable())
  21.         {
  22.             /* A non-bonded device is trying to connect, dont allow it */
  23.             return FALSE;
  24.         }
  25.     }
  26.    #endif
  27.     /* So, we are in connectable state, now check if we still have slot for connection
  28.      * in peripheral role */
  29.     if(gattCommonAddConnections(cid, ble_gap_role_peripheral))
  30.     {
  31.         index = gattCommonConnectionFindByCid(cid);

  32.         /* Set client service configuration to default value */
  33.         memset(&GATT_SERVER.client_config, 0, sizeof(gatt_ccd_attributes_t));

  34.         if (is_bonded_device)
  35.         {
  36.             /* Restore client configuration from PS */
  37.             deviceManagerClearAttributes(&attributes);
  38.             if (deviceManagerGetAttributes(&attributes, &public_taddr.addr))
  39.             {
  40.                 GATT_SERVER.client_config = attributes.gatt_client;
  41.                 GATT_SERVER_DEBUG(("GATT Client: Read client config addr[%x:%x:%lx] config_gatt[0x%x] config_batt_l[0x%x] config_batt_r[0x%x] config_batt_p[0x%x]\n",
  42.                                    public_taddr.addr.nap,
  43.                                    public_taddr.addr.uap,
  44.                                    public_taddr.addr.lap,
  45.                                    GATT_SERVER.client_config.gatt,
  46.                                    GATT_SERVER.client_config.battery_local,
  47.                                    GATT_SERVER.client_config.battery_remote,
  48.                                    GATT_SERVER.client_config.battery_peer
  49.                                    ));
  50.             }
  51.         }

  52.         /* check for repeated updates */
  53.         if( LOCAL_UPDATE_REQD(GATT_SERVER) ||
  54.             REMOTE_UPDATE_REQD(GATT_SERVER) ||
  55.             PEER_UPDATE_REQD(GATT_SERVER) )
  56.         {
  57.             MessageCancelFirst( sinkGetBleTask(), BLE_INTERNAL_MESSAGE_BATTERY_READ_TIMER );
  58.             MessageSend( sinkGetBleTask(), BLE_INTERNAL_MESSAGE_BATTERY_READ_TIMER, 0 );
  59.         }

  60.         return TRUE;
  61.     }
  62.     return FALSE;
  63. }
复制代码
之后搜索还是不能连接  请问下大神们我哪里出问题了   求助 我已经搞了几天了!!!!!






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:2天
签到总天数:2314天
签到总奖励:64346金币
发表于 2018-11-30 08:49:38 | 显示全部楼层
300x的话只要这样改应该是OK的
/*if(ConnectionDmBleCheckTdlDeviceAvailable())*/
屏蔽非绑定设备的判断,直接返回true
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1942天
签到总奖励:29202金币
发表于 2018-11-30 10:32:24 | 显示全部楼层
我们qcc 3008 开启BLE 后也是有时可以连接,有时连接不上,不知问题出在哪儿?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:154天
签到总奖励:1016金币
 楼主| 发表于 2018-11-30 11:15:19 | 显示全部楼层
mupro 发表于 2018-11-30 08:49
300x的话只要这样改应该是OK的
/*if(ConnectionDmBleCheckTdlDeviceAvailable())*/
屏蔽非绑定设备的判断 ...

就直接屏蔽掉这句么??? 那你的返回TRUE 在哪返回啊? 谢谢!!!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:154天
签到总奖励:1016金币
 楼主| 发表于 2018-11-30 11:19:19 | 显示全部楼层
xingdongxm 发表于 2018-11-30 10:32
我们qcc 3008 开启BLE 后也是有时可以连接,有时连接不上,不知问题出在哪儿?

我是直接连接不上  
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:154天
签到总奖励:1016金币
 楼主| 发表于 2018-11-30 11:19:51 | 显示全部楼层
xingdongxm 发表于 2018-11-30 10:32
我们qcc 3008 开启BLE 后也是有时可以连接,有时连接不上,不知问题出在哪儿?

我是直接连接不上
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:154天
签到总奖励:1016金币
 楼主| 发表于 2018-11-30 11:37:18 | 显示全部楼层
mupro 发表于 2018-11-30 08:49
300x的话只要这样改应该是OK的
/*if(ConnectionDmBleCheckTdlDeviceAvailable())*/
屏蔽非绑定设备的判断 ...

nRF connect 是可以连接上的  就是lightblue 连接不上!!!!!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:513天
签到总奖励:5055金币
发表于 2018-11-30 13:55:33 | 显示全部楼层
mark一下 学习一下
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:94天
签到总奖励:1127金币
发表于 2018-11-30 16:34:31 来自手机 | 显示全部楼层
安卓连接是有问题的    ios连接是可以的    不过默认的代码感觉太冗余     最好单独用gatt库写代码
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1942天
签到总奖励:29202金币
发表于 2018-11-30 17:09:40 | 显示全部楼层
开启ble bonding 以后,怎么关闭也是个问题,开启后在iPhone 的设置 里面看到同样名称的2个蓝牙设备
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-27 03:05 , Processed in 0.211440 second(s), 21 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表