@@ -152,7 +152,7 @@ uint8_t profile_discover_process(bt_conn_t *conn,
152
152
uint8_t ret = BT_GATT_ITER_STOP;
153
153
pr_debug (LOG_MODULE_BLE, " %s-%d" , __FUNCTION__, __LINE__);
154
154
ret = BLEProfileManager::instance ()->discoverResponseProc (conn, attr, params);
155
- pr_debug (LOG_MODULE_BLE, " %s-%d" , __FUNCTION__, __LINE__);
155
+ // pr_debug(LOG_MODULE_BLE, "%s-%d", __FUNCTION__, __LINE__);
156
156
return ret;
157
157
}
158
158
@@ -239,74 +239,13 @@ void bleConnectEventHandler(bt_conn_t *conn,
239
239
p->handleConnectEvent (conn, err);
240
240
}
241
241
242
- static uint8_t ble_gatt_disconnected_cb (const struct bt_gatt_attr *attr, void *user_data)
243
- {
244
- struct bt_conn *conn = (struct bt_conn *)user_data;
245
- struct _bt_gatt_ccc *ccc;
246
- size_t i;
247
-
248
- /* Check attribute user_data must be of type struct _bt_gatt_ccc */
249
- if (attr->write != profile_gatt_attr_write_ccc) {
250
- return BT_GATT_ITER_CONTINUE;
251
- }
252
-
253
- ccc = (struct _bt_gatt_ccc *)attr->user_data ;
254
- /* If already disabled skip */
255
- if (!ccc->value ) {
256
- return BT_GATT_ITER_CONTINUE;
257
- }
258
-
259
- for (i = 0 ; i < ccc->cfg_len ; i++)
260
- {
261
- /* Ignore configurations with disabled value */
262
- if (!ccc->cfg [i].value )
263
- {
264
- continue ;
265
- }
266
-
267
- if (bt_addr_le_cmp (&conn->le .dst , &ccc->cfg [i].peer ))
268
- {
269
- struct bt_conn *tmp;
270
-
271
- /* Skip if there is another peer connected */
272
- tmp = bt_conn_lookup_addr_le (&ccc->cfg [i].peer );
273
- if (tmp) {
274
- if (tmp->state == BT_CONN_CONNECTED) {
275
- bt_conn_unref (tmp);
276
- return BT_GATT_ITER_CONTINUE;
277
- }
278
-
279
- bt_conn_unref (tmp);
280
- }
281
- } else {
282
- /* Clear value if not paired */
283
- if (!ccc->cfg [i].valid )
284
- memset (&ccc->cfg [i].value , 0 ,
285
- sizeof (ccc->cfg [i].value ));
286
- }
287
- }
288
-
289
- /* Reset value while disconnected */
290
- memset (&ccc->value , 0 , sizeof (ccc->value ));
291
-
292
- if (ccc->cfg_changed ) {
293
- ccc->cfg_changed (ccc->value );
294
- }
295
-
296
- pr_debug (LOG_MODULE_BLE, " ccc %p reseted" , ccc);
297
-
298
- return BT_GATT_ITER_CONTINUE;
299
- }
300
-
301
-
302
242
void bleDisconnectEventHandler (bt_conn_t *conn,
303
243
uint8_t reason,
304
244
void *param)
305
245
{
306
246
BLEDeviceManager* p = (BLEDeviceManager*)param;
307
247
308
248
pr_info (LOG_MODULE_BLE, " Connect lost. Reason: %d" , reason);
309
- bt_gatt_foreach_attr (0x0001 , 0xffff , ble_gatt_disconnected_cb, conn);
310
249
311
250
p->handleDisconnectEvent (conn, reason);
312
251
}
@@ -345,30 +284,13 @@ void ble_on_write_no_rsp_complete(struct bt_conn *conn, uint8_t err,
345
284
BLECharacteristicImp::writeResponseReceived (conn, err, data);
346
285
}
347
286
348
- ssize_t profile_gatt_attr_write_ccc (struct bt_conn *conn,
349
- const struct bt_gatt_attr *attr,
350
- const void *buf,
351
- uint16_t len,
352
- uint16_t offset,
353
- uint8_t flags)
287
+ void prfile_cccd_cfg_changed (void *user_data, uint16_t value)
354
288
{
355
- struct _bt_gatt_ccc *ccc = (struct _bt_gatt_ccc *)attr->user_data ;
356
- const uint16_t *data = (const uint16_t *)buf;
357
- bool cccdChanged = (ccc->value != *data);
358
- ssize_t retValue = bt_gatt_attr_write_ccc (conn, attr, buf, len, offset, flags);
359
- if (cccdChanged)
360
- {
361
- // Find characteristic and do notification
362
- const struct bt_gatt_attr *attrChrc = attr - 1 ;
363
- BLEAttribute *bleattr = (BLEAttribute *)attrChrc->user_data ;
364
- BLEAttributeType type = bleattr->type ();
365
- pr_debug (LOG_MODULE_BLE, " The Attribute type:%d" , type);
366
- if (BLETypeCharacteristic == type)
367
- {
368
- BLECharacteristicImp *blecharacteritic = (BLECharacteristicImp*)bleattr;
369
- blecharacteritic->cccdValueChanged ();
370
- }
371
- }
372
- return retValue;
289
+ if (NULL == user_data)
290
+ return ;
291
+ pr_info (LOG_MODULE_BLE, " %s-%d: ccc userdata %p" , __FUNCTION__, __LINE__, user_data);
292
+ BLECharacteristicImp *blecharacteritic = (BLECharacteristicImp *)user_data;
293
+ blecharacteritic->cccdValueChanged ();
373
294
}
374
295
296
+
0 commit comments