Lines Matching refs:att
103 struct bt_att *att; member
133 #define k_mem_slab_alloc_att(att) k_mem_slab_alloc(att_slab, att, CONFIG_BT_MAX_CONN) argument
198 err = bt_smp_sign(chan->att->conn, buf); in chan_send()
206 return bt_l2cap_send_cb(chan->att->conn, BT_L2CAP_CID_ATT, buf, in chan_send()
213 struct bt_att *att = chan->att; in bt_att_sent() local
222 while ((buf = net_buf_get(&att->tx_queue, K_NO_WAIT))) { in bt_att_sent()
232 k_queue_prepend(&att->tx_queue._queue, buf); in bt_att_sent()
320 return (chan->att->conn->state != BT_CONN_CONNECTED || in att_chan_is_connected()
376 struct bt_conn *conn = chan->att->conn; in att_mtu_req()
469 static void att_process(struct bt_att *att) in att_process() argument
475 node = sys_slist_get(&att->reqs); in att_process()
482 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->chans, chan, tmp, node) { in att_process()
492 sys_slist_prepend(&att->reqs, node); in att_process()
535 att_process(chan->att); in att_handle_rsp()
537 func(chan->att->conn, err, pdu, len, params); in att_handle_rsp()
1580 if (!bt_gatt_change_aware(chan->att->conn, req ? true : false)) { in att_write_rsp()
1598 data.conn = chan->att->conn; in att_write_rsp()
1728 net_buf_put(&chan->att->prep_queue, data.buf); in att_prep_write_rsp()
1774 while ((buf = net_buf_get(&chan->att->prep_queue, K_NO_WAIT))) { in att_exec_write_rsp()
2071 bt_gatt_notification(chan->att->conn, handle, buf->data, buf->len); in att_notify()
2084 bt_gatt_notification(chan->att->conn, handle, buf->data, buf->len); in att_indicate()
2100 bt_gatt_mult_notification(chan->att->conn, buf->data, buf->len); in att_notify_mult()
2387 return att_chan->att; in att_get()
2392 struct bt_att *att; in bt_att_create_pdu() local
2395 att = att_get(conn); in bt_att_create_pdu()
2396 if (!att) { in bt_att_create_pdu()
2400 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->chans, chan, tmp, node) { in bt_att_create_pdu()
2413 static void att_reset(struct bt_att *att) in att_reset() argument
2420 while ((buf = k_fifo_get(&att->prep_queue, K_NO_WAIT))) { in att_reset()
2425 while ((buf = k_fifo_get(&att->tx_queue, K_NO_WAIT))) { in att_reset()
2429 att->conn = NULL; in att_reset()
2432 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->reqs, req, tmp, node) { in att_reset()
2442 att->used = 0; in att_reset()
2443 att = NULL; in att_reset()
2452 sys_slist_find_and_remove(&chan->att->chans, &chan->node); in att_chan_detach()
2464 chan->att = NULL; in att_chan_detach()
2471 struct bt_att *att = chan->att; in att_timeout() local
2487 if (!sys_slist_is_empty(&att->chans)) { in att_timeout()
2491 att_reset(att); in att_timeout()
2508 static void att_chan_attach(struct bt_att *att, struct bt_att_chan *chan) in att_chan_attach() argument
2510 BT_DBG("att %p chan %p flags %u", att, chan, atomic_get(chan->flags)); in att_chan_attach()
2512 if (sys_slist_is_empty(&att->chans)) { in att_chan_attach()
2514 k_fifo_init(&att->tx_queue); in att_chan_attach()
2516 k_fifo_init(&att->prep_queue); in att_chan_attach()
2520 sys_slist_prepend(&att->chans, &chan->node); in att_chan_attach()
2526 struct bt_att *att = att_chan->att; in bt_att_connected() local
2533 att_chan_attach(att, att_chan); in bt_att_connected()
2546 struct bt_att *att = att_chan->att; in bt_att_disconnected() local
2554 if (!sys_slist_is_empty(&att->chans)) { in bt_att_disconnected()
2558 att_reset(att); in bt_att_disconnected()
2620 node = sys_slist_get(&chan->att->reqs); in bt_att_status()
2630 sys_slist_prepend(&chan->att->reqs, node); in bt_att_status()
2645 static struct bt_att_chan *att_chan_new(struct bt_att *att, atomic_val_t flags) in att_chan_new() argument
2661 SYS_SLIST_FOR_EACH_CONTAINER(&att->chans, chan, node) { in att_chan_new()
2662 if (chan->att == att) { in att_chan_new()
2678 BT_ERR("No available ATT channel for conn %p", att->conn); in att_chan_new()
2686 chan->att = att; in att_chan_new()
2693 struct bt_att *att = NULL; in bt_att_accept() local
2704 k_mem_slab_alloc_att(att); in bt_att_accept()
2705 if (!att) { in bt_att_accept()
2709 att->conn = conn; in bt_att_accept()
2710 sys_slist_init(&att->reqs); in bt_att_accept()
2711 sys_slist_init(&att->chans); in bt_att_accept()
2713 chan = att_chan_new(att, 0); in bt_att_accept()
2729 struct bt_att *att = att_chan->att; in bt_eatt_connect() local
2738 att_chan = att_chan_new(att, BIT(ATT_ENHANCED)); in bt_eatt_connect()
2757 struct bt_att *att = chan->att; in bt_eatt_disconnect() local
2764 SYS_SLIST_FOR_EACH_CONTAINER(&att->chans, chan, node) { in bt_eatt_disconnect()
2778 struct bt_att *att = att_chan->att; in bt_eatt_accept() local
2782 att_chan = att_chan_new(att, BIT(ATT_ENHANCED)); in bt_eatt_accept()
2827 struct bt_att *att; in bt_att_get_mtu() local
2830 att = att_get(conn); in bt_att_get_mtu()
2831 if (!att) { in bt_att_get_mtu()
2835 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->chans, chan, tmp, node) { in bt_att_get_mtu()
2868 struct bt_att *att; in bt_att_send() local
2874 att = att_get(conn); in bt_att_send()
2875 if (!att) { in bt_att_send()
2890 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->chans, chan, tmp, node) { in bt_att_send()
2900 k_fifo_put(&att->tx_queue, buf); in bt_att_send()
2908 struct bt_att *att; in bt_att_req_send() local
2916 att = att_get(conn); in bt_att_req_send()
2917 if (!att) { in bt_att_req_send()
2923 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->chans, chan, tmp, node) { in bt_att_req_send()
2936 sys_slist_append(&att->reqs, &req->node); in bt_att_req_send()
2959 struct bt_att *att; in bt_att_req_cancel() local
2968 att = att_get(conn); in bt_att_req_cancel()
2969 if (!att) { in bt_att_req_cancel()
2973 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->chans, chan, tmp, node) { in bt_att_req_cancel()
2981 sys_slist_find_and_remove(&att->reqs, &req->node); in bt_att_req_cancel()