Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Jul 2020 03:57:47 +0000 (UTC)
From:      Takanori Watanabe <takawata@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r363002 - head/usr.sbin/bluetooth/hccontrol
Message-ID:  <202007080357.0683vlm5000595@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: takawata
Date: Wed Jul  8 03:57:47 2020
New Revision: 363002
URL: https://svnweb.freebsd.org/changeset/base/363002

Log:
  Add le_rand command.
  
  PR: 247808
  Submitted by: Marc Veldman

Modified:
  head/usr.sbin/bluetooth/hccontrol/hccontrol.8
  head/usr.sbin/bluetooth/hccontrol/le.c

Modified: head/usr.sbin/bluetooth/hccontrol/hccontrol.8
==============================================================================
--- head/usr.sbin/bluetooth/hccontrol/hccontrol.8	Wed Jul  8 02:28:08 2020	(r363001)
+++ head/usr.sbin/bluetooth/hccontrol/hccontrol.8	Wed Jul  8 03:57:47 2020	(r363002)
@@ -164,6 +164,7 @@ are:
 .It Cm LE_Connect
 .It Cm LE_Read_Channel_Map
 .It Cm LE_Read_Remote_Features
+.It Cm LE_Rand
 .El
 .Pp
 The currently supported node commands in

Modified: head/usr.sbin/bluetooth/hccontrol/le.c
==============================================================================
--- head/usr.sbin/bluetooth/hccontrol/le.c	Wed Jul  8 02:28:08 2020	(r363001)
+++ head/usr.sbin/bluetooth/hccontrol/le.c	Wed Jul  8 03:57:47 2020	(r363002)
@@ -71,6 +71,7 @@ static int le_connect(int s, int argc, char *argv[]);
 static void handle_le_connection_event(ng_hci_event_pkt_t* e, bool verbose);
 static int le_read_channel_map(int s, int argc, char *argv[]);
 static void handle_le_remote_features_event(ng_hci_event_pkt_t* e);
+static int le_rand(int s, int argc, char *argv[]);
 
 static int
 le_set_scan_param(int s, int argc, char *argv[])
@@ -1211,8 +1212,33 @@ static void handle_le_remote_features_event(ng_hci_eve
 	return;
 } /* handle_le_remote_features_event */
 
+static int le_rand(int s, int argc, char *argv[])
+{
+	ng_hci_le_rand_rp rp;
+	int n;
 
+	n = sizeof(rp);
 
+	if (hci_simple_request(s, NG_HCI_OPCODE(NG_HCI_OGF_LE,
+		NG_HCI_OCF_LE_RAND), 
+		(void *)&rp, &n) == ERROR)
+		return (ERROR);
+			
+	if (rp.status != 0x00) {
+		fprintf(stdout, "Status: %s [%#02x]\n", 
+			hci_status2str(rp.status), rp.status);
+		return (FAILED);
+	}
+
+	fprintf(stdout,
+		"Random number : %08llx\n",
+		(unsigned long long)le64toh(rp.random_number));
+
+	return (OK);
+}
+
+
+
 struct hci_command le_commands[] = {
 {
 	"le_enable",
@@ -1335,5 +1361,11 @@ struct hci_command le_commands[] = {
 	  "Read supported features for the device\n"
 	  "identified by the connection handle",
 	  &le_read_remote_features
+  },
+  {
+	  "le_rand",
+	  "le_rand\n"
+	  "Generate 64 bits of random data",
+	  &le_rand
   },
 };



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202007080357.0683vlm5000595>