#include "at32f403a_407.h" 
#include "settings_api.h"
#include "settings_dio.h"

#if defined (MDIO_88)

//
void settings_dio_set_all_default(void)
{
    // Дискретные/счетные входы
    settings_din_def(&settings);
    
    // Выходы
    settings_do_def(&settings);
    
    // Время ведения архива по каждому каналу (сек.)
    for (uint8_t i = 0; i < ARCH_DIO_CH_NUMBER; i++) {
        settings.period_archive[i] = 3600;
    }
}

// Установить параметры дискретных входов по умолчанию
void settings_din_def(settings_t *settings)
{
    // Все входы выключены
    settings->di_state_bits = 0;
    
    // Параметры входов в обычном режиме
    for (int i = 0; i < DI_NUMBER; i++) {
        settings->di[i].state = 0;
    }
    
    settings->di_mode_bits = 0;
    settings->di_norm_state_bits = 0;
    
    for (int i = 0; i < DI_NUMBER; i++) {
        settings->di_debounce[i] = 50;
    }
}

// Выходы. Настройка по умолчанию.
void settings_do_def(settings_t *settings)
{
    for (uint8_t i = 0; i < DO_NUMBER; i++) 
    {
        settings->dout[i].state = 0;    // выход выключен
        settings->dout[i].mode = 0;     // режим работы выхода (обычный выход)
        settings->dout[i].value = 0;    // значение на выходе в режиме обычного выхода
        settings->dout[i].pwm_duty = 30;// заполнение PWM
        settings->dout[i].pwm_period = 50; // период PWM
        
        settings->dout_save[i].state = 0;    // выход выключен
        settings->dout_save[i].mode = 0;     // режим работы выхода (обычный выход)
        settings->dout_save[i].value = 0;    // значение на выходе в режиме обычного выхода
        settings->dout_save[i].pwm_duty = 30;// заполнение PWM
        settings->dout_save[i].pwm_period = 50; // период PWM
    }
}

#endif
