Skip to content
Snippets Groups Projects
orders.c 2.98 KiB
Newer Older
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
#include "orders.h"

orders_t orders;

void do_orders()
{
    if(orders.get_T)
    {
        orders.get_T=0;

        int16_t temp;
        uint8_t status_thermo;
        uint8_t tries=0;
        status.last_measure = (status.last_measure+1)%2;
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
        while(1)
        {
            if(status.last_measure==0)
            {
                status_thermo = thermometer_cold_gettemp(&temp,1000);
                debug_printf("get temp cold, status = %u\n", status_thermo);
            }
            else
            {
                status_thermo = thermometer_cold_gettemp(&temp,1000);
                debug_printf("get temp hot, status = %u\n", status_thermo);
            }
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
            if(status_thermo==0)
                break;
            tries++;
            if(tries>=4)
                break;
        }
        if(status_thermo > 0)
        {
            if(status.last_measure==0)
            {
                if(status.fail_get_T_cold >= THERMO_FAIL_NUMBER)
                    status.fail |= STATUS_FAIL_T_COLD;
                else
                    status.fail_get_T_cold++;
            }
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
            {
                if(status.fail_get_T_hot >= THERMO_FAIL_NUMBER)
                    status.fail |= STATUS_FAIL_T_HOT;
                else
                    status.fail_get_T_hot++;
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
            }
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
            {
                status.fail_get_T_cold = 0;
                status.fail &= ~STATUS_FAIL_T_COLD;
                status.temperature_cold_insta = temp;
                if(!median_filter_thermometer_cold_filled)
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
                {
                    median_filter_thermometer_cold_fill(temp);
                    status.temperature_cold.v1 = status.temperature_cold.v2 = .0625*temp;
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
                }
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
            }
                status.fail_get_T_hot = 0;
                status.fail &= ~STATUS_FAIL_T_HOT;
                status.temperature_hot_insta = temp;
                if(!median_filter_thermometer_hot_filled)
                {
                    median_filter_thermometer_hot_fill(temp);
                    status.temperature_hot.v1 = status.temperature_hot.v2 = .0625*temp;
                }
            }
        }

        if(status.last_measure==0)
        {
            if(median_filter_thermometer_cold_filled)
            {
                median_filter_thermometer_cold_update(status.temperature_cold_insta);
                float Tinstamf = .0625*median_filter_thermometer_cold_read();
                update_filtre2(&(status.temperature_cold), THERMO_FACTOR_FILTRE, Tinstamf);
            }
        }
        else
        {
            if(median_filter_thermometer_hot_filled)
            {
                median_filter_thermometer_hot_update(status.temperature_hot_insta);
                float Tinstamf = .0625*median_filter_thermometer_hot_read();
                update_filtre2(&(status.temperature_hot), THERMO_FACTOR_FILTRE, Tinstamf);
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
        }
    }
}