Lines Matching full:peer
36 static SLIST_HEAD(, peer) peers;
39 peer_svc_find_range(struct peer *peer, uint16_t attr_handle);
41 peer_svc_find(struct peer *peer, uint16_t svc_start_handle,
54 peer_disc_chrs(struct peer *peer);
61 static struct peer *
64 struct peer *peer; in peer_find() local
66 SLIST_FOREACH(peer, &peers, next) { in peer_find()
67 if (peer->conn_handle == conn_handle) { in peer_find()
68 return peer; in peer_find()
76 peer_disc_complete(struct peer *peer, int rc) in peer_disc_complete() argument
78 peer->disc_prev_chr_val = 0; in peer_disc_complete()
81 if (peer->disc_cb != NULL) { in peer_disc_complete()
82 peer->disc_cb(peer, rc, peer->disc_cb_arg); in peer_disc_complete()
129 peer_dsc_add(struct peer *peer, uint16_t chr_val_handle, in peer_dsc_add() argument
137 svc = peer_svc_find_range(peer, chr_val_handle); in peer_dsc_add()
180 peer_disc_dscs(struct peer *peer) in peer_disc_dscs() argument
190 SLIST_FOREACH(svc, &peer->svcs, next) { in peer_disc_dscs()
194 peer->disc_prev_chr_val <= chr->chr.def_handle) { in peer_disc_dscs()
196 rc = ble_gattc_disc_all_dscs(peer->conn_handle, in peer_disc_dscs()
199 peer_dsc_disced, peer); in peer_disc_dscs()
201 peer_disc_complete(peer, rc); in peer_disc_dscs()
204 peer->disc_prev_chr_val = chr->chr.val_handle; in peer_disc_dscs()
211 peer_disc_complete(peer, 0); in peer_disc_dscs()
219 struct peer *peer; in peer_dsc_disced() local
222 peer = arg; in peer_dsc_disced()
223 assert(peer->conn_handle == conn_handle); in peer_dsc_disced()
227 rc = peer_dsc_add(peer, chr_val_handle, dsc); in peer_dsc_disced()
234 if (peer->disc_prev_chr_val > 0) { in peer_dsc_disced()
235 peer_disc_dscs(peer); in peer_dsc_disced()
248 peer_disc_complete(peer, rc); in peer_dsc_disced()
329 peer_chr_add(struct peer *peer, uint16_t svc_start_handle, in peer_chr_add() argument
336 svc = peer_svc_find(peer, svc_start_handle, NULL); in peer_chr_add()
373 struct peer *peer; in peer_chr_disced() local
376 peer = arg; in peer_chr_disced()
377 assert(peer->conn_handle == conn_handle); in peer_chr_disced()
381 rc = peer_chr_add(peer, peer->cur_svc->svc.start_handle, chr); in peer_chr_disced()
388 if (peer->disc_prev_chr_val > 0) { in peer_chr_disced()
389 peer_disc_chrs(peer); in peer_chr_disced()
401 peer_disc_complete(peer, rc); in peer_chr_disced()
408 peer_disc_chrs(struct peer *peer) in peer_disc_chrs() argument
417 SLIST_FOREACH(svc, &peer->svcs, next) { in peer_disc_chrs()
419 peer->cur_svc = svc; in peer_disc_chrs()
420 rc = ble_gattc_disc_all_chrs(peer->conn_handle, in peer_disc_chrs()
423 peer_chr_disced, peer); in peer_disc_chrs()
425 peer_disc_complete(peer, rc); in peer_disc_chrs()
432 peer_disc_dscs(peer); in peer_disc_chrs()
442 peer_svc_find_prev(struct peer *peer, uint16_t svc_start_handle) in peer_svc_find_prev() argument
448 SLIST_FOREACH(svc, &peer->svcs, next) { in peer_svc_find_prev()
460 peer_svc_find(struct peer *peer, uint16_t svc_start_handle, in peer_svc_find() argument
466 prev = peer_svc_find_prev(peer, svc_start_handle); in peer_svc_find()
468 svc = SLIST_FIRST(&peer->svcs); in peer_svc_find()
484 peer_svc_find_range(struct peer *peer, uint16_t attr_handle) in peer_svc_find_range() argument
488 SLIST_FOREACH(svc, &peer->svcs, next) { in peer_svc_find_range()
500 peer_svc_find_uuid(const struct peer *peer, const ble_uuid_t *uuid) in peer_svc_find_uuid() argument
504 SLIST_FOREACH(svc, &peer->svcs, next) { in peer_svc_find_uuid()
514 peer_chr_find_uuid(const struct peer *peer, const ble_uuid_t *svc_uuid, in peer_chr_find_uuid() argument
520 svc = peer_svc_find_uuid(peer, svc_uuid); in peer_chr_find_uuid()
535 peer_dsc_find_uuid(const struct peer *peer, const ble_uuid_t *svc_uuid, in peer_dsc_find_uuid() argument
541 chr = peer_chr_find_uuid(peer, svc_uuid, chr_uuid); in peer_dsc_find_uuid()
556 peer_svc_add(struct peer *peer, const struct ble_gatt_svc *gatt_svc) in peer_svc_add() argument
561 svc = peer_svc_find(peer, gatt_svc->start_handle, &prev); in peer_svc_add()
578 SLIST_INSERT_HEAD(&peer->svcs, svc, next); in peer_svc_add()
603 struct peer *peer; in peer_svc_disced() local
606 peer = arg; in peer_svc_disced()
607 assert(peer->conn_handle == conn_handle); in peer_svc_disced()
611 rc = peer_svc_add(peer, service); in peer_svc_disced()
616 if (peer->disc_prev_chr_val > 0) { in peer_svc_disced()
617 peer_disc_chrs(peer); in peer_svc_disced()
629 peer_disc_complete(peer, rc); in peer_svc_disced()
640 struct peer *peer; in peer_disc_all() local
643 peer = peer_find(conn_handle); in peer_disc_all()
644 if (peer == NULL) { in peer_disc_all()
649 while ((svc = SLIST_FIRST(&peer->svcs)) != NULL) { in peer_disc_all()
650 SLIST_REMOVE_HEAD(&peer->svcs, next); in peer_disc_all()
654 peer->disc_prev_chr_val = 1; in peer_disc_all()
655 peer->disc_cb = disc_cb; in peer_disc_all()
656 peer->disc_cb_arg = disc_cb_arg; in peer_disc_all()
658 rc = ble_gattc_disc_all_svcs(conn_handle, peer_svc_disced, peer); in peer_disc_all()
670 struct peer *peer; in peer_delete() local
673 peer = peer_find(conn_handle); in peer_delete()
674 if (peer == NULL) { in peer_delete()
678 SLIST_REMOVE(&peers, peer, peer, next); in peer_delete()
680 while ((svc = SLIST_FIRST(&peer->svcs)) != NULL) { in peer_delete()
681 SLIST_REMOVE_HEAD(&peer->svcs, next); in peer_delete()
685 rc = os_memblock_put(&peer_pool, peer); in peer_delete()
696 struct peer *peer; in peer_add() local
699 peer = peer_find(conn_handle); in peer_add()
700 if (peer != NULL) { in peer_add()
704 peer = os_memblock_get(&peer_pool); in peer_add()
705 if (peer == NULL) { in peer_add()
710 memset(peer, 0, sizeof *peer); in peer_add()
711 peer->conn_handle = conn_handle; in peer_add()
713 SLIST_INSERT_HEAD(&peers, peer, next); in peer_add()
743 OS_MEMPOOL_BYTES(max_peers, sizeof (struct peer))); in peer_init()
750 sizeof (struct peer), peer_mem, in peer_init()