int i, sz;
_bt_mesh_util_convert_hex_to_string(uuid, 16, buf, sizeof(buf));
+ BT_INFO("Mesh: Find Node with UUID [%s]", buf);
json_object_object_get_ex(jcfg, "nodes", &jarray);
if (!jarray || json_object_get_type(jarray) != json_type_array)
return NULL;
sz = json_object_array_length(jarray);
+ BT_INFO("Mesh: Total nodes present in CDB [%d]", sz);
for (i = 0; i < sz; ++i) {
json_object *jentry, *jval;
str = json_object_get_string(jval);
if (strlen(str) != 32)
continue;
-
+ BT_INFO("Mesh: Got one node with UUID [%s]", str);
if (!g_strcmp0(buf, str))
return jentry;
}
return NULL;
jnode = __mesh_get_node_by_uuid(jcfg, cfg->uuid);
- if (jnode)
+ if (!jnode)
return NULL;
/* Get element array object */
return false;
jnode = __mesh_get_node_by_uuid(jcfg, cfg->uuid);
- if (jnode)
+ if (!jnode)
return false;
json_object_object_get_ex(jnode, "elements", &jarray);
return true;
}
-bool _bt_mesh_conf_fetch_vendor_specific_info(_bt_mesh_cdb_t *cfg,
- uint16_t *cid, uint16_t *vid,
- uint16_t *version, uint16_t *crpl,
- int *relay, int *friend,
- int *proxy, int *lpn)
+bool _bt_mesh_conf_fetch_vendor_specific_info(
+ _bt_mesh_cdb_t *cfg, uint16_t unicast,
+ uint16_t *cid, uint16_t *vid,
+ uint16_t *version, uint16_t *crpl,
+ int *relay, int *friend,
+ int *proxy, int *lpn)
{
json_object *jcfg;
json_object *jnode;
if (!cfg)
return false;
-
jcfg = cfg->jcfg;
if (!jcfg)
return false;
- jnode = __mesh_get_node_by_uuid(jcfg, cfg->uuid);
- if (jnode)
+ jnode = __mesh_get_node_by_unicast(cfg, unicast);
+ if (!jnode)
return false;
/* Get CRPL */
str = json_object_get_string(jobj);
if (!str)
return false;
+
if (sscanf(str, "%04hx", crpl) != 1)
return false;
+ BT_INFO("Mesh: Got CRPL[%s]", str);
/* Get Company ID */
if (!json_object_object_get_ex(jnode, "cid", &jobj))
return false;
if (sscanf(str, "%04hx", cid) != 1)
return false;
+ BT_INFO("Mesh: Got CID[%s]", str);
/* Get Vendor ID */
if (!json_object_object_get_ex(jnode, "pid", &jobj))
return false;
if (sscanf(str, "%04hx", vid) != 1)
return false;
+ BT_INFO("Mesh: Got PID[%s]", str);
/* Get Version ID */
if (!json_object_object_get_ex(jnode, "vid", &jobj))
return false;
if (sscanf(str, "%04hx", version) != 1)
return false;
+ BT_INFO("Mesh: got version [%s]", str);
jobj = json_object_object_get(jnode, "features");
if (jobj) {
if (json_object_object_get_ex(jobj, "relay", &jobjfeature)) {
- str = json_object_get_string(jobj);
- if (str)
+ str = json_object_get_string(jobjfeature);
+ if (str) {
sscanf(str, "%d", relay);
+ BT_INFO("Mesh: Got Relay [%s]", str);
+ }
}
if (json_object_object_get_ex(jobj, "friend", &jobjfeature)) {
- str = json_object_get_string(jobj);
- if (str)
+ str = json_object_get_string(jobjfeature);
+ if (str) {
sscanf(str, "%d", friend);
+ BT_INFO("Mesh: Got Friend [%s]", str);
+ }
}
if (json_object_object_get_ex(jobj, "proxy", &jobjfeature)) {
- str = json_object_get_string(jobj);
- if (str)
+ str = json_object_get_string(jobjfeature);
+ if (str) {
sscanf(str, "%d", proxy);
+ BT_INFO("Mesh: Got Proxy[%s]", str);
+ }
}
if (json_object_object_get_ex(jobj, "lowPower", &jobjfeature)) {
- str = json_object_get_string(jobj);
- if (str)
+ str = json_object_get_string(jobjfeature);
+ if (str) {
sscanf(str, "%d", lpn);
+ BT_INFO("Mesh: Got LPN[%s]", str);
+ }
}
}
return true;
(uint8_t *) event->net_uuid.uuid, 16, features.net_uuid,
BLUETOOTH_MESH_NETWORK_UUID_STRING_LENGTH + 1);
features.unicast = event->source;
- _bt_mesh_node_get_vendor_features(event->net_uuid.uuid,
- event->source, &features);
-
+ BT_INFO("Mesh: Net UUID [%s]", features.net_uuid);
+
+ BT_INFO("Mesh: Composition status for node unicast [0x%2.2x]",
+ event->source);
+ if (!_bt_mesh_node_get_vendor_features(event->net_uuid.uuid,
+ event->source, &features)) {
+ BT_ERR("Mesh: Failed to get Vendor Specific Infor for [0x%2.2x]",
+ event->source);
+ result = BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ BT_INFO("Mesh: Got Feature informations for [0x%2.2x]",
+ event->source);
+ }
__bt_mesh_handle_pending_dev_config_request_info(result,
BT_MESH_NODE_GET_VENDOR_FEATURES, &features,
sizeof(bluetooth_mesh_node_features_t));
oal_uuid_t net_uuid;
uint8_t buffer[MESH_CONFIG_BUFFER_MAX_LEN];
+ BT_INFO("Mesh: Vendor features for Network UUID [%s]", req->net_uuid);
_bt_mesh_util_convert_string_to_hex(req->net_uuid,
strlen(req->net_uuid), net_uuid.uuid, 16);
/* Check if Node's vendor features are already svaed or not */
{
GSList *l;
_bt_mesh_cdb_t *cdb_cfg = NULL;
-
+ BT_INFO("Mesh: Attempt to get vendor features: unicast [0x%2.2x]", unicast);
/* Find CDB */
l = g_slist_find_custom(cdb_list, net_uuid,
__mesh_compare_app_network_uuid);
cdb_cfg = (_bt_mesh_cdb_t*)l->data;
- return _bt_mesh_conf_fetch_vendor_specific_info(cdb_cfg,
+ BT_INFO("Mesh: Read Vendor Features from CDB");
+ return _bt_mesh_conf_fetch_vendor_specific_info(cdb_cfg, unicast,
&feats->vendor_info.companyid, &feats->vendor_info.vendorid,
&feats->vendor_info.versionid, &feats->vendor_info.crpl,
&feats->features.relay, &feats->features.frnd,
return BLUETOOTH_ERROR_INTERNAL;
}
- if (!_bt_mesh_conf_fetch_vendor_specific_info(cdb_cfg,
+ if (!_bt_mesh_conf_fetch_vendor_specific_info(cdb_cfg, 0x0001 /* Local Node Unicast */,
&node.vendor_info.companyid, &node.vendor_info.vendorid,
&node.vendor_info.versionid, &node.vendor_info.crpl,
&node.vendor_info.relay, &node.vendor_info.frnd,