From 49f1504696ccec81e5ed92c07b211f29cd606eae Mon Sep 17 00:00:00 2001 From: Milanka Ringwald Date: Thu, 4 Mar 2021 10:52:00 +0100 Subject: [PATCH] ble/battery_service_client: add poll interval as param to connect function --- example/gatt_battery_query.c | 2 +- src/ble/battery_service_client.c | 9 ++++----- src/ble/battery_service_client.h | 3 ++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/example/gatt_battery_query.c b/example/gatt_battery_query.c index 9698fa0dc..5402bba3d 100644 --- a/example/gatt_battery_query.c +++ b/example/gatt_battery_query.c @@ -203,7 +203,7 @@ static void hci_event_handler(uint8_t packet_type, uint16_t channel, uint8_t *pa if (app_state != APP_STATE_W4_CONNECT) return; connection_handle = hci_subevent_le_connection_complete_get_connection_handle(packet); - status = battery_service_client_connect(connection_handle, handle_gatt_client_event, &battery_service_cid); + status = battery_service_client_connect(connection_handle, handle_gatt_client_event, 2000, &battery_service_cid); btstack_assert(status == ERROR_CODE_SUCCESS); app_state = APP_STATE_CONNECTED; diff --git a/src/ble/battery_service_client.c b/src/ble/battery_service_client.c index d9c30bc90..85c72459c 100644 --- a/src/ble/battery_service_client.c +++ b/src/ble/battery_service_client.c @@ -57,8 +57,6 @@ #include "btstack_run_loop.h" #include "gap.h" -#define BATTERY_LEVEL_POLL_TIMEOUT 2000 - static btstack_linked_list_t clients; static uint16_t battery_service_cid_counter = 0; @@ -170,7 +168,7 @@ static void battery_service_poll_timer_start(battery_service_client_t * client){ btstack_run_loop_set_timer_handler(&client->poll_timer, battery_service_poll_timer_timeout_handler); btstack_run_loop_set_timer_context(&client->poll_timer, (void *)(uintptr_t)client->cid); - btstack_run_loop_set_timer(&client->poll_timer, BATTERY_LEVEL_POLL_TIMEOUT); + btstack_run_loop_set_timer(&client->poll_timer, client->poll_interval_ms); btstack_run_loop_add_timer(&client->poll_timer); } @@ -330,7 +328,7 @@ static void handle_gatt_client_event(uint8_t packet_type, uint16_t channel, uint } } - if (register_poll_timer){ + if (register_poll_timer && client->poll_interval_ms > 0){ battery_service_poll_timer_start(client); } @@ -360,7 +358,7 @@ static void battery_service_run_for_client(battery_service_client_t * client){ } } -uint8_t battery_service_client_connect(hci_con_handle_t con_handle, btstack_packet_handler_t callback, uint16_t * battery_service_cid){ +uint8_t battery_service_client_connect(hci_con_handle_t con_handle, btstack_packet_handler_t callback, uint32_t poll_interval_ms, uint16_t * battery_service_cid){ btstack_assert(callback != NULL); battery_service_client_t * client = battery_service_get_client_for_con_handle(con_handle); @@ -379,6 +377,7 @@ uint8_t battery_service_client_connect(hci_con_handle_t con_handle, btstack_pack } client->client_handler = callback; + client->poll_interval_ms = poll_interval_ms; client->state = BATTERY_SERVICE_CLIENT_STATE_W2_QUERY_SERVICE; battery_service_run_for_client(client); return ERROR_CODE_SUCCESS; diff --git a/src/ble/battery_service_client.h b/src/ble/battery_service_client.h index eff9e3ad9..79fc9d46a 100644 --- a/src/ble/battery_service_client.h +++ b/src/ble/battery_service_client.h @@ -88,13 +88,14 @@ typedef struct { // used for discovering characteristics and polling uint8_t battery_service_index; + uint32_t poll_interval_ms; btstack_timer_source_t poll_timer; } battery_service_client_t; void battery_service_client_init(void); void battery_service_client_deinit(void); -uint8_t battery_service_client_connect(hci_con_handle_t con_handle, btstack_packet_handler_t callback, uint16_t * battery_service_cid); +uint8_t battery_service_client_connect(hci_con_handle_t con_handle, btstack_packet_handler_t callback, uint32_t poll_interval_ms, uint16_t * battery_service_cid); uint8_t battery_service_client_disconnect(uint16_t battery_service_cid); /* API_END */