| /* bttester.h - Bluetooth tester headers */ |
| |
| /* |
| * Copyright (c) 2015-2016 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <misc/util.h> |
| |
| #define BTP_MTU 1024 |
| #define BTP_DATA_MAX_SIZE (BTP_MTU - sizeof(struct btp_hdr)) |
| |
| #define BTP_INDEX_NONE 0xff |
| |
| #define BTP_SERVICE_ID_CORE 0 |
| #define BTP_SERVICE_ID_GAP 1 |
| #define BTP_SERVICE_ID_GATT 2 |
| #define BTP_SERVICE_ID_L2CAP 3 |
| #define BTP_SERVICE_ID_MESH 4 |
| |
| #define BTP_STATUS_SUCCESS 0x00 |
| #define BTP_STATUS_FAILED 0x01 |
| #define BTP_STATUS_UNKNOWN_CMD 0x02 |
| #define BTP_STATUS_NOT_READY 0x03 |
| |
| struct btp_hdr { |
| u8_t service; |
| u8_t opcode; |
| u8_t index; |
| u16_t len; |
| u8_t data[0]; |
| } __packed; |
| |
| #define BTP_STATUS 0x00 |
| struct btp_status { |
| u8_t code; |
| } __packed; |
| |
| /* Core Service */ |
| #define CORE_READ_SUPPORTED_COMMANDS 0x01 |
| struct core_read_supported_commands_rp { |
| u8_t data[0]; |
| } __packed; |
| |
| #define CORE_READ_SUPPORTED_SERVICES 0x02 |
| struct core_read_supported_services_rp { |
| u8_t data[0]; |
| } __packed; |
| |
| #define CORE_REGISTER_SERVICE 0x03 |
| struct core_register_service_cmd { |
| u8_t id; |
| } __packed; |
| |
| #define CORE_UNREGISTER_SERVICE 0x04 |
| struct core_unregister_service_cmd { |
| u8_t id; |
| } __packed; |
| |
| /* events */ |
| #define CORE_EV_IUT_READY 0x80 |
| |
| /* GAP Service */ |
| /* commands */ |
| #define GAP_READ_SUPPORTED_COMMANDS 0x01 |
| struct gap_read_supported_commands_rp { |
| u8_t data[0]; |
| } __packed; |
| |
| #define GAP_READ_CONTROLLER_INDEX_LIST 0x02 |
| struct gap_read_controller_index_list_rp { |
| u8_t num; |
| u8_t index[0]; |
| } __packed; |
| |
| #define GAP_SETTINGS_POWERED 0 |
| #define GAP_SETTINGS_CONNECTABLE 1 |
| #define GAP_SETTINGS_FAST_CONNECTABLE 2 |
| #define GAP_SETTINGS_DISCOVERABLE 3 |
| #define GAP_SETTINGS_BONDABLE 4 |
| #define GAP_SETTINGS_LINK_SEC_3 5 |
| #define GAP_SETTINGS_SSP 6 |
| #define GAP_SETTINGS_BREDR 7 |
| #define GAP_SETTINGS_HS 8 |
| #define GAP_SETTINGS_LE 9 |
| #define GAP_SETTINGS_ADVERTISING 10 |
| #define GAP_SETTINGS_SC 11 |
| #define GAP_SETTINGS_DEBUG_KEYS 12 |
| #define GAP_SETTINGS_PRIVACY 13 |
| #define GAP_SETTINGS_CONTROLLER_CONFIG 14 |
| #define GAP_SETTINGS_STATIC_ADDRESS 15 |
| |
| #define GAP_READ_CONTROLLER_INFO 0x03 |
| struct gap_read_controller_info_rp { |
| u8_t address[6]; |
| u32_t supported_settings; |
| u32_t current_settings; |
| u8_t cod[3]; |
| u8_t name[249]; |
| u8_t short_name[11]; |
| } __packed; |
| |
| #define GAP_RESET 0x04 |
| struct gap_reset_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_SET_POWERED 0x05 |
| struct gap_set_powered_cmd { |
| u8_t powered; |
| } __packed; |
| struct gap_set_powered_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_SET_CONNECTABLE 0x06 |
| struct gap_set_connectable_cmd { |
| u8_t connectable; |
| } __packed; |
| struct gap_set_connectable_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_SET_FAST_CONNECTABLE 0x07 |
| struct gap_set_fast_connectable_cmd { |
| u8_t fast_connectable; |
| } __packed; |
| struct gap_set_fast_connectable_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_NON_DISCOVERABLE 0x00 |
| #define GAP_GENERAL_DISCOVERABLE 0x01 |
| #define GAP_LIMITED_DISCOVERABLE 0x02 |
| |
| #define GAP_SET_DISCOVERABLE 0x08 |
| struct gap_set_discoverable_cmd { |
| u8_t discoverable; |
| } __packed; |
| struct gap_set_discoverable_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_SET_BONDABLE 0x09 |
| struct gap_set_bondable_cmd { |
| u8_t gap_set_bondable_cmd; |
| } __packed; |
| struct gap_set_bondable_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_START_ADVERTISING 0x0a |
| struct gap_start_advertising_cmd { |
| u8_t adv_data_len; |
| u8_t scan_rsp_len; |
| u8_t adv_data[0]; |
| u8_t scan_rsp[0]; |
| } __packed; |
| struct gap_start_advertising_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_STOP_ADVERTISING 0x0b |
| struct gap_stop_advertising_rp { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_DISCOVERY_FLAG_LE 0x01 |
| #define GAP_DISCOVERY_FLAG_BREDR 0x02 |
| #define GAP_DISCOVERY_FLAG_LIMITED 0x04 |
| #define GAP_DISCOVERY_FLAG_LE_ACTIVE_SCAN 0x08 |
| #define GAP_DISCOVERY_FLAG_LE_OBSERVE 0x10 |
| |
| #define GAP_START_DISCOVERY 0x0c |
| struct gap_start_discovery_cmd { |
| u8_t flags; |
| } __packed; |
| |
| #define GAP_STOP_DISCOVERY 0x0d |
| |
| #define GAP_CONNECT 0x0e |
| struct gap_connect_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GAP_DISCONNECT 0x0f |
| struct gap_disconnect_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GAP_IO_CAP_DISPLAY_ONLY 0 |
| #define GAP_IO_CAP_DISPLAY_YESNO 1 |
| #define GAP_IO_CAP_KEYBOARD_ONLY 2 |
| #define GAP_IO_CAP_NO_INPUT_OUTPUT 3 |
| #define GAP_IO_CAP_KEYBOARD_DISPLAY 4 |
| |
| #define GAP_SET_IO_CAP 0x10 |
| struct gap_set_io_cap_cmd { |
| u8_t io_cap; |
| } __packed; |
| |
| #define GAP_PAIR 0x11 |
| struct gap_pair_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GAP_UNPAIR 0x12 |
| struct gap_unpair_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GAP_PASSKEY_ENTRY 0x13 |
| struct gap_passkey_entry_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u32_t passkey; |
| } __packed; |
| |
| #define GAP_PASSKEY_CONFIRM 0x14 |
| struct gap_passkey_confirm_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u8_t match; |
| } __packed; |
| |
| #define GAP_CONN_PARAM_UPDATE 0x16 |
| struct gap_conn_param_update_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t interval_min; |
| u16_t interval_max; |
| u16_t latency; |
| u16_t timeout; |
| } __packed; |
| |
| /* events */ |
| #define GAP_EV_NEW_SETTINGS 0x80 |
| struct gap_new_settings_ev { |
| u32_t current_settings; |
| } __packed; |
| |
| #define GAP_DEVICE_FOUND_FLAG_RSSI 0x01 |
| #define GAP_DEVICE_FOUND_FLAG_AD 0x02 |
| #define GAP_DEVICE_FOUND_FLAG_SD 0x04 |
| |
| #define GAP_EV_DEVICE_FOUND 0x81 |
| struct gap_device_found_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| s8_t rssi; |
| u8_t flags; |
| u16_t eir_data_len; |
| u8_t eir_data[0]; |
| } __packed; |
| |
| #define GAP_EV_DEVICE_CONNECTED 0x82 |
| struct gap_device_connected_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t interval; |
| u16_t latency; |
| u16_t timeout; |
| } __packed; |
| |
| #define GAP_EV_DEVICE_DISCONNECTED 0x83 |
| struct gap_device_disconnected_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GAP_EV_PASSKEY_DISPLAY 0x84 |
| struct gap_passkey_display_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| u32_t passkey; |
| } __packed; |
| |
| #define GAP_EV_PASSKEY_ENTRY_REQ 0x85 |
| struct gap_passkey_entry_req_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GAP_EV_PASSKEY_CONFIRM_REQ 0x86 |
| struct gap_passkey_confirm_req_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| u32_t passkey; |
| } __packed; |
| |
| #define GAP_EV_IDENTITY_RESOLVED 0x87 |
| struct gap_identity_resolved_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| u8_t identity_address_type; |
| u8_t identity_address[6]; |
| } __packed; |
| |
| #define GAP_EV_CONN_PARAM_UPDATE 0x88 |
| struct gap_conn_param_update_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t interval; |
| u16_t latency; |
| u16_t timeout; |
| } __packed; |
| |
| /* GATT Service */ |
| /* commands */ |
| #define GATT_READ_SUPPORTED_COMMANDS 0x01 |
| struct gatt_read_supported_commands_rp { |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_SERVICE_PRIMARY 0x00 |
| #define GATT_SERVICE_SECONDARY 0x01 |
| |
| #define GATT_ADD_SERVICE 0x02 |
| struct gatt_add_service_cmd { |
| u8_t type; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| struct gatt_add_service_rp { |
| u16_t svc_id; |
| } __packed; |
| |
| #define GATT_ADD_CHARACTERISTIC 0x03 |
| struct gatt_add_characteristic_cmd { |
| u16_t svc_id; |
| u8_t properties; |
| u8_t permissions; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| struct gatt_add_characteristic_rp { |
| u16_t char_id; |
| } __packed; |
| |
| #define GATT_ADD_DESCRIPTOR 0x04 |
| struct gatt_add_descriptor_cmd { |
| u16_t char_id; |
| u8_t permissions; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| struct gatt_add_descriptor_rp { |
| u16_t desc_id; |
| } __packed; |
| |
| #define GATT_ADD_INCLUDED_SERVICE 0x05 |
| struct gatt_add_included_service_cmd { |
| u16_t svc_id; |
| } __packed; |
| struct gatt_add_included_service_rp { |
| u16_t included_service_id; |
| } __packed; |
| |
| #define GATT_SET_VALUE 0x06 |
| struct gatt_set_value_cmd { |
| u16_t attr_id; |
| u16_t len; |
| u8_t value[0]; |
| } __packed; |
| |
| #define GATT_START_SERVER 0x07 |
| struct gatt_start_server_rp { |
| u16_t db_attr_off; |
| u8_t db_attr_cnt; |
| } __packed; |
| |
| #define GATT_SET_ENC_KEY_SIZE 0x09 |
| struct gatt_set_enc_key_size_cmd { |
| u16_t attr_id; |
| u8_t key_size; |
| } __packed; |
| |
| /* Gatt Client */ |
| struct gatt_service { |
| u16_t start_handle; |
| u16_t end_handle; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| |
| struct gatt_included { |
| u16_t included_handle; |
| struct gatt_service service; |
| } __packed; |
| |
| struct gatt_characteristic { |
| u16_t characteristic_handle; |
| u16_t value_handle; |
| u8_t properties; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| |
| struct gatt_descriptor { |
| u16_t descriptor_handle; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| |
| #define GATT_EXCHANGE_MTU 0x0a |
| |
| #define GATT_DISC_ALL_PRIM 0x0b |
| struct gatt_disc_all_prim_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define GATT_DISC_PRIM_UUID 0x0c |
| struct gatt_disc_prim_uuid_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| struct gatt_disc_prim_rp { |
| u8_t services_count; |
| struct gatt_service services[0]; |
| } __packed; |
| |
| #define GATT_FIND_INCLUDED 0x0d |
| struct gatt_find_included_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t start_handle; |
| u16_t end_handle; |
| } __packed; |
| struct gatt_find_included_rp { |
| u8_t services_count; |
| struct gatt_included included[0]; |
| } __packed; |
| |
| #define GATT_DISC_ALL_CHRC 0x0e |
| struct gatt_disc_all_chrc_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t start_handle; |
| u16_t end_handle; |
| } __packed; |
| struct gatt_disc_chrc_rp { |
| u8_t characteristics_count; |
| struct gatt_characteristic characteristics[0]; |
| } __packed; |
| |
| #define GATT_DISC_CHRC_UUID 0x0f |
| struct gatt_disc_chrc_uuid_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t start_handle; |
| u16_t end_handle; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| |
| #define GATT_DISC_ALL_DESC 0x10 |
| struct gatt_disc_all_desc_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t start_handle; |
| u16_t end_handle; |
| } __packed; |
| struct gatt_disc_all_desc_rp { |
| u8_t descriptors_count; |
| struct gatt_descriptor descriptors[0]; |
| } __packed; |
| |
| #define GATT_READ 0x11 |
| struct gatt_read_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| } __packed; |
| struct gatt_read_rp { |
| u8_t att_response; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_READ_UUID 0x12 |
| struct gatt_read_uuid_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t start_handle; |
| u16_t end_handle; |
| u8_t uuid_length; |
| u8_t uuid[0]; |
| } __packed; |
| |
| #define GATT_READ_LONG 0x13 |
| struct gatt_read_long_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| u16_t offset; |
| } __packed; |
| |
| #define GATT_READ_MULTIPLE 0x14 |
| struct gatt_read_multiple_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u8_t handles_count; |
| u16_t handles[0]; |
| } __packed; |
| |
| #define GATT_WRITE_WITHOUT_RSP 0x15 |
| struct gatt_write_without_rsp_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_SIGNED_WRITE_WITHOUT_RSP 0x16 |
| struct gatt_signed_write_without_rsp_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_WRITE 0x17 |
| struct gatt_write_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_WRITE_LONG 0x18 |
| struct gatt_write_long_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| u16_t offset; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_CFG_NOTIFY 0x1a |
| #define GATT_CFG_INDICATE 0x1b |
| struct gatt_cfg_notify_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u8_t enable; |
| u16_t ccc_handle; |
| } __packed; |
| |
| #define GATT_GET_ATTRIBUTES 0x1c |
| struct gatt_get_attributes_cmd { |
| u16_t start_handle; |
| u16_t end_handle; |
| u8_t type_length; |
| u8_t type[0]; |
| } __packed; |
| struct gatt_get_attributes_rp { |
| u8_t attrs_count; |
| u8_t attrs[0]; |
| } __packed; |
| struct gatt_attr { |
| u16_t handle; |
| u8_t permission; |
| u8_t type_length; |
| u8_t type[0]; |
| } __packed; |
| |
| #define GATT_GET_ATTRIBUTE_VALUE 0x1d |
| struct gatt_get_attribute_value_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t handle; |
| } __packed; |
| struct gatt_get_attribute_value_rp { |
| u8_t att_response; |
| u16_t value_length; |
| u8_t value[0]; |
| } __packed; |
| |
| /* GATT events */ |
| #define GATT_EV_NOTIFICATION 0x80 |
| struct gatt_notification_ev { |
| u8_t address_type; |
| u8_t address[6]; |
| u8_t type; |
| u16_t handle; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| #define GATT_EV_ATTR_VALUE_CHANGED 0x81 |
| struct gatt_attr_value_changed_ev { |
| u16_t handle; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| static inline void tester_set_bit(u8_t *addr, unsigned int bit) |
| { |
| u8_t *p = addr + (bit / 8U); |
| |
| *p |= BIT(bit % 8); |
| } |
| |
| static inline u8_t tester_test_bit(const u8_t *addr, unsigned int bit) |
| { |
| const u8_t *p = addr + (bit / 8U); |
| |
| return *p & BIT(bit % 8); |
| } |
| |
| /* L2CAP Service */ |
| /* commands */ |
| #define L2CAP_READ_SUPPORTED_COMMANDS 0x01 |
| struct l2cap_read_supported_commands_rp { |
| u8_t data[0]; |
| } __packed; |
| |
| #define L2CAP_CONNECT 0x02 |
| struct l2cap_connect_cmd { |
| u8_t address_type; |
| u8_t address[6]; |
| u16_t psm; |
| } __packed; |
| |
| struct l2cap_connect_rp { |
| u8_t chan_id; |
| } __packed; |
| |
| #define L2CAP_DISCONNECT 0x03 |
| struct l2cap_disconnect_cmd { |
| u8_t chan_id; |
| } __packed; |
| |
| #define L2CAP_SEND_DATA 0x04 |
| struct l2cap_send_data_cmd { |
| u8_t chan_id; |
| u16_t data_len; |
| u8_t data[]; |
| } __packed; |
| |
| #define L2CAP_TRANSPORT_BREDR 0x00 |
| #define L2CAP_TRANSPORT_LE 0x01 |
| |
| #define L2CAP_LISTEN 0x05 |
| struct l2cap_listen_cmd { |
| u16_t psm; |
| u8_t transport; |
| } __packed; |
| |
| #define L2CAP_ACCEPT_CONNECTION 0x06 |
| struct l2cap_accept_connection_cmd { |
| u8_t chan_id; |
| u16_t result; |
| } __packed; |
| |
| /* events */ |
| #define L2CAP_EV_CONNECTION_REQ 0x80 |
| struct l2cap_connection_req_ev { |
| u8_t chan_id; |
| u16_t psm; |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define L2CAP_EV_CONNECTED 0x81 |
| struct l2cap_connected_ev { |
| u8_t chan_id; |
| u16_t psm; |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define L2CAP_EV_DISCONNECTED 0x82 |
| struct l2cap_disconnected_ev { |
| u16_t result; |
| u8_t chan_id; |
| u16_t psm; |
| u8_t address_type; |
| u8_t address[6]; |
| } __packed; |
| |
| #define L2CAP_EV_DATA_RECEIVED 0x83 |
| struct l2cap_data_received_ev { |
| u8_t chan_id; |
| u16_t data_length; |
| u8_t data[0]; |
| } __packed; |
| |
| /* MESH Service */ |
| /* commands */ |
| #define MESH_READ_SUPPORTED_COMMANDS 0x01 |
| struct mesh_read_supported_commands_rp { |
| u8_t data[0]; |
| } __packed; |
| |
| #define MESH_OUT_BLINK BIT(0) |
| #define MESH_OUT_BEEP BIT(1) |
| #define MESH_OUT_VIBRATE BIT(2) |
| #define MESH_OUT_DISPLAY_NUMBER BIT(3) |
| #define MESH_OUT_DISPLAY_STRING BIT(4) |
| |
| #define MESH_IN_PUSH BIT(0) |
| #define MESH_IN_TWIST BIT(1) |
| #define MESH_IN_ENTER_NUMBER BIT(2) |
| #define MESH_IN_ENTER_STRING BIT(3) |
| |
| #define MESH_CONFIG_PROVISIONING 0x02 |
| struct mesh_config_provisioning_cmd { |
| u8_t uuid[16]; |
| u8_t static_auth[16]; |
| u8_t out_size; |
| u16_t out_actions; |
| u8_t in_size; |
| u16_t in_actions; |
| } __packed; |
| |
| #define MESH_PROVISION_NODE 0x03 |
| struct mesh_provision_node_cmd { |
| u8_t net_key[16]; |
| u16_t net_key_idx; |
| u8_t flags; |
| u32_t iv_index; |
| u32_t seq_num; |
| u16_t addr; |
| u8_t dev_key[16]; |
| } __packed; |
| |
| #define MESH_INIT 0x04 |
| #define MESH_RESET 0x05 |
| #define MESH_INPUT_NUMBER 0x06 |
| struct mesh_input_number_cmd { |
| u32_t number; |
| } __packed; |
| |
| #define MESH_INPUT_STRING 0x07 |
| struct mesh_input_string_cmd { |
| u8_t string_len; |
| u8_t string[0]; |
| } __packed; |
| |
| #define MESH_IVU_TEST_MODE 0x08 |
| struct mesh_ivu_test_mode_cmd { |
| u8_t enable; |
| } __packed; |
| |
| #define MESH_IVU_TOGGLE_STATE 0x09 |
| |
| #define MESH_NET_SEND 0x0a |
| struct mesh_net_send_cmd { |
| u8_t ttl; |
| u16_t src; |
| u16_t dst; |
| u8_t payload_len; |
| u8_t payload[0]; |
| } __packed; |
| |
| #define MESH_HEALTH_GENERATE_FAULTS 0x0b |
| struct mesh_health_generate_faults_rp { |
| u8_t test_id; |
| u8_t cur_faults_count; |
| u8_t reg_faults_count; |
| u8_t current_faults[0]; |
| u8_t registered_faults[0]; |
| } __packed; |
| |
| #define MESH_HEALTH_CLEAR_FAULTS 0x0c |
| |
| #define MESH_LPN 0x0d |
| struct mesh_lpn_set_cmd { |
| u8_t enable; |
| } __packed; |
| |
| #define MESH_LPN_POLL 0x0e |
| |
| #define MESH_MODEL_SEND 0x0f |
| struct mesh_model_send_cmd { |
| u16_t src; |
| u16_t dst; |
| u8_t payload_len; |
| u8_t payload[0]; |
| } __packed; |
| |
| #define MESH_LPN_SUBSCRIBE 0x10 |
| struct mesh_lpn_subscribe_cmd { |
| u16_t address; |
| } __packed; |
| |
| #define MESH_LPN_UNSUBSCRIBE 0x11 |
| struct mesh_lpn_unsubscribe_cmd { |
| u16_t address; |
| } __packed; |
| |
| #define MESH_RPL_CLEAR 0x12 |
| #define MESH_PROXY_IDENTITY 0x13 |
| |
| /* events */ |
| #define MESH_EV_OUT_NUMBER_ACTION 0x80 |
| struct mesh_out_number_action_ev { |
| u16_t action; |
| u32_t number; |
| } __packed; |
| |
| #define MESH_EV_OUT_STRING_ACTION 0x81 |
| struct mesh_out_string_action_ev { |
| u8_t string_len; |
| u8_t string[0]; |
| } __packed; |
| |
| #define MESH_EV_IN_ACTION 0x82 |
| struct mesh_in_action_ev { |
| u16_t action; |
| u8_t size; |
| } __packed; |
| |
| #define MESH_EV_PROVISIONED 0x83 |
| |
| #define MESH_PROV_BEARER_PB_ADV 0x00 |
| #define MESH_PROV_BEARER_PB_GATT 0x01 |
| #define MESH_EV_PROV_LINK_OPEN 0x84 |
| struct mesh_prov_link_open_ev { |
| u8_t bearer; |
| } __packed; |
| |
| #define MESH_EV_PROV_LINK_CLOSED 0x85 |
| struct mesh_prov_link_closed_ev { |
| u8_t bearer; |
| } __packed; |
| |
| #define MESH_EV_NET_RECV 0x86 |
| struct mesh_net_recv_ev { |
| u8_t ttl; |
| u8_t ctl; |
| u16_t src; |
| u16_t dst; |
| u8_t payload_len; |
| u8_t payload[0]; |
| } __packed; |
| |
| #define MESH_EV_INVALID_BEARER 0x87 |
| struct mesh_invalid_bearer_ev { |
| u8_t opcode; |
| } __packed; |
| |
| #define MESH_EV_INCOMP_TIMER_EXP 0x88 |
| |
| void tester_init(void); |
| void tester_rsp(u8_t service, u8_t opcode, u8_t index, u8_t status); |
| void tester_send(u8_t service, u8_t opcode, u8_t index, u8_t *data, |
| size_t len); |
| |
| u8_t tester_init_gap(void); |
| u8_t tester_unregister_gap(void); |
| void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data, |
| u16_t len); |
| u8_t tester_init_gatt(void); |
| u8_t tester_unregister_gatt(void); |
| void tester_handle_gatt(u8_t opcode, u8_t index, u8_t *data, |
| u16_t len); |
| |
| #if defined(CONFIG_BT_L2CAP_DYNAMIC_CHANNEL) |
| u8_t tester_init_l2cap(void); |
| u8_t tester_unregister_l2cap(void); |
| void tester_handle_l2cap(u8_t opcode, u8_t index, u8_t *data, |
| u16_t len); |
| #endif /* CONFIG_BT_L2CAP_DYNAMIC_CHANNEL */ |
| |
| #if defined(CONFIG_BT_MESH) |
| u8_t tester_init_mesh(void); |
| u8_t tester_unregister_mesh(void); |
| void tester_handle_mesh(u8_t opcode, u8_t index, u8_t *data, u16_t len); |
| #endif /* CONFIG_BT_MESH */ |