mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-16 08:42:28 +00:00
test/pts: add scan parameters client
This commit is contained in:
parent
b3f0de517d
commit
c7b29a7da3
@ -34,7 +34,6 @@
|
|||||||
* contact@bluekitchen-gmbh.com
|
* contact@bluekitchen-gmbh.com
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define BTSTACK_FILE__ "hog_host_test.c"
|
#define BTSTACK_FILE__ "hog_host_test.c"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -75,10 +74,12 @@ static le_device_addr_t remote_device;
|
|||||||
static hci_con_handle_t connection_handle;
|
static hci_con_handle_t connection_handle;
|
||||||
static uint16_t hids_cid;
|
static uint16_t hids_cid;
|
||||||
static uint16_t battery_service_cid;
|
static uint16_t battery_service_cid;
|
||||||
|
static uint16_t scan_parameters_cid;
|
||||||
|
|
||||||
static bool connect_hids_client = false;
|
static bool connect_hids_client = false;
|
||||||
static bool connect_battery_client = false;
|
static bool connect_battery_client = false;
|
||||||
static bool connect_device_information_client = false;
|
static bool connect_device_information_client = false;
|
||||||
|
static bool connect_scan_parameters_client = false;
|
||||||
|
|
||||||
static hid_protocol_mode_t protocol_mode = HID_PROTOCOL_MODE_REPORT;
|
static hid_protocol_mode_t protocol_mode = HID_PROTOCOL_MODE_REPORT;
|
||||||
|
|
||||||
@ -92,6 +93,7 @@ static btstack_packet_callback_registration_t sm_event_callback_registration;
|
|||||||
static void hid_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
static void hid_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
||||||
static void battery_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
static void battery_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
||||||
static void device_information_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
static void device_information_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
||||||
|
static void scan_parameters_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size);
|
||||||
|
|
||||||
|
|
||||||
// used to store remote device in TLV
|
// used to store remote device in TLV
|
||||||
@ -265,6 +267,7 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
|
|||||||
if (app_state != READY) break;
|
if (app_state != READY) break;
|
||||||
hids_client_disconnect(hids_cid);
|
hids_client_disconnect(hids_cid);
|
||||||
battery_service_client_disconnect(battery_service_cid);
|
battery_service_client_disconnect(battery_service_cid);
|
||||||
|
scan_parameters_service_client_disconnect(scan_parameters_cid);
|
||||||
|
|
||||||
connection_handle = HCI_CON_HANDLE_INVALID;
|
connection_handle = HCI_CON_HANDLE_INVALID;
|
||||||
hids_cid = 0;
|
hids_cid = 0;
|
||||||
@ -273,6 +276,8 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
|
|||||||
connect_hids_client = false;
|
connect_hids_client = false;
|
||||||
connect_battery_client = false;
|
connect_battery_client = false;
|
||||||
connect_device_information_client = false;
|
connect_device_information_client = false;
|
||||||
|
connect_scan_parameters_client = false;
|
||||||
|
|
||||||
app_state = IDLE;
|
app_state = IDLE;
|
||||||
printf("\nDisconnected\n");
|
printf("\nDisconnected\n");
|
||||||
break;
|
break;
|
||||||
@ -312,6 +317,12 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack
|
|||||||
connect_device_information_client = false;
|
connect_device_information_client = false;
|
||||||
(void) device_information_service_client_query(connection_handle, device_information_service_gatt_client_event_handler);
|
(void) device_information_service_client_query(connection_handle, device_information_service_gatt_client_event_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (connect_scan_parameters_client){
|
||||||
|
connect_scan_parameters_client = false;
|
||||||
|
(void) scan_parameters_service_client_connect(connection_handle, scan_parameters_service_gatt_client_event_handler, &scan_parameters_cid);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -442,7 +453,7 @@ static void hid_service_gatt_client_event_handler(uint8_t packet_type, uint16_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void device_information_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
static void scan_parameters_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
||||||
/* LISTING_PAUSE */
|
/* LISTING_PAUSE */
|
||||||
UNUSED(packet_type);
|
UNUSED(packet_type);
|
||||||
UNUSED(channel);
|
UNUSED(channel);
|
||||||
@ -455,6 +466,37 @@ static void device_information_service_gatt_client_event_handler(uint8_t packet_
|
|||||||
switch (hci_event_gattservice_meta_get_subevent_code(packet)){
|
switch (hci_event_gattservice_meta_get_subevent_code(packet)){
|
||||||
|
|
||||||
case GATTSERVICE_SUBEVENT_DEVICE_INFORMATION_PNP_ID:
|
case GATTSERVICE_SUBEVENT_DEVICE_INFORMATION_PNP_ID:
|
||||||
|
status = gattservice_subevent_scan_parameters_service_connected_get_att_status(packet);
|
||||||
|
switch (status){
|
||||||
|
case ERROR_CODE_SUCCESS:
|
||||||
|
app_state = READY;
|
||||||
|
printf("Scan Parameters service found\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Scan Parameters service client connection failed, err 0x%02x.\n", status);
|
||||||
|
gap_disconnect(connection_handle);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void device_information_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
||||||
|
/* LISTING_PAUSE */
|
||||||
|
UNUSED(packet_type);
|
||||||
|
UNUSED(channel);
|
||||||
|
UNUSED(size);
|
||||||
|
|
||||||
|
if (hci_event_packet_get_type(packet) != HCI_EVENT_GATTSERVICE_META){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
uint8_t status;
|
||||||
|
switch (hci_event_gattservice_meta_get_subevent_code(packet)){
|
||||||
|
|
||||||
|
case GATTSERVICE_SUBEVENT_SCAN_PARAMETERS_SERVICE_CONNECTED:
|
||||||
printf("PnP ID: vendor source ID 0x%02X, vendor ID 0x%02X, product ID 0x%02X, product version 0x%02X\n",
|
printf("PnP ID: vendor source ID 0x%02X, vendor ID 0x%02X, product ID 0x%02X, product version 0x%02X\n",
|
||||||
gattservice_subevent_device_information_pnp_id_get_vendor_source_id(packet),
|
gattservice_subevent_device_information_pnp_id_get_vendor_source_id(packet),
|
||||||
gattservice_subevent_device_information_pnp_id_get_vendor_id(packet),
|
gattservice_subevent_device_information_pnp_id_get_vendor_id(packet),
|
||||||
@ -482,6 +524,8 @@ static void device_information_service_gatt_client_event_handler(uint8_t packet_
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void battery_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
static void battery_service_gatt_client_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
||||||
/* LISTING_PAUSE */
|
/* LISTING_PAUSE */
|
||||||
UNUSED(packet_type);
|
UNUSED(packet_type);
|
||||||
@ -540,6 +584,10 @@ static void show_usage(void){
|
|||||||
printf("h - Connect to HID Service Client\n");
|
printf("h - Connect to HID Service Client\n");
|
||||||
printf("b - Connect to Battery Service\n");
|
printf("b - Connect to Battery Service\n");
|
||||||
printf("d - Connect to Device Information Service\n");
|
printf("d - Connect to Device Information Service\n");
|
||||||
|
printf("s - Connect to Scan Parameters Service\n");
|
||||||
|
printf("S - Write Scan Parameters 0x1E0, 0x30\n");
|
||||||
|
printf("R - Enable notifications Scan Parameters\n");
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("r - switch to READ mode\n");
|
printf("r - switch to READ mode\n");
|
||||||
@ -651,6 +699,24 @@ static void hog_host_connect_device_information_client(void){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void hog_host_connect_scan_parameters_client(void){
|
||||||
|
switch (app_state){
|
||||||
|
case READY:
|
||||||
|
app_state = W4_CLIENT_CONNECTED;
|
||||||
|
(void) scan_parameters_service_client_connect(connection_handle, scan_parameters_service_gatt_client_event_handler, &scan_parameters_cid);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf("Connect to remote device\n");
|
||||||
|
connect_scan_parameters_client = true;
|
||||||
|
app_state = W4_CONNECTED;
|
||||||
|
gap_connect(remote_device.addr, remote_device.addr_type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void stdin_process(char character){
|
static void stdin_process(char character){
|
||||||
switch (character){
|
switch (character){
|
||||||
case 'c':
|
case 'c':
|
||||||
@ -679,6 +745,21 @@ static void stdin_process(char character){
|
|||||||
hog_host_connect_device_information_client();
|
hog_host_connect_device_information_client();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
printf("Connect to Scan Parameters Service\n");
|
||||||
|
hog_host_connect_scan_parameters_client();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 'S':
|
||||||
|
printf("Write Scan Parameters\n");
|
||||||
|
scan_parameters_service_client_set(0x1E0, 0x30);
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 'R':
|
||||||
|
printf("Enable notifications Scan Parameters\n");
|
||||||
|
scan_parameters_service_client_enable_notifications(scan_parameters_cid);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
printf("Switch to READ mode\n");
|
printf("Switch to READ mode\n");
|
||||||
app_state = READ_MODE;
|
app_state = READ_MODE;
|
||||||
@ -913,7 +994,7 @@ int btstack_main(int argc, const char * argv[]){
|
|||||||
gatt_client_init();
|
gatt_client_init();
|
||||||
|
|
||||||
hids_client_init(hid_descriptor_storage, sizeof(hid_descriptor_storage));
|
hids_client_init(hid_descriptor_storage, sizeof(hid_descriptor_storage));
|
||||||
|
scan_parameters_service_client_init();
|
||||||
/* LISTING_END */
|
/* LISTING_END */
|
||||||
|
|
||||||
// Disable stdout buffering
|
// Disable stdout buffering
|
||||||
|
Loading…
x
Reference in New Issue
Block a user