mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
104 lines
3.8 KiB
C
104 lines
3.8 KiB
C
/*
|
|
* Basic functionality for Bluetooth Host Controller Interface Layer.
|
|
*
|
|
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
|
*/
|
|
|
|
#include "bt_hci_common.h"
|
|
|
|
uint16_t make_cmd_set_evt_mask (uint8_t *buf, uint8_t *evt_mask)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_SET_EVT_MASK);
|
|
UINT8_TO_STREAM (buf, HCIC_PARAM_SIZE_SET_EVENT_MASK);
|
|
ARRAY_TO_STREAM(buf, evt_mask, HCIC_PARAM_SIZE_SET_EVENT_MASK);
|
|
return HCI_H4_CMD_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_EVENT_MASK;
|
|
}
|
|
|
|
uint16_t make_cmd_ble_set_scan_enable (uint8_t *buf, uint8_t scan_enable,
|
|
uint8_t filter_duplicates)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_BLE_WRITE_SCAN_ENABLE);
|
|
UINT8_TO_STREAM (buf, HCIC_PARAM_SIZE_BLE_WRITE_SCAN_ENABLE);
|
|
UINT8_TO_STREAM (buf, scan_enable);
|
|
UINT8_TO_STREAM (buf, filter_duplicates);
|
|
return HCI_H4_CMD_PREAMBLE_SIZE + HCIC_PARAM_SIZE_BLE_WRITE_SCAN_ENABLE;
|
|
}
|
|
|
|
uint16_t make_cmd_ble_set_scan_params (uint8_t *buf, uint8_t scan_type,
|
|
uint16_t scan_interval, uint16_t scan_window,
|
|
uint8_t own_addr_type, uint8_t filter_policy)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_BLE_WRITE_SCAN_PARAM);
|
|
UINT8_TO_STREAM (buf, HCIC_PARAM_SIZE_BLE_WRITE_SCAN_PARAM);
|
|
UINT8_TO_STREAM (buf, scan_type);
|
|
UINT16_TO_STREAM (buf, scan_interval);
|
|
UINT16_TO_STREAM (buf, scan_window);
|
|
UINT8_TO_STREAM (buf, own_addr_type);
|
|
UINT8_TO_STREAM (buf, filter_policy);
|
|
return HCI_H4_CMD_PREAMBLE_SIZE + HCIC_PARAM_SIZE_BLE_WRITE_SCAN_PARAM;
|
|
}
|
|
|
|
uint16_t make_cmd_ble_set_adv_enable (uint8_t *buf, uint8_t adv_enable)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_BLE_WRITE_ADV_ENABLE);
|
|
UINT8_TO_STREAM (buf, HCIC_PARAM_SIZE_WRITE_ADV_ENABLE);
|
|
UINT8_TO_STREAM (buf, adv_enable);
|
|
return HCI_H4_CMD_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_ADV_ENABLE;
|
|
}
|
|
|
|
uint16_t make_cmd_ble_set_adv_param (uint8_t *buf, uint16_t adv_int_min, uint16_t adv_int_max,
|
|
uint8_t adv_type, uint8_t addr_type_own,
|
|
uint8_t addr_type_dir, bd_addr_t direct_bda,
|
|
uint8_t channel_map, uint8_t adv_filter_policy)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_BLE_WRITE_ADV_PARAMS);
|
|
UINT8_TO_STREAM (buf, HCIC_PARAM_SIZE_BLE_WRITE_ADV_PARAMS );
|
|
|
|
UINT16_TO_STREAM (buf, adv_int_min);
|
|
UINT16_TO_STREAM (buf, adv_int_max);
|
|
UINT8_TO_STREAM (buf, adv_type);
|
|
UINT8_TO_STREAM (buf, addr_type_own);
|
|
UINT8_TO_STREAM (buf, addr_type_dir);
|
|
BDADDR_TO_STREAM (buf, direct_bda);
|
|
UINT8_TO_STREAM (buf, channel_map);
|
|
UINT8_TO_STREAM (buf, adv_filter_policy);
|
|
return HCI_H4_CMD_PREAMBLE_SIZE + HCIC_PARAM_SIZE_BLE_WRITE_ADV_PARAMS;
|
|
}
|
|
|
|
uint16_t make_cmd_reset(uint8_t *buf)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_RESET);
|
|
UINT8_TO_STREAM (buf, 0);
|
|
return HCI_H4_CMD_PREAMBLE_SIZE;
|
|
}
|
|
|
|
|
|
|
|
uint16_t make_cmd_ble_set_adv_data(uint8_t *buf, uint8_t data_len, uint8_t *p_data)
|
|
{
|
|
UINT8_TO_STREAM (buf, H4_TYPE_COMMAND);
|
|
UINT16_TO_STREAM (buf, HCI_BLE_WRITE_ADV_DATA);
|
|
UINT8_TO_STREAM (buf, HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA + 1);
|
|
|
|
memset(buf, 0, HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA);
|
|
|
|
if (p_data != NULL && data_len > 0) {
|
|
if (data_len > HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA) {
|
|
data_len = HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA;
|
|
}
|
|
|
|
UINT8_TO_STREAM (buf, data_len);
|
|
|
|
ARRAY_TO_STREAM (buf, p_data, data_len);
|
|
}
|
|
return HCI_H4_CMD_PREAMBLE_SIZE + HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA + 1;
|
|
}
|