dodany kod c od Krzyska po wielu modyfikacjach przez Gemini zeby usunac zalezność od TI-RTOS
This commit is contained in:
159
src/lacz.c
Normal file
159
src/lacz.c
Normal file
@@ -0,0 +1,159 @@
|
||||
#include "lacz.h"
|
||||
#include "helper.h"
|
||||
#include "config.h"
|
||||
|
||||
int lacz_initlog(void *arguments, void *logic)
|
||||
{
|
||||
struct lacz_args *args = (struct lacz_args *)arguments;
|
||||
struct lacz_logic *log = (struct lacz_logic *)logic;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_ON,&log->we_ON,&log->we_ON_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_OFF,&log->we_OFF,&log->we_OFF_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_zamk1,&log->we_zamk1,&log->we_zamk1_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_zamk2,&log->we_zamk2,&log->we_zamk2_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_otw1,&log->we_otw1,&log->we_otw1_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_otw2,&log->we_otw2,&log->we_otw2_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_blk_otw,&log->we_blk_otw,&log->we_blk_otw_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.we_blk_zamk,&log->we_blk_zamk,&log->we_blk_zamk_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.wy_ON,&log->wy_ON,&log->wy_ON_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.wy_NZG,&log->wy_NZG,&log->wy_NZG_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.wy_imp_zamk,&log->wy_imp_zamk,&log->wy_imp_zamk_bit_mask))
|
||||
return -1;
|
||||
|
||||
if(set_bit_ptr_mask(args->io.wy_imp_otw,&log->wy_imp_otw,&log->wy_imp_otw_bit_mask))
|
||||
return -1;
|
||||
|
||||
log->licz_nast_on = (u16)((args->params.t_on) * 1000/ LOOP_CYCLE_MS);
|
||||
log->licz_nast_off = (u16)((args->params.t_off) * 1000/ LOOP_CYCLE_MS);
|
||||
log->licz_nast_nzg = (u16)((args->params.t_nzg) * 1000/ LOOP_CYCLE_MS);
|
||||
|
||||
log->licz_t_on = 0;
|
||||
log->licz_t_off = 0;
|
||||
log->licz_t_nzg = 0;
|
||||
|
||||
log->we_zamk_pop = 0;
|
||||
log->we_otw_pop = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void lacz(void *arguments, void *logic)
|
||||
{
|
||||
|
||||
struct lacz_logic *log = (struct lacz_logic *)logic;
|
||||
|
||||
u8 we_on = ((*log->we_ON & log->we_ON_bit_mask) != 0) ? 1 : 0;
|
||||
u8 we_off = ((*log->we_OFF & log->we_OFF_bit_mask) != 0) ? 1 : 0;
|
||||
|
||||
u8 we_zamk = (((*log->we_zamk1 & log->we_zamk1_bit_mask) != 0) ? 1 : 0)
|
||||
|| (((*log->we_zamk2 & log->we_zamk2_bit_mask) != 0) ? 1 : 0);
|
||||
|
||||
u8 we_otw = (((*log->we_otw1 & log->we_otw1_bit_mask) != 0) ? 1 : 0)
|
||||
|| (((*log->we_otw2 & log->we_otw2_bit_mask) != 0) ? 1 : 0);
|
||||
|
||||
u8 blk_zamk = ((*log->we_blk_zamk & log->we_blk_zamk_bit_mask) != 0) ? 1 : 0;
|
||||
u8 blk_otw = ((*log->we_blk_otw & log->we_blk_otw_bit_mask) != 0) ? 1 : 0;
|
||||
|
||||
if (we_on && !we_off)
|
||||
{
|
||||
log->licz_t_nzg = 0;
|
||||
*log->wy_ON |= log->wy_ON_bit_mask;
|
||||
*log->wy_NZG &= ~log->wy_NZG_bit_mask;
|
||||
}
|
||||
else if (!we_on && we_off)
|
||||
{
|
||||
log->licz_t_nzg = 0;
|
||||
*log->wy_ON &= ~log->wy_ON_bit_mask;
|
||||
*log->wy_NZG &= ~log->wy_NZG_bit_mask;
|
||||
|
||||
}
|
||||
else //niezgodnosc
|
||||
{
|
||||
//nie zmieniac stanu
|
||||
log->licz_t_nzg++;
|
||||
|
||||
}
|
||||
|
||||
if (log->licz_t_nzg > log->licz_nast_nzg)
|
||||
{
|
||||
log->licz_t_nzg = log->licz_nast_nzg + 5;
|
||||
*log->wy_NZG |= log->wy_NZG_bit_mask;
|
||||
}
|
||||
|
||||
|
||||
if (!blk_zamk)
|
||||
{
|
||||
if (log->licz_t_on != 0)
|
||||
{
|
||||
if (++log->licz_t_on > log->licz_nast_on)
|
||||
{
|
||||
log->licz_t_on = 0;
|
||||
*log->wy_imp_zamk &= ~log->wy_imp_zamk_bit_mask;
|
||||
}
|
||||
}
|
||||
else if (we_zamk && (!log->we_zamk_pop))
|
||||
{
|
||||
*log->wy_imp_zamk |= log->wy_imp_zamk_bit_mask;
|
||||
log->licz_t_on = 1;
|
||||
}
|
||||
|
||||
log->we_zamk_pop = we_zamk;
|
||||
}
|
||||
else
|
||||
{
|
||||
log->licz_t_on = 0;
|
||||
*log->wy_imp_zamk &= ~log->wy_imp_zamk_bit_mask;
|
||||
log->we_zamk_pop = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!blk_otw)
|
||||
{
|
||||
if (log->licz_t_off != 0)
|
||||
{
|
||||
if (++log->licz_t_off > log->licz_nast_off)
|
||||
{
|
||||
log->licz_t_off = 0;
|
||||
*log->wy_imp_otw &= ~log->wy_imp_otw_bit_mask;
|
||||
}
|
||||
}
|
||||
else if (we_otw && (!log->we_otw_pop))
|
||||
{
|
||||
*log->wy_imp_otw |= log->wy_imp_otw_bit_mask;
|
||||
log->licz_t_off = 1;
|
||||
}
|
||||
|
||||
log->we_otw_pop = we_otw;
|
||||
}
|
||||
else
|
||||
{
|
||||
log->licz_t_off = 0;
|
||||
*log->wy_imp_otw &= ~log->wy_imp_otw_bit_mask;
|
||||
log->we_otw_pop = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user