Diff between e8f23890653e35f02d72ea0f76f63df2becc3b26 and 27d79b3a73cb8068138103a697774159894672db

Changed Files

File Additions Deletions Status
emulator/bthost.c +12 -0 modified
emulator/bthost.h +1 -0 modified

Full Patch

diff --git a/emulator/bthost.c b/emulator/bthost.c
index 74b5df9..2af5f7a 100644
--- a/emulator/bthost.c
+++ b/emulator/bthost.c
@@ -111,6 +111,7 @@ struct bthost {
 	uint8_t pin[16];
 	uint8_t pin_len;
 	uint8_t io_capability;
+	bool reject_user_confirm;
 };
 
 struct bthost *bthost_create(void)
@@ -798,6 +799,12 @@ static void evt_user_confirm_request(struct bthost *bthost, const void *data,
 	if (!conn)
 		return;
 
+	if (bthost->reject_user_confirm) {
+		send_command(bthost, BT_HCI_CMD_USER_CONFIRM_REQUEST_NEG_REPLY,
+								ev->bdaddr, 6);
+		return;
+	}
+
 	send_command(bthost, BT_HCI_CMD_USER_CONFIRM_REQUEST_REPLY,
 								ev->bdaddr, 6);
 }
@@ -1509,6 +1516,11 @@ void bthost_set_io_capability(struct bthost *bthost, uint8_t io_capability)
 	bthost->io_capability = io_capability;
 }
 
+void bthost_set_reject_user_confirm(struct bthost *bthost, bool reject)
+{
+	bthost->reject_user_confirm = reject;
+}
+
 void bthost_start(struct bthost *bthost)
 {
 	if (!bthost)
diff --git a/emulator/bthost.h b/emulator/bthost.h
index a3ecb1a..8d007ac 100644
--- a/emulator/bthost.h
+++ b/emulator/bthost.h
@@ -85,6 +85,7 @@ void bthost_add_l2cap_server(struct bthost *bthost, uint16_t psm,
 void bthost_set_pin_code(struct bthost *bthost, const uint8_t *pin,
 							uint8_t pin_len);
 void bthost_set_io_capability(struct bthost *bthost, uint8_t io_capability);
+void bthost_set_reject_user_confirm(struct bthost *bthost, bool reject);
 
 void bthost_start(struct bthost *bthost);
 void bthost_stop(struct bthost *bthost);