All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Kenzior <denkenz@gmail.com>
To: iwd@lists.01.org
Subject: Re: [PATCH v2 4/5] client: implement "ap <wlan> show"
Date: Thu, 21 Jan 2021 13:59:28 -0600	[thread overview]
Message-ID: <68674134-27f7-6b16-a059-50d3ddce4a73@gmail.com> (raw)
In-Reply-To: <20210121181113.572092-4-prestwoj@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3286 bytes --]

Hi James,

On 1/21/21 12:11 PM, James Prestwood wrote:
> This command uses GetDiagnostics to show a list of connected
> clients and some information about them. The information
> contained for each connected station nearly maps 1:1 with the
> station diagnostics information shown in "station <wlan> show"
> apart from "ConnectedBss" which is now "Address".
> ---
>   client/ap.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 73 insertions(+)
> 
> diff --git a/client/ap.c b/client/ap.c
> index a6a2681b..6e2e96c4 100644
> --- a/client/ap.c
> +++ b/client/ap.c
> @@ -189,6 +189,76 @@ static enum cmd_status cmd_stop(const char *device_name, char **argv, int argc)
>   	return CMD_STATUS_TRIGGERED;
>   }
>   
> +static struct proxy_interface_type ap_diagnostic_interface_type = {
> +	.interface = IWD_AP_DIAGNOSTIC_INTERFACE,
> +};
> +
> +static void display_bitrate_100kbps(struct l_dbus_message_iter *variant,
> +				const char *key, const char *margin,
> +				int name_column_width, int value_column_width)
> +{
> +	uint32_t rate;
> +
> +	l_dbus_message_iter_get_variant(variant, "u", &rate);
> +
> +	display("%s%-*s%-*u Kbit/s\n", margin, name_column_width, key,
> +			value_column_width, rate * 100);
> +}

You don't want this in display.[ch] somewhere?

> +
> +static const struct display_dict_mapping diagnostic_mapping[] = {
> +	{ "Address", 's', NULL },
> +	{ "RxMode", 's', NULL },
> +	{ "TxMode", 's', NULL },
> +	{ "RxBitrate", 0, display_bitrate_100kbps },
> +	{ "TxBitrate", 0, display_bitrate_100kbps },
> +	{ "ExpectedThroughput", 'u', "Kbit/s" },
> +	{ "RSSI", 'n', "dBm" },
> +	{ "RxMCS", 'y', NULL },
> +	{ "TxMCS", 'y', NULL},
> +	{ NULL }
> +};
> +
> +static void ap_get_diagnostics_callback(struct l_dbus_message *message,
> +					void *user_data)
> +{
> +	struct l_dbus_message_iter array;
> +	struct l_dbus_message_iter iter;
> +	uint16_t idx = 0;
> +	char client_num[15];
> +
> +	if (dbus_message_has_error(message))
> +		return;

Does this need to print something as well?

> +
> +	if (!l_dbus_message_get_arguments(message, "aa{sv}", &array)) {
> +		display("Failed to parse GetDiagnostics message");
> +		return;
> +	}
> +
> +	while (l_dbus_message_iter_next_entry(&array, &iter)) {
> +		sprintf(client_num, "Client %u", idx++);
> +		display_table_header(client_num, "%-*s%-*s",
> +					20, "Property", 20, "Value");
> +		display_dictionary(&iter, diagnostic_mapping, "", 20, 20);
> +		display_table_footer();
> +	}
> +}
> +
> +static enum cmd_status cmd_show(const char *device_name, char **argv, int argc)
> +{
> +	const struct proxy_interface *ap_diagnostic =
> +		device_proxy_find(device_name, IWD_AP_DIAGNOSTIC_INTERFACE);
> +
> +	if (!ap_diagnostic) {
> +		display("No ap on device: '%s'\n", device_name);
> +		return CMD_STATUS_INVALID_VALUE;
> +	}
> +
> +	proxy_interface_method_call(ap_diagnostic, "GetDiagnostics", "",
> +					ap_get_diagnostics_callback);
> +
> +	return CMD_STATUS_TRIGGERED;
> +}
> +
>   static const struct command ap_commands[] = {
>   	{ NULL, "list", NULL, cmd_list, "List devices in AP mode", true },
>   	{ "<wlan>", "start", "<\"network name\"> <passphrase>", cmd_start,

Regards,
-Denis

  reply	other threads:[~2021-01-21 19:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-21 18:11 [PATCH v2 1/5] station: commonize the building of diagnostic dict James Prestwood
2021-01-21 18:11 ` [PATCH v2 2/5] ap: add AP diagnostic interface James Prestwood
2021-01-21 18:11 ` [PATCH v2 3/5] client: implement display_dictionary James Prestwood
2021-01-21 19:55   ` Denis Kenzior
2021-01-21 19:58     ` James Prestwood
2021-01-21 18:11 ` [PATCH v2 4/5] client: implement "ap <wlan> show" James Prestwood
2021-01-21 19:59   ` Denis Kenzior [this message]
2021-01-21 20:05     ` James Prestwood
2021-01-21 20:12       ` Denis Kenzior
2021-01-21 20:16         ` James Prestwood
2021-01-21 18:11 ` [PATCH v2 5/5] client: update station to use display_dictionary James Prestwood
2021-01-21 20:08 ` [PATCH v2 1/5] station: commonize the building of diagnostic dict Denis Kenzior
2021-01-21 20:10   ` James Prestwood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=68674134-27f7-6b16-a059-50d3ddce4a73@gmail.com \
    --to=denkenz@gmail.com \
    --cc=iwd@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.