2020-06-03 12:14:27 -04:00
|
|
|
/* Basic functionality for Bluetooth Host Controller Interface Layer.
|
|
|
|
|
|
|
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, this
|
|
|
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
|
|
CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "bt_hci_common.h"
|
|
|
|
|
2019-11-12 01:01:17 -05:00
|
|
|
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;
|
|
|
|
}
|
2020-06-03 12:14:27 -04:00
|
|
|
|
|
|
|
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,
|
2019-11-12 01:01:17 -05:00
|
|
|
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)
|
2020-06-03 12:14:27 -04:00
|
|
|
{
|
|
|
|
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;
|
|
|
|
}
|