Lines Matching refs:cfg

239 static void sc_store(struct gatt_sc_cfg *cfg)  in sc_store()  argument
244 if (cfg->id) { in sc_store()
247 u8_to_dec(id_str, sizeof(id_str), cfg->id); in sc_store()
249 &cfg->peer, id_str); in sc_store()
252 &cfg->peer, NULL); in sc_store()
255 err = settings_save_one(key, (char *)&cfg->data, sizeof(cfg->data)); in sc_store()
262 bt_addr_le_str(&cfg->peer), log_strdup(key), cfg->data.start, in sc_store()
263 cfg->data.end); in sc_store()
266 static void clear_sc_cfg(struct gatt_sc_cfg *cfg) in clear_sc_cfg() argument
268 memset(cfg, 0, sizeof(*cfg)); in clear_sc_cfg()
274 struct gatt_sc_cfg *cfg; in bt_gatt_clear_sc() local
276 cfg = find_sc_cfg(id, (bt_addr_le_t *)addr); in bt_gatt_clear_sc()
277 if (!cfg) { in bt_gatt_clear_sc()
285 if (cfg->id) { in bt_gatt_clear_sc()
288 u8_to_dec(id_str, sizeof(id_str), cfg->id); in bt_gatt_clear_sc()
290 &cfg->peer, id_str); in bt_gatt_clear_sc()
293 &cfg->peer, NULL); in bt_gatt_clear_sc()
301 bt_addr_le_str(&cfg->peer), in bt_gatt_clear_sc()
306 clear_sc_cfg(cfg); in bt_gatt_clear_sc()
321 struct gatt_sc_cfg *cfg; in sc_clear() local
323 cfg = find_sc_cfg(conn->id, &conn->le.dst); in sc_clear()
324 if (cfg) { in sc_clear()
325 clear_sc_cfg(cfg); in sc_clear()
330 static void sc_reset(struct gatt_sc_cfg *cfg) in sc_reset() argument
332 BT_DBG("peer %s", bt_addr_le_str(&cfg->peer)); in sc_reset()
334 memset(&cfg->data, 0, sizeof(cfg->data)); in sc_reset()
337 sc_store(cfg); in sc_reset()
366 struct gatt_sc_cfg *cfg; in sc_save() local
372 cfg = find_sc_cfg(id, peer); in sc_save()
373 if (!cfg) { in sc_save()
375 cfg = find_sc_cfg(BT_ID_DEFAULT, BT_ADDR_LE_ANY); in sc_save()
376 if (!cfg) { in sc_save()
381 cfg->id = id; in sc_save()
382 bt_addr_le_copy(&cfg->peer, peer); in sc_save()
386 if (!(cfg->data.start || cfg->data.end)) { in sc_save()
387 cfg->data.start = start; in sc_save()
388 cfg->data.end = end; in sc_save()
393 modified = update_range(&cfg->data.start, &cfg->data.end, start, end); in sc_save()
397 modified && bt_addr_le_is_bonded(cfg->id, &cfg->peer)) { in sc_save()
398 sc_store(cfg); in sc_save()
455 static void clear_cf_cfg(struct gatt_cf_cfg *cfg) in clear_cf_cfg() argument
457 bt_addr_le_copy(&cfg->peer, BT_ADDR_LE_ANY); in clear_cf_cfg()
458 memset(cfg->data, 0, sizeof(cfg->data)); in clear_cf_cfg()
459 atomic_set(cfg->flags, 0); in clear_cf_cfg()
468 struct gatt_cf_cfg *cfg = &cf_cfg[i]; in find_cf_cfg() local
471 if (!bt_addr_le_cmp(&cfg->peer, BT_ADDR_LE_ANY)) { in find_cf_cfg()
472 return cfg; in find_cf_cfg()
474 } else if (bt_conn_is_peer_addr_le(conn, cfg->id, &cfg->peer)) { in find_cf_cfg()
475 return cfg; in find_cf_cfg()
485 struct gatt_cf_cfg *cfg; in cf_read() local
488 cfg = find_cf_cfg(conn); in cf_read()
489 if (cfg) { in cf_read()
490 memcpy(data, cfg->data, sizeof(data)); in cf_read()
497 static bool cf_set_value(struct gatt_cf_cfg *cfg, const u8_t *value, u16_t len) in cf_set_value() argument
505 u8_t chg_bits = value[i] ^ cfg->data[i]; in cf_set_value()
511 (BIT(bit) & cfg->data[i])) { in cf_set_value()
519 cfg->data[i] |= value[i] & (BIT(last_bit + 1) - 1); in cf_set_value()
520 BT_DBG("byte %u: data 0x%02x value 0x%02x", i, cfg->data[i], in cf_set_value()
530 struct gatt_cf_cfg *cfg; in cf_write() local
533 if (offset > sizeof(cfg->data)) { in cf_write()
537 if (offset + len > sizeof(cfg->data)) { in cf_write()
541 cfg = find_cf_cfg(conn); in cf_write()
542 if (!cfg) { in cf_write()
543 cfg = find_cf_cfg(NULL); in cf_write()
546 if (!cfg) { in cf_write()
553 if (!cf_set_value(cfg, value, len)) { in cf_write()
557 bt_addr_le_copy(&cfg->peer, &conn->le.dst); in cf_write()
558 cfg->id = conn->id; in cf_write()
559 atomic_set_bit(cfg->flags, CF_CHANGE_AWARE); in cf_write()
732 struct gatt_cf_cfg *cfg; in remove_cf_cfg() local
734 cfg = find_cf_cfg(conn); in remove_cf_cfg()
735 if (!cfg) { in remove_cf_cfg()
746 clear_cf_cfg(cfg); in remove_cf_cfg()
749 bt_addr_le_copy(&cfg->peer, &conn->le.dst); in remove_cf_cfg()
750 atomic_clear_bit(cfg->flags, CF_OUT_OF_SYNC); in remove_cf_cfg()
904 struct gatt_cf_cfg *cfg; in sc_indicate_rsp() local
923 cfg = find_cf_cfg(conn); in sc_indicate_rsp()
924 if (cfg && CF_ROBUST_CACHING(cfg)) { in sc_indicate_rsp()
925 atomic_set_bit(cfg->flags, CF_CHANGE_AWARE); in sc_indicate_rsp()
926 BT_DBG("%s change-aware", bt_addr_le_str(&cfg->peer)); in sc_indicate_rsp()
1098 struct gatt_cf_cfg *cfg = &cf_cfg[i]; in db_changed() local
1100 if (!bt_addr_le_cmp(&cfg->peer, BT_ADDR_LE_ANY)) { in db_changed()
1104 if (CF_ROBUST_CACHING(cfg)) { in db_changed()
1110 atomic_clear_bit(cfg->flags, CF_OUT_OF_SYNC); in db_changed()
1111 if (atomic_test_and_clear_bit(cfg->flags, in db_changed()
1114 bt_addr_le_str(&cfg->peer)); in db_changed()
1479 static void clear_ccc_cfg(struct bt_gatt_ccc_cfg *cfg) in clear_ccc_cfg() argument
1481 bt_addr_le_copy(&cfg->peer, BT_ADDR_LE_ANY); in clear_ccc_cfg()
1482 cfg->id = 0U; in clear_ccc_cfg()
1483 cfg->value = 0U; in clear_ccc_cfg()
1489 for (size_t i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { in find_ccc_cfg()
1490 struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; in find_ccc_cfg() local
1493 if (bt_conn_is_peer_addr_le(conn, cfg->id, in find_ccc_cfg()
1494 &cfg->peer)) { in find_ccc_cfg()
1495 return cfg; in find_ccc_cfg()
1497 } else if (!bt_addr_le_cmp(&cfg->peer, BT_ADDR_LE_ANY)) { in find_ccc_cfg()
1498 return cfg; in find_ccc_cfg()
1510 const struct bt_gatt_ccc_cfg *cfg; in bt_gatt_attr_read_ccc() local
1513 cfg = find_ccc_cfg(conn, ccc); in bt_gatt_attr_read_ccc()
1514 if (cfg) { in bt_gatt_attr_read_ccc()
1515 value = sys_cpu_to_le16(cfg->value); in bt_gatt_attr_read_ccc()
1531 for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { in gatt_ccc_changed()
1532 if (ccc->cfg[i].value > value) { in gatt_ccc_changed()
1533 value = ccc->cfg[i].value; in gatt_ccc_changed()
1552 struct bt_gatt_ccc_cfg *cfg; in bt_gatt_attr_write_ccc() local
1569 cfg = find_ccc_cfg(conn, ccc); in bt_gatt_attr_write_ccc()
1570 if (!cfg) { in bt_gatt_attr_write_ccc()
1579 cfg = find_ccc_cfg(NULL, ccc); in bt_gatt_attr_write_ccc()
1580 if (!cfg) { in bt_gatt_attr_write_ccc()
1585 bt_addr_le_copy(&cfg->peer, &conn->le.dst); in bt_gatt_attr_write_ccc()
1586 cfg->id = conn->id; in bt_gatt_attr_write_ccc()
1603 cfg->value = value; in bt_gatt_attr_write_ccc()
1605 BT_DBG("handle 0x%04x value %u", attr->handle, cfg->value); in bt_gatt_attr_write_ccc()
1608 if (cfg->value != ccc->value) { in bt_gatt_attr_write_ccc()
1627 clear_ccc_cfg(cfg); in bt_gatt_attr_write_ccc()
1724 struct gatt_cf_cfg *cfg; in gatt_cf_notify_multi() local
1726 cfg = find_cf_cfg(conn); in gatt_cf_notify_multi()
1727 if (!cfg) { in gatt_cf_notify_multi()
1731 return CF_NOTIFY_MULTI(cfg); in gatt_cf_notify_multi()
1921 struct gatt_sc_cfg *cfg = &sc_cfg[i]; in notify_cb() local
1924 if (!bt_addr_le_cmp(&cfg->peer, BT_ADDR_LE_ANY)) { in notify_cb()
1928 conn = bt_conn_lookup_state_le(cfg->id, &cfg->peer, in notify_cb()
1934 sc_save(cfg->id, &cfg->peer, in notify_cb()
1945 for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { in notify_cb()
1946 struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; in notify_cb() local
1953 if (cfg->value != data->type) { in notify_cb()
1957 conn = bt_conn_lookup_addr_le(cfg->id, &cfg->peer); in notify_cb()
2197 struct gatt_cf_cfg *cfg; in sc_restore_rsp() local
2208 cfg = find_cf_cfg(conn); in sc_restore_rsp()
2209 if (cfg && CF_ROBUST_CACHING(cfg)) { in sc_restore_rsp()
2210 atomic_set_bit(cfg->flags, CF_CHANGE_AWARE); in sc_restore_rsp()
2211 BT_DBG("%s change-aware", bt_addr_le_str(&cfg->peer)); in sc_restore_rsp()
2220 struct gatt_sc_cfg *cfg; in sc_restore() local
2224 cfg = find_sc_cfg(conn->id, &conn->le.dst); in sc_restore()
2225 if (!cfg) { in sc_restore()
2230 if (!(cfg->data.start || cfg->data.end)) { in sc_restore()
2234 BT_DBG("peer %s start 0x%04x end 0x%04x", bt_addr_le_str(&cfg->peer), in sc_restore()
2235 cfg->data.start, cfg->data.end); in sc_restore()
2237 sc_range[0] = sys_cpu_to_le16(cfg->data.start); in sc_restore()
2238 sc_range[1] = sys_cpu_to_le16(cfg->data.end); in sc_restore()
2251 sc_reset(cfg); in sc_restore()
2274 for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { in update_ccc()
2275 struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; in update_ccc() local
2278 if (!cfg->value || in update_ccc()
2279 !bt_conn_is_peer_addr_le(conn, cfg->id, &cfg->peer)) { in update_ccc()
2344 for (i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { in disconnected_cb()
2345 struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; in disconnected_cb() local
2348 if (!cfg->value) { in disconnected_cb()
2352 if (!bt_conn_is_peer_addr_le(conn, cfg->id, &cfg->peer)) { in disconnected_cb()
2356 tmp = bt_conn_lookup_addr_le(cfg->id, &cfg->peer); in disconnected_cb()
2371 clear_ccc_cfg(cfg); in disconnected_cb()
2374 bt_addr_le_copy(&cfg->peer, &conn->le.dst); in disconnected_cb()
2431 const struct bt_gatt_ccc_cfg *cfg = &ccc->cfg[i]; in bt_gatt_is_subscribed() local
2433 if (bt_conn_is_peer_addr_le(conn, cfg->id, &cfg->peer) && in bt_gatt_is_subscribed()
2434 (ccc_value & ccc->cfg[i].value)) { in bt_gatt_is_subscribed()
4088 for (size_t i = 0; i < ARRAY_SIZE(ccc->cfg); i++) { in ccc_find_cfg()
4089 if (id == ccc->cfg[i].id && in ccc_find_cfg()
4090 !bt_addr_le_cmp(&ccc->cfg[i].peer, addr)) { in ccc_find_cfg()
4091 return &ccc->cfg[i]; in ccc_find_cfg()
4113 struct bt_gatt_ccc_cfg *cfg; in ccc_clear() local
4115 cfg = ccc_find_cfg(ccc, addr, id); in ccc_clear()
4116 if (!cfg) { in ccc_clear()
4121 clear_ccc_cfg(cfg); in ccc_clear()
4128 struct bt_gatt_ccc_cfg *cfg; in ccc_load() local
4162 cfg = ccc_find_cfg(ccc, load->addr_with_id.addr, load->addr_with_id.id); in ccc_load()
4163 if (!cfg) { in ccc_load()
4164 cfg = ccc_find_cfg(ccc, BT_ADDR_LE_ANY, 0); in ccc_load()
4165 if (!cfg) { in ccc_load()
4169 bt_addr_le_copy(&cfg->peer, load->addr_with_id.addr); in ccc_load()
4170 cfg->id = load->addr_with_id.id; in ccc_load()
4173 cfg->value = load->entry->value; in ccc_load()
4337 struct gatt_cf_cfg *cfg; in bt_gatt_change_aware() local
4339 cfg = find_cf_cfg(conn); in bt_gatt_change_aware()
4340 if (!cfg || !CF_ROBUST_CACHING(cfg)) { in bt_gatt_change_aware()
4344 if (atomic_test_bit(cfg->flags, CF_CHANGE_AWARE)) { in bt_gatt_change_aware()
4363 if (atomic_test_bit(cfg->flags, CF_OUT_OF_SYNC)) { in bt_gatt_change_aware()
4364 atomic_clear_bit(cfg->flags, CF_OUT_OF_SYNC); in bt_gatt_change_aware()
4365 atomic_set_bit(cfg->flags, CF_CHANGE_AWARE); in bt_gatt_change_aware()
4366 BT_DBG("%s change-aware", bt_addr_le_str(&cfg->peer)); in bt_gatt_change_aware()
4370 atomic_set_bit(cfg->flags, CF_OUT_OF_SYNC); in bt_gatt_change_aware()
4381 struct gatt_cf_cfg *cfg; in bt_gatt_store_cf() local
4387 cfg = find_cf_cfg(conn); in bt_gatt_store_cf()
4388 if (!cfg) { in bt_gatt_store_cf()
4394 str = (char *)cfg->data; in bt_gatt_store_cf()
4395 len = sizeof(cfg->data); in bt_gatt_store_cf()
4406 if (!cfg || !conn->id) { in bt_gatt_store_cf()
4480 struct bt_gatt_ccc_cfg *cfg; in ccc_save() local
4490 cfg = ccc_find_cfg(ccc, save->addr_with_id.addr, save->addr_with_id.id); in ccc_save()
4491 if (!cfg) { in ccc_save()
4496 cfg->value); in ccc_save()
4499 save->store[save->count].value = cfg->value; in ccc_save()
4561 struct gatt_sc_cfg *cfg; in sc_set() local
4587 cfg = find_sc_cfg(id, &addr); in sc_set()
4588 if (!cfg && len_rd) { in sc_set()
4590 cfg = find_sc_cfg(BT_ID_DEFAULT, BT_ADDR_LE_ANY); in sc_set()
4591 if (!cfg) { in sc_set()
4596 cfg->id = id; in sc_set()
4597 bt_addr_le_copy(&cfg->peer, &addr); in sc_set()
4601 len = read_cb(cb_arg, &cfg->data, sizeof(cfg->data)); in sc_set()
4610 } else if (cfg) { in sc_set()
4612 memset(cfg, 0, sizeof(*cfg)); in sc_set()
4639 struct gatt_cf_cfg *cfg; in cf_set() local
4665 cfg = find_cf_cfg_by_addr(id, &addr); in cf_set()
4666 if (!cfg) { in cf_set()
4667 cfg = find_cf_cfg(NULL); in cf_set()
4668 if (!cfg) { in cf_set()
4673 cfg->id = id; in cf_set()
4674 bt_addr_le_copy(&cfg->peer, &addr); in cf_set()
4678 len = read_cb(cb_arg, cfg->data, sizeof(cfg->data)); in cf_set()
4686 clear_cf_cfg(cfg); in cf_set()
4780 struct bt_gatt_ccc_cfg *cfg; in remove_peer_from_attr() local
4790 cfg = ccc_find_cfg(ccc, addr_with_id->addr, addr_with_id->id); in remove_peer_from_attr()
4791 if (cfg) { in remove_peer_from_attr()
4792 memset(cfg, 0, sizeof(*cfg)); in remove_peer_from_attr()
4830 struct gatt_cf_cfg *cfg; in bt_gatt_clear_cf() local
4832 cfg = find_cf_cfg_by_addr(id, addr); in bt_gatt_clear_cf()
4833 if (cfg) { in bt_gatt_clear_cf()
4834 clear_cf_cfg(cfg); in bt_gatt_clear_cf()