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로 인식 되는것을 확인 할 수 있다.
앱에 연결하면 온도값이 표시되는 것을 확인 할 수 있다.
반응형