dodany kod c od Krzyska po wielu modyfikacjach przez Gemini zeby usunac zalezność od TI-RTOS

This commit is contained in:
2026-02-19 11:59:33 +01:00
parent bf9c4596b8
commit d086ef28de
336 changed files with 52294 additions and 1006 deletions

159
src/lacz.c Normal file
View 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;
}
}