void app_eaci_data_htps_hdl(uint8_t msg_id, uint8_t param_len, uint8_t const *param) { if (app_htpt_env->enabled == false) return; switch (msg_id) { case EACI_MSG_DATA_REQ_HT_SEND_INTER_VALUE: { uint16_t meas_intv = param[1] << 8 | param[0]; app_htpt_measurement_intv_send(app_htpt_env->conhdl, meas_intv); } break; case EACI_MSG_DATA_REQ_HT_SEND_TEMP_VALUE: { struct htp_temp_meas temp; uint8_t flag_stable_meas = param[0]; temp.flags = param[1]; temp.type = param[2]; temp.temp = (param[6] << 24) | (param[5] << 16) | (param[4] << 8) | param[3]; temp.time_stamp.year = (param[8] << 8) | param[7]; temp.time_stamp.month = param[9]; temp.time_stamp.day = param[10]; temp.time_stamp.hour = param[11]; temp.time_stamp.min = param[12]; temp.time_stamp.sec = param[13]; app_htpt_temp_send(app_htpt_env->conhdl, &temp, flag_stable_meas); } break; default: break; } }
/** **************************************************************************************** * @brief dealwith new configuration value **************************************************************************************** */ void app_char_config_desc_change(const struct htpt_cfg_indntf_ind *pcfg) { switch (pcfg->char_code) { case HTPT_TEMP_MEAS_CHAR: if (pcfg->cfg_val == PRF_CLI_START_IND) { usr_env.is_temp_meas_config = true; // send store measure if sending is not busy if(! usr_env.is_meas_send_busy) app_send_stored_meas(); usr_env.meas_counter = 0; if(! usr_env.is_meas_running && app_htpt_env->meas_intv != 0) { usr_env.is_meas_running = true; // measure and indicate immediately usr_env.is_should_indicate = true; start_measure_temperature(); ke_timer_set(APP_HTPT_PERIOD_MEAS_TIMER, TASK_APP, HTPT_PERIOD_MEAS_TIME); } } else { usr_env.is_temp_meas_config = false; usr_env.is_should_indicate = false; // clear store measure app_clear_stored_meas(); if(! usr_env.is_temp_imeas_config && usr_env.is_meas_running) { usr_env.is_meas_running = false; ke_timer_clear(APP_HTPT_PERIOD_MEAS_TIMER, TASK_APP); } } break; case HTPT_INTERM_TEMP_CHAR: if (pcfg->cfg_val == PRF_CLI_START_NTF) { usr_env.is_temp_imeas_config = true; app_interm_temp_stable_status_reset(); if(! usr_env.is_meas_running) { usr_env.is_meas_running = true; ke_timer_set(APP_HTPT_PERIOD_MEAS_TIMER, TASK_APP, HTPT_PERIOD_MEAS_TIME); } } else { usr_env.is_temp_imeas_config = false; usr_env.is_imeas_send_busy = false; if(! usr_env.is_temp_meas_config && usr_env.is_meas_running) { usr_env.is_meas_running = false; ke_timer_clear(APP_HTPT_PERIOD_MEAS_TIMER, TASK_APP); } } break; case HTPT_MEAS_INTV_CHAR: if (pcfg->cfg_val == PRF_CLI_START_IND) { usr_env.is_temp_interval_config = true; // This is not must app_htpt_measurement_intv_send(app_htpt_env->conhdl, app_htpt_env->meas_intv); } else { usr_env.is_temp_interval_config = false; } break; default: break; } }