@@ -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));
@@ -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;
@@ -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);
@@ -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";