HM_IOT_Demo / nrf51-sdk

Fork of nrf51-sdk by Nordic Semiconductor

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 */
         }
     }
 }