pts/sm_test: generate sc oob data on start, track oob data, manually start central connect

This commit is contained in:
Matthias Ringwald 2018-04-02 22:15:21 +02:00
parent cd3c43a4cf
commit b0ecbe6b0a
2 changed files with 29 additions and 6 deletions

View File

@ -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);

View File

@ -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