BLE_Health_Thermometer for mbed HRM1017 with BLE library 0.1.0

Dependencies:   BLE_API TMP102 mbed nRF51822

Fork of BLE_Health_Thermometer2 by Ken Todotani

You are viewing an older revision! See the latest version

BLE_Health_Thermometer2 010

mbed HRM1017をはじめように掲載されている、BLE_Health_Thermometer_IRCをBLE ライブラリ0.1.0に移植しました。 前回公開したhttp://mbed.org/users/todotani/code/BLE_Health_Thermometer2/からさらに新ライブラリ0.1.0に対応するための各種修正を加えています。修正点は以下の通りです。

  • ライブラリ0.1.0を使うためには、mbedライブラリをDevelopment版である、mbed-srcに変更します
  • mbed-srcのクロッククロック設定が外部クロックになっているため、HRM1017で使用する内部クロック設定に変更します。mbed-src/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51822.cの69行目を以下のように修正します

system_nrf51822.cの変更

NRF_CLOCK->LFCLKSRC             = (CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos);
  • nRF51822/btle/btle.cpp 66行目を以下のように変更し、内部クロックを選択するようにします(この変更は以前から必要なものでした)

btle.cppの変更1

SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, false);
  • btle.cppの140行、142行目を以下のようにコメントアウトします。この変更は、disconnected.reasonが1種類しか定義されていないために、disconnectionCallback関数が呼ばれない問題を回避するためです。

btle.cppの変更2

// if (p_ble_evt->evt.gap_evt.params.disconnected.reason == BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION) {
       nRF51Gap::getInstance().processDisconnectionEvent(handle, Gap::LOCAL_HOST_TERMINATED_CONNECTION);
// }
  • Tickerを設定して以下のような処理を周期的に実行するようにします。こうすることで、waitForEvent()関数から抜けない問題を回避します。

Tickerの使用

void periodicCallback(void)
{
    oneSecondLed = !oneSecondLed; /* Do blinky on LED1 while we're waiting for BLE events */

    /* Note that the periodicCallback() executes in interrupt context, so it is safer to do
     * heavy-weight sensor polling from the main thread. */
    triggerSensorPolling = true;
}

Import programBLE_Health_Thermometer2-010

BLE_Health_Thermometer for mbed HRM1017 with BLE library 0.1.0


All wikipages