mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-09-14 05:00:06 +00:00
mesh: Config client net_key_del
Adds a Config Client API for deleting netkeys on the target node, with matching shell command. this is port of c4e3ca040b307a1418c30922e5bb14eee3c5e878
This commit is contained in:
committed by
Łukasz Rymanowski
parent
27cb1c9411
commit
0e77feeec2
@@ -69,6 +69,9 @@ int bt_mesh_cfg_net_key_add(u16_t net_idx, u16_t addr, u16_t key_net_idx,
|
||||
int bt_mesh_cfg_net_key_get(u16_t net_idx, u16_t addr, u16_t *keys,
|
||||
size_t *key_cnt);
|
||||
|
||||
int bt_mesh_cfg_net_key_del(uint16_t net_idx, uint16_t addr,
|
||||
uint16_t key_net_idx, uint8_t *status);
|
||||
|
||||
int bt_mesh_cfg_app_key_add(u16_t net_idx, u16_t addr, u16_t key_net_idx,
|
||||
u16_t key_app_idx, const u8_t app_key[16],
|
||||
u8_t *status);
|
||||
|
||||
@@ -1057,6 +1057,45 @@ int bt_mesh_cfg_net_key_get(u16_t net_idx, u16_t addr, u16_t *keys,
|
||||
return cli_wait();
|
||||
}
|
||||
|
||||
int bt_mesh_cfg_net_key_del(uint16_t net_idx, uint16_t addr,
|
||||
uint16_t key_net_idx, uint8_t *status)
|
||||
{
|
||||
struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NET_KEY_DEL, 2);
|
||||
struct bt_mesh_msg_ctx ctx = {
|
||||
.net_idx = net_idx,
|
||||
.app_idx = BT_MESH_KEY_DEV_REMOTE,
|
||||
.addr = addr,
|
||||
.send_ttl = BT_MESH_TTL_DEFAULT,
|
||||
};
|
||||
struct net_key_param param = {
|
||||
.status = status,
|
||||
.net_idx = key_net_idx,
|
||||
};
|
||||
int err;
|
||||
|
||||
err = cli_prepare(¶m, OP_NET_KEY_STATUS);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
bt_mesh_model_msg_init(msg, OP_NET_KEY_DEL);
|
||||
net_buf_simple_add_le16(msg, key_net_idx);
|
||||
|
||||
err = bt_mesh_model_send(cli->model, &ctx, msg, NULL, NULL);
|
||||
if (err) {
|
||||
BT_ERR("model_send() failed (err %d)", err);
|
||||
cli_reset();
|
||||
return err;
|
||||
}
|
||||
|
||||
if (!status) {
|
||||
cli_reset();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return cli_wait();
|
||||
}
|
||||
|
||||
int bt_mesh_cfg_app_key_add(u16_t net_idx, u16_t addr, u16_t key_net_idx,
|
||||
u16_t key_app_idx, const u8_t app_key[16],
|
||||
u8_t *status)
|
||||
|
||||
@@ -1360,6 +1360,35 @@ struct shell_cmd_help cmd_net_key_get_help = {
|
||||
NULL, NULL, NULL
|
||||
};
|
||||
|
||||
static int cmd_net_key_del(size_t argc, char *argv[])
|
||||
{
|
||||
uint16_t key_net_idx;
|
||||
uint8_t status;
|
||||
int err;
|
||||
|
||||
key_net_idx = strtoul(argv[1], NULL, 0);
|
||||
|
||||
err = bt_mesh_cfg_net_key_del(net.net_idx, net.dst, key_net_idx,
|
||||
&status);
|
||||
if (err) {
|
||||
printk("Unable to send NetKeyDel (err %d)", err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (status) {
|
||||
printk("NetKeyDel failed with status 0x%02x",
|
||||
status);
|
||||
} else {
|
||||
printk("NetKey 0x%03x deleted", key_net_idx);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct shell_cmd_help cmd_net_key_del_help = {
|
||||
NULL, "<NetKeyIndex>", NULL
|
||||
};
|
||||
|
||||
static int cmd_app_key_add(int argc, char *argv[])
|
||||
{
|
||||
u8_t key_val[16];
|
||||
@@ -3276,6 +3305,11 @@ static const struct shell_cmd mesh_commands[] = {
|
||||
.sc_cmd_func = cmd_net_key_get,
|
||||
.help = &cmd_net_key_get_help,
|
||||
},
|
||||
{
|
||||
.sc_cmd = "net-key-del",
|
||||
.sc_cmd_func = cmd_net_key_del,
|
||||
.help = &cmdcmd_net_key_del_help,
|
||||
},
|
||||
{
|
||||
.sc_cmd = "app-key-add",
|
||||
.sc_cmd_func = cmd_app_key_add,
|
||||
|
||||
Reference in New Issue
Block a user