|
|
@@ -27,28 +27,22 @@
|
|
|
|
|
|
extern s32_t config_msg_timeout;
|
|
|
|
|
|
-static inline void btc_ble_mesh_cfg_client_cb_to_app(esp_ble_mesh_cfg_client_cb_event_t event,
|
|
|
- esp_ble_mesh_cfg_client_cb_param_t *param)
|
|
|
-{
|
|
|
- esp_ble_mesh_cfg_client_cb_t btc_mesh_cb = (esp_ble_mesh_cfg_client_cb_t)btc_profile_cb_get(BTC_PID_CFG_CLIENT);
|
|
|
- if (btc_mesh_cb) {
|
|
|
- btc_mesh_cb(event, param);
|
|
|
- }
|
|
|
-}
|
|
|
+/* Configuration Client Model related functions */
|
|
|
|
|
|
-static inline void btc_ble_mesh_cfg_server_cb_to_app(esp_ble_mesh_cfg_server_cb_event_t event,
|
|
|
- esp_ble_mesh_cfg_server_cb_param_t *param)
|
|
|
+static inline void btc_ble_mesh_config_client_cb_to_app(esp_ble_mesh_cfg_client_cb_event_t event,
|
|
|
+ esp_ble_mesh_cfg_client_cb_param_t *param)
|
|
|
{
|
|
|
- esp_ble_mesh_cfg_server_cb_t btc_mesh_cb = (esp_ble_mesh_cfg_server_cb_t)btc_profile_cb_get(BTC_PID_CFG_SERVER);
|
|
|
- if (btc_mesh_cb) {
|
|
|
- btc_mesh_cb(event, param);
|
|
|
+ esp_ble_mesh_cfg_client_cb_t btc_ble_mesh_cb =
|
|
|
+ (esp_ble_mesh_cfg_client_cb_t)btc_profile_cb_get(BTC_PID_CONFIG_CLIENT);
|
|
|
+ if (btc_ble_mesh_cb) {
|
|
|
+ btc_ble_mesh_cb(event, param);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void btc_ble_mesh_cfg_client_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src)
|
|
|
+void btc_ble_mesh_config_client_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src)
|
|
|
{
|
|
|
- btc_ble_mesh_cfg_client_args_t *dst = (btc_ble_mesh_cfg_client_args_t *)p_dest;
|
|
|
- btc_ble_mesh_cfg_client_args_t *src = (btc_ble_mesh_cfg_client_args_t *)p_src;
|
|
|
+ btc_ble_mesh_config_client_args_t *dst = (btc_ble_mesh_config_client_args_t *)p_dest;
|
|
|
+ btc_ble_mesh_config_client_args_t *src = (btc_ble_mesh_config_client_args_t *)p_src;
|
|
|
|
|
|
if (!msg || !dst || !src) {
|
|
|
LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
@@ -88,11 +82,43 @@ void btc_ble_mesh_cfg_client_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void btc_ble_mesh_cfg_client_copy_req_data(btc_msg_t *msg, void *p_dest, void *p_src)
|
|
|
+static void btc_ble_mesh_config_client_arg_deep_free(btc_msg_t *msg)
|
|
|
+{
|
|
|
+ btc_ble_mesh_config_client_args_t *arg = NULL;
|
|
|
+
|
|
|
+ if (!msg || !msg->arg) {
|
|
|
+ LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ arg = (btc_ble_mesh_config_client_args_t *)(msg->arg);
|
|
|
+
|
|
|
+ switch (msg->act) {
|
|
|
+ case BTC_BLE_MESH_ACT_CONFIG_CLIENT_GET_STATE:
|
|
|
+ if (arg->cfg_client_get_state.params) {
|
|
|
+ osi_free(arg->cfg_client_get_state.params);
|
|
|
+ }
|
|
|
+ if (arg->cfg_client_get_state.get_state) {
|
|
|
+ osi_free(arg->cfg_client_get_state.get_state);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case BTC_BLE_MESH_ACT_CONFIG_CLIENT_SET_STATE:
|
|
|
+ if (arg->cfg_client_set_state.params) {
|
|
|
+ osi_free(arg->cfg_client_set_state.params);
|
|
|
+ }
|
|
|
+ if (arg->cfg_client_set_state.set_state) {
|
|
|
+ osi_free(arg->cfg_client_set_state.set_state);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static void btc_ble_mesh_config_client_copy_req_data(btc_msg_t *msg, void *p_dest, void *p_src)
|
|
|
{
|
|
|
esp_ble_mesh_cfg_client_cb_param_t *p_dest_data = (esp_ble_mesh_cfg_client_cb_param_t *)p_dest;
|
|
|
esp_ble_mesh_cfg_client_cb_param_t *p_src_data = (esp_ble_mesh_cfg_client_cb_param_t *)p_src;
|
|
|
- u32_t opcode;
|
|
|
u16_t length;
|
|
|
|
|
|
if (!msg || !p_src_data || !p_dest_data) {
|
|
|
@@ -100,13 +126,22 @@ static void btc_ble_mesh_cfg_client_copy_req_data(btc_msg_t *msg, void *p_dest,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ if (p_src_data->params) {
|
|
|
+ p_dest_data->params = osi_malloc(sizeof(esp_ble_mesh_client_common_param_t));
|
|
|
+ if (!p_dest_data->params) {
|
|
|
+ LOG_ERROR("%s, Failed to allocate memory, act %d", __func__, msg->act);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ memcpy(p_dest_data->params, p_src_data->params, sizeof(esp_ble_mesh_client_common_param_t));
|
|
|
+ }
|
|
|
+
|
|
|
switch (msg->act) {
|
|
|
case ESP_BLE_MESH_CFG_CLIENT_GET_STATE_EVT:
|
|
|
case ESP_BLE_MESH_CFG_CLIENT_SET_STATE_EVT:
|
|
|
case ESP_BLE_MESH_CFG_CLIENT_PUBLISH_EVT:
|
|
|
if (p_src_data->params) {
|
|
|
- opcode = p_src_data->params->opcode;
|
|
|
- switch (opcode) {
|
|
|
+ switch (p_src_data->params->opcode) {
|
|
|
case OP_DEV_COMP_DATA_GET:
|
|
|
case OP_DEV_COMP_DATA_STATUS:
|
|
|
if (p_src_data->status_cb.comp_data_status.composition_data) {
|
|
|
@@ -186,24 +221,15 @@ static void btc_ble_mesh_cfg_client_copy_req_data(btc_msg_t *msg, void *p_dest,
|
|
|
}
|
|
|
}
|
|
|
case ESP_BLE_MESH_CFG_CLIENT_TIMEOUT_EVT:
|
|
|
- if (p_src_data->params) {
|
|
|
- p_dest_data->params = osi_malloc(sizeof(esp_ble_mesh_client_common_param_t));
|
|
|
- if (p_dest_data->params) {
|
|
|
- memcpy(p_dest_data->params, p_src_data->params, sizeof(esp_ble_mesh_client_common_param_t));
|
|
|
- } else {
|
|
|
- LOG_ERROR("%s, Failed to allocate memory, act %d", __func__, msg->act);
|
|
|
- }
|
|
|
- }
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void btc_ble_mesh_cfg_client_free_req_data(btc_msg_t *msg)
|
|
|
+static void btc_ble_mesh_config_client_free_req_data(btc_msg_t *msg)
|
|
|
{
|
|
|
esp_ble_mesh_cfg_client_cb_param_t *arg = NULL;
|
|
|
- u32_t opcode;
|
|
|
|
|
|
if (!msg || !msg->arg) {
|
|
|
LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
@@ -217,8 +243,7 @@ static void btc_ble_mesh_cfg_client_free_req_data(btc_msg_t *msg)
|
|
|
case ESP_BLE_MESH_CFG_CLIENT_SET_STATE_EVT:
|
|
|
case ESP_BLE_MESH_CFG_CLIENT_PUBLISH_EVT:
|
|
|
if (arg->params) {
|
|
|
- opcode = arg->params->opcode;
|
|
|
- switch (opcode) {
|
|
|
+ switch (arg->params->opcode) {
|
|
|
case OP_DEV_COMP_DATA_GET:
|
|
|
case OP_DEV_COMP_DATA_STATUS:
|
|
|
bt_mesh_free_buf(arg->status_cb.comp_data_status.composition_data);
|
|
|
@@ -257,63 +282,28 @@ static void btc_ble_mesh_cfg_client_free_req_data(btc_msg_t *msg)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void btc_ble_mesh_cfg_client_arg_deep_free(btc_msg_t *msg)
|
|
|
-{
|
|
|
- btc_ble_mesh_cfg_client_args_t *arg = NULL;
|
|
|
-
|
|
|
- if (!msg || !msg->arg) {
|
|
|
- LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- arg = (btc_ble_mesh_cfg_client_args_t *)(msg->arg);
|
|
|
-
|
|
|
- switch (msg->act) {
|
|
|
- case BTC_BLE_MESH_ACT_CONFIG_CLIENT_GET_STATE:
|
|
|
- if (arg->cfg_client_get_state.params) {
|
|
|
- osi_free(arg->cfg_client_get_state.params);
|
|
|
- }
|
|
|
- if (arg->cfg_client_get_state.get_state) {
|
|
|
- osi_free(arg->cfg_client_get_state.get_state);
|
|
|
- }
|
|
|
- break;
|
|
|
- case BTC_BLE_MESH_ACT_CONFIG_CLIENT_SET_STATE:
|
|
|
- if (arg->cfg_client_set_state.params) {
|
|
|
- osi_free(arg->cfg_client_set_state.params);
|
|
|
- }
|
|
|
- if (arg->cfg_client_set_state.set_state) {
|
|
|
- osi_free(arg->cfg_client_set_state.set_state);
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return;
|
|
|
-}
|
|
|
-
|
|
|
-static void btc_mesh_cfg_client_callback(esp_ble_mesh_cfg_client_cb_param_t *cb_params, uint8_t act)
|
|
|
+static void btc_ble_mesh_config_client_callback(esp_ble_mesh_cfg_client_cb_param_t *cb_params, uint8_t act)
|
|
|
{
|
|
|
btc_msg_t msg = {0};
|
|
|
|
|
|
LOG_DEBUG("%s", __func__);
|
|
|
|
|
|
msg.sig = BTC_SIG_API_CB;
|
|
|
- msg.pid = BTC_PID_CFG_CLIENT;
|
|
|
+ msg.pid = BTC_PID_CONFIG_CLIENT;
|
|
|
msg.act = act;
|
|
|
|
|
|
btc_transfer_context(&msg, cb_params,
|
|
|
- sizeof(esp_ble_mesh_cfg_client_cb_param_t), btc_ble_mesh_cfg_client_copy_req_data);
|
|
|
+ sizeof(esp_ble_mesh_cfg_client_cb_param_t), btc_ble_mesh_config_client_copy_req_data);
|
|
|
}
|
|
|
|
|
|
-void bt_mesh_callback_config_status_to_btc(u32_t opcode, u8_t evt_type,
|
|
|
+void bt_mesh_config_client_cb_evt_to_btc(u32_t opcode, u8_t evt_type,
|
|
|
struct bt_mesh_model *model,
|
|
|
struct bt_mesh_msg_ctx *ctx,
|
|
|
const u8_t *val, size_t len)
|
|
|
{
|
|
|
esp_ble_mesh_cfg_client_cb_param_t cb_params = {0};
|
|
|
esp_ble_mesh_client_common_param_t params = {0};
|
|
|
- size_t length;
|
|
|
+ size_t length;
|
|
|
uint8_t act;
|
|
|
|
|
|
if (!model || !ctx) {
|
|
|
@@ -322,16 +312,16 @@ void bt_mesh_callback_config_status_to_btc(u32_t opcode, u8_t evt_type,
|
|
|
}
|
|
|
|
|
|
switch (evt_type) {
|
|
|
- case 0x00:
|
|
|
+ case BTC_BLE_MESH_EVT_CONFIG_CLIENT_GET_STATE:
|
|
|
act = ESP_BLE_MESH_CFG_CLIENT_GET_STATE_EVT;
|
|
|
break;
|
|
|
- case 0x01:
|
|
|
+ case BTC_BLE_MESH_EVT_CONFIG_CLIENT_SET_STATE:
|
|
|
act = ESP_BLE_MESH_CFG_CLIENT_SET_STATE_EVT;
|
|
|
break;
|
|
|
- case 0x02:
|
|
|
+ case BTC_BLE_MESH_EVT_CONFIG_CLIENT_PUBLISH:
|
|
|
act = ESP_BLE_MESH_CFG_CLIENT_PUBLISH_EVT;
|
|
|
break;
|
|
|
- case 0x03:
|
|
|
+ case BTC_BLE_MESH_EVT_CONFIG_CLIENT_TIMEOUT:
|
|
|
act = ESP_BLE_MESH_CFG_CLIENT_TIMEOUT_EVT;
|
|
|
break;
|
|
|
default:
|
|
|
@@ -356,101 +346,32 @@ void bt_mesh_callback_config_status_to_btc(u32_t opcode, u8_t evt_type,
|
|
|
memcpy(&cb_params.status_cb, val, length);
|
|
|
}
|
|
|
|
|
|
- btc_mesh_cfg_client_callback(&cb_params, act);
|
|
|
+ btc_ble_mesh_config_client_callback(&cb_params, act);
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-void btc_mesh_cfg_client_publish_callback(u32_t opcode, struct bt_mesh_model *model,
|
|
|
- struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *buf)
|
|
|
+void btc_ble_mesh_config_client_publish_callback(u32_t opcode,
|
|
|
+ struct bt_mesh_model *model,
|
|
|
+ struct bt_mesh_msg_ctx *ctx,
|
|
|
+ struct net_buf_simple *buf)
|
|
|
{
|
|
|
if (!model || !ctx || !buf) {
|
|
|
LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- bt_mesh_callback_config_status_to_btc(opcode, 0x02, model, ctx, buf->data, buf->len);
|
|
|
-}
|
|
|
-
|
|
|
-void btc_mesh_cfg_client_call_handler(btc_msg_t *msg)
|
|
|
-{
|
|
|
- esp_ble_mesh_cfg_client_cb_param_t cfg_client_cb = {0};
|
|
|
- btc_ble_mesh_cfg_client_args_t *arg = NULL;
|
|
|
- bt_mesh_role_param_t role_param = {0};
|
|
|
-
|
|
|
- if (!msg || !msg->arg) {
|
|
|
- LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- arg = (btc_ble_mesh_cfg_client_args_t *)(msg->arg);
|
|
|
-
|
|
|
- switch (msg->act) {
|
|
|
- case BTC_BLE_MESH_ACT_CONFIG_CLIENT_GET_STATE: {
|
|
|
- cfg_client_cb.params = arg->cfg_client_get_state.params;
|
|
|
- role_param.model = (struct bt_mesh_model *)cfg_client_cb.params->model;
|
|
|
- role_param.role = cfg_client_cb.params->msg_role;
|
|
|
- if (bt_mesh_set_model_role(&role_param)) {
|
|
|
- LOG_ERROR("%s, Failed to set model role", __func__);
|
|
|
- return;
|
|
|
- }
|
|
|
- btc_ble_mesh_config_client_get_state(arg->cfg_client_get_state.params,
|
|
|
- arg->cfg_client_get_state.get_state,
|
|
|
- &cfg_client_cb);
|
|
|
- if (cfg_client_cb.error_code) {
|
|
|
- btc_mesh_cfg_client_callback(&cfg_client_cb, ESP_BLE_MESH_CFG_CLIENT_GET_STATE_EVT);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- case BTC_BLE_MESH_ACT_CONFIG_CLIENT_SET_STATE: {
|
|
|
- cfg_client_cb.params = arg->cfg_client_set_state.params;
|
|
|
- role_param.model = (struct bt_mesh_model *)cfg_client_cb.params->model;
|
|
|
- role_param.role = cfg_client_cb.params->msg_role;
|
|
|
- if (bt_mesh_set_model_role(&role_param)) {
|
|
|
- LOG_ERROR("%s, Failed to set model role", __func__);
|
|
|
- return;
|
|
|
- }
|
|
|
- btc_ble_mesh_config_client_set_state(arg->cfg_client_set_state.params,
|
|
|
- arg->cfg_client_set_state.set_state,
|
|
|
- &cfg_client_cb);
|
|
|
- if (cfg_client_cb.error_code) {
|
|
|
- btc_mesh_cfg_client_callback(&cfg_client_cb, ESP_BLE_MESH_CFG_CLIENT_SET_STATE_EVT);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- btc_ble_mesh_cfg_client_arg_deep_free(msg);
|
|
|
-}
|
|
|
-
|
|
|
-void btc_mesh_cfg_client_cb_handler(btc_msg_t *msg)
|
|
|
-{
|
|
|
- esp_ble_mesh_cfg_client_cb_param_t *param = NULL;
|
|
|
-
|
|
|
- if (!msg || !msg->arg) {
|
|
|
- LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- param = (esp_ble_mesh_cfg_client_cb_param_t *)(msg->arg);
|
|
|
-
|
|
|
- if (msg->act < ESP_BLE_MESH_CFG_CLIENT_EVT_MAX) {
|
|
|
- btc_ble_mesh_cfg_client_cb_to_app(msg->act, param);
|
|
|
- } else {
|
|
|
- LOG_ERROR("%s, Unknown msg->act = %d", __func__, msg->act);
|
|
|
- }
|
|
|
-
|
|
|
- btc_ble_mesh_cfg_client_free_req_data(msg);
|
|
|
+ bt_mesh_config_client_cb_evt_to_btc(opcode,
|
|
|
+ BTC_BLE_MESH_EVT_CONFIG_CLIENT_PUBLISH, model, ctx, buf->data, buf->len);
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
-int btc_ble_mesh_config_client_get_state(esp_ble_mesh_client_common_param_t *params,
|
|
|
- esp_ble_mesh_cfg_client_get_state_t *get_state,
|
|
|
- esp_ble_mesh_cfg_client_cb_param_t *cfg_client_cb)
|
|
|
+static int btc_ble_mesh_config_client_get_state(esp_ble_mesh_client_common_param_t *params,
|
|
|
+ esp_ble_mesh_cfg_client_get_state_t *get,
|
|
|
+ esp_ble_mesh_cfg_client_cb_param_t *cb)
|
|
|
{
|
|
|
struct bt_mesh_msg_ctx ctx = {0};
|
|
|
|
|
|
- if (!params || !cfg_client_cb) {
|
|
|
+ if (!params || !cb) {
|
|
|
LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
@@ -465,66 +386,68 @@ int btc_ble_mesh_config_client_get_state(esp_ble_mesh_client_common_param_t *par
|
|
|
|
|
|
switch (params->opcode) {
|
|
|
case ESP_BLE_MESH_MODEL_OP_BEACON_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_beacon_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_beacon_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_DEFAULT_TTL_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_ttl_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_ttl_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_FRIEND_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_friend_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_friend_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_GATT_PROXY_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_gatt_proxy_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_gatt_proxy_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_RELAY_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_relay_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_relay_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_PUB_GET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_pub_get(&ctx, get_state->model_pub_get.element_addr, get_state->model_pub_get.model_id,
|
|
|
- get_state->model_pub_get.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_pub_get(&ctx, get->model_pub_get.element_addr,
|
|
|
+ get->model_pub_get.model_id, get->model_pub_get.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_HEARTBEAT_PUB_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_hb_pub_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_hb_pub_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_HEARTBEAT_SUB_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_hb_sub_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_hb_sub_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_COMPOSITION_DATA_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_comp_data_get(&ctx, get_state->comp_data_get.page));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_comp_data_get(&ctx, get->comp_data_get.page));
|
|
|
case ESP_BLE_MESH_MODEL_OP_SIG_MODEL_SUB_GET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_get(&ctx, get_state->sig_model_sub_get.element_addr, get_state->sig_model_sub_get.model_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_get(&ctx, get->sig_model_sub_get.element_addr,
|
|
|
+ get->sig_model_sub_get.model_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_VENDOR_MODEL_SUB_GET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_get_vnd(&ctx, get_state->vnd_model_sub_get.element_addr,
|
|
|
- get_state->vnd_model_sub_get.model_id, get_state->vnd_model_sub_get.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_get_vnd(&ctx, get->vnd_model_sub_get.element_addr,
|
|
|
+ get->vnd_model_sub_get.model_id, get->vnd_model_sub_get.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NET_KEY_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_net_key_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_net_key_get(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_APP_KEY_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_app_key_get(&ctx, get_state->app_key_get.net_idx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_app_key_get(&ctx, get->app_key_get.net_idx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NODE_IDENTITY_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_node_identity_get(&ctx, get_state->node_identity_get.net_idx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_node_identity_get(&ctx, get->node_identity_get.net_idx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_SIG_MODEL_APP_GET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_app_get(&ctx, get_state->sig_model_app_get.element_addr, get_state->sig_model_app_get.model_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_app_get(&ctx, get->sig_model_app_get.element_addr,
|
|
|
+ get->sig_model_app_get.model_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_VENDOR_MODEL_APP_GET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_app_get_vnd(&ctx, get_state->vnd_model_app_get.element_addr,
|
|
|
- get_state->vnd_model_app_get.model_id, get_state->vnd_model_app_get.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_app_get_vnd(&ctx, get->vnd_model_app_get.element_addr,
|
|
|
+ get->vnd_model_app_get.model_id, get->vnd_model_app_get.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_KEY_REFRESH_PHASE_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_kr_phase_get(&ctx, get_state->kr_phase_get.net_idx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_kr_phase_get(&ctx, get->kr_phase_get.net_idx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_LPN_POLLTIMEOUT_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_lpn_timeout_get(&ctx, get_state->lpn_pollto_get.lpn_addr));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_lpn_timeout_get(&ctx, get->lpn_pollto_get.lpn_addr));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NETWORK_TRANSMIT_GET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_net_transmit_get(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_net_transmit_get(&ctx));
|
|
|
default:
|
|
|
- BT_WARN("%s, Invalid opcode 0x%x", __func__, params->opcode);
|
|
|
- return (cfg_client_cb->error_code = -EINVAL);
|
|
|
+ LOG_ERROR("%s, Invalid opcode 0x%x", __func__, params->opcode);
|
|
|
+ return (cb->error_code = -EINVAL);
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int btc_ble_mesh_config_client_set_state(esp_ble_mesh_client_common_param_t *params,
|
|
|
- esp_ble_mesh_cfg_client_set_state_t *set_state,
|
|
|
- esp_ble_mesh_cfg_client_cb_param_t *cfg_client_cb)
|
|
|
+static int btc_ble_mesh_config_client_set_state(esp_ble_mesh_client_common_param_t *params,
|
|
|
+ esp_ble_mesh_cfg_client_set_state_t *set,
|
|
|
+ esp_ble_mesh_cfg_client_cb_param_t *cb)
|
|
|
{
|
|
|
struct bt_mesh_msg_ctx ctx = {0};
|
|
|
|
|
|
- if (!params || !set_state || !cfg_client_cb) {
|
|
|
+ if (!params || !set || !cb) {
|
|
|
LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
@@ -539,141 +462,245 @@ int btc_ble_mesh_config_client_set_state(esp_ble_mesh_client_common_param_t *par
|
|
|
|
|
|
switch (params->opcode) {
|
|
|
case ESP_BLE_MESH_MODEL_OP_BEACON_SET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_beacon_set(&ctx, set_state->beacon_set.beacon));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_beacon_set(&ctx, set->beacon_set.beacon));
|
|
|
case ESP_BLE_MESH_MODEL_OP_DEFAULT_TTL_SET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_ttl_set(&ctx, set_state->default_ttl_set.ttl));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_ttl_set(&ctx, set->default_ttl_set.ttl));
|
|
|
case ESP_BLE_MESH_MODEL_OP_FRIEND_SET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_friend_set(&ctx, set_state->friend_set.friend_state));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_friend_set(&ctx, set->friend_set.friend_state));
|
|
|
case ESP_BLE_MESH_MODEL_OP_GATT_PROXY_SET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_gatt_proxy_set(&ctx, set_state->gatt_proxy_set.gatt_proxy));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_gatt_proxy_set(&ctx, set->gatt_proxy_set.gatt_proxy));
|
|
|
case ESP_BLE_MESH_MODEL_OP_RELAY_SET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_relay_set(&ctx, set_state->relay_set.relay, set_state->relay_set.relay_retransmit));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_relay_set(&ctx, set->relay_set.relay, set->relay_set.relay_retransmit));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NET_KEY_ADD:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_net_key_add(&ctx, set_state->net_key_add.net_idx, &set_state->net_key_add.net_key[0]));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_net_key_add(&ctx, set->net_key_add.net_idx,
|
|
|
+ &set->net_key_add.net_key[0]));
|
|
|
case ESP_BLE_MESH_MODEL_OP_APP_KEY_ADD:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_app_key_add(&ctx, set_state->app_key_add.net_idx,
|
|
|
- set_state->app_key_add.app_idx, &set_state->app_key_add.app_key[0]));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_app_key_add(&ctx, set->app_key_add.net_idx,
|
|
|
+ set->app_key_add.app_idx, &set->app_key_add.app_key[0]));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_APP_BIND:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_app_bind(&ctx, set_state->model_app_bind.element_addr, set_state->model_app_bind.model_app_idx,
|
|
|
- set_state->model_app_bind.model_id, set_state->model_app_bind.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_app_bind(&ctx, set->model_app_bind.element_addr,
|
|
|
+ set->model_app_bind.model_app_idx, set->model_app_bind.model_id,
|
|
|
+ set->model_app_bind.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_PUB_SET: {
|
|
|
struct bt_mesh_cfg_mod_pub model_pub = {
|
|
|
- .addr = set_state->model_pub_set.publish_addr,
|
|
|
- .app_idx = set_state->model_pub_set.publish_app_idx,
|
|
|
- .cred_flag = set_state->model_pub_set.cred_flag,
|
|
|
- .ttl = set_state->model_pub_set.publish_ttl,
|
|
|
- .period = set_state->model_pub_set.publish_period,
|
|
|
- .transmit = set_state->model_pub_set.publish_retransmit,
|
|
|
+ .addr = set->model_pub_set.publish_addr,
|
|
|
+ .app_idx = set->model_pub_set.publish_app_idx,
|
|
|
+ .cred_flag = set->model_pub_set.cred_flag,
|
|
|
+ .ttl = set->model_pub_set.publish_ttl,
|
|
|
+ .period = set->model_pub_set.publish_period,
|
|
|
+ .transmit = set->model_pub_set.publish_retransmit,
|
|
|
};
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_pub_set(&ctx, set_state->model_pub_set.element_addr, set_state->model_pub_set.model_id,
|
|
|
- set_state->model_pub_set.company_id, &model_pub));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_pub_set(&ctx, set->model_pub_set.element_addr,
|
|
|
+ set->model_pub_set.model_id, set->model_pub_set.company_id, &model_pub));
|
|
|
}
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_ADD:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_add(&ctx, set_state->model_sub_add.element_addr, set_state->model_sub_add.sub_addr,
|
|
|
- set_state->model_sub_add.model_id, set_state->model_sub_add.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_add(&ctx, set->model_sub_add.element_addr,
|
|
|
+ set->model_sub_add.sub_addr, set->model_sub_add.model_id,
|
|
|
+ set->model_sub_add.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_DELETE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_del(&ctx, set_state->model_sub_delete.element_addr, set_state->model_sub_delete.sub_addr,
|
|
|
- set_state->model_sub_delete.model_id, set_state->model_sub_delete.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_del(&ctx, set->model_sub_delete.element_addr,
|
|
|
+ set->model_sub_delete.sub_addr, set->model_sub_delete.model_id,
|
|
|
+ set->model_sub_delete.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_OVERWRITE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_overwrite(&ctx, set_state->model_sub_overwrite.element_addr, set_state->model_sub_overwrite.sub_addr,
|
|
|
- set_state->model_sub_overwrite.model_id, set_state->model_sub_overwrite.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_overwrite(&ctx, set->model_sub_overwrite.element_addr,
|
|
|
+ set->model_sub_overwrite.sub_addr, set->model_sub_overwrite.model_id,
|
|
|
+ set->model_sub_overwrite.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_VIRTUAL_ADDR_ADD:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_va_add(&ctx, set_state->model_sub_va_add.element_addr, &set_state->model_sub_va_add.label_uuid[0],
|
|
|
- set_state->model_sub_va_add.model_id, set_state->model_sub_va_add.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_va_add(&ctx, set->model_sub_va_add.element_addr,
|
|
|
+ &set->model_sub_va_add.label_uuid[0], set->model_sub_va_add.model_id,
|
|
|
+ set->model_sub_va_add.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_VIRTUAL_ADDR_OVERWRITE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_va_overwrite(&ctx, set_state->model_sub_va_overwrite.element_addr, &set_state->model_sub_va_overwrite.label_uuid[0],
|
|
|
- set_state->model_sub_va_overwrite.model_id, set_state->model_sub_va_overwrite.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_va_overwrite(&ctx, set->model_sub_va_overwrite.element_addr,
|
|
|
+ &set->model_sub_va_overwrite.label_uuid[0], set->model_sub_va_overwrite.model_id,
|
|
|
+ set->model_sub_va_overwrite.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_VIRTUAL_ADDR_DELETE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_va_del(&ctx, set_state->model_sub_va_delete.element_addr, &set_state->model_sub_va_delete.label_uuid[0],
|
|
|
- set_state->model_sub_va_delete.model_id, set_state->model_sub_va_delete.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_va_del(&ctx, set->model_sub_va_delete.element_addr,
|
|
|
+ &set->model_sub_va_delete.label_uuid[0], set->model_sub_va_delete.model_id,
|
|
|
+ set->model_sub_va_delete.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_HEARTBEAT_SUB_SET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_hb_sub_set(&ctx, (struct bt_mesh_cfg_hb_sub *)&set_state->heartbeat_sub_set));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_hb_sub_set(&ctx,
|
|
|
+ (struct bt_mesh_cfg_hb_sub *)&set->heartbeat_sub_set));
|
|
|
case ESP_BLE_MESH_MODEL_OP_HEARTBEAT_PUB_SET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_hb_pub_set(&ctx, (const struct bt_mesh_cfg_hb_pub *)&set_state->heartbeat_pub_set));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_hb_pub_set(&ctx,
|
|
|
+ (const struct bt_mesh_cfg_hb_pub *)&set->heartbeat_pub_set));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NODE_RESET:
|
|
|
- return (cfg_client_cb->error_code = bt_mesh_cfg_node_reset(&ctx));
|
|
|
+ return (cb->error_code = bt_mesh_cfg_node_reset(&ctx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_PUB_VIRTUAL_ADDR_SET: {
|
|
|
struct bt_mesh_cfg_mod_pub model_pub = {
|
|
|
- .app_idx = set_state->model_pub_va_set.publish_app_idx,
|
|
|
- .cred_flag = set_state->model_pub_va_set.cred_flag,
|
|
|
- .ttl = set_state->model_pub_va_set.publish_ttl,
|
|
|
- .period = set_state->model_pub_va_set.publish_period,
|
|
|
- .transmit = set_state->model_pub_va_set.publish_retransmit,
|
|
|
+ .app_idx = set->model_pub_va_set.publish_app_idx,
|
|
|
+ .cred_flag = set->model_pub_va_set.cred_flag,
|
|
|
+ .ttl = set->model_pub_va_set.publish_ttl,
|
|
|
+ .period = set->model_pub_va_set.publish_period,
|
|
|
+ .transmit = set->model_pub_va_set.publish_retransmit,
|
|
|
};
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_pub_va_set(&ctx, set_state->model_pub_va_set.element_addr, set_state->model_pub_va_set.model_id,
|
|
|
- set_state->model_pub_va_set.company_id, set_state->model_pub_va_set.label_uuid, &model_pub));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_pub_va_set(&ctx, set->model_pub_va_set.element_addr,
|
|
|
+ set->model_pub_va_set.model_id, set->model_pub_va_set.company_id,
|
|
|
+ set->model_pub_va_set.label_uuid, &model_pub));
|
|
|
}
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_SUB_DELETE_ALL:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_sub_del_all(&ctx, set_state->model_sub_delete_all.element_addr,
|
|
|
- set_state->model_sub_delete_all.model_id, set_state->model_sub_delete_all.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_sub_del_all(&ctx, set->model_sub_delete_all.element_addr,
|
|
|
+ set->model_sub_delete_all.model_id, set->model_sub_delete_all.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NET_KEY_UPDATE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_net_key_update(&ctx, set_state->net_key_update.net_idx, set_state->net_key_update.net_key));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_net_key_update(&ctx, set->net_key_update.net_idx,
|
|
|
+ set->net_key_update.net_key));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NET_KEY_DELETE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_net_key_delete(&ctx, set_state->net_key_delete.net_idx));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_net_key_delete(&ctx, set->net_key_delete.net_idx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_APP_KEY_UPDATE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_app_key_update(&ctx, set_state->app_key_update.net_idx, set_state->app_key_update.app_idx,
|
|
|
- set_state->app_key_update.app_key));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_app_key_update(&ctx, set->app_key_update.net_idx,
|
|
|
+ set->app_key_update.app_idx, set->app_key_update.app_key));
|
|
|
case ESP_BLE_MESH_MODEL_OP_APP_KEY_DELETE:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_app_key_delete(&ctx, set_state->app_key_delete.net_idx, set_state->app_key_delete.app_idx));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_app_key_delete(&ctx, set->app_key_delete.net_idx,
|
|
|
+ set->app_key_delete.app_idx));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NODE_IDENTITY_SET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_node_identity_set(&ctx, set_state->node_identity_set.net_idx, set_state->node_identity_set.identity));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_node_identity_set(&ctx, set->node_identity_set.net_idx,
|
|
|
+ set->node_identity_set.identity));
|
|
|
case ESP_BLE_MESH_MODEL_OP_MODEL_APP_UNBIND:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_mod_app_unbind(&ctx, set_state->model_app_unbind.element_addr, set_state->model_app_unbind.model_app_idx,
|
|
|
- set_state->model_app_unbind.model_id, set_state->model_app_unbind.company_id));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_mod_app_unbind(&ctx, set->model_app_unbind.element_addr,
|
|
|
+ set->model_app_unbind.model_app_idx, set->model_app_unbind.model_id,
|
|
|
+ set->model_app_unbind.company_id));
|
|
|
case ESP_BLE_MESH_MODEL_OP_KEY_REFRESH_PHASE_SET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_kr_phase_set(&ctx, set_state->kr_phase_set.net_idx, set_state->kr_phase_set.transition));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_kr_phase_set(&ctx, set->kr_phase_set.net_idx,
|
|
|
+ set->kr_phase_set.transition));
|
|
|
case ESP_BLE_MESH_MODEL_OP_NETWORK_TRANSMIT_SET:
|
|
|
- return (cfg_client_cb->error_code =
|
|
|
- bt_mesh_cfg_net_transmit_set(&ctx, set_state->net_transmit_set.net_transmit));
|
|
|
+ return (cb->error_code =
|
|
|
+ bt_mesh_cfg_net_transmit_set(&ctx, set->net_transmit_set.net_transmit));
|
|
|
default:
|
|
|
- BT_WARN("%s, Invalid opcode 0x%x", __func__, params->opcode);
|
|
|
- return (cfg_client_cb->error_code = -EINVAL);
|
|
|
+ LOG_ERROR("%s, Invalid opcode 0x%x", __func__, params->opcode);
|
|
|
+ return (cb->error_code = -EINVAL);
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static void btc_mesh_cfg_server_callback(esp_ble_mesh_cfg_server_cb_param_t *cb_params, uint8_t act)
|
|
|
+void btc_ble_mesh_config_client_call_handler(btc_msg_t *msg)
|
|
|
+{
|
|
|
+ btc_ble_mesh_config_client_args_t *arg = NULL;
|
|
|
+ esp_ble_mesh_cfg_client_cb_param_t cb = {0};
|
|
|
+ bt_mesh_role_param_t role_param = {0};
|
|
|
+
|
|
|
+ if (!msg || !msg->arg) {
|
|
|
+ LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ arg = (btc_ble_mesh_config_client_args_t *)(msg->arg);
|
|
|
+
|
|
|
+ switch (msg->act) {
|
|
|
+ case BTC_BLE_MESH_ACT_CONFIG_CLIENT_GET_STATE: {
|
|
|
+ cb.params = arg->cfg_client_get_state.params;
|
|
|
+ role_param.model = (struct bt_mesh_model *)cb.params->model;
|
|
|
+ role_param.role = cb.params->msg_role;
|
|
|
+ if (bt_mesh_set_client_model_role(&role_param)) {
|
|
|
+ LOG_ERROR("%s, Failed to set model role", __func__);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ btc_ble_mesh_config_client_get_state(arg->cfg_client_get_state.params,
|
|
|
+ arg->cfg_client_get_state.get_state,
|
|
|
+ &cb);
|
|
|
+ if (cb.error_code) {
|
|
|
+ btc_ble_mesh_config_client_callback(&cb, ESP_BLE_MESH_CFG_CLIENT_GET_STATE_EVT);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case BTC_BLE_MESH_ACT_CONFIG_CLIENT_SET_STATE: {
|
|
|
+ cb.params = arg->cfg_client_set_state.params;
|
|
|
+ role_param.model = (struct bt_mesh_model *)cb.params->model;
|
|
|
+ role_param.role = cb.params->msg_role;
|
|
|
+ if (bt_mesh_set_client_model_role(&role_param)) {
|
|
|
+ LOG_ERROR("%s, Failed to set model role", __func__);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ btc_ble_mesh_config_client_set_state(arg->cfg_client_set_state.params,
|
|
|
+ arg->cfg_client_set_state.set_state,
|
|
|
+ &cb);
|
|
|
+ if (cb.error_code) {
|
|
|
+ btc_ble_mesh_config_client_callback(&cb, ESP_BLE_MESH_CFG_CLIENT_SET_STATE_EVT);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ btc_ble_mesh_config_client_arg_deep_free(msg);
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
+void btc_ble_mesh_config_client_cb_handler(btc_msg_t *msg)
|
|
|
+{
|
|
|
+ esp_ble_mesh_cfg_client_cb_param_t *param = NULL;
|
|
|
+
|
|
|
+ if (!msg || !msg->arg) {
|
|
|
+ LOG_ERROR("%s, Invalid parameter", __func__);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ param = (esp_ble_mesh_cfg_client_cb_param_t *)(msg->arg);
|
|
|
+
|
|
|
+ if (msg->act < ESP_BLE_MESH_CFG_CLIENT_EVT_MAX) {
|
|
|
+ btc_ble_mesh_config_client_cb_to_app(msg->act, param);
|
|
|
+ } else {
|
|
|
+ LOG_ERROR("%s, Unknown msg->act = %d", __func__, msg->act);
|
|
|
+ }
|
|
|
+
|
|
|
+ btc_ble_mesh_config_client_free_req_data(msg);
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
+/* Configuration Server Model related functions */
|
|
|
+
|
|
|
+static inline void btc_ble_mesh_config_server_cb_to_app(esp_ble_mesh_cfg_server_cb_event_t event,
|
|
|
+ esp_ble_mesh_cfg_server_cb_param_t *param)
|
|
|
+{
|
|
|
+ esp_ble_mesh_cfg_server_cb_t btc_ble_mesh_cb =
|
|
|
+ (esp_ble_mesh_cfg_server_cb_t)btc_profile_cb_get(BTC_PID_CONFIG_SERVER);
|
|
|
+ if (btc_ble_mesh_cb) {
|
|
|
+ btc_ble_mesh_cb(event, param);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static void btc_ble_mesh_config_server_callback(esp_ble_mesh_cfg_server_cb_param_t *cb_params, uint8_t act)
|
|
|
{
|
|
|
btc_msg_t msg = {0};
|
|
|
|
|
|
LOG_DEBUG("%s", __func__);
|
|
|
|
|
|
msg.sig = BTC_SIG_API_CB;
|
|
|
- msg.pid = BTC_PID_CFG_SERVER;
|
|
|
+ msg.pid = BTC_PID_CONFIG_SERVER;
|
|
|
msg.act = act;
|
|
|
|
|
|
btc_transfer_context(&msg, cb_params, sizeof(esp_ble_mesh_cfg_server_cb_param_t), NULL);
|
|
|
}
|
|
|
|
|
|
-void bt_mesh_callback_cfg_server_event_to_btc(u8_t evt_type, struct bt_mesh_model *model,
|
|
|
+void bt_mesh_config_server_cb_evt_to_btc(u8_t evt_type,
|
|
|
+ struct bt_mesh_model *model,
|
|
|
struct bt_mesh_msg_ctx *ctx,
|
|
|
const u8_t *val, size_t len)
|
|
|
{
|
|
|
esp_ble_mesh_cfg_server_cb_param_t cb_params = {0};
|
|
|
- size_t length;
|
|
|
+ size_t length;
|
|
|
uint8_t act;
|
|
|
|
|
|
if (!model || !ctx) {
|
|
|
@@ -682,7 +709,7 @@ void bt_mesh_callback_cfg_server_event_to_btc(u8_t evt_type, struct bt_mesh_mode
|
|
|
}
|
|
|
|
|
|
switch (evt_type) {
|
|
|
- case 0x00:
|
|
|
+ case BTC_BLE_MESH_EVT_CONFIG_SERVER_RECV_MSG:
|
|
|
act = ESP_BLE_MESH_CFG_SERVER_RECV_MSG_EVT;
|
|
|
break;
|
|
|
default:
|
|
|
@@ -703,10 +730,11 @@ void bt_mesh_callback_cfg_server_event_to_btc(u8_t evt_type, struct bt_mesh_mode
|
|
|
memcpy(&cb_params.status_cb, val, length);
|
|
|
}
|
|
|
|
|
|
- btc_mesh_cfg_server_callback(&cb_params, act);
|
|
|
+ btc_ble_mesh_config_server_callback(&cb_params, act);
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
-void btc_mesh_cfg_server_cb_handler(btc_msg_t *msg)
|
|
|
+void btc_ble_mesh_config_server_cb_handler(btc_msg_t *msg)
|
|
|
{
|
|
|
esp_ble_mesh_cfg_server_cb_param_t *param = NULL;
|
|
|
|
|
|
@@ -718,7 +746,7 @@ void btc_mesh_cfg_server_cb_handler(btc_msg_t *msg)
|
|
|
param = (esp_ble_mesh_cfg_server_cb_param_t *)(msg->arg);
|
|
|
|
|
|
if (msg->act < ESP_BLE_MESH_CFG_SERVER_EVT_MAX) {
|
|
|
- btc_ble_mesh_cfg_server_cb_to_app(msg->act, param);
|
|
|
+ btc_ble_mesh_config_server_cb_to_app(msg->act, param);
|
|
|
} else {
|
|
|
LOG_ERROR("%s, Unknown msg->act = %d", __func__, msg->act);
|
|
|
}
|