Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of nrf51-sdk by
Diff: source/nordic_sdk/components/ble/common/ble_conn_params.cpp
- Revision:
- 30:7193e01c2913
- Parent:
- 29:286940b7ee5a
- Child:
- 33:0d31ee7f1af0
diff -r 286940b7ee5a -r 7193e01c2913 source/nordic_sdk/components/ble/common/ble_conn_params.cpp
--- a/source/nordic_sdk/components/ble/common/ble_conn_params.cpp Thu Apr 07 17:38:01 2016 +0100
+++ b/source/nordic_sdk/components/ble/common/ble_conn_params.cpp Thu Apr 07 17:38:02 2016 +0100
@@ -34,17 +34,25 @@
#include <stdlib.h>
#include "nordic_common.h"
#include "ble_hci.h"
-#include "app_timer.h"
#include "ble_srv_common.h"
#include "app_util.h"
+#ifdef USE_APP_TIMER
+#include "app_timer.h"
+#else
+#include "mbed.h"
+#endif
static ble_conn_params_init_t m_conn_params_config; /**< Configuration as specified by the application. */
static ble_gap_conn_params_t m_preferred_conn_params; /**< Connection parameters preferred by the application. */
static uint8_t m_update_count; /**< Number of Connection Parameter Update messages that has currently been sent. */
static uint16_t m_conn_handle; /**< Current connection handle. */
static ble_gap_conn_params_t m_current_conn_params; /**< Connection parameters received in the most recent Connect event. */
-APP_TIMER_DEF(m_conn_params_timer_id); /**< Connection parameters timer. */
+#ifdef USE_APP_TIMER
+static app_timer_id_t m_conn_params_timer_id; /**< Connection parameters timer. */
+#else
+static Ticker m_conn_params_timer;
+#endif
static bool m_change_param = false;
@@ -68,10 +76,16 @@
}
+#ifdef USE_APP_TIMER
static void update_timeout_handler(void * p_context)
{
UNUSED_PARAMETER(p_context);
+#else /* #if !USE_APP_TIMER */
+static void update_timeout_handler(void)
+{
+ m_conn_params_timer.detach(); /* this is supposed to be a single-shot timer callback */
+#endif /* #if !USE_APP_TIMER */
if (m_conn_handle != BLE_CONN_HANDLE_INVALID)
{
// Check if we have reached the maximum number of attempts
@@ -146,15 +160,24 @@
m_conn_handle = BLE_CONN_HANDLE_INVALID;
m_update_count = 0;
+#ifdef USE_APP_TIMER
return app_timer_create(&m_conn_params_timer_id,
APP_TIMER_MODE_SINGLE_SHOT,
update_timeout_handler);
+#else
+ return NRF_SUCCESS;
+#endif
}
uint32_t ble_conn_params_stop(void)
{
+#ifdef USE_APP_TIMER
return app_timer_stop(m_conn_params_timer_id);
+#else /* #if !USE_APP_TIMER */
+ m_conn_params_timer.detach();
+ return NRF_SUCCESS;
+#endif /* #if !USE_APP_TIMER */
}
@@ -163,7 +186,9 @@
// Start negotiation if the received connection parameters are not acceptable
if (!is_conn_params_ok(&m_current_conn_params))
{
+#ifdef USE_APP_TIMER
uint32_t err_code;
+#endif
uint32_t timeout_ticks;
if (m_change_param)
@@ -189,11 +214,15 @@
timeout_ticks = m_conn_params_config.next_conn_params_update_delay;
}
+#ifdef USE_APP_TIMER
err_code = app_timer_start(m_conn_params_timer_id, timeout_ticks, NULL);
if ((err_code != NRF_SUCCESS) && (m_conn_params_config.error_handler != NULL))
{
m_conn_params_config.error_handler(err_code);
}
+#else
+ m_conn_params_timer.attach(update_timeout_handler, timeout_ticks / 32768);
+#endif
}
}
else
@@ -228,18 +257,24 @@
static void on_disconnect(ble_evt_t * p_ble_evt)
{
+#ifdef USE_APP_TIMER
uint32_t err_code;
+#endif
m_conn_handle = BLE_CONN_HANDLE_INVALID;
// Stop timer if running
m_update_count = 0; // Connection parameters updates should happen during every connection
+#ifdef USE_APP_TIMER
err_code = app_timer_stop(m_conn_params_timer_id);
if ((err_code != NRF_SUCCESS) && (m_conn_params_config.error_handler != NULL))
{
m_conn_params_config.error_handler(err_code);
}
+#else
+ m_conn_params_timer.detach();
+#endif
}
@@ -262,6 +297,7 @@
}
else
{
+#ifdef USE_APP_TIMER
uint32_t err_code;
// Stop timer if running
@@ -270,6 +306,9 @@
{
m_conn_params_config.error_handler(err_code);
}
+#else /* #if !USE_APP_TIMER */
+ m_conn_params_timer.detach();
+#endif /* #if !USE_APP_TIMER */
}
}
}
