zephyr/subsys/bluetooth/host/hci_common.c

53 lines
1.0 KiB
C

/*
* Copyright (c) 2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdint.h>
#include <sys/byteorder.h>
#include <drivers/bluetooth/hci_driver.h>
struct net_buf *bt_hci_evt_create(uint8_t evt, uint8_t len)
{
struct bt_hci_evt_hdr *hdr;
struct net_buf *buf;
buf = bt_buf_get_evt(evt, false, K_FOREVER);
hdr = net_buf_add(buf, sizeof(*hdr));
hdr->evt = evt;
hdr->len = len;
return buf;
}
struct net_buf *bt_hci_cmd_complete_create(uint16_t op, uint8_t plen)
{
struct net_buf *buf;
struct bt_hci_evt_cmd_complete *cc;
buf = bt_hci_evt_create(BT_HCI_EVT_CMD_COMPLETE, sizeof(*cc) + plen);
cc = net_buf_add(buf, sizeof(*cc));
cc->ncmd = 1U;
cc->opcode = sys_cpu_to_le16(op);
return buf;
}
struct net_buf *bt_hci_cmd_status_create(uint16_t op, uint8_t status)
{
struct net_buf *buf;
struct bt_hci_evt_cmd_status *cs;
buf = bt_hci_evt_create(BT_HCI_EVT_CMD_STATUS, sizeof(*cs));
cs = net_buf_add(buf, sizeof(*cs));
cs->status = status;
cs->ncmd = 1U;
cs->opcode = sys_cpu_to_le16(op);
return buf;
}