apps/bttester/src/btp/btp_mesh.h (145 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/* btp_mesh.h - Bluetooth tester MESH service headers */
/*
* Copyright (c) 2015-2016 Intel Corporation
* Copyright (C) 2023 Codecoup
*
* SPDX-License-Identifier: Apache-2.0
*/
/* MESH Service */
/* commands */
#define BTP_MESH_READ_SUPPORTED_COMMANDS 0x01
struct btp_mesh_read_supported_commands_rp {
uint8_t data[0];
} __packed;
#define BTP_MESH_OUT_BLINK BIT(0)
#define BTP_MESH_OUT_BEEP BIT(1)
#define BTP_MESH_OUT_VIBRATE BIT(2)
#define BTP_MESH_OUT_DISPLAY_NUMBER BIT(3)
#define BTP_MESH_OUT_DISPLAY_STRING BIT(4)
#define BTP_MESH_IN_PUSH BIT(0)
#define BTP_MESH_IN_TWIST BIT(1)
#define BTP_MESH_IN_ENTER_NUMBER BIT(2)
#define BTP_MESH_IN_ENTER_STRING BIT(3)
#define BTP_MESH_CONFIG_PROVISIONING 0x02
struct btp_mesh_config_provisioning_cmd {
uint8_t uuid[16];
uint8_t static_auth[16];
uint8_t out_size;
uint16_t out_actions;
uint8_t in_size;
uint16_t in_actions;
} __packed;
#define BTP_MESH_PROVISION_NODE 0x03
struct btp_mesh_provision_node_cmd {
uint8_t net_key[16];
uint16_t net_key_idx;
uint8_t flags;
uint32_t iv_index;
uint32_t seq_num;
uint16_t addr;
uint8_t dev_key[16];
} __packed;
#define BTP_MESH_INIT 0x04
#define BTP_MESH_RESET 0x05
#define BTP_MESH_INPUT_NUMBER 0x06
struct btp_mesh_input_number_cmd {
uint32_t number;
} __packed;
#define BTP_MESH_INPUT_STRING 0x07
struct btp_mesh_input_string_cmd {
uint8_t string_len;
uint8_t string[0];
} __packed;
#define BTP_MESH_IVU_TEST_MODE 0x08
struct btp_mesh_ivu_test_mode_cmd {
uint8_t enable;
} __packed;
#define BTP_MESH_IVU_TOGGLE_STATE 0x09
#define BTP_MESH_NET_SEND 0x0a
struct btp_mesh_net_send_cmd {
uint8_t ttl;
uint16_t src;
uint16_t dst;
uint8_t payload_len;
uint8_t payload[0];
} __packed;
#define BTP_MESH_HEALTH_GENERATE_FAULTS 0x0b
struct btp_mesh_health_generate_faults_rp {
uint8_t test_id;
uint8_t cur_faults_count;
uint8_t reg_faults_count;
uint8_t current_faults[0];
uint8_t registered_faults[0];
} __packed;
#define BTP_MESH_HEALTH_CLEAR_FAULTS 0x0c
#define BTP_MESH_LPN 0x0d
struct btp_mesh_lpn_set_cmd {
uint8_t enable;
} __packed;
#define BTP_MESH_LPN_POLL 0x0e
#define BTP_MESH_MODEL_SEND 0x0f
struct btp_mesh_model_send_cmd {
uint16_t src;
uint16_t dst;
uint8_t payload_len;
uint8_t payload[0];
} __packed;
#define BTP_MESH_LPN_SUBSCRIBE 0x10
struct btp_mesh_lpn_subscribe_cmd {
uint16_t address;
} __packed;
#define BTP_MESH_LPN_UNSUBSCRIBE 0x11
struct btp_mesh_lpn_unsubscribe_cmd {
uint16_t address;
} __packed;
#define BTP_MESH_RPL_CLEAR 0x12
#define BTP_MESH_PROXY_IDENTITY 0x13
/* events */
#define BTP_MESH_EV_OUT_NUMBER_ACTION 0x80
struct btp_mesh_out_number_action_ev {
uint16_t action;
uint32_t number;
} __packed;
#define BTP_MESH_EV_OUT_STRING_ACTION 0x81
struct btp_mesh_out_string_action_ev {
uint8_t string_len;
uint8_t string[0];
} __packed;
#define BTP_MESH_EV_IN_ACTION 0x82
struct btp_mesh_in_action_ev {
uint16_t action;
uint8_t size;
} __packed;
#define BTP_MESH_EV_PROVISIONED 0x83
#define BTP_MESH_PROV_BEARER_PB_ADV 0x00
#define BTP_MESH_PROV_BEARER_PB_GATT 0x01
#define BTP_MESH_EV_PROV_LINK_OPEN 0x84
struct btp_mesh_prov_link_open_ev {
uint8_t bearer;
} __packed;
#define BTP_MESH_EV_PROV_LINK_CLOSED 0x85
struct btp_mesh_prov_link_closed_ev {
uint8_t bearer;
} __packed;
#define BTP_MESH_EV_NET_RECV 0x86
struct btp_mesh_net_recv_ev {
uint8_t ttl;
uint8_t ctl;
uint16_t src;
uint16_t dst;
uint8_t payload_len;
uint8_t payload[0];
} __packed;
#define BTP_MESH_EV_INVALID_BEARER 0x87
struct btp_mesh_invalid_bearer_ev {
uint8_t opcode;
} __packed;
#define BTP_MESH_EV_INCOMP_TIMER_EXP 0x88
#define BTP_MESH_EV_LPN_ESTABLISHED 0x8b
struct btp_mesh_lpn_established_ev {
uint16_t net_idx;
uint16_t friend_addr;
uint8_t queue_size;
uint8_t recv_win;
} __packed;
#define BTP_MESH_EV_LPN_TERMINATED 0x8c
struct btp_mesh_lpn_terminated_ev {
uint16_t net_idx;
uint16_t friend_addr;
} __packed;
#define BTP_MESH_EV_LPN_POLLED 0x8d
struct btp_mesh_lpn_polled_ev {
uint16_t net_idx;
uint16_t friend_addr;
uint8_t retry;
} __packed;