summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/mesh-cfgclient.c9
-rw-r--r--tools/mesh/cfgcli.c15
-rw-r--r--tools/mesh/cfgcli.h2
-rw-r--r--tools/mesh/util.c2
4 files changed, 26 insertions, 2 deletions
diff --git a/tools/mesh-cfgclient.c b/tools/mesh-cfgclient.c
index 50be82bcf..6d2d34409 100644
--- a/tools/mesh-cfgclient.c
+++ b/tools/mesh-cfgclient.c
@@ -43,7 +43,8 @@
#define CFG_SRV_MODEL 0x0000
#define CFG_CLI_MODEL 0x0001
-#define RPR_SVR_MODEL 0xFFFF0004
+#define RPR_SVR_MODEL 0x0004
+#define RPR_CLI_MODEL 0x0005
#define PRV_BEACON_SVR 0x0008
#define PRV_BEACON_CLI 0x0009
@@ -775,6 +776,10 @@ static void attach_node_reply(struct l_dbus_proxy *proxy,
remote_clear_rejected_addresses(ivi);
}
+ /* Read own node composition */
+ if (!cfgcli_get_comp(0x0001, 128))
+ l_error("Failed to read own composition");
+
return;
fail:
@@ -863,7 +868,7 @@ static void scan_start(void *user_data, uint16_t dst, uint32_t model)
{
struct scan_data *data;
- if (model != RPR_SVR_MODEL)
+ if (model != (0xffff0000 | RPR_SVR_MODEL))
return;
data = l_malloc(sizeof(struct scan_data));
diff --git a/tools/mesh/cfgcli.c b/tools/mesh/cfgcli.c
index 4f6248e48..1a404af38 100644
--- a/tools/mesh/cfgcli.c
+++ b/tools/mesh/cfgcli.c
@@ -1081,6 +1081,21 @@ static void cmd_default(uint32_t opcode)
return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
+
+bool cfgcli_get_comp(uint16_t unicast, uint8_t page)
+{
+ uint16_t n;
+ uint8_t msg[32];
+
+ n = mesh_opcode_set(OP_DEV_COMP_GET, msg);
+
+ msg[n++] = page;
+
+ target = unicast;
+
+ return config_send(msg, n, OP_DEV_COMP_GET);
+}
+
static void cmd_composition_get(int argc, char *argv[])
{
uint16_t n;
diff --git a/tools/mesh/cfgcli.h b/tools/mesh/cfgcli.h
index 7281caa46..621dd0259 100644
--- a/tools/mesh/cfgcli.h
+++ b/tools/mesh/cfgcli.h
@@ -19,4 +19,6 @@ typedef void (*delete_remote_func_t) (uint16_t primary, uint8_t ele_cnt);
struct model_info *cfgcli_init(key_send_func_t key_func,
delete_remote_func_t del_node, void *user_data);
+
+bool cfgcli_get_comp(uint16_t unicast, uint8_t page);
void cfgcli_cleanup(void);
diff --git a/tools/mesh/util.c b/tools/mesh/util.c
index d8c47c0e9..dea496dbe 100644
--- a/tools/mesh/util.c
+++ b/tools/mesh/util.c
@@ -138,6 +138,8 @@ const char *sig_model_string(uint16_t sig_model_id)
case 0x0001: return "Configuration Client";
case 0x0002: return "Health Server";
case 0x0003: return "Health Client";
+ case 0x0004: return "Remote Provisioning Server";
+ case 0x0005: return "Remote Provisioning Client";
case 0x0008: return "Private Beacon Server";
case 0x0009: return "Private Beacon Client";
case 0x1000: return "Generic OnOff Server";