From b0ecbe6b0a8230093467c40d8a52a0a10f42f5b6 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Mon, 2 Apr 2018 22:15:21 +0200 Subject: [PATCH] pts/sm_test: generate sc oob data on start, track oob data, manually start central connect --- test/pts/sm_test.c | 23 ++++++++++++++++++----- test/pts/sm_test.py | 12 +++++++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/test/pts/sm_test.c b/test/pts/sm_test.c index fc8eb9bc1..6d694b44a 100644 --- a/test/pts/sm_test.c +++ b/test/pts/sm_test.c @@ -234,6 +234,14 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint fflush(stdout); } +static void sc_oob_callback(const uint8_t * confirm_value, const uint8_t * random_value){ + printf("OOB_CONFIRM: "); + printf_hexdump(confirm_value, 16); + printf("OOB_RANDOM: "); + printf_hexdump(random_value, 16); + fflush(stdout); +} + static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){ UNUSED(channel); UNUSED(size); @@ -246,11 +254,8 @@ static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t * if (btstack_event_state_get_state(packet) == HCI_STATE_WORKING){ gap_local_bd_addr(local_addr); printf("BD_ADDR: %s\n", bd_addr_to_str(local_addr)); - // start connecting if we're central - if (we_are_central){ - printf("CENTRAL: connect to %s\n", bd_addr_to_str(peer_address)); - gap_connect(peer_address, BD_ADDR_TYPE_LE_PUBLIC); - } + // generate OOB data + sm_generate_sc_oob_data(sc_oob_callback); } break; case HCI_EVENT_LE_META: @@ -333,10 +338,18 @@ static void stdin_process(char c){ printf("accepting just works\n"); sm_just_works_confirm(connection_handle); break; + case 'c': + printf("CENTRAL: connect to %s\n", bd_addr_to_str(peer_address)); + gap_connect(peer_address, BD_ADDR_TYPE_LE_PUBLIC); + break; case 'd': printf("decline bonding\n"); sm_bonding_decline(connection_handle); break; + case 'g': + printf("generate oob data\n"); + sm_generate_sc_oob_data(sc_oob_callback); + break; case 'x': printf("Exit\n"); exit(0); diff --git a/test/pts/sm_test.py b/test/pts/sm_test.py index 31fbd57dd..a2c3d5afb 100755 --- a/test/pts/sm_test.py +++ b/test/pts/sm_test.py @@ -170,7 +170,7 @@ def run(test_descriptor, nodes): print('%s started' % node.get_name()) if state == 'W4_SLAVE_BD_ADDR': # peripheral started, start central - state = 'W4_CONNECTED' + state = 'W4_MASTER_BD_ADDR' master_role = test_descriptor['master_role'] master = Node() # configure master @@ -184,6 +184,15 @@ def run(test_descriptor, nodes): master.set_failure(test_descriptor['tester_failure']) master.start_process() nodes.append(master) + if state == 'W4_MASTER_BD_ADDR': + # central started, start connecting + node.write('c') + elif line.startswith('OOB_CONFIRM:'): + confirm = line.split('OOB_CONFIRM: ')[1] + test_descriptor[node.get_name()+'_oob_confirm'] = confirm + elif line.startswith('OOB_RANDOM:'): + random = line.split('OOB_RANDOM: ')[1] + test_descriptor[node.get_name()+'_oob_random'] = random elif line.startswith('CONNECTED:'): print('%s connected' % node.get_name()) if state == 'W4_CONNECTED': @@ -332,6 +341,7 @@ def run_test(test_descriptor): tester_role = 'responder' slave_role = 'tester' master_role = 'iut' + test_descriptor['iut_role' ] = iut_role test_descriptor['tester_role'] = tester_role test_descriptor['master_role'] = master_role