if (!mesh_db_node_set_composition(src, data, len))
bt_shell_printf("Failed to save node composition!\n");
+ else
+ remote_set_composition(src, true);
+
break;
case OP_APPKEY_STATUS:
return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
+ if (!remote_has_composition(target)) {
+ bt_shell_printf("Node composition is unknown\n");
+ bt_shell_printf("Call \"get-composition\" first\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
n = mesh_opcode_set(opcode, msg);
put_le16(parms[0], msg + n);
return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
+ if (!remote_has_composition(target)) {
+ bt_shell_printf("Node composition is unknown\n");
+ bt_shell_printf("Call \"get-composition\" first\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
pub_addr = parms[1];
grp = l_queue_find(groups, match_group_addr, L_UINT_TO_PTR(pub_addr));
return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
+ if (!remote_has_composition(target)) {
+ bt_shell_printf("Node composition is unknown\n");
+ bt_shell_printf("Call \"get-composition\" first\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
sub_addr = parms[1];
grp = l_queue_find(groups, match_group_addr, L_UINT_TO_PTR(sub_addr));
uint8_t msg[32];
uint32_t parm_cnt;
+ if (IS_UNASSIGNED(target)) {
+ bt_shell_printf("Destination not set\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
n = mesh_opcode_set(OP_CONFIG_HEARTBEAT_SUB_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
remote_update_app_key(unicast, key_idx, updated, false);
}
- load_composition(jnode, unicast);
+ if (!load_composition(jnode, unicast))
+ continue;
- node_count++;
+ /* If "crpl" is present, composition's is available */
+ jval = NULL;
+ if (json_object_object_get_ex(jnode, "crpl", &jval) && jval)
+ remote_set_composition(unicast, true);
/* TODO: Add the rest of the configuration */
+
+ node_count++;
}
if (node_count != sz)
struct l_queue *net_keys;
struct l_queue *app_keys;
struct l_queue **els;
+ bool comp;
uint8_t uuid[16];
uint8_t num_ele;
};
return true;
}
+void remote_set_composition(uint16_t addr, bool comp)
+{
+ struct remote_node *rmt;
+
+ rmt = l_queue_find(nodes, match_node_addr, L_UINT_TO_PTR(addr));
+ if (!rmt)
+ return;
+
+ rmt->comp = comp;
+}
+
+bool remote_has_composition(uint16_t addr)
+{
+ struct remote_node *rmt;
+
+ rmt = l_queue_find(nodes, match_node_addr, L_UINT_TO_PTR(addr));
+ if (!rmt)
+ return false;
+
+ return rmt->comp;
+}
+
bool remote_add_net_key(uint16_t addr, uint16_t net_idx, bool save)
{
struct remote_node *rmt;
bool remote_update_app_key(uint16_t addr, uint16_t app_idx, bool update,
bool save);
void remote_finish_key_refresh(uint16_t addr, uint16_t net_idx);
+void remote_set_composition(uint16_t addr, bool comp);
+bool remote_has_composition(uint16_t addr);
bool remote_del_app_key(uint16_t addr, uint16_t app_idx);
uint16_t remote_get_subnet_idx(uint16_t addr);
void remote_print_node(uint16_t addr);