Re: [PATCH BlueZ] tools/mesh: add commands for AppKey Get and NetKey Get

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Applied
On Thu, 2020-01-09 at 19:04 -0800, Inga Stotland wrote:
> This implements commands to send AppKey Get and NetKey Get messages and
> to process AppKey List and NetKey List reponses
> ---
>  tools/mesh/cfgcli.c | 100 ++++++++++++++++++++++++++++++++++++++++----
>  1 file changed, 91 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/mesh/cfgcli.c b/tools/mesh/cfgcli.c
> index 2403c9293..50d2ce706 100644
> --- a/tools/mesh/cfgcli.c
> +++ b/tools/mesh/cfgcli.c
> @@ -2,7 +2,7 @@
>   *
>   *  BlueZ - Bluetooth protocol stack for Linux
>   *
> - *  Copyright (C) 2019  Intel Corporation. All rights reserved.
> + *  Copyright (C) 2019-2020  Intel Corporation. All rights reserved.
>   *
>   *
>   *  This library is free software; you can redistribute it and/or
> @@ -406,6 +406,33 @@ static bool msg_recvd(uint16_t src, uint16_t idx, uint8_t *data,
>  
>  		break;
>  
> +	case OP_APPKEY_LIST:
> +		if (len < 3)
> +			break;
> +
> +		bt_shell_printf("AppKey List (node %4.4x) Status %s\n",
> +						src, mesh_status_str(data[0]));
> +		bt_shell_printf("NetKey %3.3x\n", l_get_le16(&data[1]));
> +		len -= 3;
> +
> +		if (data[0] != MESH_STATUS_SUCCESS)
> +			break;
> +
> +		bt_shell_printf("AppKeys:\n");
> +		data += 3;
> +
> +		while (len >= 3) {
> +			bt_shell_printf("\t%3.3x\n", l_get_le16(data) & 0xfff);
> +			bt_shell_printf("\t%3.3x\n", l_get_le16(data + 1) >> 4);
> +			len -= 3;
> +			data += 3;
> +		}
> +
> +		if (len == 2)
> +			bt_shell_printf("\t%3.3x\n", l_get_le16(data));
> +
> +		break;
> +
>  	case OP_NETKEY_STATUS:
>  		if (len != 3)
>  			break;
> @@ -432,6 +459,26 @@ static bool msg_recvd(uint16_t src, uint16_t idx, uint8_t *data,
>  
>  		break;
>  
> +	case OP_NETKEY_LIST:
> +		if (len < 2)
> +			break;
> +
> +		bt_shell_printf("NetKey List (node %4.4x):\n", src);
> +
> +		while (len >= 3) {
> +			net_idx = l_get_le16(data) & 0xfff;
> +			bt_shell_printf("\t%3.3x\n", net_idx);
> +			net_idx = l_get_le16(data + 1) >> 4;
> +			bt_shell_printf("\t%3.3x\n", net_idx);
> +			data += 3;
> +			len -= 3;
> +		}
> +
> +		if (len == 2)
> +			bt_shell_printf("\t%3.3x\n", l_get_le16(data) & 0xfff);
> +
> +		break;
> +
>  	case OP_MODEL_APP_STATUS:
>  		if (len != 7 && len != 9)
>  			break;
> @@ -818,6 +865,32 @@ static void cmd_appkey_del(int argc, char *argv[])
>  	return bt_shell_noninteractive_quit(EXIT_SUCCESS);
>  }
>  
> +static void cmd_appkey_get(int argc, char *argv[])
> +{
> +	uint16_t n;
> +	uint8_t msg[32];
> +
> +	if (IS_UNASSIGNED(target)) {
> +		bt_shell_printf("Destination not set\n");
> +		return bt_shell_noninteractive_quit(EXIT_FAILURE);
> +	}
> +
> +	n = mesh_opcode_set(OP_APPKEY_GET, msg);
> +
> +	if (read_input_parameters(argc, argv) != 1) {
> +		bt_shell_printf("Bad arguments %s\n", argv[1]);
> +		return bt_shell_noninteractive_quit(EXIT_FAILURE);
> +	}
> +
> +	put_le16(parms[0], msg + n);
> +	n += 2;
> +
> +	if (!config_send(msg, n, OP_APPKEY_GET))
> +		return bt_shell_noninteractive_quit(EXIT_FAILURE);
> +
> +	return bt_shell_noninteractive_quit(EXIT_SUCCESS);
> +}
> +
>  static void cmd_key_add(uint32_t opcode, int argc, char *argv[])
>  {
>  	uint16_t key_idx;
> @@ -1382,6 +1455,11 @@ static void cmd_node_reset(int argc, char *argv[])
>  	cmd_default(OP_NODE_RESET);
>  }
>  
> +static void cmd_netkey_get(int argc, char *argv[])
> +{
> +	cmd_default(OP_NETKEY_GET);
> +}
> +
>  static bool tx_setup(model_send_msg_func_t send_func, void *user_data)
>  {
>  	if (!send_func)
> @@ -1404,21 +1482,25 @@ static const struct bt_shell_menu cfg_menu = {
>  	{"composition-get", "[page_num]", cmd_composition_get,
>  				"Get composition data"},
>  	{"netkey-add", "<net_idx>", cmd_netkey_add,
> -				"Add network key"},
> +				"Add NetKey"},
>  	{"netkey-update", "<net_idx>", cmd_netkey_update,
> -				"Update network key"},
> +				"Update NetKey"},
>  	{"netkey-del", "<net_idx>", cmd_netkey_del,
> -				"Delete network key"},
> +				"Delete NetKey"},
> +	{"netkey-get", NULL, cmd_netkey_get,
> +				"List NetKeys known to the node"},
>  	{"appkey-add", "<app_idx>", cmd_appkey_add,
> -				"Add application key"},
> +				"Add AppKey"},
>  	{"appkey-update", "<app_idx>", cmd_appkey_update,
> -				"Add application key"},
> +				"Add AppKey"},
>  	{"appkey-del", "<app_idx>", cmd_appkey_del,
> -				"Delete application key"},
> +				"Delete AppKey"},
> +	{"appkey-get", "<net_idx>", cmd_appkey_get,
> +				"List AppKeys bound to the NetKey"},
>  	{"bind", "<ele_addr> <app_idx> <mod_id> [vendor_id]", cmd_add_binding,
> -				"Bind app key to a model"},
> +				"Bind AppKey to a model"},
>  	{"unbind", "<ele_addr> <app_idx> <mod_id> [vendor_id]", cmd_del_binding,
> -				"Remove app key from a model"},
> +				"Remove AppKey from a model"},
>  	{"mod-appidx-get", "<ele_addr> <model id>", cmd_mod_appidx_get,
>  				"Get model app_idx"},
>  	{"ttl-set", "<ttl>", cmd_ttl_set,




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux