본문 바로가기

Nordic/nRF52

nRF52832 SSM - BLE HTS 테스트 (IAR)

nRF52832로 BLE관련 한가지더 테스트를 해 보자.

많이 사용하는 온도 전송 서비스(HTS)를 테스트하는 코드가 있다.

 

 

코드는 전형적인 BLE GATT 예제이다.

int main(void)
{
    bool erase_bonds;
    // Initialize.
    log_init();
    timers_init();
    buttons_leds_init(&erase_bonds);
    power_management_init();
    ble_stack_init();
    gap_params_init();
    gatt_init();
    advertising_init();
    services_init();
    sensor_simulator_init();
    conn_params_init();
    peer_manager_init();
    // Start execution.
    NRF_LOG_INFO("Health Thermometer example started.");
    application_timers_start();
    advertising_start(erase_bonds);
    // Enter main loop.
    for (;;)
    {
        idle_state_handle();
    }
}

 

온도 값 전송 부분은 아래와 같이 적용하면 다른 BLE를 사용할때 적용하면 동일한 앱을 사용 할수 있다.

static void hts_sim_measurement(ble_hts_meas_t * p_meas)
{
    static ble_date_time_t time_stamp = { 2012, 12, 5, 11, 50, 0 };
    uint32_t celciusX100;
    p_meas->temp_in_fahr_units = false;
    p_meas->time_stamp_present = true;
    p_meas->temp_type_present  = (TEMP_TYPE_AS_CHARACTERISTIC ? false : true);
    celciusX100 = sensorsim_measure(&m_temp_celcius_sim_state, &m_temp_celcius_sim_cfg);
    p_meas->temp_in_celcius.exponent = -2;
    p_meas->temp_in_celcius.mantissa = celciusX100;
    p_meas->temp_in_fahr.exponent    = -2;
    p_meas->temp_in_fahr.mantissa    = (32 * 100) + ((celciusX100 * 9) / 5);
    p_meas->time_stamp               = time_stamp;
    p_meas->temp_type                = BLE_HTS_TEMP_TYPE_FINGER;
    // update simulated time stamp
    time_stamp.seconds += 27;
    if (time_stamp.seconds > 59)
    {
        time_stamp.seconds -= 60;
        time_stamp.minutes++;
        if (time_stamp.minutes > 59)
        {
            time_stamp.minutes = 0;
        }
    }
}

 

프로그램 다운로드 하고 실행하면 HTS로 인식 되는것을 확인 할 수 있다.

 

앱에 연결하면 온도값이 표시되는 것을 확인 할 수 있다.

반응형