matlab_23550/Inu/Src/N12_Xilinx/xp_cds_status_bus.c
Razvalyaev 7e0063eee0 #3 Скомпилилось, но пока ничего не вызывается
Все основные файлы подтянуты без изменений

Изменены (только папка main_matlab):
- заглушки для ненужных функций (main_matlab.c)
- iq библиотека (IQmathLib_matlab.c)
- библиотеки DSP281x
2025-01-13 11:09:58 +03:00

218 lines
3.3 KiB
C

#include "xp_cds_status_bus.h"
//#include "xp_tools.h"
void clear_cur_stat_sbus(T_cds_status_serial_bus *v)
{
v->cur_read_error = 0;
v->cur_write_error = 0;
}
void clear_cur_stat_pbus(T_cds_status_parallel_bus *v)
{
v->cur_read_error = 0;
v->cur_write_error = 0;
}
void clear_cur_stat_hwpbus(T_cds_status_hwp_bus *v)
{
v->cur_read_error = 0;
v->cur_write_error = 0;
}
////////////////////////////////////////////
////////////////////////////////////////////
void clear_stat_sbus(T_cds_status_serial_bus *v)
{
v->count_read_error = 0;
v->count_write_error = 0;
v->count_read_ok = 0;
v->count_write_ok = 0;
v->cur_read_error = 0;
v->cur_write_error = 0;
v->status = 0;
}
void clear_stat_pbus(T_cds_status_parallel_bus *v)
{
v->count_read_error = 0;
v->count_write_error = 0;
v->count_read_ok = 0;
v->count_write_ok = 0;
v->cur_read_error = 0;
v->cur_write_error = 0;
v->status = 0;
}
void clear_stat_hwpbus(T_cds_status_hwp_bus *v)
{
v->count_read_error = 0;
v->count_write_error = 0;
v->count_read_ok = 0;
v->count_write_ok = 0;
v->cur_read_error = 0;
v->cur_write_error = 0;
v->status = 0;
}
int check_cds_ready_sbus(int err, int wr_rd, T_cds_status_serial_bus *v)
{
if (wr_rd == ITS_WRITE_BUS) // write
{
if (err)
{
if (v->cur_write_error < v->max_write_error)
v->cur_write_error++;
}
else
{
if (v->cur_write_error > 0)
v->cur_write_error--;
}
}
if (wr_rd == ITS_READ_BUS) // read
{
if (err)
{
if (v->cur_read_error < v->max_read_error)
v->cur_read_error++;
}
else
{
if (v->cur_read_error > 0)
v->cur_read_error--;
}
}
if ( (v->cur_write_error >= v->max_write_error) || ( v->cur_read_error >= v->max_read_error) )
return 1;
return 0;
}
int check_cds_ready_pbus(int err, int wr_rd, T_cds_status_parallel_bus *v)
{
if (wr_rd == ITS_WRITE_BUS) // write
{
if (err)
{
if (v->cur_write_error < v->max_write_error)
v->cur_write_error++;
}
else
{
if (v->cur_write_error > 0)
v->cur_write_error--;
}
}
if (wr_rd == ITS_READ_BUS) // read
{
if (err)
{
if (v->cur_read_error < v->max_read_error)
v->cur_read_error++;
}
else
{
if (v->cur_read_error > 0)
v->cur_read_error--;
}
}
if ( (v->cur_write_error >= v->max_write_error) || ( v->cur_read_error >= v->max_read_error) )
return 1;
return 0;
}
int check_cds_ready_hwpbus(int err, int wr_rd, T_cds_status_hwp_bus *v)
{
if (wr_rd == ITS_WRITE_BUS) // write
{
if (err)
{
v->count_write_error++;
if (v->cur_write_error < v->max_write_error)
v->cur_write_error++;
}
else
{
if (v->cur_write_error > 0)
v->cur_write_error--;
v->count_write_ok++;
}
}
if (wr_rd == ITS_READ_BUS) // read
{
if (err)
{
v->count_read_error++;
if (v->cur_read_error < v->max_read_error)
v->cur_read_error++;
}
else
{
if (v->cur_read_error > 0)
v->cur_read_error--;
v->count_read_ok++;
}
}
if ( (v->cur_write_error >= v->max_write_error) || ( v->cur_read_error >= v->max_read_error) )
return 1;
return 0;
}
void set_status_cds(int err_ready, T_component_status *ss)
{
if (err_ready == 0) // all ok
{
if ((*ss == component_NotReady) || (*ss == component_Started))
*ss = component_Ready;
}
if (err_ready == 1) // all !bad!
{
*ss = component_ErrorSBus;//component_Error;
}
}