You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by na...@apache.org on 2020/01/07 11:18:07 UTC

[mynewt-nimble] branch master updated (b2f8bd3 -> 23faa0a)

This is an automated email from the ASF dual-hosted git repository.

naraj pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git.


    from b2f8bd3  nimble/ll: Improve ext header parsing in sync PDU
     new 8277e78  apps/bttester: Fix success response on L2CAP send data
     new 6290d39  apps/bttester: Support 2 L2CAP signaling procs
     new 0ceef89  apps/bttester: Use random addr from HW instead of generating new one
     new 38e8ed1  apps/bttester: Add Device Information Service
     new 3eb6178  apps/bttester: Fix error handling when doing GATT Discovery
     new b5fafe7  apps/bttester: Improve logging for GATT Write Long
     new f113668  apps/bttester: Fix BTP MTU size
     new 482c71f  apps/bttester: Add missing supported commands bits
     new 133e7ec  apps/bttester: Add missing Pairing Consent command/event
     new cfdfd8a  apps/bttester: Add support for legacy and SC OOB pairing
     new f48abe7  apps/bttester: Add support for Set Bondable command
     new 91d332d  apps/bttester: Add Set MITM command
     new a1a8722  apps/bttester: Fix GATT Client read callbacks
     new 23faa0a  apps/bttester: Add connection retries on fail to be established

The 14 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 apps/bttester/pkg.yml        |   2 +
 apps/bttester/src/bttester.h |  37 +++++-
 apps/bttester/src/gap.c      | 303 +++++++++++++++++++++++++++++++++++--------
 apps/bttester/src/gatt.c     | 103 ++++++++++-----
 apps/bttester/src/l2cap.c    |   7 +-
 apps/bttester/syscfg.yml     |  13 +-
 6 files changed, 372 insertions(+), 93 deletions(-)


[mynewt-nimble] 13/14: apps/bttester: Fix GATT Client read callbacks

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit a1a872296eae9ce1718c8d90ee72efc956ab8a69
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Wed Dec 18 16:28:34 2019 +0100

    apps/bttester: Fix GATT Client read callbacks
---
 apps/bttester/src/gatt.c | 45 +++++++++++++++++++++++++++++----------------
 1 file changed, 29 insertions(+), 16 deletions(-)

diff --git a/apps/bttester/src/gatt.c b/apps/bttester/src/gatt.c
index 7196da4..7e7d1d3 100644
--- a/apps/bttester/src/gatt.c
+++ b/apps/bttester/src/gatt.c
@@ -675,18 +675,18 @@ static int read_cb(uint16_t conn_handle,
 			    CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
 		read_destroy();
 		return 0;
-}
+	}
 
 	if (!gatt_buf_add(attr->om->om_data, attr->om->om_len)) {
 		tester_rsp(BTP_SERVICE_ID_GATT, btp_opcode,
-		CONTROLLER_INDEX, BTP_STATUS_FAILED);
+			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
 		read_destroy();
 		return 0;
 	}
 
 	rp->data_length += attr->om->om_len;
 	tester_send(BTP_SERVICE_ID_GATT, btp_opcode,
-	CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
+		    CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
 	read_destroy();
 
 	return 0;
@@ -705,21 +705,24 @@ static void read(u8_t *data, u16_t len)
 		goto fail;
 	}
 
+	/* Clear buffer */
+	read_destroy();
+
 	if (!gatt_buf_reserve(sizeof(struct gatt_read_rp))) {
 		goto fail;
 	}
 
 	if (ble_gattc_read(conn.conn_handle, sys_le16_to_cpu(cmd->handle),
 			   read_cb, (void *)GATT_READ)) {
-		discover_destroy();
+		read_destroy();
 		goto fail;
 	}
 
 	return;
 
 fail:
-tester_rsp(BTP_SERVICE_ID_GATT, GATT_READ, CONTROLLER_INDEX,
-	   BTP_STATUS_FAILED);
+	tester_rsp(BTP_SERVICE_ID_GATT, GATT_READ, CONTROLLER_INDEX,
+		   BTP_STATUS_FAILED);
 }
 
 static int read_long_cb(uint16_t conn_handle,
@@ -751,7 +754,7 @@ static int read_long_cb(uint16_t conn_handle,
 		tester_rsp(BTP_SERVICE_ID_GATT, btp_opcode,
 			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
 		read_destroy();
-		return 0;
+		return BLE_HS_ENOMEM;
 	}
 
 	rp->data_length += attr->om->om_len;
@@ -772,6 +775,9 @@ static void read_long(u8_t *data, u16_t len)
 		goto fail;
 	}
 
+	/* Clear buffer */
+	read_destroy();
+
 	if (!gatt_buf_reserve(sizeof(struct gatt_read_rp))) {
 		goto fail;
 	}
@@ -780,7 +786,7 @@ static void read_long(u8_t *data, u16_t len)
 				sys_le16_to_cpu(cmd->handle),
 				sys_le16_to_cpu(cmd->offset),
 				read_long_cb, (void *)GATT_READ_LONG)) {
-		discover_destroy();
+		read_destroy();
 		goto fail;
 	}
 
@@ -809,15 +815,19 @@ static void read_multiple(u8_t *data, u16_t len)
 		goto fail;
 	}
 
+	/* Clear buffer */
+	read_destroy();
+
 	if (!gatt_buf_reserve(sizeof(struct gatt_read_rp))) {
 		goto fail;
 	}
 
 	if (ble_gattc_read_mult(conn.conn_handle, handles,
-		cmd->handles_count, read_cb, (void *)GATT_READ_MULTIPLE)) {
-		discover_destroy();
+				cmd->handles_count, read_cb,
+				(void *)GATT_READ_MULTIPLE)) {
+		read_destroy();
 		goto fail;
-}
+	}
 
 	return;
 
@@ -1007,6 +1017,9 @@ static void read_uuid(u8_t *data, u16_t len)
 		goto fail;
 	}
 
+	/* Clear buffer */
+	read_destroy();
+
 	if (!gatt_buf_reserve(sizeof(struct gatt_read_rp))) {
 		goto fail;
 	}
@@ -1015,7 +1028,7 @@ static void read_uuid(u8_t *data, u16_t len)
 				   sys_le16_to_cpu(cmd->start_handle),
 				   sys_le16_to_cpu(cmd->end_handle), &uuid.u,
 				   read_long_cb, (void *)GATT_READ_UUID)) {
-		discover_destroy();
+		read_destroy();
 		goto fail;
 	}
 
