static struct net_buf *create_frag(struct bt_conn *conn, struct net_buf *buf) { struct net_buf *frag; uint16_t frag_len; frag = bt_conn_create_pdu(&frag_buf, 0); if (conn->state != BT_CONN_CONNECTED) { net_buf_unref(frag); return NULL; } frag_len = min(conn_mtu(conn), net_buf_tailroom(frag)); memcpy(net_buf_add(frag, frag_len), buf->data, frag_len); net_buf_pull(buf, frag_len); return frag; }
struct net_buf *bt_l2cap_create_pdu(struct nano_fifo *fifo) { return bt_conn_create_pdu(fifo, sizeof(struct bt_l2cap_hdr)); }
struct net_buf *bt_l2cap_create_pdu(struct net_buf_pool *pool, size_t reserve) { return bt_conn_create_pdu(pool, sizeof(struct bt_l2cap_hdr) + reserve); }