/*
 * synhro_tools.c
 *
 *  Created on: 13 íîÿá. 2024 ã.
 *      Author: Evgeniy_Sokolov
 */



#include <edrk_main.h>

#include <params.h>
#include <params_alg.h>
#include <params_norma.h>
#include <params_pwm24.h>
#include <params_temper_p.h>
#include <project.h>
#include "IQmathLib.h"
#include "mathlib.h"
#include "optical_bus.h"
#include "sync_tools.h"

//////////////////////////////////////////////////////////
unsigned int wait_synhro_optical_bus(void)
{
    static unsigned int cmd = 0;
    static unsigned int count_wait_synhro = 0;


//
//    switch(cmd)
//    {
//      0 :    if (optical_read_data.data.cmd.bit.wdog_tick == 0)
//                cmd = 1;
//
//            break;
//
//      1 :   optical_write_data.data.cmd.bit.wdog_tick = 1;
//            break;
//
//
//      default: break
//    }



    return 0;
}

//////////////////////////////////////////////////////////
void clear_wait_synhro_optical_bus(void)
{

 //   optical_read_data.data.cmd.bit.wdog_tick = 0;
 //   optical_write_data.data.cmd.bit.wdog_tick = 0;

}
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
void who_select_sync_signal(void)
{

    if (sync_data.what_main_pch)
    {
        if (sync_data.what_main_pch==2)
        {
            // ïðèíóäèòåëüíî âñåãäà !!!
            if (edrk.flag_second_PCH)
               sync_data.enable_do_sync = 1;
            else
                sync_data.enable_do_sync = 0;
            return;
        }

        if (sync_data.what_main_pch==1)
        {
            // ïðèíóäèòåëüíî âñåãäà !!!
            if (edrk.flag_second_PCH)
               sync_data.enable_do_sync = 0;
            else
                sync_data.enable_do_sync = 1;
            return;
        }

    }

//    if (optical_read_data.status == 1)
        sync_data.global_flag_sync_1_2 = (sync_data.local_flag_sync_1_2 || optical_read_data.data.cmd.bit.sync_1_2);
//    else
 //       sync_data.global_flag_sync_1_2 = (sync_data.local_flag_sync_1_2);


    if (sync_data.timeout_sync_signal && optical_read_data.data.cmd.bit.sync_line_detect)
    {
        // ýòîò ÁÑ íå ïðèíèìàåò ñèíõðî, à âòîðîé ïðèíèìàåò, çíà÷èò íà ýòîì îòêëþ÷àåì ñèíõðîíèçàöèþ
        // ñèíõðîíèçèðóåòñÿ òîò áîðò ñàì.

        sync_data.enable_do_sync = 0;

        return;
    }

    if (sync_data.timeout_sync_signal==0 && optical_read_data.data.cmd.bit.sync_line_detect==0)
    {
        // ýòîò ÁÑ ïðèíèìàåò ñèíõðî, à âòîðîé íå ïðèíèìàåò, çíà÷èò íà ýòîì ïðèíóäèòåëüíî âêëþ÷àåì ñèíõðîíèçàöèþ
        // ñèíõðîíèçèðóåòñÿ ýòîò áîðò ñàì.

        sync_data.enable_do_sync = 1;

        return;
    }

    if (sync_data.sync_ready && sync_data.timeout_sync_signal==0 && optical_read_data.data.cmd.bit.sync_line_detect)
    {


        if (optical_read_data.data.cmd.bit.sync_1_2 && sync_data.enable_do_sync==0)
        {
            // óæå åñòü ñèíõðîí, äðóãîé ÁÑ ñìîã ýòî ñäåëàòü è îí ñàì ýòî ñäåëàë

        }
        else
        if (optical_read_data.data.cmd.bit.sync_1_2 && sync_data.enable_do_sync==1)
        {
            // óæå åñòü ñèíõðîí, äðóãîé ÁÑ ñìîã ýòî ñäåëàòü è îí íå ñàì ýòî ñäåëàë, à îò íàñ

        }
        else
        {
        // íåò ñèíõðîíèçàöèè, çíà÷èò âûáèðàåì êòî ýòî áóäåò äåëàòü â àâòîìàòå
        // ýòîò ÁÑ ïðèíèìàåò ñèíõðî è âòîðîé ïðèíèìàåò, çíà÷èò ñèíõðîíèçàöèÿ
        // âûáèðàåòñÿ â çàâèñèìîñòè îò íîìåðà ÁÑ.
            if (edrk.flag_second_PCH==0)
               sync_data.enable_do_sync = 1;
            else
                sync_data.enable_do_sync = 0;
        }
        return;
    }

}

//////////////////////////////////////////////////////////