Пример #1
0
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;
    }
}
Пример #2
0
/**
 ****************************************************************************************
 * @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;
    }
}