-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfixatie.c
More file actions
89 lines (82 loc) · 2.58 KB
/
fixatie.c
File metadata and controls
89 lines (82 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* fixatie.c - gegenereerd met TLCGen 12.4.0.19 */
#include "fixatie.h"
/*************************************************************************
* konf_groen
*************************************************************************
* Bepaalt of een fasecyclus conflicterend groen heeft.
*/
boolv konf_groen(count fc)
{
register count i, j;
for (i = 0; i < GKFC_MAX[fc]; ++i)
{
#if (CCOL_V >= 95)
j = KF_pointer[fc][i];
#else
j = TO_pointer[fc][i];
#endif
if (G[j]) return TRUE;
}
return FALSE;
}
/*************************************************************************
* Fixatie
*************************************************************************
* Zorgt voor fixatie van het groenbeeld afhankelijk van ingang isFix
*
* Parameters:
* isFix = index ingangssignaal fixatie keuze
* first, last = (opeenvolgende) indici van richtingen die gefixeerd
* dienen te worden
* bijkomen = aanduiding of richtingen nog groen mogen worden
* tegenhouden = aanduiding of fixatie (kort) tegengehouden moet worden
* prml = primair of alternatieve toedeling van betreffende modulereeks
* ml = huidige module in betreffende modulereeks
*
* Voorbeeld:
* Fixatie(isFix, 0, FCMAX-1, SCH[schbmfix], IH[hfixatietegenh], PRML, ML);
*************************************************************************/
#if defined MLMAX || defined MLAMAX
void Fixatie(count isFix, count first, count last, boolv bijkomen, boolv tegenhouden, boolv *prml[], count ml)
#else
void Fixatie(count isFix, count first, count last, boolv bijkomen, boolv tegenhouden)
#endif
{
register count fc;
HTFB = CIF_IS[isFix];
for (fc = first; fc <= last; ++fc)
{
YV[fc] &= ~BIT0;
YM[fc] &= ~BIT0;
RR[fc] &= ~BIT0;
if (CIF_IS[isFix] && !tegenhouden)
{
YV[fc] |= BIT0;
YM[fc] |= BIT0;
if (bijkomen)
{
PAR[fc] = R[fc] && !TRG[fc] && !konf_groen(fc);
RR[fc] &= ~BIT5; /* Reset 'normaal' alternatief terugzetten */
RR[fc] |= !PAR[fc] ? BIT0 : 0;
AA[fc] = PAR[fc] && !RR[fc] ? AA[fc] : FALSE;
}
else
{
RR[fc] |= BIT0;
}
}
}
if (bijkomen)
{
if (CIF_IS[isFix] && !tegenhouden)
{
langstwachtende_alternatief();
#if MLMAX
for (fc = first; fc <= last; ++fc)
{
if (AR[fc]) prml[ml][fc] |= ALTERNATIEF;
}
#endif
}
}
}