| /* gap.h - Bluetooth tester headers */ |
| |
| /* |
| * Copyright (c) 2015-2016 Intel Corporation |
| * Copyright (c) 2022 Codecoup |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/sys/util.h> |
| #include <zephyr/bluetooth/addr.h> |
| |
| /* GAP Service */ |
| /* commands */ |
| #define BTP_GAP_READ_SUPPORTED_COMMANDS 0x01 |
| struct btp_gap_read_supported_commands_rp { |
| uint8_t data[0]; |
| } __packed; |
| |
| #define BTP_GAP_READ_CONTROLLER_INDEX_LIST 0x02 |
| struct btp_gap_read_controller_index_list_rp { |
| uint8_t num; |
| uint8_t index[]; |
| } __packed; |
| |
| #define BTP_GAP_SETTINGS_POWERED 0 |
| #define BTP_GAP_SETTINGS_CONNECTABLE 1 |
| #define BTP_GAP_SETTINGS_FAST_CONNECTABLE 2 |
| #define BTP_GAP_SETTINGS_DISCOVERABLE 3 |
| #define BTP_GAP_SETTINGS_BONDABLE 4 |
| #define BTP_GAP_SETTINGS_LINK_SEC_3 5 |
| #define BTP_GAP_SETTINGS_SSP 6 |
| #define BTP_GAP_SETTINGS_BREDR 7 |
| #define BTP_GAP_SETTINGS_HS 8 |
| #define BTP_GAP_SETTINGS_LE 9 |
| #define BTP_GAP_SETTINGS_ADVERTISING 10 |
| #define BTP_GAP_SETTINGS_SC 11 |
| #define BTP_GAP_SETTINGS_DEBUG_KEYS 12 |
| #define BTP_GAP_SETTINGS_PRIVACY 13 |
| #define BTP_GAP_SETTINGS_CONTROLLER_CONFIG 14 |
| #define BTP_GAP_SETTINGS_STATIC_ADDRESS 15 |
| |
| #define BTP_GAP_READ_CONTROLLER_INFO 0x03 |
| struct btp_gap_read_controller_info_rp { |
| bt_addr_t address; |
| uint32_t supported_settings; |
| uint32_t current_settings; |
| uint8_t cod[3]; |
| uint8_t name[249]; |
| uint8_t short_name[11]; |
| } __packed; |
| |
| #define BTP_GAP_RESET 0x04 |
| struct btp_gap_reset_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_SET_POWERED 0x05 |
| struct btp_gap_set_powered_cmd { |
| uint8_t powered; |
| } __packed; |
| struct btp_gap_set_powered_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_SET_CONNECTABLE 0x06 |
| struct btp_gap_set_connectable_cmd { |
| uint8_t connectable; |
| } __packed; |
| struct btp_gap_set_connectable_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_SET_FAST_CONNECTABLE 0x07 |
| struct btp_gap_set_fast_connectable_cmd { |
| uint8_t fast_connectable; |
| } __packed; |
| struct btp_gap_set_fast_connectable_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_NON_DISCOVERABLE 0x00 |
| #define BTP_GAP_GENERAL_DISCOVERABLE 0x01 |
| #define BTP_GAP_LIMITED_DISCOVERABLE 0x02 |
| |
| #define BTP_GAP_SET_DISCOVERABLE 0x08 |
| struct btp_gap_set_discoverable_cmd { |
| uint8_t discoverable; |
| } __packed; |
| struct btp_gap_set_discoverable_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_SET_BONDABLE 0x09 |
| struct btp_gap_set_bondable_cmd { |
| uint8_t bondable; |
| } __packed; |
| struct btp_gap_set_bondable_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_START_ADVERTISING 0x0a |
| struct btp_gap_start_advertising_cmd { |
| uint8_t adv_data_len; |
| uint8_t scan_rsp_len; |
| uint8_t adv_sr_data[]; |
| /* |
| * This command is very unfortunate because it has two fields after variable |
| * data. Those needs to be handled explicitly by handler. |
| * uint32_t duration; |
| * uint8_t own_addr_type; |
| */ |
| } __packed; |
| struct btp_gap_start_advertising_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_STOP_ADVERTISING 0x0b |
| struct btp_gap_stop_advertising_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_DISCOVERY_FLAG_LE 0x01 |
| #define BTP_GAP_DISCOVERY_FLAG_BREDR 0x02 |
| #define BTP_GAP_DISCOVERY_FLAG_LIMITED 0x04 |
| #define BTP_GAP_DISCOVERY_FLAG_LE_ACTIVE_SCAN 0x08 |
| #define BTP_GAP_DISCOVERY_FLAG_LE_OBSERVE 0x10 |
| #define BTP_GAP_DISCOVERY_FLAG_OWN_ID_ADDR 0x20 |
| |
| #define BTP_GAP_START_DISCOVERY 0x0c |
| struct btp_gap_start_discovery_cmd { |
| uint8_t flags; |
| } __packed; |
| |
| #define BTP_GAP_STOP_DISCOVERY 0x0d |
| |
| #define BTP_GAP_CONNECT 0x0e |
| struct btp_gap_connect_cmd { |
| bt_addr_le_t address; |
| uint8_t own_addr_type; |
| } __packed; |
| |
| #define BTP_GAP_DISCONNECT 0x0f |
| struct btp_gap_disconnect_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_IO_CAP_DISPLAY_ONLY 0 |
| #define BTP_GAP_IO_CAP_DISPLAY_YESNO 1 |
| #define BTP_GAP_IO_CAP_KEYBOARD_ONLY 2 |
| #define BTP_GAP_IO_CAP_NO_INPUT_OUTPUT 3 |
| #define BTP_GAP_IO_CAP_KEYBOARD_DISPLAY 4 |
| |
| #define BTP_GAP_SET_IO_CAP 0x10 |
| struct btp_gap_set_io_cap_cmd { |
| uint8_t io_cap; |
| } __packed; |
| |
| #define BTP_GAP_PAIR 0x11 |
| struct btp_gap_pair_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_UNPAIR 0x12 |
| struct btp_gap_unpair_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_PASSKEY_ENTRY 0x13 |
| struct btp_gap_passkey_entry_cmd { |
| bt_addr_le_t address; |
| uint32_t passkey; |
| } __packed; |
| |
| #define BTP_GAP_PASSKEY_CONFIRM 0x14 |
| struct btp_gap_passkey_confirm_cmd { |
| bt_addr_le_t address; |
| uint8_t match; |
| } __packed; |
| |
| #define BTP_GAP_START_DIRECTED_ADV_HD BIT(0) |
| #define BTP_GAP_START_DIRECTED_ADV_OWN_ID BIT(1) |
| #define BTP_GAP_START_DIRECTED_ADV_PEER_RPA BIT(2) |
| |
| #define BTP_GAP_START_DIRECTED_ADV 0x15 |
| struct btp_gap_start_directed_adv_cmd { |
| bt_addr_le_t address; |
| uint16_t options; |
| } __packed; |
| struct btp_gap_start_directed_adv_rp { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_CONN_PARAM_UPDATE 0x16 |
| struct btp_gap_conn_param_update_cmd { |
| bt_addr_le_t address; |
| uint16_t interval_min; |
| uint16_t interval_max; |
| uint16_t latency; |
| uint16_t timeout; |
| } __packed; |
| |
| #define BTP_GAP_PAIRING_CONSENT 0x17 |
| struct btp_gap_pairing_consent_cmd { |
| bt_addr_le_t address; |
| uint8_t consent; |
| } __packed; |
| |
| #define BTP_GAP_OOB_LEGACY_SET_DATA 0x18 |
| struct btp_gap_oob_legacy_set_data_cmd { |
| uint8_t oob_data[16]; |
| } __packed; |
| |
| #define BTP_GAP_OOB_SC_GET_LOCAL_DATA 0x19 |
| struct btp_gap_oob_sc_get_local_data_rp { |
| uint8_t rand[16]; |
| uint8_t conf[16]; |
| } __packed; |
| |
| #define BTP_GAP_OOB_SC_SET_REMOTE_DATA 0x1a |
| struct btp_gap_oob_sc_set_remote_data_cmd { |
| uint8_t rand[16]; |
| uint8_t conf[16]; |
| } __packed; |
| |
| #define BTP_GAP_SET_MITM 0x1b |
| struct btp_gap_set_mitm { |
| uint8_t mitm; |
| } __packed; |
| |
| #define BTP_GAP_SET_FILTER_LIST 0x1c |
| struct btp_gap_set_filter_list { |
| uint8_t cnt; |
| bt_addr_le_t addr[0]; |
| } __packed; |
| |
| /* events */ |
| #define BTP_GAP_EV_NEW_SETTINGS 0x80 |
| struct btp_gap_new_settings_ev { |
| uint32_t current_settings; |
| } __packed; |
| |
| #define BTP_GAP_DEVICE_FOUND_FLAG_RSSI 0x01 |
| #define BTP_GAP_DEVICE_FOUND_FLAG_AD 0x02 |
| #define BTP_GAP_DEVICE_FOUND_FLAG_SD 0x04 |
| |
| #define BTP_GAP_EV_DEVICE_FOUND 0x81 |
| struct btp_gap_device_found_ev { |
| bt_addr_le_t address; |
| int8_t rssi; |
| uint8_t flags; |
| uint16_t eir_data_len; |
| uint8_t eir_data[]; |
| } __packed; |
| |
| #define BTP_GAP_EV_DEVICE_CONNECTED 0x82 |
| struct btp_gap_device_connected_ev { |
| bt_addr_le_t address; |
| uint16_t interval; |
| uint16_t latency; |
| uint16_t timeout; |
| } __packed; |
| |
| #define BTP_GAP_EV_DEVICE_DISCONNECTED 0x83 |
| struct btp_gap_device_disconnected_ev { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_EV_PASSKEY_DISPLAY 0x84 |
| struct btp_gap_passkey_display_ev { |
| bt_addr_le_t address; |
| uint32_t passkey; |
| } __packed; |
| |
| #define BTP_GAP_EV_PASSKEY_ENTRY_REQ 0x85 |
| struct btp_gap_passkey_entry_req_ev { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_EV_PASSKEY_CONFIRM_REQ 0x86 |
| struct btp_gap_passkey_confirm_req_ev { |
| bt_addr_le_t address; |
| uint32_t passkey; |
| } __packed; |
| |
| #define BTP_GAP_EV_IDENTITY_RESOLVED 0x87 |
| struct btp_gap_identity_resolved_ev { |
| bt_addr_le_t address; |
| bt_addr_le_t identity_address; |
| } __packed; |
| |
| #define BTP_GAP_EV_CONN_PARAM_UPDATE 0x88 |
| struct btp_gap_conn_param_update_ev { |
| bt_addr_le_t address; |
| uint16_t interval; |
| uint16_t latency; |
| uint16_t timeout; |
| } __packed; |
| |
| #define BTP_GAP_SEC_LEVEL_UNAUTH_ENC 0x01 |
| #define BTP_GAP_SEC_LEVEL_AUTH_ENC 0x02 |
| #define BTP_GAP_SEC_LEVEL_AUTH_SC 0x03 |
| |
| #define BTP_GAP_EV_SEC_LEVEL_CHANGED 0x89 |
| struct btp_gap_sec_level_changed_ev { |
| bt_addr_le_t address; |
| uint8_t sec_level; |
| } __packed; |
| |
| #define BTP_GAP_EV_PAIRING_CONSENT_REQ 0x8a |
| struct btp_gap_pairing_consent_req_ev { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_EV_BOND_LOST 0x8b |
| struct btp_gap_bond_lost_ev { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_GAP_EV_PAIRING_FAILED 0x8c |
| struct btp_gap_bond_pairing_failed_ev { |
| bt_addr_le_t address; |
| uint8_t reason; |
| } __packed; |