@@ -1060,7 +1073,7 @@ static int disc_prim_uuid_cb(uint16_t conn_handle,
 		tester_rsp(BTP_SERVICE_ID_GATT, opcode,
 		CONTROLLER_INDEX, BTP_STATUS_FAILED);
 		discover_destroy();
-		return BLE_HS_EDONE;
+		return BLE_HS_ENOMEM;
 	}
 
 	service->start_handle = sys_cpu_to_le16(gatt_svc->start_handle);
@@ -1115,7 +1128,7 @@ static int disc_all_desc_cb(uint16_t conn_handle,
 		tester_rsp(BTP_SERVICE_ID_GATT, GATT_DISC_ALL_DESC,
 			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
 		discover_destroy();
-		return BLE_HS_EDONE;
+		return BLE_HS_ENOMEM;
 	}
 
 	dsc->descriptor_handle = sys_cpu_to_le16(gatt_dsc->handle);
@@ -1235,7 +1248,7 @@ static int find_included_cb(uint16_t conn_handle,
 		tester_rsp(BTP_SERVICE_ID_GATT, GATT_FIND_INCLUDED,
 			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
 		discover_destroy();
-		return BLE_HS_EDONE;
+		return BLE_HS_ENOMEM;
 	}
 
 	/* FIXME */
@@ -1292,7 +1305,7 @@ static int disc_chrc_cb(uint16_t conn_handle,
 		tester_rsp(BTP_SERVICE_ID_GATT, btp_opcode,
 			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
 		discover_destroy();
-		return BLE_HS_EDONE;
+		return BLE_HS_ENOMEM;
 	}
 
 	chrc->characteristic_handle = sys_cpu_to_le16(gatt_chr->def_handle);


[mynewt-nimble] 05/14: apps/bttester: Fix error handling when doing GATT Discovery

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 3eb61786c28786b5572fb6b8a72a5b31f7ea8a33
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Fri Oct 18 15:58:34 2019 +0200

    apps/bttester: Fix error handling when doing GATT Discovery
    
    Previously we would respond to the BTP Tester with a
    list of attributes that were discovered before receiving an error.
    
    Now we just respond with a failure if we receive an error.
---
 apps/bttester/src/gatt.c | 38 +++++++++++++++++++++++++++++++++-----
 1 file changed, 33 insertions(+), 5 deletions(-)

diff --git a/apps/bttester/src/gatt.c b/apps/bttester/src/gatt.c
index 6f2cdc5..9a58194 100644
--- a/apps/bttester/src/gatt.c
+++ b/apps/bttester/src/gatt.c
@@ -1038,9 +1038,16 @@ static int disc_prim_uuid_cb(uint16_t conn_handle,
 
 	SYS_LOG_DBG("");
 
-	if (error->status != 0) {
+	if (error->status != 0 && error->status != BLE_HS_EDONE) {
+		tester_rsp(BTP_SERVICE_ID_GATT, opcode,
+			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
+		discover_destroy();
+		return 0;
+	}
+
+	if (error->status == BLE_HS_EDONE) {
 		tester_send(BTP_SERVICE_ID_GATT, opcode,
-		CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
+			    CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
 		discover_destroy();
 		return 0;
 	}
@@ -1086,7 +1093,14 @@ static int disc_all_desc_cb(uint16_t conn_handle,
 
 	SYS_LOG_DBG("");
 
-	if (error->status != 0) {
+	if (error->status != 0 && error->status != BLE_HS_EDONE) {
+		tester_rsp(BTP_SERVICE_ID_GATT, GATT_DISC_ALL_DESC,
+			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
+		discover_destroy();
+		return 0;
+	}
+
+	if (error->status == BLE_HS_EDONE) {
 		tester_send(BTP_SERVICE_ID_GATT, GATT_DISC_ALL_DESC,
 			    CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
 		discover_destroy();
@@ -1198,7 +1212,14 @@ static int find_included_cb(uint16_t conn_handle,
 
 	SYS_LOG_DBG("");
 
-	if (error->status != 0) {
+	if (error->status != 0 && error->status != BLE_HS_EDONE) {
+		tester_rsp(BTP_SERVICE_ID_GATT, GATT_FIND_INCLUDED,
+			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
+		discover_destroy();
+		return 0;
+	}
+
+	if (error->status == BLE_HS_EDONE) {
 		tester_send(BTP_SERVICE_ID_GATT, GATT_FIND_INCLUDED,
 			    CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
 		discover_destroy();
@@ -1249,7 +1270,14 @@ static int disc_chrc_cb(uint16_t conn_handle,
 
 	SYS_LOG_DBG("");
 
-	if (error->status != 0) {
+	if (error->status != 0 && error->status != BLE_HS_EDONE) {
+		tester_rsp(BTP_SERVICE_ID_GATT, btp_opcode,
+			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
+		discover_destroy();
+		return 0;
+	}
+
+	if (error->status == BLE_HS_EDONE) {
 		tester_send(BTP_SERVICE_ID_GATT, btp_opcode,
 			    CONTROLLER_INDEX, gatt_buf.buf, gatt_buf.len);
 		discover_destroy();


[mynewt-nimble] 12/14: apps/bttester: Add Set MITM command

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 91d332d275fee1fae6a9cfa9a4ef31ca023650e5
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Thu Oct 3 15:20:45 2019 +0200

    apps/bttester: Add Set MITM command
---
 apps/bttester/src/bttester.h |  5 +++++
 apps/bttester/src/gap.c      | 17 ++++++++++++++---
 apps/bttester/syscfg.yml     |  2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/apps/bttester/src/bttester.h b/apps/bttester/src/bttester.h
index 9991248..f4e66a6 100644
--- a/apps/bttester/src/bttester.h
+++ b/apps/bttester/src/bttester.h
@@ -315,6 +315,11 @@ struct gap_oob_sc_set_remote_data_cmd {
     u8_t c[16];
 } __packed;
 
+#define GAP_SET_MITM		0x1b
+struct gap_set_mitm_cmd {
+    u8_t mitm;
+} __packed;
+
 /* events */
 #define GAP_EV_NEW_SETTINGS		0x80
 struct gap_new_settings_ev {
diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index 38d6bc0..687f806 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -124,6 +124,7 @@ static void supported_commands(u8_t *data, u16_t len)
 	tester_set_bit(cmds, GAP_OOB_LEGACY_SET_DATA);
 	tester_set_bit(cmds, GAP_OOB_SC_GET_LOCAL_DATA);
 	tester_set_bit(cmds, GAP_OOB_SC_SET_REMOTE_DATA);
+	tester_set_bit(cmds, GAP_SET_MITM);
 
 	tester_send(BTP_SERVICE_ID_GAP, GAP_READ_SUPPORTED_COMMANDS,
 		    CONTROLLER_INDEX, (u8_t *) rp, sizeof(cmds));
@@ -203,8 +204,6 @@ static void controller_info(u8_t *data, u16_t len)
 		}
 	}
 
-	ble_hs_cfg.sm_mitm = 0;
-
 	supported_settings |= BIT(GAP_SETTINGS_POWERED);
 	supported_settings |= BIT(GAP_SETTINGS_CONNECTABLE);
 	supported_settings |= BIT(GAP_SETTINGS_BONDABLE);
@@ -1217,7 +1216,6 @@ static void set_io_cap(const u8_t *data, u16_t len)
 		ble_hs_cfg.sm_io_cap = BLE_SM_IO_CAP_NO_IO;
 		ble_hs_cfg.sm_mitm = 0;
 		break;
-		break;
 	case GAP_IO_CAP_KEYBOARD_ONLY:
 		ble_hs_cfg.sm_io_cap = BLE_SM_IO_CAP_KEYBOARD_ONLY;
 		ble_hs_cfg.sm_mitm = 1;
@@ -1499,6 +1497,16 @@ static void oob_sc_set_remote_data(const u8_t *data, u16_t len)
 		   CONTROLLER_INDEX, BTP_STATUS_SUCCESS);
 }
 
+static void set_mitm(const u8_t *data, u16_t len)
+{
+	const struct gap_set_mitm_cmd *cmd = (void *) data;
+
+	ble_hs_cfg.sm_mitm = cmd->mitm;
+
+	tester_rsp(BTP_SERVICE_ID_GAP, GAP_SET_MITM,
+		   CONTROLLER_INDEX, BTP_STATUS_SUCCESS);
+}
+
 void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data,
 		       u16_t len)
 {
@@ -1587,6 +1595,9 @@ void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data,
 	case GAP_OOB_SC_SET_REMOTE_DATA:
 		oob_sc_set_remote_data(data, len);
 		return;
+	case GAP_SET_MITM:
+		set_mitm(data, len);
+		return;
 	default:
 		tester_rsp(BTP_SERVICE_ID_GAP, opcode, index,
 			   BTP_STATUS_UNKNOWN_CMD);
diff --git a/apps/bttester/syscfg.yml b/apps/bttester/syscfg.yml
index bfdaa36..d2291aa 100644
--- a/apps/bttester/syscfg.yml
+++ b/apps/bttester/syscfg.yml
@@ -86,7 +86,7 @@ syscfg.vals:
     BLE_L2CAP_COC_MPS: 100
     BLE_RPA_TIMEOUT: 30
     BLE_SM_BONDING: 1
-    BLE_SM_MITM: 1
+    BLE_SM_MITM: 0
     BLE_SM_SC: 1
     BLE_SM_OUR_KEY_DIST: 7
     BLE_SM_THEIR_KEY_DIST: 7


[mynewt-nimble] 09/14: apps/bttester: Add missing Pairing Consent command/event

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 133e7ec33371f9993695d3500f384233eea0f731
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Tue Dec 17 10:50:16 2019 +0100

    apps/bttester: Add missing Pairing Consent command/event
---
 apps/bttester/src/bttester.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/apps/bttester/src/bttester.h b/apps/bttester/src/bttester.h
index d3d4f73..3c5638f 100644
--- a/apps/bttester/src/bttester.h
+++ b/apps/bttester/src/bttester.h
@@ -291,6 +291,13 @@ struct gap_conn_param_update_cmd {
     u16_t supervision_timeout;
 } __packed;
 
+#define GAP_PAIRING_CONSENT_RSP		0x17
+struct gap_pairing_consent_rsp_cmd {
+    u8_t address_type;
+    u8_t address[6];
+    u8_t consent;
+} __packed;
+
 /* events */
 #define GAP_EV_NEW_SETTINGS		0x80
 struct gap_new_settings_ev {
@@ -370,6 +377,12 @@ struct gap_sec_level_changed_ev {
     u8_t level;
 } __packed;
 
+#define GAP_EV_PAIRING_CONSENT_REQ	0x8a
+struct gap_pairing_consent_req_ev {
+    u8_t address_type;
+    u8_t address[6];
+} __packed;
+
 /* GATT Service */
 /* commands */
 #define GATT_READ_SUPPORTED_COMMANDS	0x01


[mynewt-nimble] 08/14: apps/bttester: Add missing supported commands bits

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 482c71f5690c87541c48667ce26090956c00ab36
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Mon Dec 2 11:43:10 2019 +0100

    apps/bttester: Add missing supported commands bits
---
 apps/bttester/src/gap.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index 175020b..7325e59 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -115,6 +115,8 @@ static void supported_commands(u8_t *data, u16_t len)
 	tester_set_bit(cmds, GAP_UNPAIR);
 	tester_set_bit(cmds, GAP_PASSKEY_ENTRY);
 	tester_set_bit(cmds, GAP_PASSKEY_CONFIRM);
+	tester_set_bit(cmds, GAP_START_DIRECT_ADV);
+	tester_set_bit(cmds, GAP_CONN_PARAM_UPDATE);
 
 	tester_send(BTP_SERVICE_ID_GAP, GAP_READ_SUPPORTED_COMMANDS,
 		    CONTROLLER_INDEX, (u8_t *) rp, sizeof(cmds));


[mynewt-nimble] 10/14: apps/bttester: Add support for legacy and SC OOB pairing

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit cfdfd8a419e92091a22922a8c4de27c0aa4f268e
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Tue Dec 17 10:54:09 2019 +0100

    apps/bttester: Add support for legacy and SC OOB pairing
---
 apps/bttester/src/bttester.h |  17 +++++++
 apps/bttester/src/gap.c      | 113 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 128 insertions(+), 2 deletions(-)

diff --git a/apps/bttester/src/bttester.h b/apps/bttester/src/bttester.h
index 3c5638f..372ccd7 100644
--- a/apps/bttester/src/bttester.h
+++ b/apps/bttester/src/bttester.h
@@ -298,6 +298,23 @@ struct gap_pairing_consent_rsp_cmd {
     u8_t consent;
 } __packed;
 
+#define GAP_OOB_LEGACY_SET_DATA		0x18
+struct gap_oob_legacy_set_data_cmd {
+    u8_t oob_data[16];
+} __packed;
+
+#define GAP_OOB_SC_GET_LOCAL_DATA		0x19
+struct gap_oob_sc_get_local_data_rp {
+    u8_t r[16];
+    u8_t c[16];
+} __packed;
+
+#define GAP_OOB_SC_SET_REMOTE_DATA		0x1a
+struct gap_oob_sc_set_remote_data_cmd {
+    u8_t r[16];
+    u8_t c[16];
+} __packed;
+
 /* events */
 #define GAP_EV_NEW_SETTINGS		0x80
 struct gap_new_settings_ev {
diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index 7325e59..d935ee7 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -25,7 +25,6 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-#include <host/ble_gap.h>
 #include "host/ble_gap.h"
 #include "host/util/util.h"
 #include "console/console.h"
@@ -47,6 +46,10 @@ const uint8_t irk[16] = {
 	0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
 };
 
+static uint8_t oob[16];
+static struct ble_sm_sc_oob_data oob_data_local;
+static struct ble_sm_sc_oob_data oob_data_remote;
+
 static uint16_t current_settings;
 u8_t own_addr_type;
 static ble_addr_t peer_id_addr;
@@ -117,6 +120,9 @@ static void supported_commands(u8_t *data, u16_t len)
 	tester_set_bit(cmds, GAP_PASSKEY_CONFIRM);
 	tester_set_bit(cmds, GAP_START_DIRECT_ADV);
 	tester_set_bit(cmds, GAP_CONN_PARAM_UPDATE);
+	tester_set_bit(cmds, GAP_OOB_LEGACY_SET_DATA);
+	tester_set_bit(cmds, GAP_OOB_SC_GET_LOCAL_DATA);
+	tester_set_bit(cmds, GAP_OOB_SC_SET_REMOTE_DATA);
 
 	tester_send(BTP_SERVICE_ID_GAP, GAP_READ_SUPPORTED_COMMANDS,
 		    CONTROLLER_INDEX, (u8_t *) rp, sizeof(cmds));
@@ -675,6 +681,26 @@ static void le_disconnected(struct ble_gap_conn_desc *conn, int reason)
 		    CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev));
 }
 
+static void auth_passkey_oob(u16_t conn_handle)
+{
+	struct ble_gap_conn_desc desc;
+	struct ble_sm_io pk;
+	int rc;
+
+	SYS_LOG_DBG("");
+
+	rc = ble_gap_conn_find(conn_handle, &desc);
+	if (rc) {
+		return;
+	}
+
+	memcpy(pk.oob, oob, sizeof(oob));
+	pk.action = BLE_SM_IOACT_OOB;
+
+	rc = ble_sm_inject_io(conn_handle, &pk);
+	assert(rc == 0);
+}
+
 static void auth_passkey_display(u16_t conn_handle, unsigned int passkey)
 {
 	struct ble_gap_conn_desc desc;
@@ -756,12 +782,39 @@ static void auth_passkey_numcmp(u16_t conn_handle, unsigned int passkey)
 		    CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev));
 }
 
+static void auth_passkey_oob_sc(u16_t conn_handle)
+{
+	int rc;
+	struct ble_sm_io pk;
+
+	SYS_LOG_DBG("");
+
+	memset(&pk, 0, sizeof(pk));
+
+	pk.oob_sc_data.local = &oob_data_local;
+
+	if (ble_hs_cfg.sm_oob_data_flag) {
+		pk.oob_sc_data.remote = &oob_data_remote;
+	}
+
+	pk.action = BLE_SM_IOACT_OOB_SC;
+	rc = ble_sm_inject_io(conn_handle, &pk);
+	if (rc != 0) {
+		console_printf("error providing oob; rc=%d\n", rc);
+	}
+}
+
 static void le_passkey_action(u16_t conn_handle,
 			      struct ble_gap_passkey_params *params)
 {
 	SYS_LOG_DBG("");
 
 	switch (params->action) {
+	case BLE_SM_IOACT_NONE:
+		break;
+	case BLE_SM_IOACT_OOB:
+		auth_passkey_oob(conn_handle);
+		break;
 	case BLE_SM_IOACT_INPUT:
 		auth_passkey_entry(conn_handle);
 		break;
@@ -771,8 +824,11 @@ static void le_passkey_action(u16_t conn_handle,
 	case BLE_SM_IOACT_NUMCMP:
 		auth_passkey_numcmp(conn_handle, params->numcmp);
 		break;
-	default:
+	case BLE_SM_IOACT_OOB_SC:
+		auth_passkey_oob_sc(conn_handle);
 		break;
+	default:
+		assert(0);
 	}
 }
 
@@ -1380,6 +1436,40 @@ static void conn_param_update_async(const u8_t *data, u16_t len)
 		   BTP_STATUS_SUCCESS);
 }
 
+static void oob_legacy_set_data(const u8_t *data, u16_t len)
+{
+	const struct gap_oob_legacy_set_data_cmd *cmd = (void *) data;
+
+	ble_hs_cfg.sm_oob_data_flag = 1;
+	memcpy(oob, cmd->oob_data, sizeof(oob));
+
+	tester_rsp(BTP_SERVICE_ID_GAP, GAP_OOB_LEGACY_SET_DATA,
+		   CONTROLLER_INDEX, BTP_STATUS_SUCCESS);
+}
+
+static void oob_sc_get_local_data(const u8_t *data, u16_t len)
+{
+	struct gap_oob_sc_get_local_data_rp rp;
+
+	memcpy(rp.r, oob_data_local.r, 16);
+	memcpy(rp.c, oob_data_local.c, 16);
+
+	tester_send(BTP_SERVICE_ID_GAP, GAP_OOB_SC_GET_LOCAL_DATA,
+		    CONTROLLER_INDEX, (u8_t *) &rp, sizeof(rp));
+}
+
+static void oob_sc_set_remote_data(const u8_t *data, u16_t len)
+{
+	const struct gap_oob_sc_set_remote_data_cmd *cmd = (void *) data;
+
+	ble_hs_cfg.sm_oob_data_flag = 1;
+	memcpy(oob_data_remote.r, cmd->r, 16);
+	memcpy(oob_data_remote.c, cmd->c, 16);
+
+	tester_rsp(BTP_SERVICE_ID_GAP, GAP_OOB_SC_SET_REMOTE_DATA,
+		   CONTROLLER_INDEX, BTP_STATUS_SUCCESS);
+}
+
 void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data,
 		       u16_t len)
 {
@@ -1456,6 +1546,15 @@ void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data,
 	case GAP_CONN_PARAM_UPDATE:
 		conn_param_update_async(data, len);
 		return;
+	case GAP_OOB_LEGACY_SET_DATA:
+		oob_legacy_set_data(data, len);
+		return;
+	case GAP_OOB_SC_GET_LOCAL_DATA:
+		oob_sc_get_local_data(data, len);
+		return;
+	case GAP_OOB_SC_SET_REMOTE_DATA:
+		oob_sc_set_remote_data(data, len);
+		return;
 	default:
 		tester_rsp(BTP_SERVICE_ID_GAP, opcode, index,
 			   BTP_STATUS_UNKNOWN_CMD);
@@ -1485,6 +1584,16 @@ static void tester_init_gap_cb(int err)
 
 u8_t tester_init_gap(void)
 {
+#if MYNEWT_VAL(BLE_SM_SC)
+	int rc;
+
+	rc = ble_sm_sc_oob_generate_data(&oob_data_local);
+	if (rc) {
+		console_printf("Error: generating oob data; reason=%d\n", rc);
+		return BTP_STATUS_FAILED;
+	}
+#endif
+
 	adv_buf = NET_BUF_SIMPLE(ADV_BUF_LEN);
 
 	tester_init_gap_cb(BTP_STATUS_SUCCESS);


[mynewt-nimble] 14/14: apps/bttester: Add connection retries on fail to be established

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 23faa0a28e30adc1f57f3cfe076480217fce9634
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Tue Dec 10 14:23:03 2019 +0100

    apps/bttester: Add connection retries on fail to be established
---
 apps/bttester/src/gap.c  | 128 +++++++++++++++++++++++++++++++----------------
 apps/bttester/syscfg.yml |   4 ++
 2 files changed, 88 insertions(+), 44 deletions(-)

diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index 687f806..9d6de04 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -56,9 +56,25 @@ static ble_addr_t peer_id_addr;
 static ble_addr_t peer_ota_addr;
 static bool encrypted = false;
 
-struct os_callout update_params_co;
+static struct os_callout update_params_co;
 static struct gap_conn_param_update_cmd update_params;
 
+static struct os_callout connected_ev_co;
+static struct gap_device_connected_ev connected_ev;
+#define CONNECTED_EV_DELAY_MS(itvl) 8 * BLE_HCI_CONN_ITVL * itvl / 1000
+static int connection_attempts;
+
+static const struct ble_gap_conn_params dflt_conn_params = {
+	.scan_itvl = 0x0010,
+	.scan_window = 0x0010,
+	.itvl_min = BLE_GAP_INITIAL_CONN_ITVL_MIN,
+	.itvl_max = BLE_GAP_INITIAL_CONN_ITVL_MAX,
+	.latency = 0,
+	.supervision_timeout = 0x0100,
+	.min_ce_len = 0x0010,
+	.max_ce_len = 0x0300,
+};
+
 static void conn_param_update(struct os_event *ev);
 
 
@@ -649,10 +665,30 @@ static void periph_privacy(struct ble_gap_conn_desc desc)
 	}
 }
 
+static void device_connected_ev_send(struct os_event *ev)
+{
+	struct ble_gap_conn_desc desc;
+	int rc;
+
+	SYS_LOG_DBG("");
+
+	rc = gap_conn_find_by_addr((ble_addr_t *)&connected_ev, &desc);
+	if (rc) {
+		tester_rsp(BTP_SERVICE_ID_GAP, GAP_EV_DEVICE_CONNECTED,
+			   CONTROLLER_INDEX, BTP_STATUS_FAILED);
+		return;
+	}
+
+	tester_send(BTP_SERVICE_ID_GAP, GAP_EV_DEVICE_CONNECTED,
+		    CONTROLLER_INDEX, (u8_t *) &connected_ev,
+		    sizeof(connected_ev));
+
+	periph_privacy(desc);
+}
+
 static void le_connected(u16_t conn_handle, int status)
 {
 	struct ble_gap_conn_desc desc;
-	struct gap_device_connected_ev ev;
 	ble_addr_t *addr;
 	int rc;
 
@@ -672,27 +708,21 @@ static void le_connected(u16_t conn_handle, int status)
 
 	addr = &desc.peer_id_addr;
 
-	memcpy(ev.address, addr->val, sizeof(ev.address));
-	ev.address_type = addr->type;
-	ev.conn_itvl = desc.conn_itvl;
-	ev.conn_latency = desc.conn_latency;
-	ev.supervision_timeout = desc.supervision_timeout;
-
-#if MYNEWT_VAL(BTTESTER_CONN_PARAM_UPDATE)
-	memcpy(update_params.address, addr->val, sizeof(ev.address));
-	update_params.address_type = addr->type;
-	update_params.conn_itvl_min = desc.conn_itvl;
-	update_params.conn_itvl_max = desc.conn_itvl;
-	update_params.conn_latency = desc.conn_latency + 1;
-	update_params.supervision_timeout = desc.supervision_timeout;
-
-	conn_param_update(NULL);
-#endif
+	memcpy(connected_ev.address, addr->val, sizeof(connected_ev.address));
+	connected_ev.address_type = addr->type;
+	connected_ev.conn_itvl = desc.conn_itvl;
+	connected_ev.conn_latency = desc.conn_latency;
+	connected_ev.supervision_timeout = desc.supervision_timeout;
 
+#if MYNEWT_VAL(BTTESTER_CONN_RETRY)
+	os_callout_reset(&connected_ev_co,
+			 os_time_ms_to_ticks32(
+				 CONNECTED_EV_DELAY_MS(desc.conn_itvl)));
+#else
 	tester_send(BTP_SERVICE_ID_GAP, GAP_EV_DEVICE_CONNECTED,
-		    CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev));
-
-	periph_privacy(desc);
+		    CONTROLLER_INDEX, (u8_t *) &connected_ev,
+		    sizeof(connected_ev));
+#endif
 }
 
 static void le_disconnected(struct ble_gap_conn_desc *conn, int reason)
@@ -702,6 +732,33 @@ static void le_disconnected(struct ble_gap_conn_desc *conn, int reason)
 
 	SYS_LOG_DBG("");
 
+#if MYNEWT_VAL(BTTESTER_CONN_RETRY)
+	int rc;
+
+	if ((reason == BLE_HS_HCI_ERR(BLE_ERR_CONN_ESTABLISHMENT)) &&
+	    os_callout_queued(&connected_ev_co)) {
+		if (connection_attempts < MYNEWT_VAL(BTTESTER_CONN_RETRY)) {
+			os_callout_stop(&connected_ev_co);
+
+			/* try connecting again */
+			rc = ble_gap_connect(own_addr_type, addr, 0,
+					     &dflt_conn_params, gap_event_cb,
+					     NULL);
+
+			if (rc == 0) {
+				connection_attempts++;
+				return;
+			}
+		}
+	} else if (os_callout_queued(&connected_ev_co)) {
+		os_callout_stop(&connected_ev_co);
+		return;
+	}
+#endif
+
+	connection_attempts = 0;
+	memset(&connected_ev, 0, sizeof(connected_ev));
+
 	memcpy(ev.address, addr->val, sizeof(ev.address));
 	ev.address_type = addr->type;
 
@@ -1142,32 +1199,15 @@ static int gap_event_cb(struct ble_gap_event *event, void *arg)
 
 static void connect(const u8_t *data, u16_t len)
 {
-	struct ble_gap_conn_params conn_params = { 0 };
-	u8_t status;
-	int rc;
+	u8_t status = BTP_STATUS_SUCCESS;
 
 	SYS_LOG_DBG("");
 
-	conn_params.scan_itvl = 0x0010;
-	conn_params.scan_window = 0x0010;
-	conn_params.itvl_min = BLE_GAP_INITIAL_CONN_ITVL_MIN;
-	conn_params.itvl_max = BLE_GAP_INITIAL_CONN_ITVL_MAX;
-	conn_params.latency = 0;
-	conn_params.supervision_timeout = 0x0100;
-	conn_params.min_ce_len = 0x0010;
-	conn_params.max_ce_len = 0x0300;
-
-	rc = ble_gap_connect(own_addr_type, (ble_addr_t *) data,
-			     0, &conn_params,
-			     gap_event_cb, NULL);
-	if (rc) {
+	if (ble_gap_connect(own_addr_type, (ble_addr_t *) data, 0,
+			    &dflt_conn_params, gap_event_cb, NULL)) {
 		status = BTP_STATUS_FAILED;
-		goto rsp;
 	}
 
-	status = BTP_STATUS_SUCCESS;
-
-rsp:
 	tester_rsp(BTP_SERVICE_ID_GAP, GAP_CONNECT, CONTROLLER_INDEX, status);
 }
 
@@ -1416,9 +1456,6 @@ static int conn_param_update_master(u16_t conn_handle,
 	return rc;
 }
 
-struct os_callout update_params_co;
-static struct gap_conn_param_update_cmd update_params;
-
 static void conn_param_update(struct os_event *ev)
 {
 	struct ble_gap_conn_desc desc;
@@ -1620,6 +1657,9 @@ static void tester_init_gap_cb(int err)
 	os_callout_init(&update_params_co, os_eventq_dflt_get(),
 			conn_param_update, NULL);
 
+	os_callout_init(&connected_ev_co, os_eventq_dflt_get(),
+			device_connected_ev_send, NULL);
+
 	tester_rsp(BTP_SERVICE_ID_CORE, CORE_REGISTER_SERVICE, BTP_INDEX_NONE,
 		   BTP_STATUS_SUCCESS);
 }
diff --git a/apps/bttester/syscfg.yml b/apps/bttester/syscfg.yml
index d2291aa..d0fffe1 100644
--- a/apps/bttester/syscfg.yml
+++ b/apps/bttester/syscfg.yml
@@ -51,6 +51,10 @@ syscfg.defs:
         description: Limited advertising timeout
         value: 30000
 
+    BTTESTER_CONN_RETRY:
+        description: Retry connections when connection failed to be established
+        value: 3
+
     BTTESTER_BTP_DATA_SIZE_MAX:
         description: Maximum BTP payload
         value: 2048


[mynewt-nimble] 11/14: apps/bttester: Add support for Set Bondable command

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit f48abe76f80115a3e35f8a7509ba9d5bfbe8d42e
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Wed Dec 4 17:47:15 2019 +0100

    apps/bttester: Add support for Set Bondable command
---
 apps/bttester/src/bttester.h |  2 +-
 apps/bttester/src/gap.c      | 33 ++++++++++++++++++++++++++++++++-
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/apps/bttester/src/bttester.h b/apps/bttester/src/bttester.h
index 372ccd7..9991248 100644
--- a/apps/bttester/src/bttester.h
+++ b/apps/bttester/src/bttester.h
@@ -190,7 +190,7 @@ struct gap_set_discoverable_rp {
 
 #define GAP_SET_BONDABLE		0x09
 struct gap_set_bondable_cmd {
-	u8_t gap_set_bondable_cmd;
+	u8_t bondable;
 } __packed;
 struct gap_set_bondable_rp {
 	u32_t current_settings;
diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index d935ee7..38d6bc0 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -107,6 +107,7 @@ static void supported_commands(u8_t *data, u16_t len)
 	tester_set_bit(cmds, GAP_READ_CONTROLLER_INFO);
 	tester_set_bit(cmds, GAP_SET_CONNECTABLE);
 	tester_set_bit(cmds, GAP_SET_DISCOVERABLE);
+	tester_set_bit(cmds, GAP_SET_BONDABLE);
 	tester_set_bit(cmds, GAP_START_ADVERTISING);
 	tester_set_bit(cmds, GAP_STOP_ADVERTISING);
 	tester_set_bit(cmds, GAP_START_DISCOVERY);
@@ -209,6 +210,14 @@ static void controller_info(u8_t *data, u16_t len)
 	supported_settings |= BIT(GAP_SETTINGS_BONDABLE);
 	supported_settings |= BIT(GAP_SETTINGS_LE);
 	supported_settings |= BIT(GAP_SETTINGS_ADVERTISING);
+	supported_settings |= BIT(GAP_SETTINGS_SC);
+
+	if (ble_hs_cfg.sm_bonding) {
+		current_settings |= BIT(GAP_SETTINGS_BONDABLE);
+	}
+	if (ble_hs_cfg.sm_sc) {
+		current_settings |= BIT(GAP_SETTINGS_SC);
+	}
 
 	rp.supported_settings = sys_cpu_to_le32(supported_settings);
 	rp.current_settings = sys_cpu_to_le32(current_settings);
@@ -284,6 +293,26 @@ static void set_discoverable(u8_t *data, u16_t len)
 		    (u8_t *) &rp, sizeof(rp));
 }
 
+static void set_bondable(const u8_t *data, u16_t len)
+{
+	const struct gap_set_bondable_cmd *cmd = (void *) data;
+	struct gap_set_bondable_rp rp;
+
+	SYS_LOG_DBG("");
+
+	ble_hs_cfg.sm_bonding = cmd->bondable;
+	if (ble_hs_cfg.sm_bonding) {
+		current_settings |= BIT(GAP_SETTINGS_BONDABLE);
+	} else {
+		current_settings &= ~BIT(GAP_SETTINGS_BONDABLE);
+	}
+
+	rp.current_settings = sys_cpu_to_le32(current_settings);
+
+	tester_send(BTP_SERVICE_ID_GAP, GAP_SET_BONDABLE, CONTROLLER_INDEX,
+		    (u8_t *) &rp, sizeof(rp));
+}
+
 static struct bt_data ad[10] = {
 	BT_DATA(BLE_HS_ADV_TYPE_FLAGS, &ad_flags, sizeof(ad_flags)),
 };
@@ -1507,6 +1536,9 @@ void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data,
 	case GAP_SET_DISCOVERABLE:
 		set_discoverable(data, len);
 		return;
+	case GAP_SET_BONDABLE:
+		set_bondable(data, len);
+		return;
 	case GAP_START_ADVERTISING:
 		start_advertising(data, len);
 		return;
@@ -1572,7 +1604,6 @@ static void tester_init_gap_cb(int err)
 
 	current_settings = 0;
 	current_settings |= BIT(GAP_SETTINGS_POWERED);
-	current_settings |= BIT(GAP_SETTINGS_BONDABLE);
 	current_settings |= BIT(GAP_SETTINGS_LE);
 
 	os_callout_init(&update_params_co, os_eventq_dflt_get(),


[mynewt-nimble] 07/14: apps/bttester: Fix BTP MTU size

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit f113668104a29446e56ba05d71eab13d4fea9ec5
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Mon Nov 25 12:54:41 2019 +0100

    apps/bttester: Fix BTP MTU size
    
    GATT/CL/GAW/BI-09-C sometimes requires us to receive
    >1024 bytes of data.
---
 apps/bttester/syscfg.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/apps/bttester/syscfg.yml b/apps/bttester/syscfg.yml
index 5a8680f..bfdaa36 100644
--- a/apps/bttester/syscfg.yml
+++ b/apps/bttester/syscfg.yml
@@ -33,11 +33,11 @@ syscfg.defs:
 
     BTTESTER_RTT_BUFFER_SIZE_UP:
         description: Bttester upstream buffer size
-        value: 512
+        value: MYNEWT_VAL(BTTESTER_BTP_DATA_SIZE_MAX)
 
     BTTESTER_RTT_BUFFER_SIZE_DOWN:
         description: Bttester downstream buffer size
-        value: 512
+        value: MYNEWT_VAL(BTTESTER_BTP_DATA_SIZE_MAX)
 
     BTTESTER_PRIVACY_MODE:
         description: Enable privacy mode (RPA or NRPA)
@@ -53,7 +53,7 @@ syscfg.defs:
 
     BTTESTER_BTP_DATA_SIZE_MAX:
         description: Maximum BTP payload
-        value: MYNEWT_VAL_BTTESTER_RTT_BUFFER_SIZE_UP
+        value: 2048
 
     BTTESTER_CONN_PARAM_UPDATE:
         description: Trigger conn param update after connection establish


[mynewt-nimble] 06/14: apps/bttester: Improve logging for GATT Write Long

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit b5fafe7749e34aeed805ab44bd1d8e5d2f0092b6
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Mon Nov 25 12:54:19 2019 +0100

    apps/bttester: Improve logging for GATT Write Long
---
 apps/bttester/src/gatt.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/apps/bttester/src/gatt.c b/apps/bttester/src/gatt.c
index 9a58194..7196da4 100644
--- a/apps/bttester/src/gatt.c
+++ b/apps/bttester/src/gatt.c
@@ -896,7 +896,7 @@ static void write_long(u8_t *data, u16_t len)
 	const struct gatt_write_long_cmd *cmd = (void *) data;
 	struct ble_gap_conn_desc conn;
 	struct os_mbuf *om = NULL;
-	int rc;
+	int rc = 0;
 
 	SYS_LOG_DBG("");
 
@@ -906,23 +906,23 @@ static void write_long(u8_t *data, u16_t len)
 	}
 
 	om = ble_hs_mbuf_from_flat(cmd->data, sys_le16_to_cpu(cmd->data_length));
-
 	if (!om) {
 		SYS_LOG_ERR("Insufficient resources");
 		goto fail;
 	}
 
-	if (ble_gattc_write_long(conn.conn_handle, sys_le16_to_cpu(cmd->handle),
-				 sys_le16_to_cpu(cmd->offset), om, write_rsp,
-				 (void *) GATT_WRITE_LONG)) {
-		goto fail;
-}
-
-	return;
+	rc = ble_gattc_write_long(conn.conn_handle,
+				  sys_le16_to_cpu(cmd->handle),
+				  sys_le16_to_cpu(cmd->offset),
+				  om, write_rsp,
+				  (void *) GATT_WRITE_LONG);
+	if (!rc) {
+		return;
+	}
 
 fail:
+	SYS_LOG_ERR("Failed to send Write Long request, rc=%d", rc);
 	os_mbuf_free_chain(om);
-
 	tester_rsp(BTP_SERVICE_ID_GATT, GATT_WRITE_LONG, CONTROLLER_INDEX,
 		   BTP_STATUS_FAILED);
 }


[mynewt-nimble] 02/14: apps/bttester: Support 2 L2CAP signaling procs

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 6290d39c0757e64ba1de4c68270548aee2462983
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Wed Oct 2 10:56:39 2019 +0200

    apps/bttester: Support 2 L2CAP signaling procs
    
    In L2CAP/COS/CFC/BV-05-C the PTS sends two connection
    requests simultaneously and we need to be able to process them.
---
 apps/bttester/syscfg.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/apps/bttester/syscfg.yml b/apps/bttester/syscfg.yml
index 711b57f..5a8680f 100644
--- a/apps/bttester/syscfg.yml
+++ b/apps/bttester/syscfg.yml
@@ -81,6 +81,7 @@ syscfg.vals:
     RTT_NUM_BUFFERS_DOWN: 0
 
     BLE_L2CAP_COC_MAX_NUM: 2
+    BLE_L2CAP_SIG_MAX_PROCS: 2
     # Some testcases require MPS < MTU
     BLE_L2CAP_COC_MPS: 100
     BLE_RPA_TIMEOUT: 30


[mynewt-nimble] 03/14: apps/bttester: Use random addr from HW instead of generating new one

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 0ceef89b723a79968868bc5769fa166a17bbaa80
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Wed Oct 2 10:57:58 2019 +0200

    apps/bttester: Use random addr from HW instead of generating new one
---
 apps/bttester/pkg.yml   |  1 +
 apps/bttester/src/gap.c | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/apps/bttester/pkg.yml b/apps/bttester/pkg.yml
index cd872a2..7bec9c0 100644
--- a/apps/bttester/pkg.yml
+++ b/apps/bttester/pkg.yml
@@ -33,6 +33,7 @@ pkg.deps:
     - "@apache-mynewt-core/sys/shell"
     - "@apache-mynewt-nimble/nimble/controller"
     - "@apache-mynewt-nimble/nimble/host"
+    - "@apache-mynewt-nimble/nimble/host/util"
     - "@apache-mynewt-nimble/nimble/host/services/gap"
     - "@apache-mynewt-nimble/nimble/host/services/gatt"
     - "@apache-mynewt-nimble/nimble/host/store/ram"
diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index 0856a68..175020b 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -27,6 +27,7 @@
 
 #include <host/ble_gap.h>
 #include "host/ble_gap.h"
+#include "host/util/util.h"
 #include "console/console.h"
 
 #include "../../../nimble/host/src/ble_hs_pvcy_priv.h"
@@ -161,14 +162,19 @@ static void controller_info(u8_t *data, u16_t len)
 
 	memset(&rp, 0, sizeof(rp));
 
-	rc = ble_hs_id_gen_rnd(MYNEWT_VAL(BTTESTER_USE_NRPA), &addr);
+	/* Make sure we have proper identity address set (public preferred) */
+	rc = ble_hs_util_ensure_addr(1);
 	assert(rc == 0);
-	rc = ble_hs_id_set_rnd(addr.val);
+	rc = ble_hs_id_copy_addr(BLE_ADDR_RANDOM, addr.val, NULL);
 	assert(rc == 0);
 
 	if (MYNEWT_VAL(BTTESTER_PRIVACY_MODE)) {
 		if (MYNEWT_VAL(BTTESTER_USE_NRPA)) {
 			own_addr_type = BLE_OWN_ADDR_RANDOM;
+			rc = ble_hs_id_gen_rnd(1, &addr);
+			assert(rc == 0);
+			rc = ble_hs_id_set_rnd(addr.val);
+			assert(rc == 0);
 		} else {
 			own_addr_type = BLE_OWN_ADDR_RPA_RANDOM_DEFAULT;
 		}


[mynewt-nimble] 01/14: apps/bttester: Fix success response on L2CAP send data

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 8277e78a8ed033546723536befeba2127eb4c688
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Wed Oct 2 10:54:56 2019 +0200

    apps/bttester: Fix success response on L2CAP send data
    
    Send success response even when data is stalled because
    otherwise we cannot confirm a WID in auto-pts and the
    test case gets stalled.
---
 apps/bttester/src/l2cap.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/apps/bttester/src/l2cap.c b/apps/bttester/src/l2cap.c
index 311d712..e30ef79 100644
--- a/apps/bttester/src/l2cap.c
+++ b/apps/bttester/src/l2cap.c
@@ -366,12 +366,9 @@ static void send_data(u8_t *data, u16_t len)
 
 	os_mbuf_append(sdu_tx, cmd->data, data_len);
 
+	/* ble_l2cap_send takes ownership of the sdu */
 	rc = ble_l2cap_send(chan->chan, sdu_tx);
-	if (rc == BLE_HS_ESTALLED) {
-		/* Wait for TX_UNSTALLED event before sending response */
-		/* ble_l2cap_send takes ownership of the sdu */
-		return;
-	} else if (rc == 0) {
+	if (rc == 0 || rc == BLE_HS_ESTALLED) {
 		tester_rsp(BTP_SERVICE_ID_L2CAP, L2CAP_SEND_DATA, CONTROLLER_INDEX,
 			   BTP_STATUS_SUCCESS);
 		return;


[mynewt-nimble] 04/14: apps/bttester: Add Device Information Service

Posted by na...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

naraj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 38e8ed1d5beac9977b94d0a0f561fffd8db7b20e
Author: Michał Narajowski <mi...@codecoup.pl>
AuthorDate: Wed Oct 16 12:07:19 2019 +0200

    apps/bttester: Add Device Information Service
    
    For testing purposes.
---
 apps/bttester/pkg.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/apps/bttester/pkg.yml b/apps/bttester/pkg.yml
index 7bec9c0..00e7a76 100644
--- a/apps/bttester/pkg.yml
+++ b/apps/bttester/pkg.yml
@@ -36,6 +36,7 @@ pkg.deps:
     - "@apache-mynewt-nimble/nimble/host/util"
     - "@apache-mynewt-nimble/nimble/host/services/gap"
     - "@apache-mynewt-nimble/nimble/host/services/gatt"
+    - "@apache-mynewt-nimble/nimble/host/services/dis"
     - "@apache-mynewt-nimble/nimble/host/store/ram"
     - "@apache-mynewt-nimble/nimble/transport/ram"
     - "@apache-mynewt-core/hw/drivers/uart"