From 82879dc31628a695e65453b38dd7f4f91212bb22 Mon Sep 17 00:00:00 2001 From: Milanka Ringwald Date: Mon, 3 May 2021 11:52:25 +0200 Subject: [PATCH] gatt-service: fix request scan parameters --- .../scan_parameters_service_server.c | 21 ++++++++++++------- .../scan_parameters_service_server.h | 5 ++--- test/pts/Sc_PP_server.md | 18 ++++++++-------- test/pts/hog_device_test.c | 5 +++++ 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/ble/gatt-service/scan_parameters_service_server.c b/src/ble/gatt-service/scan_parameters_service_server.c index ef2cf3257..305f6eafb 100644 --- a/src/ble/gatt-service/scan_parameters_service_server.c +++ b/src/ble/gatt-service/scan_parameters_service_server.c @@ -47,6 +47,10 @@ #include #include +#ifdef ENABLE_TESTING_SUPPORT +#include +#endif + #include "btstack_defines.h" #include "ble/att_db.h" #include "ble/att_server.h" @@ -64,7 +68,6 @@ static uint16_t scan_interval_window_value_handle; static uint16_t scan_interval_window_value_handle_client_configuration; -static uint16_t scan_refresh_value; static uint16_t scan_refresh_value_client_configuration; static hci_con_handle_t scan_refresh_value_client_configuration_connection; @@ -95,6 +98,12 @@ static uint16_t scan_parameters_service_read_callback(hci_con_handle_t con_handl UNUSED(offset); UNUSED(buffer); UNUSED(buffer_size); + if (attribute_handle == scan_refresh_value_handle_client_configuration){ + if (buffer != NULL){ + little_endian_store_16(buffer, 0, scan_refresh_value_client_configuration); + } + return 2; + } return 0; } @@ -129,14 +138,13 @@ static int scan_parameters_service_write_callback(hci_con_handle_t con_handle, u static void scan_parameters_service_refresh_can_send_now(void * context){ UNUSED(context); - uint8_t value[2]; - little_endian_store_16(value, 0, scan_refresh_value); - att_server_notify(scan_refresh_value_client_configuration_connection, scan_refresh_value_handle, value, 2); + const uint8_t value = 0; + att_server_notify(scan_refresh_value_client_configuration_connection, scan_refresh_value_handle, &value, 1); } /** * @brief Init Nordic SPP Service Server with ATT DB - * @param callback for tx data from peer + * @param callback for tx data from peer */ void scan_parameters_service_server_init(btstack_packet_handler_t packet_handler){ scan_parameters_packet_handler = packet_handler; @@ -164,8 +172,7 @@ void scan_parameters_service_server_init(btstack_packet_handler_t packet_handler } -void scan_parameters_service_server_set_scan_refresh(uint16_t scan_refresh){ - scan_refresh_value = scan_refresh; +void scan_parameters_service_server_request_scan_parameters(void){ if (scan_refresh_value_client_configuration != 0){ scan_parameters_callback.callback = &scan_parameters_service_refresh_can_send_now; scan_parameters_callback.context = NULL; diff --git a/src/ble/gatt-service/scan_parameters_service_server.h b/src/ble/gatt-service/scan_parameters_service_server.h index bc07c13df..5cf8d58ed 100644 --- a/src/ble/gatt-service/scan_parameters_service_server.h +++ b/src/ble/gatt-service/scan_parameters_service_server.h @@ -61,10 +61,9 @@ extern "C" { void scan_parameters_service_server_init(btstack_packet_handler_t packet_handler); /** - * @brief Set scan parameters - * @param scan_refresh + * @brief Request scan parameters from Scan Parameters Client. */ -void scan_parameters_service_server_set_scan_refresh(uint16_t scan_refresh); +void scan_parameters_service_server_request_scan_parameters(void); /* API_END */ diff --git a/test/pts/Sc_PP_server.md b/test/pts/Sc_PP_server.md index 4846405c3..308b7009e 100644 --- a/test/pts/Sc_PP_server.md +++ b/test/pts/Sc_PP_server.md @@ -1,18 +1,18 @@ -Tool: hog_host_test +Tool: hog_device_test SCPS/SR/SD/BV-01-C: (wait) -SCPS/SR/DEC/BV-01-C: -SCPS/SR/DEC/BV-02-C: +SCPS/SR/DEC/BV-01-C: (wait) +SCPS/SR/DEC/BV-02-C: (wait) -SCPS/SR/DES/BV-01-C: +SCPS/SR/DES/BV-01-C: (wait) -SCPS/SR/CW/BV-01-C: +SCPS/SR/CW/BV-01-C: (wait) -SCPS/SR/DR/BV-01-C: +SCPS/SR/DR/BV-01-C: (wait) -SCPS/SR/DW/BV-01-C: +SCPS/SR/DW/BV-01-C: (wait) -SCPS/SR/CON/BV-01-C: +SCPS/SR/CON/BV-01-C: (wait) -SCPS/SR/CN/BV-01-C: \ No newline at end of file +SCPS/SR/CN/BV-01-C: x \ No newline at end of file diff --git a/test/pts/hog_device_test.c b/test/pts/hog_device_test.c index a3b54ace1..c308259eb 100644 --- a/test/pts/hog_device_test.c +++ b/test/pts/hog_device_test.c @@ -396,10 +396,15 @@ static void stdin_process(char character){ uint8_t c = character; btstack_ring_buffer_write(&ascii_input_buffer, &c, 1); // start sending + if (c == 'x'){ + scan_parameters_service_server_request_scan_parameters(); + return; + } if (state == W4_INPUT && con_handle != HCI_CON_HANDLE_INVALID){ state = W4_CAN_SEND_FROM_BUFFER; hids_device_request_can_send_now_event(con_handle); } + } #else