All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoffer Holmstedt <christoffer@christofferholmstedt.se>
To: linux-wpan@vger.kernel.org
Subject: [PATCH wpan-tools 1/2] info: add cca mode descriptive text to output
Date: Thu, 4 Jun 2015 11:20:42 +0200	[thread overview]
Message-ID: <20150604092036.GA8041@probook-6560b> (raw)

Signed-off-by: Christoffer Holmstedt <christoffer@christofferholmstedt.se>
---
 src/info.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 62 insertions(+), 18 deletions(-)

diff --git a/src/info.c b/src/info.c
index 2434bef6a87f..d2e88febd20c 100644
--- a/src/info.c
+++ b/src/info.c
@@ -146,6 +146,41 @@ static void print_freq_handler(int channel_page, int channel)
 	}
 }
 
+static void print_cca_mode_handler(enum nl802154_cca_modes cca_mode,
+				   enum nl802154_cca_opts cca_opt)
+{
+	switch (cca_mode) {
+	case NL802154_CCA_ENERGY:
+		printf("energy above threshold");
+		break;
+	case NL802154_CCA_CARRIER:
+		printf("carrier sense only");
+		break;
+	case NL802154_CCA_ENERGY_CARRIER:
+		printf("carrier sense with energy above threshold");
+		switch (cca_opt) {
+		case NL802154_CCA_OPT_ENERGY_CARRIER_AND:
+			printf(" (logical operator is 'and')");
+			break;
+		case NL802154_CCA_OPT_ENERGY_CARRIER_OR:
+			printf(" (logical operator is 'or')");
+			break;
+		default:
+			printf(" (logical operator is unknown)");
+		}
+		break;
+	case NL802154_CCA_ALOHA:
+		printf("ALOHA");
+		break;
+	case NL802154_CCA_UWB_SHR:
+		printf("UWB preamble sense based on the SHR of a frame");
+		break;
+	case NL802154_CCA_UWB_MULTIPEXED:
+		printf("UWB preamble sense based on the packet with the multiplexed preamble");
+		break;
+	}
+}
+
 static const char *commands[NL802154_CMD_MAX + 1] = {
 	[NL802154_CMD_UNSPEC] = "unspec",
 	[NL802154_CMD_GET_WPAN_PHY] = "get_wpan_phy",
@@ -235,23 +270,14 @@ static int print_phy_handler(struct nl_msg *msg, void *arg)
 	}
 
 	if (tb_msg[NL802154_ATTR_CCA_MODE]) {
+		enum nl802154_cca_opts cca_opt;
+		if (tb_msg[NL802154_ATTR_CCA_OPT])
+			cca_opt = nla_get_u32(tb_msg[NL802154_ATTR_CCA_OPT]);
+
 		cca_mode = nla_get_u32(tb_msg[NL802154_ATTR_CCA_MODE]);
-		printf("cca_mode: %d", cca_mode);
-		if (cca_mode == NL802154_CCA_ENERGY_CARRIER) {
-			enum nl802154_cca_opts cca_opt;
 
-			cca_opt = nla_get_u32(tb_msg[NL802154_ATTR_CCA_OPT]);
-			switch (cca_opt) {
-			case NL802154_CCA_OPT_ENERGY_CARRIER_AND:
-				printf(" logical and ");
-				break;
-			case NL802154_CCA_OPT_ENERGY_CARRIER_OR:
-				printf(" logical or ");
-				break;
-			default:
-				printf(" logical op mode unkown ");
-			}
-		}
+		printf("cca_mode: %d, ", cca_mode);
+		print_cca_mode_handler(cca_mode, cca_opt);
 		printf("\n");
 	}
 
@@ -361,10 +387,28 @@ static int print_phy_handler(struct nl_msg *msg, void *arg)
 			printf("\tcca_modes: ");
 			nla_for_each_nested(nl_cca_modes,
 					    tb_caps[NL802154_CAP_ATTR_CCA_MODES],
-					    rem_cca_modes)
-				printf("%d,", nla_type(nl_cca_modes));
+					    rem_cca_modes) {
+				if (nla_type(nl_cca_modes) != NL802154_CCA_ENERGY_CARRIER) {
+					printf("\n\t\t(%d) ", nla_type(nl_cca_modes));
+					print_cca_mode_handler(nla_type(nl_cca_modes), 0);
+				} else {
+					if (tb_caps[NL802154_CAP_ATTR_CCA_OPTS]) {
+						struct nlattr *nl_cca_opts;
+						int rem_cca_opts;
+
+						nla_for_each_nested(nl_cca_opts,
+								    tb_caps[NL802154_CAP_ATTR_CCA_OPTS],
+								    rem_cca_opts) {
+							printf("\n\t\t(%d, ", nla_type(nl_cca_modes));
+							printf("cca_opt: %d) ", nla_type(nl_cca_opts));
+							print_cca_mode_handler(nla_type(nl_cca_modes),
+										nla_type(nl_cca_opts));
+						}
+					}
+				}
+			}
 			/* TODO */
-			printf("\b \n");
+			printf("\n");
 		}
 
 		if (tb_caps[NL802154_CAP_ATTR_CCA_OPTS]) {
-- 
1.9.1


-- 
Christoffer Holmstedt

             reply	other threads:[~2015-06-04  9:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-04  9:20 Christoffer Holmstedt [this message]
2015-06-04 11:01 ` [PATCH wpan-tools 1/2] info: add cca mode descriptive text to output Alexander Aring
2015-06-04 11:55   ` Christoffer Holmstedt

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=20150604092036.GA8041@probook-6560b \
    --to=christoffer@christofferholmstedt.se \
    --cc=linux-wpan@vger.kernel.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.