#include "at32f403a_407.h" 
#include "settings_api.h"
#include "settings_ai.h"
#include "analog_input.h"

#if defined (MAI_12)

//
void settings_ai_set_all_default(void)
{
    // Аналоговые входы
    settings_ai_def(&settings);
    
    // Питание внешних датчиков
    settings_ext_sens_power_def(&settings);
}

//
void settings_ai_def(settings_t *settings)
{
    // Все входы выключены
    settings->ai_state_bits = 0;
    
    // Режим измерения напряжения
    settings->ai_mode_bits = 0;
    
    // Основные 12 каналов
    for (int i = 0; i < AI_COMMON_NUMBER; i++) 
    {  
        settings->ai[i].state = 0;  // вход выключен
        settings->ai[i].mode = 0;   // режим измерения напряжения
        settings->ai[i].gain_factor = 1;    // коэф-т усиления внешнего ADC
    }
    
    settings->ai[0].name = AN_INP_1;
    settings->ai[1].name = AN_INP_2;
    settings->ai[2].name = AN_INP_3;
    settings->ai[3].name = AN_INP_4;
    settings->ai[4].name = AN_INP_5;
    settings->ai[5].name = AN_INP_6;
    settings->ai[6].name = AN_INP_7;
    settings->ai[7].name = AN_INP_8;
    settings->ai[8].name = AN_INP_9;
    settings->ai[9].name = AN_INP_10;
    settings->ai[10].name = AN_INP_11;
    settings->ai[11].name = AN_INP_12;

    // Дополнительные 4 канала. Измерения происходят всегда.
    for (int i = 0; i < AI_ADD_NUMBER; i++) 
    {  
        settings->ai_add[i].state = 1;  // вход включен
        settings->ai_add[i].mode = 0;   // режим измерения напряжения
        settings->ai_add[i].gain_factor = 1; // коэф-т усиления внешнего ADC
    }
    
    settings->ai_add[0].name = V_ISO_CL;
    settings->ai_add[1].name = V_ISO;
    settings->ai_add[2].name = CRNT_LIM_U_BFR_R;
    settings->ai_add[3].name = CRNT_LIM_U_ABFR_R;
    
    // Время ведения архива по каждому каналу (сек.)
    for (uint8_t i = 0; i < ARCH_AI_CH_NUMBER; i++) {
        settings->period_archive[i] = 3600;
    }
}

//
void settings_ext_sens_power_def(settings_t *settings)
{
    settings->ext_sens_power = 0;
}

#endif