From 584e9dc6e65a839c28a9189316638b8f1eb00852 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 14 Mar 2014 09:34:29 +0200 Subject: [PATCH] emulator/btdev: Track direct advertising address --- emulator/btdev.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/emulator/btdev.c b/emulator/btdev.c index fe7960a6a..a2a041290 100644 --- a/emulator/btdev.c +++ b/emulator/btdev.c @@ -115,6 +115,8 @@ struct btdev { uint8_t le_adv_data_len; uint8_t le_adv_type; uint8_t le_adv_own_addr; + uint8_t le_adv_direct_addr_type; + uint8_t le_adv_direct_addr[6]; uint8_t le_scan_data[31]; uint8_t le_scan_data_len; uint8_t le_scan_enable; @@ -2339,14 +2341,20 @@ static void default_cmd(struct btdev *btdev, uint16_t opcode, case BT_HCI_CMD_LE_SET_ADV_PARAMETERS: if (btdev->type == BTDEV_TYPE_BREDR) goto unsupported; - if (btdev->le_adv_enable) + + if (btdev->le_adv_enable) { status = BT_HCI_ERR_COMMAND_DISALLOWED; - else { - status = BT_HCI_ERR_SUCCESS; - lsap = data; - btdev->le_adv_type = lsap->type; - btdev->le_adv_own_addr = lsap->own_addr_type; + cmd_complete(btdev, opcode, &status, sizeof(status)); + break; } + + lsap = data; + btdev->le_adv_type = lsap->type; + btdev->le_adv_own_addr = lsap->own_addr_type; + btdev->le_adv_direct_addr_type = lsap->direct_addr_type; + memcpy(btdev->le_adv_direct_addr, lsap->direct_addr, 6); + + status = BT_HCI_ERR_SUCCESS; cmd_complete(btdev, opcode, &status, sizeof(status)); break; -- 2.47.3