2835 lines
107 KiB
Text
2835 lines
107 KiB
Text
|
open Mctypes
|
||
|
open Mathext
|
||
|
open Mc_ext
|
||
|
node abs(a : float) returns (o : float)
|
||
|
let
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a)
|
||
|
tel
|
||
|
|
||
|
node sign(a : float) returns (o : float)
|
||
|
let
|
||
|
o =
|
||
|
if (>.)(a, 0.000000)
|
||
|
then 1.000000
|
||
|
else if (=)(0.000000, a) then 0.000000 else ~-.(1.000000)
|
||
|
tel
|
||
|
|
||
|
node myarctan(y : float; x : float) returns (atan : float)
|
||
|
var a_2 : float; o_2 : float; a : float; o : float; l6 : float; l4 : bool;
|
||
|
l1 : float;
|
||
|
let
|
||
|
a_2 = x;
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = y;
|
||
|
o =
|
||
|
if (>.)(a, 0.000000)
|
||
|
then 1.000000
|
||
|
else if (=)(0.000000, a) then 0.000000 else ~-.(1.000000);
|
||
|
atan =
|
||
|
if l4
|
||
|
then if (<.)(x, 0.000000) then (+.)(Mctypes.pi, l1) else l1
|
||
|
else (Mctypes.pi /. 2.000000) *. o;
|
||
|
l6 = if l4 then (/.)(y, x) else 0.000000 -> pre l6;
|
||
|
l4 = (>.)(o_2, 0.100000);
|
||
|
l1 = Mathext.atanr(l6)
|
||
|
tel
|
||
|
|
||
|
node missiontrackequalsprevious(previousone : Mctypes.tmissiontrack;
|
||
|
actualone : Mctypes.tmissiontrack)
|
||
|
returns (equal : bool)
|
||
|
var a_6 : float; o_6 : float; a_5 : float; o_5 : float; a_4 : float;
|
||
|
o_4 : float; a_3 : float; o_3 : float; a_2 : float; o_2 : float;
|
||
|
a : float; o : float;
|
||
|
let
|
||
|
a_6 = actualone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_6 = if (<=.)(0.000000, a_6) then a_6 else ~-.(a_6);
|
||
|
a_5 = actualone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_5 = if (<=.)(0.000000, a_5) then a_5 else ~-.(a_5);
|
||
|
a_4 = previousone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_4 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
a_3 = previousone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
a_2 =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.y, actualone.Mctypes.m_pos.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.x, actualone.Mctypes.m_pos.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal =
|
||
|
(or)
|
||
|
((&)
|
||
|
(not((=)(0, previousone.Mctypes.m_id)),
|
||
|
(=)(previousone.Mctypes.m_id, actualone.Mctypes.m_id)),
|
||
|
(&)
|
||
|
((&)((<.)(o, 100.000000), (<.)(o_2, 100.000000)),
|
||
|
not
|
||
|
((&)
|
||
|
((&)
|
||
|
((&)((<.)(o_3, 0.100000), (<.)(o_4, 0.100000)),
|
||
|
(<.)(o_5, 0.100000)),
|
||
|
(<.)(o_6, 0.100000)))
|
||
|
)
|
||
|
)
|
||
|
|
||
|
tel
|
||
|
|
||
|
node calctrackvisible1(position : Mctypes.tposition; speed : Mctypes.tspeed)
|
||
|
returns (trackvisible : bool)
|
||
|
var a_4 : float; o_4 : float; a_3 : float; o_3 : float; a_2 : float;
|
||
|
o_2 : float; a : float; o : float;
|
||
|
let
|
||
|
a_4 = speed.Mctypes.sy;
|
||
|
o_4 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
a_3 = speed.Mctypes.sx;
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
a_2 = position.Mctypes.y;
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = position.Mctypes.x;
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
trackvisible =
|
||
|
not
|
||
|
((&)
|
||
|
((&)((&)((<.)(o, 0.001000), (<.)(o_2, 0.001000)), (<.)(o_3, 0.001000)),
|
||
|
(<.)(o_4, 0.001000)))
|
||
|
|
||
|
tel
|
||
|
|
||
|
node missiontrackexist1(acc_tracknumber : int;
|
||
|
missiontrack : Mctypes.tmissiontrack;
|
||
|
previousmissiontrack : Mctypes.tmissiontrack)
|
||
|
returns (tracknumbertoset : int)
|
||
|
var previousone : Mctypes.tmissiontrack; actualone : Mctypes.tmissiontrack;
|
||
|
a_6 : float; o_6 : float; a_5 : float; o_5 : float; a_4 : float;
|
||
|
o_4 : float; a_3 : float; o_3 : float; a_2 : float; o_2 : float;
|
||
|
a : float; o : float; equal : bool;
|
||
|
let
|
||
|
previousone = missiontrack;
|
||
|
actualone = previousmissiontrack;
|
||
|
a_6 = actualone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_6 = if (<=.)(0.000000, a_6) then a_6 else ~-.(a_6);
|
||
|
a_5 = actualone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_5 = if (<=.)(0.000000, a_5) then a_5 else ~-.(a_5);
|
||
|
a_4 = previousone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_4 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
a_3 = previousone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
a_2 =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.y, actualone.Mctypes.m_pos.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.x, actualone.Mctypes.m_pos.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal =
|
||
|
(or)
|
||
|
((&)
|
||
|
(not((=)(0, previousone.Mctypes.m_id)),
|
||
|
(=)(previousone.Mctypes.m_id, actualone.Mctypes.m_id)),
|
||
|
(&)
|
||
|
((&)((<.)(o, 100.000000), (<.)(o_2, 100.000000)),
|
||
|
not
|
||
|
((&)
|
||
|
((&)
|
||
|
((&)((<.)(o_3, 0.100000), (<.)(o_4, 0.100000)),
|
||
|
(<.)(o_5, 0.100000)),
|
||
|
(<.)(o_6, 0.100000)))
|
||
|
)
|
||
|
)
|
||
|
;
|
||
|
tracknumbertoset =
|
||
|
if (&)(equal, not((=)(0, previousmissiontrack.Mctypes.m_tracknumber)))
|
||
|
then previousmissiontrack.Mctypes.m_tracknumber
|
||
|
else acc_tracknumber
|
||
|
tel
|
||
|
|
||
|
node missiontrackequalsprevious_orig(previousone : Mctypes.tmissiontrack;
|
||
|
actualone : Mctypes.tmissiontrack)
|
||
|
returns (equal : bool)
|
||
|
var a_6 : float; o_6 : float; a_5 : float; o_5 : float; a_4 : float;
|
||
|
o_4 : float; a_3 : float; o_3 : float; a_2 : float; o_2 : float;
|
||
|
a : float; o : float; l43 : bool;
|
||
|
let
|
||
|
a_6 = actualone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_6 = if (<=.)(0.000000, a_6) then a_6 else ~-.(a_6);
|
||
|
a_5 = actualone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_5 = if (<=.)(0.000000, a_5) then a_5 else ~-.(a_5);
|
||
|
a_4 = previousone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_4 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
a_3 = previousone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
a_2 =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.y, actualone.Mctypes.m_pos.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.x, actualone.Mctypes.m_pos.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
l43 = not((=)(previousone.Mctypes.m_tracknumber, 0));
|
||
|
equal =
|
||
|
(&)
|
||
|
(l43,
|
||
|
(or)
|
||
|
((&)
|
||
|
((&)(l43, not((=)(0, previousone.Mctypes.m_id))),
|
||
|
(=)(previousone.Mctypes.m_id, actualone.Mctypes.m_id)),
|
||
|
(&)
|
||
|
((&)((<.)(o, 100.000000), (<.)(o_2, 100.000000)),
|
||
|
not
|
||
|
((&)
|
||
|
((&)
|
||
|
((&)((<.)(o_3, 0.100000), (<.)(o_4, 0.100000)),
|
||
|
(<.)(o_5, 0.100000)),
|
||
|
(<.)(o_6, 0.100000)))
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
|
||
|
tel
|
||
|
|
||
|
node util_radtodeg(input1 : float) returns (output1 : float)
|
||
|
let
|
||
|
output1 = (/.)(input1, (2.000000 *. Mctypes.pi)) *. 360.000000
|
||
|
tel
|
||
|
|
||
|
node util_degtorad(input1 : float) returns (output1 : float)
|
||
|
let
|
||
|
output1 = (/.)((2.000000 *. Mctypes.pi) *. input1, 360.000000)
|
||
|
tel
|
||
|
|
||
|
node calctrackangle(speed : Mctypes.tspeed;
|
||
|
speedabs : Mctypes.tmetresseconde)
|
||
|
returns (trackangle : float)
|
||
|
var a_2 : float; o_2 : float; a : float; o : float; input1 : float;
|
||
|
output1 : float; l51 : bool; l48 : float; l47 : float;
|
||
|
let
|
||
|
a_2 = l47;
|
||
|
o_2 =
|
||
|
if (>.)(a_2, 0.000000)
|
||
|
then 1.000000
|
||
|
else if (=)(0.000000, a_2) then 0.000000 else ~-.(1.000000);
|
||
|
a =
|
||
|
Mathext.asinr((/.)(speed.Mctypes.sy, if l51 then 1.000000 else speedabs));
|
||
|
o =
|
||
|
if (>.)(a, 0.000000)
|
||
|
then 1.000000
|
||
|
else if (=)(0.000000, a) then 0.000000 else ~-.(1.000000);
|
||
|
input1 = if l51 then 0.000000 else Mathext.acosr(l47) *. l48;
|
||
|
output1 = (/.)(input1, (2.000000 *. Mctypes.pi)) *. 360.000000;
|
||
|
trackangle = output1 *. l48 *. o;
|
||
|
l51 = (<.)(speedabs, 0.010000);
|
||
|
l48 = o_2;
|
||
|
l47 = (/.)(speed.Mctypes.sx, if l51 then 1.000000 else speedabs)
|
||
|
tel
|
||
|
|
||
|
node calctrackvisible(position : Mctypes.tposition)
|
||
|
returns (trackvisible : bool)
|
||
|
var a_2 : float; o_2 : float; a : float; o : float;
|
||
|
let
|
||
|
a_2 = position.Mctypes.y;
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = position.Mctypes.x;
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
trackvisible = not((&)((<.)(o, 0.001000), (<.)(o_2, 0.001000)))
|
||
|
tel
|
||
|
|
||
|
node missiontrackexist(missiontrack : Mctypes.tmissiontrack;
|
||
|
previousmissiontrack : Mctypes.tmissiontrack;
|
||
|
acc_tracknumber : int)
|
||
|
returns (tracknumbertoset : int)
|
||
|
var previousone : Mctypes.tmissiontrack; actualone : Mctypes.tmissiontrack;
|
||
|
a_6 : float; o_6 : float; a_5 : float; o_5 : float; a_4 : float;
|
||
|
o_4 : float; a_3 : float; o_3 : float; a_2 : float; o_2 : float;
|
||
|
a : float; o : float; equal : bool;
|
||
|
let
|
||
|
previousone = missiontrack;
|
||
|
actualone = previousmissiontrack;
|
||
|
a_6 = actualone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_6 = if (<=.)(0.000000, a_6) then a_6 else ~-.(a_6);
|
||
|
a_5 = actualone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_5 = if (<=.)(0.000000, a_5) then a_5 else ~-.(a_5);
|
||
|
a_4 = previousone.Mctypes.m_pos.Mctypes.y;
|
||
|
o_4 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
a_3 = previousone.Mctypes.m_pos.Mctypes.x;
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
a_2 =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.y, actualone.Mctypes.m_pos.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a =
|
||
|
(-.)
|
||
|
(previousone.Mctypes.m_pos.Mctypes.x, actualone.Mctypes.m_pos.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal =
|
||
|
(or)
|
||
|
((&)
|
||
|
(not((=)(0, previousone.Mctypes.m_id)),
|
||
|
(=)(previousone.Mctypes.m_id, actualone.Mctypes.m_id)),
|
||
|
(&)
|
||
|
((&)((<.)(o, 100.000000), (<.)(o_2, 100.000000)),
|
||
|
not
|
||
|
((&)
|
||
|
((&)
|
||
|
((&)((<.)(o_3, 0.100000), (<.)(o_4, 0.100000)),
|
||
|
(<.)(o_5, 0.100000)),
|
||
|
(<.)(o_6, 0.100000)))
|
||
|
)
|
||
|
)
|
||
|
;
|
||
|
tracknumbertoset =
|
||
|
if equal
|
||
|
then previousmissiontrack.Mctypes.m_tracknumber
|
||
|
else acc_tracknumber
|
||
|
tel
|
||
|
|
||
|
node calculatevrdivd(vr : float; d : float) returns (result : float)
|
||
|
var l13 : float; l11 : bool;
|
||
|
let
|
||
|
result = if l11 then l13 else 0.000000;
|
||
|
l13 = if l11 then (/.)(vr, d) else 0.000000 -> pre l13;
|
||
|
l11 = (>.)(d, 0.100000)
|
||
|
tel
|
||
|
|
||
|
node trackalowerprioritythanb(a : Mctypes.tmissiontrack;
|
||
|
b : Mctypes.tmissiontrack)
|
||
|
returns (prioritary : bool)
|
||
|
var vr_2 : float; d_2 : float; l13_2 : float; l11_2 : bool; result_2 : float;
|
||
|
vr : float; d : float; l13 : float; l11 : bool; result : float;
|
||
|
let
|
||
|
vr_2 = b.Mctypes.m_sr;
|
||
|
d_2 = b.Mctypes.m_d;
|
||
|
result_2 = if l11_2 then l13_2 else 0.000000;
|
||
|
l13_2 = if l11_2 then (/.)(vr_2, d_2) else 0.000000 -> pre l13_2;
|
||
|
l11_2 = (>.)(d_2, 0.100000);
|
||
|
vr = a.Mctypes.m_sr;
|
||
|
d = a.Mctypes.m_d;
|
||
|
result = if l11 then l13 else 0.000000;
|
||
|
l13 = if l11 then (/.)(vr, d) else 0.000000 -> pre l13;
|
||
|
l11 = (>.)(d, 0.100000);
|
||
|
prioritary =
|
||
|
(or)
|
||
|
((or)
|
||
|
((=)(a.Mctypes.m_targettype, Mctypes.Ttargettype_friend),
|
||
|
not(a.Mctypes.m_detectedbyradar)),
|
||
|
(&)
|
||
|
((&)(a.Mctypes.m_detectedbyradar, (<.)(result, result_2)),
|
||
|
b.Mctypes.m_detectedbyradar))
|
||
|
|
||
|
tel
|
||
|
|
||
|
node comparespeeds(speed1 : Mctypes.tspeed; speed2 : Mctypes.tspeed)
|
||
|
returns (equal : bool)
|
||
|
var a_2 : float; o_2 : float; a : float; o : float;
|
||
|
let
|
||
|
a_2 = (-.)(speed1.Mctypes.sy, speed2.Mctypes.sy);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = (-.)(speed1.Mctypes.sx, speed2.Mctypes.sx);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal = (&)((<.)(o, 1.000000), (<.)(o_2, 1.000000))
|
||
|
tel
|
||
|
|
||
|
node calculateprioritizedtracknb(missiontrack : Mctypes.tmissiontrack)
|
||
|
returns (prioritizedtracknb : int)
|
||
|
let
|
||
|
prioritizedtracknb =
|
||
|
if (&)
|
||
|
(not
|
||
|
((=)(missiontrack.Mctypes.m_targettype, Mctypes.Ttargettype_friend)),
|
||
|
not((=)(missiontrack.Mctypes.m_priority, 0)))
|
||
|
then missiontrack.Mctypes.m_tracknumber
|
||
|
else 0
|
||
|
tel
|
||
|
|
||
|
node sortreals(a : float; b : float) returns (newa : float; newb : float)
|
||
|
var l2 : bool;
|
||
|
let
|
||
|
l2 = (<.)(a, b);
|
||
|
newb = if l2 then a else b;
|
||
|
newa = if l2 then b else a
|
||
|
tel
|
||
|
|
||
|
node comparepositions(pos1 : Mctypes.tposition; pos2 : Mctypes.tposition)
|
||
|
returns (equal : bool)
|
||
|
var a_2 : float; o_2 : float; a : float; o : float;
|
||
|
let
|
||
|
a_2 = (-.)(pos1.Mctypes.y, pos2.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = (-.)(pos1.Mctypes.x, pos2.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal = (&)((<.)(o, 0.100000), (<.)(o_2, 0.100000))
|
||
|
tel
|
||
|
|
||
|
node comparetracks(pos1 : Mctypes.tposition; pos2 : Mctypes.tposition;
|
||
|
v1 : Mctypes.tspeed; v2 : Mctypes.tspeed)
|
||
|
returns (equal : bool)
|
||
|
var speed1 : Mctypes.tspeed; speed2 : Mctypes.tspeed; a_2_2 : float;
|
||
|
o_2_2 : float; a_3 : float; o_3 : float; equal_3 : bool;
|
||
|
pos1_2 : Mctypes.tposition; pos2_2 : Mctypes.tposition; a_2 : float;
|
||
|
o_2 : float; a : float; o : float; equal_2 : bool;
|
||
|
let
|
||
|
speed1 = v1;
|
||
|
speed2 = v2;
|
||
|
a_2_2 = (-.)(speed1.Mctypes.sy, speed2.Mctypes.sy);
|
||
|
o_2_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = (-.)(speed1.Mctypes.sx, speed2.Mctypes.sx);
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
equal_3 = (&)((<.)(o_3, 1.000000), (<.)(o_2_2, 1.000000));
|
||
|
pos1_2 = pos1;
|
||
|
pos2_2 = pos2;
|
||
|
a_2 = (-.)(pos1_2.Mctypes.y, pos2_2.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = (-.)(pos1_2.Mctypes.x, pos2_2.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal_2 = (&)((<.)(o, 0.100000), (<.)(o_2, 0.100000));
|
||
|
equal = (&)(equal_2, equal_3)
|
||
|
tel
|
||
|
|
||
|
node setmissiontracknumber(missiontrack : Mctypes.tmissiontrack at r;
|
||
|
number : int)
|
||
|
returns (newmissiontrack : Mctypes.tmissiontrack at r)
|
||
|
let
|
||
|
newmissiontrack = {missiontrack with .Mctypes.m_tracknumber = number}
|
||
|
tel
|
||
|
|
||
|
node missiontrackisnull(missiontrack : Mctypes.tmissiontrack)
|
||
|
returns (isnull : bool)
|
||
|
var pos1 : Mctypes.tposition; pos2 : Mctypes.tposition; v1 : Mctypes.tspeed;
|
||
|
v2 : Mctypes.tspeed; speed1 : Mctypes.tspeed; speed2 : Mctypes.tspeed;
|
||
|
a_2_2 : float; o_2_2 : float; a_3 : float; o_3 : float; equal_3 : bool;
|
||
|
pos1_2 : Mctypes.tposition; pos2_2 : Mctypes.tposition; a_2 : float;
|
||
|
o_2 : float; a : float; o : float; equal_2 : bool; equal : bool;
|
||
|
let
|
||
|
pos1 = missiontrack.Mctypes.m_pos;
|
||
|
pos2 = Mctypes.kInitPosition;
|
||
|
v1 = missiontrack.Mctypes.m_speed;
|
||
|
v2 = Mctypes.kInitSpeed;
|
||
|
speed1 = v1;
|
||
|
speed2 = v2;
|
||
|
a_2_2 = (-.)(speed1.Mctypes.sy, speed2.Mctypes.sy);
|
||
|
o_2_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = (-.)(speed1.Mctypes.sx, speed2.Mctypes.sx);
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
equal_3 = (&)((<.)(o_3, 1.000000), (<.)(o_2_2, 1.000000));
|
||
|
pos1_2 = pos1;
|
||
|
pos2_2 = pos2;
|
||
|
a_2 = (-.)(pos1_2.Mctypes.y, pos2_2.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = (-.)(pos1_2.Mctypes.x, pos2_2.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal_2 = (&)((<.)(o, 0.100000), (<.)(o_2, 0.100000));
|
||
|
equal = (&)(equal_2, equal_3);
|
||
|
isnull = equal
|
||
|
tel
|
||
|
|
||
|
node calculatemissiontracknumber(previousmissiontracks : Mctypes.tmissiontracksarray;
|
||
|
missiontrack : Mctypes.tmissiontrack at r;
|
||
|
currenttracknumber : int)
|
||
|
returns (newmissiontrack : Mctypes.tmissiontrack at r; newtracknumber : int)
|
||
|
var missiontrack_3 : Mctypes.tmissiontrack at r; number : int;
|
||
|
newmissiontrack_2 : Mctypes.tmissiontrack at r;
|
||
|
missiontrack_2 : Mctypes.tmissiontrack; pos1 : Mctypes.tposition;
|
||
|
pos2 : Mctypes.tposition; v1 : Mctypes.tspeed; v2 : Mctypes.tspeed;
|
||
|
speed1 : Mctypes.tspeed; speed2 : Mctypes.tspeed; a_2_2 : float;
|
||
|
o_2_2 : float; a_3 : float; o_3 : float; equal_3 : bool;
|
||
|
pos1_2 : Mctypes.tposition; pos2_2 : Mctypes.tposition; a_2 : float;
|
||
|
o_2 : float; a : float; o : float; equal_2 : bool; equal : bool;
|
||
|
isnull : bool; setnewtracknumber : bool; previoustracknumber : int;
|
||
|
let
|
||
|
missiontrack_3 = missiontrack;
|
||
|
number = if setnewtracknumber then newtracknumber else previoustracknumber;
|
||
|
newmissiontrack_2 = {missiontrack_3 with .Mctypes.m_tracknumber = number};
|
||
|
missiontrack_2 = missiontrack;
|
||
|
pos1 = missiontrack_2.Mctypes.m_pos;
|
||
|
pos2 = Mctypes.kInitPosition;
|
||
|
v1 = missiontrack_2.Mctypes.m_speed;
|
||
|
v2 = Mctypes.kInitSpeed;
|
||
|
speed1 = v1;
|
||
|
speed2 = v2;
|
||
|
a_2_2 = (-.)(speed1.Mctypes.sy, speed2.Mctypes.sy);
|
||
|
o_2_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = (-.)(speed1.Mctypes.sx, speed2.Mctypes.sx);
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
equal_3 = (&)((<.)(o_3, 1.000000), (<.)(o_2_2, 1.000000));
|
||
|
pos1_2 = pos1;
|
||
|
pos2_2 = pos2;
|
||
|
a_2 = (-.)(pos1_2.Mctypes.y, pos2_2.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = (-.)(pos1_2.Mctypes.x, pos2_2.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal_2 = (&)((<.)(o, 0.100000), (<.)(o_2, 0.100000));
|
||
|
equal = (&)(equal_2, equal_3);
|
||
|
isnull = equal;
|
||
|
setnewtracknumber = (&)((=)(previoustracknumber, 0), not(isnull));
|
||
|
newtracknumber =
|
||
|
if setnewtracknumber
|
||
|
then (+)(currenttracknumber, 1)
|
||
|
else currenttracknumber;
|
||
|
previoustracknumber =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> missiontrackexist
|
||
|
<(missiontrack)>(previousmissiontracks, 0);
|
||
|
newmissiontrack = newmissiontrack_2
|
||
|
tel
|
||
|
|
||
|
node calculatetracktargettypefromid(id : int)
|
||
|
returns (targettype : Mctypes.ttargettype)
|
||
|
let
|
||
|
targettype =
|
||
|
if (=)(0, id)
|
||
|
then Mctypes.Ttargettype_unknown
|
||
|
else if (<=)(id, 500)
|
||
|
then Mctypes.Ttargettype_friend
|
||
|
else Mctypes.Ttargettype_foe
|
||
|
|
||
|
tel
|
||
|
|
||
|
node myderivative(inv : float; period : float) returns (o : float)
|
||
|
var a_2 : float; o_3 : float; a : float; o_2 : float; l2 : float;
|
||
|
let
|
||
|
a_2 = inv;
|
||
|
o_3 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = l2;
|
||
|
o_2 = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
l2 = 0.000000 fby 0.000000 fby inv;
|
||
|
o =
|
||
|
if (or)((<.)(o_2, 0.100000), (<.)(o_3, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv, l2), 2.000000 *. period)
|
||
|
tel
|
||
|
|
||
|
node calculatetrackspeedfrompos(position : Mctypes.tposition)
|
||
|
returns (speed : Mctypes.tspeed)
|
||
|
var inv_2 : float; period_2 : float; a_2_2 : float; o_3_2 : float;
|
||
|
a_3 : float; o_2_2 : float; l2_2 : float; o_4 : float; inv : float;
|
||
|
period : float; a_2 : float; o_3 : float; a : float; o_2 : float;
|
||
|
l2 : float; o : float;
|
||
|
let
|
||
|
inv_2 = position.Mctypes.y;
|
||
|
period_2 = Mctypes.t;
|
||
|
a_2_2 = inv_2;
|
||
|
o_3_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = l2_2;
|
||
|
o_2_2 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
l2_2 = 0.000000 fby 0.000000 fby inv_2;
|
||
|
o_4 =
|
||
|
if (or)((<.)(o_2_2, 0.100000), (<.)(o_3_2, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv_2, l2_2), 2.000000 *. period_2);
|
||
|
inv = position.Mctypes.x;
|
||
|
period = Mctypes.t;
|
||
|
a_2 = inv;
|
||
|
o_3 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = l2;
|
||
|
o_2 = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
l2 = 0.000000 fby 0.000000 fby inv;
|
||
|
o =
|
||
|
if (or)((<.)(o_2, 0.100000), (<.)(o_3, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv, l2), 2.000000 *. period);
|
||
|
speed = { Mctypes.sx = o; Mctypes.sy = o_4 }
|
||
|
tel
|
||
|
|
||
|
node selectdetectedtrack(index : int; tracks : Mctypes.ttracksarray;
|
||
|
defaulttrack : Mctypes.ttrack)
|
||
|
returns (trackselected : Mctypes.ttrack)
|
||
|
let
|
||
|
trackselected = tracks.[index] default defaulttrack
|
||
|
tel
|
||
|
|
||
|
node setmissiontrackpriority(missiontrack : Mctypes.tmissiontrack at r;
|
||
|
priority : int)
|
||
|
returns (newmissiontrack : Mctypes.tmissiontrack at r)
|
||
|
let
|
||
|
newmissiontrack =
|
||
|
{missiontrack with .Mctypes.m_priority =
|
||
|
if missiontrack.Mctypes.m_detectedbyradar then priority else 0}
|
||
|
tel
|
||
|
|
||
|
node sortblockmissiontrack(a : Mctypes.tmissiontrack;
|
||
|
b : Mctypes.tmissiontrack)
|
||
|
returns (newa : Mctypes.tmissiontrack; newb : Mctypes.tmissiontrack)
|
||
|
var missiontrack : Mctypes.tmissiontrack; pos1 : Mctypes.tposition;
|
||
|
pos2 : Mctypes.tposition; v1 : Mctypes.tspeed; v2 : Mctypes.tspeed;
|
||
|
speed1 : Mctypes.tspeed; speed2 : Mctypes.tspeed; a_2_2 : float;
|
||
|
o_2_2 : float; a_3 : float; o_3 : float; equal_3 : bool;
|
||
|
pos1_2 : Mctypes.tposition; pos2_2 : Mctypes.tposition; a_2 : float;
|
||
|
o_2 : float; a_4 : float; o : float; equal_2 : bool; equal : bool;
|
||
|
isnull : bool; l7 : bool;
|
||
|
let
|
||
|
missiontrack = a;
|
||
|
pos1 = missiontrack.Mctypes.m_pos;
|
||
|
pos2 = Mctypes.kInitPosition;
|
||
|
v1 = missiontrack.Mctypes.m_speed;
|
||
|
v2 = Mctypes.kInitSpeed;
|
||
|
speed1 = v1;
|
||
|
speed2 = v2;
|
||
|
a_2_2 = (-.)(speed1.Mctypes.sy, speed2.Mctypes.sy);
|
||
|
o_2_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = (-.)(speed1.Mctypes.sx, speed2.Mctypes.sx);
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
equal_3 = (&)((<.)(o_3, 1.000000), (<.)(o_2_2, 1.000000));
|
||
|
pos1_2 = pos1;
|
||
|
pos2_2 = pos2;
|
||
|
a_2 = (-.)(pos1_2.Mctypes.y, pos2_2.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a_4 = (-.)(pos1_2.Mctypes.x, pos2_2.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
equal_2 = (&)((<.)(o, 0.100000), (<.)(o_2, 0.100000));
|
||
|
equal = (&)(equal_2, equal_3);
|
||
|
isnull = equal;
|
||
|
l7 = isnull;
|
||
|
newb = if l7 then a else b;
|
||
|
newa = if l7 then b else a
|
||
|
tel
|
||
|
|
||
|
node sortblockpriorities(a : Mctypes.tmissiontrack;
|
||
|
b : Mctypes.tmissiontrack)
|
||
|
returns (newa : Mctypes.tmissiontrack; newb : Mctypes.tmissiontrack)
|
||
|
var a_2 : Mctypes.tmissiontrack; b_2 : Mctypes.tmissiontrack; vr_2 : float;
|
||
|
d_2 : float; l13_2 : float; l11_2 : bool; result_2 : float; vr : float;
|
||
|
d : float; l13 : float; l11 : bool; result : float; prioritary : bool;
|
||
|
l25 : bool;
|
||
|
let
|
||
|
a_2 = a;
|
||
|
b_2 = b;
|
||
|
vr_2 = b_2.Mctypes.m_sr;
|
||
|
d_2 = b_2.Mctypes.m_d;
|
||
|
result_2 = if l11_2 then l13_2 else 0.000000;
|
||
|
l13_2 = if l11_2 then (/.)(vr_2, d_2) else 0.000000 -> pre l13_2;
|
||
|
l11_2 = (>.)(d_2, 0.100000);
|
||
|
vr = a_2.Mctypes.m_sr;
|
||
|
d = a_2.Mctypes.m_d;
|
||
|
result = if l11 then l13 else 0.000000;
|
||
|
l13 = if l11 then (/.)(vr, d) else 0.000000 -> pre l13;
|
||
|
l11 = (>.)(d, 0.100000);
|
||
|
prioritary =
|
||
|
(or)
|
||
|
((or)
|
||
|
((=)(a_2.Mctypes.m_targettype, Mctypes.Ttargettype_friend),
|
||
|
not(a_2.Mctypes.m_detectedbyradar)),
|
||
|
(&)
|
||
|
((&)(a_2.Mctypes.m_detectedbyradar, (<.)(result, result_2)),
|
||
|
b_2.Mctypes.m_detectedbyradar))
|
||
|
;
|
||
|
l25 = prioritary;
|
||
|
newb = if l25 then a else b;
|
||
|
newa = if l25 then b else a
|
||
|
tel
|
||
|
|
||
|
node position_equal(p1 : Mctypes.tposition; p2 : Mctypes.tposition)
|
||
|
returns (res : bool)
|
||
|
let
|
||
|
res = (&)((=)(p1.Mctypes.x, p2.Mctypes.x), (=)(p1.Mctypes.y, p2.Mctypes.y))
|
||
|
tel
|
||
|
|
||
|
node speed_equal(s1 : Mctypes.tspeed; s2 : Mctypes.tspeed)
|
||
|
returns (res : bool)
|
||
|
let
|
||
|
res =
|
||
|
(&)((=)(s1.Mctypes.sx, s2.Mctypes.sx), (=)(s1.Mctypes.sy, s2.Mctypes.sy))
|
||
|
tel
|
||
|
|
||
|
node convertifftracktomissiontrack(ifftrack : Mctypes.tifftrack)
|
||
|
returns (missiontrack : Mctypes.tmissiontrack)
|
||
|
var position_2 : Mctypes.tposition; a_2_3 : float; o_2_3 : float;
|
||
|
a_4 : float; o_5 : float; trackvisible : bool; id : int;
|
||
|
targettype : Mctypes.ttargettype; p1_2 : Mctypes.tposition;
|
||
|
p2_2 : Mctypes.tposition; res_2 : bool; position : Mctypes.tposition;
|
||
|
inv_2 : float; period_2 : float; a_2_2 : float; o_3_2 : float;
|
||
|
a_3 : float; o_2_2 : float; l2_2 : float; o_4 : float; inv : float;
|
||
|
period : float; a_2 : float; o_3 : float; a : float; o_2 : float;
|
||
|
l2 : float; o : float; speed : Mctypes.tspeed; p1 : Mctypes.tposition;
|
||
|
p2 : Mctypes.tposition; res : bool;
|
||
|
let
|
||
|
position_2 = ifftrack.Mctypes.i_pos;
|
||
|
a_2_3 = position_2.Mctypes.y;
|
||
|
o_2_3 = if (<=.)(0.000000, a_2_3) then a_2_3 else ~-.(a_2_3);
|
||
|
a_4 = position_2.Mctypes.x;
|
||
|
o_5 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
trackvisible = not((&)((<.)(o_5, 0.001000), (<.)(o_2_3, 0.001000)));
|
||
|
id = ifftrack.Mctypes.i_id;
|
||
|
targettype =
|
||
|
if (=)(0, id)
|
||
|
then Mctypes.Ttargettype_unknown
|
||
|
else if (<=)(id, 500)
|
||
|
then Mctypes.Ttargettype_friend
|
||
|
else Mctypes.Ttargettype_foe
|
||
|
;
|
||
|
p1_2 = ifftrack.Mctypes.i_pos;
|
||
|
p2_2 = Mctypes.kInitPosition;
|
||
|
res_2 =
|
||
|
(&)
|
||
|
((=)(p1_2.Mctypes.x, p2_2.Mctypes.x),
|
||
|
(=)(p1_2.Mctypes.y, p2_2.Mctypes.y));
|
||
|
position = ifftrack.Mctypes.i_pos;
|
||
|
inv_2 = position.Mctypes.y;
|
||
|
period_2 = Mctypes.t;
|
||
|
a_2_2 = inv_2;
|
||
|
o_3_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = l2_2;
|
||
|
o_2_2 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
l2_2 = 0.000000 fby 0.000000 fby inv_2;
|
||
|
o_4 =
|
||
|
if (or)((<.)(o_2_2, 0.100000), (<.)(o_3_2, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv_2, l2_2), 2.000000 *. period_2);
|
||
|
inv = position.Mctypes.x;
|
||
|
period = Mctypes.t;
|
||
|
a_2 = inv;
|
||
|
o_3 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = l2;
|
||
|
o_2 = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
l2 = 0.000000 fby 0.000000 fby inv;
|
||
|
o =
|
||
|
if (or)((<.)(o_2, 0.100000), (<.)(o_3, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv, l2), 2.000000 *. period);
|
||
|
speed = { Mctypes.sx = o; Mctypes.sy = o_4 };
|
||
|
p1 = Mctypes.kInitPosition;
|
||
|
p2 = ifftrack.Mctypes.i_pos;
|
||
|
res = (&)((=)(p1.Mctypes.x, p2.Mctypes.x), (=)(p1.Mctypes.y, p2.Mctypes.y));
|
||
|
missiontrack =
|
||
|
{ Mctypes.m_pos =
|
||
|
ifftrack.Mctypes.i_pos;
|
||
|
Mctypes.m_speed =
|
||
|
if res then Mctypes.kInitSpeed else speed;
|
||
|
Mctypes.m_id =
|
||
|
ifftrack.Mctypes.i_id;
|
||
|
Mctypes.m_priority =
|
||
|
0;
|
||
|
Mctypes.m_d =
|
||
|
0.000000;
|
||
|
Mctypes.m_sabs =
|
||
|
0.000000;
|
||
|
Mctypes.m_sr =
|
||
|
0.000000;
|
||
|
Mctypes.m_detectedbyradar =
|
||
|
false;
|
||
|
Mctypes.m_detectedbyiff =
|
||
|
not((&)(res_2, (=)(ifftrack.Mctypes.i_id, 0)));
|
||
|
Mctypes.m_tracknumber =
|
||
|
0;
|
||
|
Mctypes.m_targettype =
|
||
|
targettype;
|
||
|
Mctypes.m_isvisible =
|
||
|
trackvisible;
|
||
|
Mctypes.m_angle =
|
||
|
0.000000 }
|
||
|
tel
|
||
|
|
||
|
node convertrdrtracktomissiontrack(rdrtrack : Mctypes.trdrtrack)
|
||
|
returns (missiontrack : Mctypes.tmissiontrack)
|
||
|
var speed : Mctypes.tspeed; speedabs : Mctypes.tmetresseconde; a_2_2 : float;
|
||
|
o_2_2 : float; a_3 : float; o_3 : float; input1 : float; output1 : float;
|
||
|
l51 : bool; l48 : float; l47 : float; trackangle : float;
|
||
|
position : Mctypes.tposition; a_2 : float; o_2 : float; a : float;
|
||
|
o : float; trackvisible : bool; s1 : Mctypes.tspeed; s2 : Mctypes.tspeed;
|
||
|
res_2 : bool; p1 : Mctypes.tposition; p2 : Mctypes.tposition; res : bool;
|
||
|
let
|
||
|
speed = rdrtrack.Mctypes.r_s;
|
||
|
speedabs = rdrtrack.Mctypes.r_sabs;
|
||
|
a_2_2 = l47;
|
||
|
o_2_2 =
|
||
|
if (>.)(a_2_2, 0.000000)
|
||
|
then 1.000000
|
||
|
else if (=)(0.000000, a_2_2) then 0.000000 else ~-.(1.000000);
|
||
|
a_3 =
|
||
|
Mathext.asinr((/.)(speed.Mctypes.sy, if l51 then 1.000000 else speedabs));
|
||
|
o_3 =
|
||
|
if (>.)(a_3, 0.000000)
|
||
|
then 1.000000
|
||
|
else if (=)(0.000000, a_3) then 0.000000 else ~-.(1.000000);
|
||
|
input1 = if l51 then 0.000000 else Mathext.acosr(l47) *. l48;
|
||
|
output1 = (/.)(input1, (2.000000 *. Mctypes.pi)) *. 360.000000;
|
||
|
trackangle = output1 *. l48 *. o_3;
|
||
|
l51 = (<.)(speedabs, 0.010000);
|
||
|
l48 = o_2_2;
|
||
|
l47 = (/.)(speed.Mctypes.sx, if l51 then 1.000000 else speedabs);
|
||
|
position = rdrtrack.Mctypes.r_pos;
|
||
|
a_2 = position.Mctypes.y;
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = position.Mctypes.x;
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
trackvisible = not((&)((<.)(o, 0.001000), (<.)(o_2, 0.001000)));
|
||
|
s1 = rdrtrack.Mctypes.r_s;
|
||
|
s2 = Mctypes.kInitSpeed;
|
||
|
res_2 =
|
||
|
(&)((=)(s1.Mctypes.sx, s2.Mctypes.sx), (=)(s1.Mctypes.sy, s2.Mctypes.sy));
|
||
|
p1 = rdrtrack.Mctypes.r_pos;
|
||
|
p2 = Mctypes.kInitPosition;
|
||
|
res = (&)((=)(p1.Mctypes.x, p2.Mctypes.x), (=)(p1.Mctypes.y, p2.Mctypes.y));
|
||
|
missiontrack =
|
||
|
{ Mctypes.m_pos =
|
||
|
rdrtrack.Mctypes.r_pos;
|
||
|
Mctypes.m_speed =
|
||
|
rdrtrack.Mctypes.r_s;
|
||
|
Mctypes.m_id =
|
||
|
0;
|
||
|
Mctypes.m_priority =
|
||
|
0;
|
||
|
Mctypes.m_d =
|
||
|
rdrtrack.Mctypes.r_d;
|
||
|
Mctypes.m_sabs =
|
||
|
rdrtrack.Mctypes.r_sabs;
|
||
|
Mctypes.m_sr =
|
||
|
rdrtrack.Mctypes.r_sr;
|
||
|
Mctypes.m_detectedbyradar =
|
||
|
not
|
||
|
((&)
|
||
|
((&)
|
||
|
((&)((&)(res, res_2), (=)(rdrtrack.Mctypes.r_d, 0.000000)),
|
||
|
(=)(rdrtrack.Mctypes.r_sabs, 0.000000)),
|
||
|
(=)(rdrtrack.Mctypes.r_sr, 0.000000)))
|
||
|
;
|
||
|
Mctypes.m_detectedbyiff =
|
||
|
false;
|
||
|
Mctypes.m_tracknumber =
|
||
|
0;
|
||
|
Mctypes.m_targettype =
|
||
|
Mctypes.Ttargettype_unknown;
|
||
|
Mctypes.m_isvisible =
|
||
|
trackvisible;
|
||
|
Mctypes.m_angle =
|
||
|
trackangle }
|
||
|
tel
|
||
|
|
||
|
node vectnorme(a : float; b : float) returns (c : float)
|
||
|
let
|
||
|
c = Mathext.sqrtr((+.)(a *. a, b *. b))
|
||
|
tel
|
||
|
|
||
|
node extracttrackposxy(track : Mctypes.ttrack)
|
||
|
returns (x : Mctypes.tmetres; y : Mctypes.tmetres)
|
||
|
let
|
||
|
y = track.Mctypes.t_pos.Mctypes.y;
|
||
|
x = track.Mctypes.t_pos.Mctypes.x
|
||
|
tel
|
||
|
|
||
|
node elaboraterdrtrack(track : Mctypes.ttrack)
|
||
|
returns (rdrtrack : Mctypes.trdrtrack)
|
||
|
var position : Mctypes.tposition; inv_2 : float; period_2 : float;
|
||
|
a_2_2 : float; o_3_2 : float; a_3 : float; o_2_2 : float; l2_2 : float;
|
||
|
o_4 : float; inv : float; period : float; a_2_3 : float; o_3 : float;
|
||
|
a_4 : float; o_2 : float; l2 : float; o : float; speed : Mctypes.tspeed;
|
||
|
a_2 : float; b_2 : float; c_2 : float; a : float; b : float; c : float;
|
||
|
track_2 : Mctypes.ttrack; x_2 : Mctypes.tmetres; y_2 : Mctypes.tmetres;
|
||
|
d : float; v : float; vr : float; vx : float; vy : float; x : float;
|
||
|
y : float; l142 : Mctypes.tspeed;
|
||
|
let
|
||
|
position = { Mctypes.x = x; Mctypes.y = y };
|
||
|
inv_2 = position.Mctypes.y;
|
||
|
period_2 = Mctypes.t;
|
||
|
a_2_2 = inv_2;
|
||
|
o_3_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = l2_2;
|
||
|
o_2_2 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
l2_2 = 0.000000 fby 0.000000 fby inv_2;
|
||
|
o_4 =
|
||
|
if (or)((<.)(o_2_2, 0.100000), (<.)(o_3_2, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv_2, l2_2), 2.000000 *. period_2);
|
||
|
inv = position.Mctypes.x;
|
||
|
period = Mctypes.t;
|
||
|
a_2_3 = inv;
|
||
|
o_3 = if (<=.)(0.000000, a_2_3) then a_2_3 else ~-.(a_2_3);
|
||
|
a_4 = l2;
|
||
|
o_2 = if (<=.)(0.000000, a_4) then a_4 else ~-.(a_4);
|
||
|
l2 = 0.000000 fby 0.000000 fby inv;
|
||
|
o =
|
||
|
if (or)((<.)(o_2, 0.100000), (<.)(o_3, 0.100000))
|
||
|
then 0.000000
|
||
|
else 0.000000 -> (/.)((-.)(inv, l2), 2.000000 *. period);
|
||
|
speed = { Mctypes.sx = o; Mctypes.sy = o_4 };
|
||
|
a_2 = x;
|
||
|
b_2 = y;
|
||
|
c_2 = Mathext.sqrtr((+.)(a_2 *. a_2, b_2 *. b_2));
|
||
|
a = vx;
|
||
|
b = vy;
|
||
|
c = Mathext.sqrtr((+.)(a *. a, b *. b));
|
||
|
track_2 = track;
|
||
|
y_2 = track_2.Mctypes.t_pos.Mctypes.y;
|
||
|
x_2 = track_2.Mctypes.t_pos.Mctypes.x;
|
||
|
switch ((=)(d, 0.000000))
|
||
|
| true
|
||
|
do
|
||
|
vr = 0.000000
|
||
|
| false
|
||
|
var xnorm : float; ynorm : float; do
|
||
|
|
||
|
ynorm = (/.)(y, d);
|
||
|
xnorm = (/.)(x, d);
|
||
|
vr = ~-.((+.)(vx *. xnorm, vy *. ynorm))
|
||
|
end;
|
||
|
(x, y) = (x_2, y_2);
|
||
|
rdrtrack =
|
||
|
{ Mctypes.r_pos =
|
||
|
{ Mctypes.x = x; Mctypes.y = y };
|
||
|
Mctypes.r_s =
|
||
|
{ Mctypes.sx = vx; Mctypes.sy = vy };
|
||
|
Mctypes.r_d =
|
||
|
d;
|
||
|
Mctypes.r_sabs =
|
||
|
v;
|
||
|
Mctypes.r_sr =
|
||
|
vr };
|
||
|
v = c;
|
||
|
d = c_2;
|
||
|
vy = l142.Mctypes.sy;
|
||
|
vx = l142.Mctypes.sx;
|
||
|
l142 = speed
|
||
|
tel
|
||
|
|
||
|
node risingEdge(re_Input : bool) returns (re_Output : bool)
|
||
|
let
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input)
|
||
|
tel
|
||
|
|
||
|
node statecmd(onoffbuttonpressed : bool; currentstate : Mctypes.tsensorstate)
|
||
|
returns (onoffcmd : bool)
|
||
|
let
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end
|
||
|
tel
|
||
|
|
||
|
node mc_rdrstatecmd(rdronoffbutton : bool;
|
||
|
currentrdrstate : Mctypes.tsensorstate)
|
||
|
returns (rdronoffcmd : bool)
|
||
|
var onoffbuttonpressed : bool; currentstate : Mctypes.tsensorstate;
|
||
|
onoffcmd : bool; re_Input : bool; re_Output : bool;
|
||
|
let
|
||
|
onoffbuttonpressed = re_Output;
|
||
|
currentstate = currentrdrstate;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input = rdronoffbutton;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
rdronoffcmd = onoffcmd
|
||
|
tel
|
||
|
|
||
|
node mc_iffstatecmd(iffonoffbutton : bool;
|
||
|
currentiffstate : Mctypes.tsensorstate)
|
||
|
returns (iffonoffcmd : bool)
|
||
|
var onoffbuttonpressed : bool; currentstate : Mctypes.tsensorstate;
|
||
|
onoffcmd : bool; re_Input : bool; re_Output : bool;
|
||
|
let
|
||
|
onoffbuttonpressed = re_Output;
|
||
|
currentstate = currentiffstate;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input = iffonoffbutton;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
iffonoffcmd = onoffcmd
|
||
|
tel
|
||
|
|
||
|
node rdrmodecmd(currentstate : Mctypes.tsensorstate;
|
||
|
modebuttonpressed : bool; currentmode : Mctypes.trdrmode)
|
||
|
returns (modecmd : bool)
|
||
|
let
|
||
|
automaton
|
||
|
state Wide
|
||
|
do
|
||
|
modecmd = false
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_WIDE)))
|
||
|
then Narrow
|
||
|
state Narrow
|
||
|
do
|
||
|
modecmd = true
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_NARROW)))
|
||
|
then Wide
|
||
|
end
|
||
|
tel
|
||
|
|
||
|
node mc_rdrmodecmd(currentrdrstate : Mctypes.tsensorstate;
|
||
|
rdrmodebutton : bool; currentrdrmode : Mctypes.trdrmode)
|
||
|
returns (rdrmodecmd : bool)
|
||
|
var currentstate : Mctypes.tsensorstate; modebuttonpressed : bool;
|
||
|
currentmode : Mctypes.trdrmode; modecmd : bool; re_Input : bool;
|
||
|
re_Output : bool;
|
||
|
let
|
||
|
currentstate = currentrdrstate;
|
||
|
modebuttonpressed = re_Output;
|
||
|
currentmode = currentrdrmode;
|
||
|
automaton
|
||
|
state Wide
|
||
|
do
|
||
|
modecmd = false
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_WIDE)))
|
||
|
then Narrow
|
||
|
state Narrow
|
||
|
do
|
||
|
modecmd = true
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_NARROW)))
|
||
|
then Wide
|
||
|
end;
|
||
|
re_Input = rdrmodebutton;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
rdrmodecmd = modecmd
|
||
|
tel
|
||
|
|
||
|
node radar_mode(modecmd : bool) returns (mode : Mctypes.trdrmode)
|
||
|
let
|
||
|
mode = if modecmd then Mctypes.TRdrMode_NARROW else Mctypes.TRdrMode_WIDE
|
||
|
tel
|
||
|
|
||
|
node radar_state(onoffcmd : bool; failure : bool)
|
||
|
returns (initializing : bool; st : Mctypes.tsensorstate)
|
||
|
var x : bool;
|
||
|
let
|
||
|
initializing = (&)((=)(st, Mctypes.TState_OFF), onoffcmd);
|
||
|
x = false fby false fby false fby false fby false fby onoffcmd;
|
||
|
st =
|
||
|
if failure
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd then x else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
|
||
|
tel
|
||
|
|
||
|
node radar_tracks(st : Mctypes.tsensorstate; tracks : Mctypes.ttracksarray;
|
||
|
rdrdetectedtracks : Mctypes.tdetectedrdrtracksarray)
|
||
|
returns (rdrtracks : Mctypes.trdrtracksarray)
|
||
|
var l22 : Mctypes.ttrack^Mctypes.ksizerdrtracksarray;
|
||
|
l30 : Mctypes.trdrtrack^Mctypes.ksizerdrtracksarray;
|
||
|
let
|
||
|
rdrtracks =
|
||
|
if (=)(st, Mctypes.TState_ON) then l30 else Mctypes.kinitrdrtrackarray;
|
||
|
l30 = map<<Mctypes.ksizerdrtracksarray>> elaboraterdrtrack<()>(l22);
|
||
|
l22 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> selectdetectedtrack
|
||
|
<()>(rdrdetectedtracks, tracks^Mctypes.ksizerdrtracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizerdrtracksarray)
|
||
|
tel
|
||
|
|
||
|
node radar(onoffcmd : bool; modecmd : bool; failure : bool;
|
||
|
rdrdetectedtracks : Mctypes.tdetectedrdrtracksarray;
|
||
|
tracks : Mctypes.ttracksarray)
|
||
|
returns (initializing : bool; st : Mctypes.tsensorstate;
|
||
|
mode : Mctypes.trdrmode; rdrtracks : Mctypes.trdrtracksarray)
|
||
|
var onoffcmd_2 : bool; failure_2 : bool; x : bool; initializing_2 : bool;
|
||
|
st_3 : Mctypes.tsensorstate; modecmd_2 : bool; mode_2 : Mctypes.trdrmode;
|
||
|
st_2 : Mctypes.tsensorstate; tracks_2 : Mctypes.ttracksarray;
|
||
|
rdrdetectedtracks_2 : Mctypes.tdetectedrdrtracksarray;
|
||
|
l22 : Mctypes.ttrack^Mctypes.ksizerdrtracksarray;
|
||
|
l30 : Mctypes.trdrtrack^Mctypes.ksizerdrtracksarray;
|
||
|
rdrtracks_2 : Mctypes.trdrtracksarray;
|
||
|
let
|
||
|
onoffcmd_2 = onoffcmd;
|
||
|
failure_2 = failure;
|
||
|
initializing_2 = (&)((=)(st_3, Mctypes.TState_OFF), onoffcmd_2);
|
||
|
x = false fby false fby false fby false fby false fby onoffcmd_2;
|
||
|
st_3 =
|
||
|
if failure_2
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd_2 then x else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
;
|
||
|
modecmd_2 = modecmd;
|
||
|
mode_2 =
|
||
|
if modecmd_2 then Mctypes.TRdrMode_NARROW else Mctypes.TRdrMode_WIDE;
|
||
|
st_2 = st;
|
||
|
tracks_2 = tracks;
|
||
|
rdrdetectedtracks_2 = rdrdetectedtracks;
|
||
|
rdrtracks_2 =
|
||
|
if (=)(st_2, Mctypes.TState_ON) then l30 else Mctypes.kinitrdrtrackarray;
|
||
|
l30 = map<<Mctypes.ksizerdrtracksarray>> elaboraterdrtrack<()>(l22);
|
||
|
l22 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> selectdetectedtrack
|
||
|
<()>(rdrdetectedtracks_2, tracks_2^Mctypes.ksizerdrtracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizerdrtracksarray);
|
||
|
rdrtracks = rdrtracks_2;
|
||
|
mode = mode_2;
|
||
|
(initializing, st) = (initializing_2, st_3)
|
||
|
tel
|
||
|
|
||
|
node iff_state(onoffcmd : bool; failure : bool)
|
||
|
returns (initializing : bool; st : Mctypes.tsensorstate)
|
||
|
var x : bool;
|
||
|
let
|
||
|
initializing = (&)((=)(st, Mctypes.TState_OFF), onoffcmd);
|
||
|
x = false fby false fby false fby false fby false fby onoffcmd;
|
||
|
st =
|
||
|
if failure
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd then x else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
|
||
|
tel
|
||
|
|
||
|
node ifftrack_of_track(track : Mctypes.ttrack)
|
||
|
returns (ifftrack : Mctypes.tifftrack)
|
||
|
let
|
||
|
ifftrack =
|
||
|
{ Mctypes.i_pos =
|
||
|
track.Mctypes.t_pos;
|
||
|
Mctypes.i_id =
|
||
|
track.Mctypes.t_id }
|
||
|
tel
|
||
|
|
||
|
node iff_tracks(st : Mctypes.tsensorstate; tracks : Mctypes.ttracksarray;
|
||
|
iffdetectedtracks : Mctypes.tdetectedifftracksarray)
|
||
|
returns (ifftracks : Mctypes.tifftracksarray)
|
||
|
var l34 : Mctypes.ttrack^Mctypes.ksizeifftracksarray;
|
||
|
l40 : Mctypes.tifftracksarray;
|
||
|
let
|
||
|
l34 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> selectdetectedtrack
|
||
|
<()>(iffdetectedtracks, tracks^Mctypes.ksizeifftracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizeifftracksarray);
|
||
|
l40 = map<<Mctypes.ksizeifftracksarray>> ifftrack_of_track<()>(l34);
|
||
|
ifftracks =
|
||
|
if (=)(st, Mctypes.TState_ON) then l40 else Mctypes.kinitifftrackarray
|
||
|
tel
|
||
|
|
||
|
node iff(tracks : Mctypes.ttracksarray; failure : bool;
|
||
|
iffdetectedtracks : Mctypes.tdetectedifftracksarray;
|
||
|
onoffcmd : bool)
|
||
|
returns (st : Mctypes.tsensorstate; ifftracks : Mctypes.tifftracksarray;
|
||
|
initializing : bool)
|
||
|
var onoffcmd_2 : bool; failure_2 : bool; x : bool; initializing_2 : bool;
|
||
|
st_3 : Mctypes.tsensorstate; st_2 : Mctypes.tsensorstate;
|
||
|
tracks_2 : Mctypes.ttracksarray;
|
||
|
iffdetectedtracks_2 : Mctypes.tdetectedifftracksarray;
|
||
|
l34 : Mctypes.ttrack^Mctypes.ksizeifftracksarray;
|
||
|
l40 : Mctypes.tifftracksarray; ifftracks_2 : Mctypes.tifftracksarray;
|
||
|
let
|
||
|
onoffcmd_2 = onoffcmd;
|
||
|
failure_2 = failure;
|
||
|
initializing_2 = (&)((=)(st_3, Mctypes.TState_OFF), onoffcmd_2);
|
||
|
x = false fby false fby false fby false fby false fby onoffcmd_2;
|
||
|
st_3 =
|
||
|
if failure_2
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd_2 then x else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
;
|
||
|
st_2 = st;
|
||
|
tracks_2 = tracks;
|
||
|
iffdetectedtracks_2 = iffdetectedtracks;
|
||
|
l34 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> selectdetectedtrack
|
||
|
<()>(iffdetectedtracks_2, tracks_2^Mctypes.ksizeifftracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizeifftracksarray);
|
||
|
l40 = map<<Mctypes.ksizeifftracksarray>> ifftrack_of_track<()>(l34);
|
||
|
ifftracks_2 =
|
||
|
if (=)(st_2, Mctypes.TState_ON) then l40 else Mctypes.kinitifftrackarray;
|
||
|
ifftracks = ifftracks_2;
|
||
|
(initializing, st) = (initializing_2, st_3)
|
||
|
tel
|
||
|
|
||
|
node advrandr(min : float; max : float) returns (output1 : float)
|
||
|
let
|
||
|
output1 = (+.)((-.)(max, min) *. Mc_ext.rand(), min)
|
||
|
tel
|
||
|
|
||
|
node advrandi(min : int; max : int; step : int) returns (output1 : int)
|
||
|
var l8 : int;
|
||
|
let
|
||
|
l8 = if not((=)(0, step)) then step else 1;
|
||
|
output1 =
|
||
|
(/)
|
||
|
((+)
|
||
|
(Mc_ext.int_of_float
|
||
|
(Mc_ext.float_of_int((-)(max, min)) *. Mc_ext.rand()), min), l8 * l8)
|
||
|
tel
|
||
|
|
||
|
node createtracks_createonetrack_init_rand()
|
||
|
returns (sloperadinit : float; speedinit : float; xmeterinit : float;
|
||
|
ymeterinit : float; idinit : int)
|
||
|
var min_5 : int; max_5 : int; step : int; l8 : int; output1_5 : int;
|
||
|
min_4 : float; max_4 : float; output1_4 : float; min_3 : float;
|
||
|
max_3 : float; output1_3 : float; min_2 : float; max_2 : float;
|
||
|
output1_2 : float; min : float; max : float; output1 : float;
|
||
|
let
|
||
|
min_5 = 0;
|
||
|
max_5 = 1000;
|
||
|
step = 10;
|
||
|
l8 = if not((=)(0, step)) then step else 1;
|
||
|
output1_5 =
|
||
|
(/)
|
||
|
((+)
|
||
|
(Mc_ext.int_of_float
|
||
|
(Mc_ext.float_of_int((-)(max_5, min_5)) *. Mc_ext.rand()), min_5),
|
||
|
l8 * l8);
|
||
|
min_4 = 0.000000;
|
||
|
max_4 = 360.000000;
|
||
|
output1_4 = (+.)((-.)(max_4, min_4) *. Mc_ext.rand(), min_4);
|
||
|
min_3 = ~-.(10.000000);
|
||
|
max_3 = 10.000000;
|
||
|
output1_3 = (+.)((-.)(max_3, min_3) *. Mc_ext.rand(), min_3);
|
||
|
min_2 = ~-.(10.000000);
|
||
|
max_2 = 10.000000;
|
||
|
output1_2 = (+.)((-.)(max_2, min_2) *. Mc_ext.rand(), min_2);
|
||
|
min = 250.000000;
|
||
|
max = 1000.000000;
|
||
|
output1 = (+.)((-.)(max, min) *. Mc_ext.rand(), min);
|
||
|
speedinit = output1 *. Mctypes.t;
|
||
|
ymeterinit = Mctypes.nm *. output1_2;
|
||
|
xmeterinit = output1_3 *. Mctypes.nm;
|
||
|
sloperadinit = (/.)((2.000000 *. Mctypes.pi) *. output1_4, 360.000000);
|
||
|
idinit = output1_5
|
||
|
tel
|
||
|
|
||
|
node createtracks_createonetrack_rand(res : bool)
|
||
|
returns (track : Mctypes.ttrack)
|
||
|
var min_5 : int; max_5 : int; step : int; l8 : int; output1_5 : int;
|
||
|
min_4 : float; max_4 : float; output1_4 : float; min_3 : float;
|
||
|
max_3 : float; output1_3 : float; min_2 : float; max_2 : float;
|
||
|
output1_2 : float; min : float; max : float; output1 : float;
|
||
|
sloperadinit : float; speedinit : float; xmeterinit : float;
|
||
|
ymeterinit : float; idinit : int; id : int; sloperad : float;
|
||
|
speedt : float; x0 : float; y0 : float; l9 : float; l18 : float;
|
||
|
let
|
||
|
min_5 = 0;
|
||
|
max_5 = 1000;
|
||
|
step = 10;
|
||
|
l8 = if not((=)(0, step)) then step else 1;
|
||
|
output1_5 =
|
||
|
(/)
|
||
|
((+)
|
||
|
(Mc_ext.int_of_float
|
||
|
(Mc_ext.float_of_int((-)(max_5, min_5)) *. Mc_ext.rand()), min_5),
|
||
|
l8 * l8);
|
||
|
min_4 = 0.000000;
|
||
|
max_4 = 360.000000;
|
||
|
output1_4 = (+.)((-.)(max_4, min_4) *. Mc_ext.rand(), min_4);
|
||
|
min_3 = ~-.(10.000000);
|
||
|
max_3 = 10.000000;
|
||
|
output1_3 = (+.)((-.)(max_3, min_3) *. Mc_ext.rand(), min_3);
|
||
|
min_2 = ~-.(10.000000);
|
||
|
max_2 = 10.000000;
|
||
|
output1_2 = (+.)((-.)(max_2, min_2) *. Mc_ext.rand(), min_2);
|
||
|
min = 250.000000;
|
||
|
max = 1000.000000;
|
||
|
output1 = (+.)((-.)(max, min) *. Mc_ext.rand(), min);
|
||
|
speedinit = output1 *. Mctypes.t;
|
||
|
ymeterinit = Mctypes.nm *. output1_2;
|
||
|
xmeterinit = output1_3 *. Mctypes.nm;
|
||
|
sloperadinit = (/.)((2.000000 *. Mctypes.pi) *. output1_4, 360.000000);
|
||
|
idinit = output1_5;
|
||
|
(sloperad, speedt, x0, y0, id) =
|
||
|
if res
|
||
|
then (sloperadinit, speedinit, xmeterinit, ymeterinit, idinit)
|
||
|
else (0.000000, 0.000000, 0.000000, 0.000000, 0) fby
|
||
|
(sloperad, speedt, x0, y0, id)
|
||
|
;
|
||
|
l18 = y0 -> (+.)(Mathext.sinr(sloperad) *. speedt, y0 -> pre l18);
|
||
|
l9 = x0 -> (+.)(x0 -> pre l9, speedt *. Mathext.cosr(sloperad));
|
||
|
track =
|
||
|
{ Mctypes.t_pos =
|
||
|
{ Mctypes.x = l9; Mctypes.y = l18 };
|
||
|
Mctypes.t_id =
|
||
|
id }
|
||
|
tel
|
||
|
|
||
|
node createtracks_rand(res : bool) returns (tracks : Mctypes.ttracksarray)
|
||
|
let
|
||
|
tracks =
|
||
|
map<<Mctypes.ksizetracksarray>> createtracks_createonetrack_rand
|
||
|
<()>(res^Mctypes.ksizetracksarray)
|
||
|
tel
|
||
|
|
||
|
node createalltracks(res : bool) returns (tracks : Mctypes.ttracksarray)
|
||
|
let
|
||
|
reset
|
||
|
var res_2 : bool; tracks_2 : Mctypes.ttracksarray; in
|
||
|
|
||
|
res_2 = res;
|
||
|
tracks_2 =
|
||
|
map<<Mctypes.ksizetracksarray>> createtracks_createonetrack_rand
|
||
|
<()>(res_2^Mctypes.ksizetracksarray);
|
||
|
tracks = tracks_2
|
||
|
every res
|
||
|
tel
|
||
|
|
||
|
node fusionrdrifftracks(iffmissiontrack : Mctypes.tmissiontrack at r1;
|
||
|
rdrmissiontrack : Mctypes.tmissiontrack at r2)
|
||
|
returns (newiffmissiontrack : Mctypes.tmissiontrack at r1;
|
||
|
newrdrmissiontrack : Mctypes.tmissiontrack at r2)
|
||
|
var pos1 : Mctypes.tposition; pos2 : Mctypes.tposition; v1 : Mctypes.tspeed;
|
||
|
v2 : Mctypes.tspeed; speed1 : Mctypes.tspeed; speed2 : Mctypes.tspeed;
|
||
|
a_2_2 : float; o_2_2 : float; a_3 : float; o_3 : float; equal_3 : bool;
|
||
|
pos1_2 : Mctypes.tposition; pos2_2 : Mctypes.tposition; a_2 : float;
|
||
|
o_2 : float; a : float; o : float; equal_2 : bool; equal : bool;
|
||
|
l90 : bool;
|
||
|
let
|
||
|
pos1 = rdrmissiontrack.Mctypes.m_pos;
|
||
|
pos2 = iffmissiontrack.Mctypes.m_pos;
|
||
|
v1 = rdrmissiontrack.Mctypes.m_speed;
|
||
|
v2 = iffmissiontrack.Mctypes.m_speed;
|
||
|
speed1 = v1;
|
||
|
speed2 = v2;
|
||
|
a_2_2 = (-.)(speed1.Mctypes.sy, speed2.Mctypes.sy);
|
||
|
o_2_2 = if (<=.)(0.000000, a_2_2) then a_2_2 else ~-.(a_2_2);
|
||
|
a_3 = (-.)(speed1.Mctypes.sx, speed2.Mctypes.sx);
|
||
|
o_3 = if (<=.)(0.000000, a_3) then a_3 else ~-.(a_3);
|
||
|
equal_3 = (&)((<.)(o_3, 1.000000), (<.)(o_2_2, 1.000000));
|
||
|
pos1_2 = pos1;
|
||
|
pos2_2 = pos2;
|
||
|
a_2 = (-.)(pos1_2.Mctypes.y, pos2_2.Mctypes.y);
|
||
|
o_2 = if (<=.)(0.000000, a_2) then a_2 else ~-.(a_2);
|
||
|
a = (-.)(pos1_2.Mctypes.x, pos2_2.Mctypes.x);
|
||
|
o = if (<=.)(0.000000, a) then a else ~-.(a);
|
||
|
equal_2 = (&)((<.)(o, 0.100000), (<.)(o_2, 0.100000));
|
||
|
equal = (&)(equal_2, equal_3);
|
||
|
newrdrmissiontrack =
|
||
|
if l90
|
||
|
then { ({ ({ ({rdrmissiontrack with .Mctypes.m_id =
|
||
|
iffmissiontrack.Mctypes.m_id}) with .Mctypes.m_detectedbyiff =
|
||
|
iffmissiontrack.Mctypes.m_detectedbyiff}) with .Mctypes.m_tracknumber =
|
||
|
0}) with .Mctypes.m_targettype =
|
||
|
iffmissiontrack.Mctypes.m_targettype}
|
||
|
else rdrmissiontrack;
|
||
|
l90 = equal;
|
||
|
newiffmissiontrack =
|
||
|
if l90 then Mctypes.kinitmissiontrack else iffmissiontrack
|
||
|
tel
|
||
|
|
||
|
node mc_tracks_fusion_onerdrwithifftracks(rdrtrack : Mctypes.tmissiontrack at r1;
|
||
|
ifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at r2)
|
||
|
returns (fusionnedrdrtrack : Mctypes.tmissiontrack at r1;
|
||
|
fusionnedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at r2)
|
||
|
let
|
||
|
(fusionnedifftracks, fusionnedrdrtrack) =
|
||
|
mapfold<<Mctypes.ksizeifftracksarray>> fusionrdrifftracks
|
||
|
<()>(ifftracks, rdrtrack)
|
||
|
tel
|
||
|
|
||
|
node mc_tracks_fusion(rdrtracks : Mctypes.trdrtracksarray;
|
||
|
ifftracks : Mctypes.tifftracksarray)
|
||
|
returns (missiontracks : Mctypes.tmissiontracksarray)
|
||
|
var mergedrdrtracks : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray;
|
||
|
mergedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray;
|
||
|
l140 : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray at rdr;
|
||
|
l139 : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at iff;
|
||
|
let
|
||
|
missiontracks = mergedrdrtracks @ mergedifftracks;
|
||
|
(mergedrdrtracks, mergedifftracks) =
|
||
|
mapfold<<Mctypes.ksizerdrtracksarray>> mc_tracks_fusion_onerdrwithifftracks
|
||
|
<()>(l140, l139);
|
||
|
init<<rdr>> l140 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> convertrdrtracktomissiontrack
|
||
|
<()>(rdrtracks);
|
||
|
init<<iff>> l139 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> convertifftracktomissiontrack
|
||
|
<()>(ifftracks)
|
||
|
tel
|
||
|
|
||
|
node prio_tracknumbernotinarray(missiontracktracknumber : int;
|
||
|
prioritytrack : int; acc : bool)
|
||
|
returns (notinarray : bool)
|
||
|
let
|
||
|
notinarray = (&)(acc, not((=)(missiontracktracknumber, prioritytrack)))
|
||
|
tel
|
||
|
|
||
|
node prio_selecthighestprioritynotinpriorityarray(missiontrack : Mctypes.tmissiontrack;
|
||
|
prioritiesarray : Mctypes.tpriorityList;
|
||
|
accprioritymissiontrack : Mctypes.tmissiontrack at r)
|
||
|
returns (prioritymissiontrack : Mctypes.tmissiontrack at r)
|
||
|
var a : Mctypes.tmissiontrack; b : Mctypes.tmissiontrack; vr_2 : float;
|
||
|
d_2 : float; l13_2 : float; l11_2 : bool; result_2 : float; vr : float;
|
||
|
d : float; l13 : float; l11 : bool; result : float; prioritary : bool;
|
||
|
missiontracknotinpriorittiesarray : bool;
|
||
|
missiontrackhashigherprioritythanacc : bool;
|
||
|
let
|
||
|
a = missiontrack;
|
||
|
b = accprioritymissiontrack;
|
||
|
vr_2 = b.Mctypes.m_sr;
|
||
|
d_2 = b.Mctypes.m_d;
|
||
|
result_2 = if l11_2 then l13_2 else 0.000000;
|
||
|
l13_2 = if l11_2 then (/.)(vr_2, d_2) else 0.000000 -> pre l13_2;
|
||
|
l11_2 = (>.)(d_2, 0.100000);
|
||
|
vr = a.Mctypes.m_sr;
|
||
|
d = a.Mctypes.m_d;
|
||
|
result = if l11 then l13 else 0.000000;
|
||
|
l13 = if l11 then (/.)(vr, d) else 0.000000 -> pre l13;
|
||
|
l11 = (>.)(d, 0.100000);
|
||
|
prioritary =
|
||
|
(or)
|
||
|
((or)
|
||
|
((=)(a.Mctypes.m_targettype, Mctypes.Ttargettype_friend),
|
||
|
not(a.Mctypes.m_detectedbyradar)),
|
||
|
(&)
|
||
|
((&)(a.Mctypes.m_detectedbyradar, (<.)(result, result_2)),
|
||
|
b.Mctypes.m_detectedbyradar))
|
||
|
;
|
||
|
missiontrackhashigherprioritythanacc = not(prioritary);
|
||
|
missiontracknotinpriorittiesarray =
|
||
|
fold<<4>> prio_tracknumbernotinarray
|
||
|
<()>(missiontrack.Mctypes.m_tracknumber^4, prioritiesarray, true);
|
||
|
prioritymissiontrack =
|
||
|
if (&)
|
||
|
(missiontracknotinpriorittiesarray,
|
||
|
missiontrackhashigherprioritythanacc)
|
||
|
then missiontrack
|
||
|
else accprioritymissiontrack
|
||
|
tel
|
||
|
|
||
|
node prio_selectprioritarymissiontracks(missiontracks : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
indexpriority : int)
|
||
|
returns (newprioritiesarray : Mctypes.tpriorityList at prio)
|
||
|
var initmtrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at r;
|
||
|
let
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks, prioritiesarray^Mctypes.ksizemissiontracksarray,
|
||
|
initmtrack)
|
||
|
tel
|
||
|
|
||
|
node prio_setpriorityinmissiontrack(prioritytracknumber : int;
|
||
|
priorityindex : int;
|
||
|
missiontrack : Mctypes.tmissiontrack at r)
|
||
|
returns (missiontrackwithprio : Mctypes.tmissiontrack at r)
|
||
|
var priority : int;
|
||
|
newmissiontrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrack_copy : Mctypes.tmissiontrack;
|
||
|
let
|
||
|
missiontrack_copy = missiontrack;
|
||
|
priority = (+)(priorityindex, 1);
|
||
|
newmissiontrack =
|
||
|
{missiontrack with .Mctypes.m_priority =
|
||
|
if missiontrack.Mctypes.m_detectedbyradar then priority else 0};
|
||
|
missiontrackwithprio =
|
||
|
if (=)(prioritytracknumber, missiontrack.Mctypes.m_tracknumber)
|
||
|
then newmissiontrack
|
||
|
else missiontrack_copy
|
||
|
tel
|
||
|
|
||
|
node prio_setpriorityinmissiontrackarray(priorityarray : Mctypes.tpriorityList;
|
||
|
missiontrack : Mctypes.tmissiontrack at r)
|
||
|
returns (missiontrackwithprio : Mctypes.tmissiontrack at r)
|
||
|
let
|
||
|
missiontrackwithprio =
|
||
|
foldi<<4>> prio_setpriorityinmissiontrack
|
||
|
<()>(priorityarray, missiontrack)
|
||
|
tel
|
||
|
|
||
|
(*
|
||
|
node mc_tracks_prio(missiontracks : Mctypes.tmissiontracksarray at r)
|
||
|
returns (missiontrackswithprio : Mctypes.tmissiontracksarray at r)
|
||
|
var missiontracks_5 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_4 : Mctypes.tpriorityList at prio; indexpriority_4 : int;
|
||
|
initmtrack_4 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_4 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_4 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_4 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_3 : Mctypes.tpriorityList at prio; indexpriority_3 : int;
|
||
|
initmtrack_3 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_3 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_3 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_3 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_2 : Mctypes.tpriorityList at prio; indexpriority_2 : int;
|
||
|
initmtrack_2 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_2 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_2 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_2 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio; indexpriority : int;
|
||
|
initmtrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
initprio : Mctypes.tpriorityList at prio;
|
||
|
prioritytracknumbers : Mctypes.tpriorityList at prio;
|
||
|
let
|
||
|
missiontracks_5 = missiontracks;
|
||
|
prioritiesarray_4 = newprioritiesarray_3;
|
||
|
indexpriority_4 = 3;
|
||
|
newprioritiesarray_4 =
|
||
|
[prioritiesarray_4 with [indexpriority_4] =
|
||
|
missiontrackwithhighestpriority_4.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_4 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_4 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_5,
|
||
|
prioritiesarray_4^Mctypes.ksizemissiontracksarray, initmtrack_4);
|
||
|
missiontracks_4 = missiontracks;
|
||
|
prioritiesarray_3 = newprioritiesarray_2;
|
||
|
indexpriority_3 = 2;
|
||
|
newprioritiesarray_3 =
|
||
|
[prioritiesarray_3 with [indexpriority_3] =
|
||
|
missiontrackwithhighestpriority_3.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_3 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_3 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_4,
|
||
|
prioritiesarray_3^Mctypes.ksizemissiontracksarray, initmtrack_3);
|
||
|
missiontracks_3 = missiontracks;
|
||
|
prioritiesarray_2 = newprioritiesarray;
|
||
|
indexpriority_2 = 1;
|
||
|
newprioritiesarray_2 =
|
||
|
[prioritiesarray_2 with [indexpriority_2] =
|
||
|
missiontrackwithhighestpriority_2.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_2 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_3,
|
||
|
prioritiesarray_2^Mctypes.ksizemissiontracksarray, initmtrack_2);
|
||
|
missiontracks_2 = missiontracks;
|
||
|
prioritiesarray = initprio;
|
||
|
indexpriority = 0;
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_2, prioritiesarray^Mctypes.ksizemissiontracksarray,
|
||
|
initmtrack);
|
||
|
missiontrackswithprio =
|
||
|
map<<Mctypes.ksizemissiontracksarray>> prio_setpriorityinmissiontrackarray
|
||
|
<(prioritytracknumbers)>(missiontracks);
|
||
|
init<<prio>> initprio = 0^4;
|
||
|
prioritytracknumbers = newprioritiesarray_4
|
||
|
tel
|
||
|
*)
|
||
|
|
||
|
node mc_tracks_tracknumber(withouttracknb : Mctypes.tmissiontracksarray at r)
|
||
|
returns (withtracknumber : Mctypes.tmissiontracksarray at r)
|
||
|
var l81 : int;
|
||
|
let
|
||
|
(withtracknumber, l81) =
|
||
|
mapfold<<Mctypes.ksizemissiontracksarray>> calculatemissiontracknumber
|
||
|
<(Mctypes.kinitmissiontrackarray -> pre withtracknumber)>(withouttracknb,
|
||
|
0 -> pre l81)
|
||
|
tel
|
||
|
|
||
|
(*
|
||
|
node mc_tracks(rdrtracks : Mctypes.trdrtracksarray;
|
||
|
ifftracks : Mctypes.tifftracksarray)
|
||
|
returns (missiontracks : Mctypes.tmissiontracksarray)
|
||
|
var missiontracks_6 : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_5 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_4 : Mctypes.tpriorityList at prio; indexpriority_4 : int;
|
||
|
initmtrack_4 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_4 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_4 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_4 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_3 : Mctypes.tpriorityList at prio; indexpriority_3 : int;
|
||
|
initmtrack_3 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_3 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_3 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_3 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_2 : Mctypes.tpriorityList at prio; indexpriority_2 : int;
|
||
|
initmtrack_2 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_2 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_2 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_2_2 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio; indexpriority : int;
|
||
|
initmtrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
initprio : Mctypes.tpriorityList at prio;
|
||
|
prioritytracknumbers : Mctypes.tpriorityList at prio;
|
||
|
missiontrackswithprio : Mctypes.tmissiontracksarray at r;
|
||
|
withouttracknb : Mctypes.tmissiontracksarray at r; l81 : int;
|
||
|
withtracknumber : Mctypes.tmissiontracksarray at r;
|
||
|
rdrtracks_2 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_2 : Mctypes.tifftracksarray;
|
||
|
mergedrdrtracks : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray;
|
||
|
mergedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray;
|
||
|
l140 : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray at rdr;
|
||
|
l139 : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at iff;
|
||
|
missiontracks_2 : Mctypes.tmissiontracksarray;
|
||
|
fused_tracks : Mctypes.tmissiontracksarray at r;
|
||
|
let
|
||
|
missiontracks_6 = withtracknumber;
|
||
|
missiontracks_5 = missiontracks_6;
|
||
|
prioritiesarray_4 = newprioritiesarray_3;
|
||
|
indexpriority_4 = 3;
|
||
|
newprioritiesarray_4 =
|
||
|
[prioritiesarray_4 with [indexpriority_4] =
|
||
|
missiontrackwithhighestpriority_4.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_4 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_4 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_5,
|
||
|
prioritiesarray_4^Mctypes.ksizemissiontracksarray, initmtrack_4);
|
||
|
missiontracks_4 = missiontracks_6;
|
||
|
prioritiesarray_3 = newprioritiesarray_2;
|
||
|
indexpriority_3 = 2;
|
||
|
newprioritiesarray_3 =
|
||
|
[prioritiesarray_3 with [indexpriority_3] =
|
||
|
missiontrackwithhighestpriority_3.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_3 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_3 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_4,
|
||
|
prioritiesarray_3^Mctypes.ksizemissiontracksarray, initmtrack_3);
|
||
|
missiontracks_3 = missiontracks_6;
|
||
|
prioritiesarray_2 = newprioritiesarray;
|
||
|
indexpriority_2 = 1;
|
||
|
newprioritiesarray_2 =
|
||
|
[prioritiesarray_2 with [indexpriority_2] =
|
||
|
missiontrackwithhighestpriority_2.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_2 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_3,
|
||
|
prioritiesarray_2^Mctypes.ksizemissiontracksarray, initmtrack_2);
|
||
|
missiontracks_2_2 = missiontracks_6;
|
||
|
prioritiesarray = initprio;
|
||
|
indexpriority = 0;
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_2_2,
|
||
|
prioritiesarray^Mctypes.ksizemissiontracksarray, initmtrack);
|
||
|
missiontrackswithprio =
|
||
|
map<<Mctypes.ksizemissiontracksarray>> prio_setpriorityinmissiontrackarray
|
||
|
<(prioritytracknumbers)>(missiontracks_6);
|
||
|
init<<prio>> initprio = 0^4;
|
||
|
prioritytracknumbers = newprioritiesarray_4;
|
||
|
withouttracknb = fused_tracks;
|
||
|
(withtracknumber, l81) =
|
||
|
mapfold<<Mctypes.ksizemissiontracksarray>> calculatemissiontracknumber
|
||
|
<(Mctypes.kinitmissiontrackarray -> pre withtracknumber)>(withouttracknb,
|
||
|
0 -> pre l81);
|
||
|
rdrtracks_2 = rdrtracks;
|
||
|
ifftracks_2 = ifftracks;
|
||
|
missiontracks_2 = mergedrdrtracks @ mergedifftracks;
|
||
|
(mergedrdrtracks, mergedifftracks) =
|
||
|
mapfold<<Mctypes.ksizerdrtracksarray>> mc_tracks_fusion_onerdrwithifftracks
|
||
|
<()>(l140, l139);
|
||
|
init<<rdr>> l140 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> convertrdrtracktomissiontrack
|
||
|
<()>(rdrtracks_2);
|
||
|
init<<iff>> l139 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> convertifftracktomissiontrack
|
||
|
<()>(ifftracks_2);
|
||
|
init<<r>> fused_tracks = missiontracks_2;
|
||
|
missiontracks = missiontrackswithprio
|
||
|
tel
|
||
|
*)
|
||
|
|
||
|
(*
|
||
|
node mc(currentrdrstate : Mctypes.tsensorstate;
|
||
|
currentrdrmode : Mctypes.trdrmode;
|
||
|
rdrtracks : Mctypes.trdrtracksarray; rdronoffbutton : bool;
|
||
|
rdrmodebutton : bool; iffonoffbutton : bool;
|
||
|
currentiffstate : Mctypes.tsensorstate;
|
||
|
ifftracks : Mctypes.tifftracksarray)
|
||
|
returns (rdronoffcmd : bool; rdrmodecmd : bool;
|
||
|
missiontracks : Mctypes.tmissiontracksarray; iffonoffcmd : bool)
|
||
|
var rdronoffbutton_2 : bool; currentrdrstate_3 : Mctypes.tsensorstate;
|
||
|
onoffbuttonpressed_2 : bool; currentstate_3 : Mctypes.tsensorstate;
|
||
|
onoffcmd_2 : bool; re_Input_3 : bool; re_Output_3 : bool;
|
||
|
rdronoffcmd_2 : bool; currentrdrstate_2 : Mctypes.tsensorstate;
|
||
|
rdrmodebutton_2 : bool; currentrdrmode_2 : Mctypes.trdrmode;
|
||
|
currentstate_2 : Mctypes.tsensorstate; modebuttonpressed : bool;
|
||
|
currentmode : Mctypes.trdrmode; modecmd : bool; re_Input_2 : bool;
|
||
|
re_Output_2 : bool; rdrmodecmd_2 : bool; iffonoffbutton_2 : bool;
|
||
|
currentiffstate_2 : Mctypes.tsensorstate; onoffbuttonpressed : bool;
|
||
|
currentstate : Mctypes.tsensorstate; onoffcmd : bool; re_Input : bool;
|
||
|
re_Output : bool; iffonoffcmd_2 : bool;
|
||
|
rdrtracks_3 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_3 : Mctypes.tifftracksarray;
|
||
|
missiontracks_6 : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_5 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_4 : Mctypes.tpriorityList at prio; indexpriority_4 : int;
|
||
|
initmtrack_4 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_4 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_4 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_4 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_3 : Mctypes.tpriorityList at prio; indexpriority_3 : int;
|
||
|
initmtrack_3 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_3 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_3 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_3 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_2 : Mctypes.tpriorityList at prio; indexpriority_2 : int;
|
||
|
initmtrack_2 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_2 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_2 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_2_2 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio; indexpriority : int;
|
||
|
initmtrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
initprio : Mctypes.tpriorityList at prio;
|
||
|
prioritytracknumbers : Mctypes.tpriorityList at prio;
|
||
|
missiontrackswithprio : Mctypes.tmissiontracksarray at r;
|
||
|
withouttracknb : Mctypes.tmissiontracksarray at r; l81 : int;
|
||
|
withtracknumber : Mctypes.tmissiontracksarray at r;
|
||
|
rdrtracks_2 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_2 : Mctypes.tifftracksarray;
|
||
|
mergedrdrtracks : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray;
|
||
|
mergedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray;
|
||
|
l140 : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray at rdr;
|
||
|
l139 : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at iff;
|
||
|
missiontracks_2 : Mctypes.tmissiontracksarray;
|
||
|
fused_tracks : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_7 : Mctypes.tmissiontracksarray;
|
||
|
let
|
||
|
rdronoffbutton_2 = rdronoffbutton;
|
||
|
currentrdrstate_3 = currentrdrstate;
|
||
|
onoffbuttonpressed_2 = re_Output_3;
|
||
|
currentstate_3 = currentrdrstate_3;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd_2 = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd_2 = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input_3 = rdronoffbutton_2;
|
||
|
re_Output_3 = (&)(not(re_Input_3 -> pre re_Input_3), re_Input_3);
|
||
|
rdronoffcmd_2 = onoffcmd_2;
|
||
|
currentrdrstate_2 = currentrdrstate;
|
||
|
rdrmodebutton_2 = rdrmodebutton;
|
||
|
currentrdrmode_2 = currentrdrmode;
|
||
|
currentstate_2 = currentrdrstate_2;
|
||
|
modebuttonpressed = re_Output_2;
|
||
|
currentmode = currentrdrmode_2;
|
||
|
automaton
|
||
|
state Wide
|
||
|
do
|
||
|
modecmd = false
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_WIDE)))
|
||
|
then Narrow
|
||
|
state Narrow
|
||
|
do
|
||
|
modecmd = true
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_NARROW)))
|
||
|
then Wide
|
||
|
end;
|
||
|
re_Input_2 = rdrmodebutton_2;
|
||
|
re_Output_2 = (&)(not(re_Input_2 -> pre re_Input_2), re_Input_2);
|
||
|
rdrmodecmd_2 = modecmd;
|
||
|
iffonoffbutton_2 = iffonoffbutton;
|
||
|
currentiffstate_2 = currentiffstate;
|
||
|
onoffbuttonpressed = re_Output;
|
||
|
currentstate = currentiffstate_2;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input = iffonoffbutton_2;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
iffonoffcmd_2 = onoffcmd;
|
||
|
rdrtracks_3 = rdrtracks;
|
||
|
ifftracks_3 = ifftracks;
|
||
|
missiontracks_6 = withtracknumber;
|
||
|
missiontracks_5 = missiontracks_6;
|
||
|
prioritiesarray_4 = newprioritiesarray_3;
|
||
|
indexpriority_4 = 3;
|
||
|
newprioritiesarray_4 =
|
||
|
[prioritiesarray_4 with [indexpriority_4] =
|
||
|
missiontrackwithhighestpriority_4.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_4 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_4 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_5,
|
||
|
prioritiesarray_4^Mctypes.ksizemissiontracksarray, initmtrack_4);
|
||
|
missiontracks_4 = missiontracks_6;
|
||
|
prioritiesarray_3 = newprioritiesarray_2;
|
||
|
indexpriority_3 = 2;
|
||
|
newprioritiesarray_3 =
|
||
|
[prioritiesarray_3 with [indexpriority_3] =
|
||
|
missiontrackwithhighestpriority_3.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_3 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_3 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_4,
|
||
|
prioritiesarray_3^Mctypes.ksizemissiontracksarray, initmtrack_3);
|
||
|
missiontracks_3 = missiontracks_6;
|
||
|
prioritiesarray_2 = newprioritiesarray;
|
||
|
indexpriority_2 = 1;
|
||
|
newprioritiesarray_2 =
|
||
|
[prioritiesarray_2 with [indexpriority_2] =
|
||
|
missiontrackwithhighestpriority_2.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_2 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_3,
|
||
|
prioritiesarray_2^Mctypes.ksizemissiontracksarray, initmtrack_2);
|
||
|
missiontracks_2_2 = missiontracks_6;
|
||
|
prioritiesarray = initprio;
|
||
|
indexpriority = 0;
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_2_2,
|
||
|
prioritiesarray^Mctypes.ksizemissiontracksarray, initmtrack);
|
||
|
missiontrackswithprio =
|
||
|
map<<Mctypes.ksizemissiontracksarray>> prio_setpriorityinmissiontrackarray
|
||
|
<(prioritytracknumbers)>(missiontracks_6);
|
||
|
init<<prio>> initprio = 0^4;
|
||
|
prioritytracknumbers = newprioritiesarray_4;
|
||
|
withouttracknb = fused_tracks;
|
||
|
(withtracknumber, l81) =
|
||
|
mapfold<<Mctypes.ksizemissiontracksarray>> calculatemissiontracknumber
|
||
|
<(Mctypes.kinitmissiontrackarray -> pre withtracknumber)>(withouttracknb,
|
||
|
0 -> pre l81);
|
||
|
rdrtracks_2 = rdrtracks_3;
|
||
|
ifftracks_2 = ifftracks_3;
|
||
|
missiontracks_2 = mergedrdrtracks @ mergedifftracks;
|
||
|
(mergedrdrtracks, mergedifftracks) =
|
||
|
mapfold<<Mctypes.ksizerdrtracksarray>> mc_tracks_fusion_onerdrwithifftracks
|
||
|
<()>(l140, l139);
|
||
|
init<<rdr>> l140 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> convertrdrtracktomissiontrack
|
||
|
<()>(rdrtracks_2);
|
||
|
init<<iff>> l139 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> convertifftracktomissiontrack
|
||
|
<()>(ifftracks_2);
|
||
|
init<<r>> fused_tracks = missiontracks_2;
|
||
|
missiontracks_7 = missiontrackswithprio;
|
||
|
missiontracks = missiontracks_7;
|
||
|
iffonoffcmd = iffonoffcmd_2;
|
||
|
rdrmodecmd = rdrmodecmd_2;
|
||
|
rdronoffcmd = rdronoffcmd_2
|
||
|
tel
|
||
|
*)
|
||
|
|
||
|
node implies(a : bool; b : bool) returns (c : bool)
|
||
|
let
|
||
|
c = (or)(not(a), b)
|
||
|
tel
|
||
|
|
||
|
node dv_detectedbyiff(missiontrack : Mctypes.tmissiontrack; accin : bool)
|
||
|
returns (accout : bool)
|
||
|
let
|
||
|
accout = (&)(accin, not(not((=)(missiontrack.Mctypes.m_tracknumber, 0))))
|
||
|
tel
|
||
|
|
||
|
node dv_sametracknumber(missiontrack1 : Mctypes.tmissiontrack;
|
||
|
missiontrack2 : Mctypes.tmissiontrack; accin : bool)
|
||
|
returns (accout : bool)
|
||
|
let
|
||
|
accout =
|
||
|
(or)
|
||
|
(accin,
|
||
|
(&)
|
||
|
((=)
|
||
|
(missiontrack1.Mctypes.m_tracknumber,
|
||
|
missiontrack2.Mctypes.m_tracknumber),
|
||
|
not((=)(missiontrack2.Mctypes.m_tracknumber, 0))))
|
||
|
|
||
|
tel
|
||
|
|
||
|
node dv_tracknumberexist(missiontrack : Mctypes.tmissiontrack;
|
||
|
missiontracks : Mctypes.tmissiontracksarray;
|
||
|
accin : bool)
|
||
|
returns (accout : bool)
|
||
|
var l36 : bool;
|
||
|
let
|
||
|
l36 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_sametracknumber
|
||
|
<()>(missiontrack^Mctypes.ksizemissiontracksarray, missiontracks,
|
||
|
false);
|
||
|
accout = (or)(accin, l36)
|
||
|
tel
|
||
|
|
||
|
node dv_proof1(currentrdrstate : Mctypes.tsensorstate; rdronoffbutton : bool;
|
||
|
rdronoffcmd : bool)
|
||
|
returns (proof1 : bool)
|
||
|
var a : bool; b : bool; c : bool; re_Input : bool; re_Output : bool;
|
||
|
let
|
||
|
a = (&)(re_Output, (=)(currentrdrstate, Mctypes.TState_FAIL));
|
||
|
b = (=)(rdronoffcmd, false -> pre rdronoffcmd);
|
||
|
c = (or)(not(a), b);
|
||
|
re_Input = rdronoffbutton;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
proof1 = c
|
||
|
tel
|
||
|
|
||
|
node dv_proof2(ifftracks : Mctypes.tifftracksarray;
|
||
|
missiontracks : Mctypes.tmissiontracksarray)
|
||
|
returns (proof2 : bool)
|
||
|
var a : bool; b : bool; c : bool; l33 : bool;
|
||
|
let
|
||
|
a = (=)(ifftracks, Mctypes.kinitifftrackarray);
|
||
|
b = l33;
|
||
|
c = (or)(not(a), b);
|
||
|
l33 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_detectedbyiff
|
||
|
<()>(missiontracks, true);
|
||
|
proof2 = c
|
||
|
tel
|
||
|
|
||
|
node dv_proof3(missiontracks : Mctypes.tmissiontracksarray)
|
||
|
returns (proof3 : bool)
|
||
|
var l33 : bool;
|
||
|
let
|
||
|
l33 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_tracknumberexist
|
||
|
<()>(missiontracks, missiontracks^Mctypes.ksizemissiontracksarray,
|
||
|
false);
|
||
|
proof3 = not(l33)
|
||
|
tel
|
||
|
|
||
|
(*
|
||
|
node dv_observer(currentrdrstate : Mctypes.tsensorstate;
|
||
|
currentrdrmode : Mctypes.trdrmode;
|
||
|
rdrtracks : Mctypes.trdrtracksarray; rdronoffbutton : bool;
|
||
|
rdrmodebutton : bool; iffonoffbutton : bool;
|
||
|
currentiffstate : Mctypes.tsensorstate;
|
||
|
ifftracks : Mctypes.tifftracksarray)
|
||
|
returns (proof1 : bool; proof2 : bool; proof3 : bool)
|
||
|
var currentrdrstate_4 : Mctypes.tsensorstate;
|
||
|
currentrdrmode_3 : Mctypes.trdrmode;
|
||
|
rdrtracks_4 : Mctypes.trdrtracksarray; rdronoffbutton_3 : bool;
|
||
|
rdrmodebutton_3 : bool; iffonoffbutton_3 : bool;
|
||
|
currentiffstate_3 : Mctypes.tsensorstate;
|
||
|
ifftracks_4 : Mctypes.tifftracksarray; rdronoffbutton_2_2 : bool;
|
||
|
currentrdrstate_3 : Mctypes.tsensorstate; onoffbuttonpressed_2 : bool;
|
||
|
currentstate_3 : Mctypes.tsensorstate; onoffcmd_2 : bool;
|
||
|
re_Input_3 : bool; re_Output_3 : bool; rdronoffcmd_2 : bool;
|
||
|
currentrdrstate_2_2 : Mctypes.tsensorstate; rdrmodebutton_2 : bool;
|
||
|
currentrdrmode_2 : Mctypes.trdrmode;
|
||
|
currentstate_2 : Mctypes.tsensorstate; modebuttonpressed : bool;
|
||
|
currentmode : Mctypes.trdrmode; modecmd : bool; re_Input_2 : bool;
|
||
|
re_Output_2 : bool; rdrmodecmd_2 : bool; iffonoffbutton_2 : bool;
|
||
|
currentiffstate_2 : Mctypes.tsensorstate; onoffbuttonpressed : bool;
|
||
|
currentstate : Mctypes.tsensorstate; onoffcmd : bool; re_Input_4 : bool;
|
||
|
re_Output_4 : bool; iffonoffcmd_2 : bool;
|
||
|
rdrtracks_3 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_3 : Mctypes.tifftracksarray;
|
||
|
missiontracks_6 : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_5 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_4 : Mctypes.tpriorityList at prio; indexpriority_4 : int;
|
||
|
initmtrack_4 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_4 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_4 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_4 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_3 : Mctypes.tpriorityList at prio; indexpriority_3 : int;
|
||
|
initmtrack_3 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_3 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_3 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_3 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_2 : Mctypes.tpriorityList at prio; indexpriority_2 : int;
|
||
|
initmtrack_2 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_2 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_2 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_2_2 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio; indexpriority : int;
|
||
|
initmtrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
initprio : Mctypes.tpriorityList at prio;
|
||
|
prioritytracknumbers : Mctypes.tpriorityList at prio;
|
||
|
missiontrackswithprio : Mctypes.tmissiontracksarray at r;
|
||
|
withouttracknb : Mctypes.tmissiontracksarray at r; l81 : int;
|
||
|
withtracknumber : Mctypes.tmissiontracksarray at r;
|
||
|
rdrtracks_2 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_2_2 : Mctypes.tifftracksarray;
|
||
|
mergedrdrtracks : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray;
|
||
|
mergedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray;
|
||
|
l140 : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray at rdr;
|
||
|
l139 : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at iff;
|
||
|
missiontracks_2_3 : Mctypes.tmissiontracksarray;
|
||
|
fused_tracks : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_7 : Mctypes.tmissiontracksarray; rdronoffcmd_3 : bool;
|
||
|
rdrmodecmd : bool; missiontracks_8 : Mctypes.tmissiontracksarray;
|
||
|
iffonoffcmd : bool; currentrdrstate_2 : Mctypes.tsensorstate;
|
||
|
rdronoffbutton_2 : bool; rdronoffcmd : bool; a_2 : bool; b_2 : bool;
|
||
|
c_2 : bool; re_Input : bool; re_Output : bool; proof1_2 : bool;
|
||
|
ifftracks_2 : Mctypes.tifftracksarray;
|
||
|
missiontracks_2 : Mctypes.tmissiontracksarray; a : bool; b : bool;
|
||
|
c : bool; l33_2 : bool; proof2_2 : bool;
|
||
|
missiontracks : Mctypes.tmissiontracksarray; l33 : bool; proof3_2 : bool;
|
||
|
l3 : Mctypes.tmissiontracksarray; l1 : bool; l4 : bool; l5 : bool;
|
||
|
let
|
||
|
currentrdrstate_4 = currentrdrstate;
|
||
|
currentrdrmode_3 = currentrdrmode;
|
||
|
rdrtracks_4 = rdrtracks;
|
||
|
rdronoffbutton_3 = rdronoffbutton;
|
||
|
rdrmodebutton_3 = rdrmodebutton;
|
||
|
iffonoffbutton_3 = iffonoffbutton;
|
||
|
currentiffstate_3 = currentiffstate;
|
||
|
ifftracks_4 = ifftracks;
|
||
|
rdronoffbutton_2_2 = rdronoffbutton_3;
|
||
|
currentrdrstate_3 = currentrdrstate_4;
|
||
|
onoffbuttonpressed_2 = re_Output_3;
|
||
|
currentstate_3 = currentrdrstate_3;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd_2 = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd_2 = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input_3 = rdronoffbutton_2_2;
|
||
|
re_Output_3 = (&)(not(re_Input_3 -> pre re_Input_3), re_Input_3);
|
||
|
rdronoffcmd_2 = onoffcmd_2;
|
||
|
currentrdrstate_2_2 = currentrdrstate_4;
|
||
|
rdrmodebutton_2 = rdrmodebutton_3;
|
||
|
currentrdrmode_2 = currentrdrmode_3;
|
||
|
currentstate_2 = currentrdrstate_2_2;
|
||
|
modebuttonpressed = re_Output_2;
|
||
|
currentmode = currentrdrmode_2;
|
||
|
automaton
|
||
|
state Wide
|
||
|
do
|
||
|
modecmd = false
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_WIDE)))
|
||
|
then Narrow
|
||
|
state Narrow
|
||
|
do
|
||
|
modecmd = true
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_NARROW)))
|
||
|
then Wide
|
||
|
end;
|
||
|
re_Input_2 = rdrmodebutton_2;
|
||
|
re_Output_2 = (&)(not(re_Input_2 -> pre re_Input_2), re_Input_2);
|
||
|
rdrmodecmd_2 = modecmd;
|
||
|
iffonoffbutton_2 = iffonoffbutton_3;
|
||
|
currentiffstate_2 = currentiffstate_3;
|
||
|
onoffbuttonpressed = re_Output_4;
|
||
|
currentstate = currentiffstate_2;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input_4 = iffonoffbutton_2;
|
||
|
re_Output_4 = (&)(not(re_Input_4 -> pre re_Input_4), re_Input_4);
|
||
|
iffonoffcmd_2 = onoffcmd;
|
||
|
rdrtracks_3 = rdrtracks_4;
|
||
|
ifftracks_3 = ifftracks_4;
|
||
|
missiontracks_6 = withtracknumber;
|
||
|
missiontracks_5 = missiontracks_6;
|
||
|
prioritiesarray_4 = newprioritiesarray_3;
|
||
|
indexpriority_4 = 3;
|
||
|
newprioritiesarray_4 =
|
||
|
[prioritiesarray_4 with [indexpriority_4] =
|
||
|
missiontrackwithhighestpriority_4.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_4 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_4 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_5,
|
||
|
prioritiesarray_4^Mctypes.ksizemissiontracksarray, initmtrack_4);
|
||
|
missiontracks_4 = missiontracks_6;
|
||
|
prioritiesarray_3 = newprioritiesarray_2;
|
||
|
indexpriority_3 = 2;
|
||
|
newprioritiesarray_3 =
|
||
|
[prioritiesarray_3 with [indexpriority_3] =
|
||
|
missiontrackwithhighestpriority_3.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_3 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_3 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_4,
|
||
|
prioritiesarray_3^Mctypes.ksizemissiontracksarray, initmtrack_3);
|
||
|
missiontracks_3 = missiontracks_6;
|
||
|
prioritiesarray_2 = newprioritiesarray;
|
||
|
indexpriority_2 = 1;
|
||
|
newprioritiesarray_2 =
|
||
|
[prioritiesarray_2 with [indexpriority_2] =
|
||
|
missiontrackwithhighestpriority_2.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_2 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_3,
|
||
|
prioritiesarray_2^Mctypes.ksizemissiontracksarray, initmtrack_2);
|
||
|
missiontracks_2_2 = missiontracks_6;
|
||
|
prioritiesarray = initprio;
|
||
|
indexpriority = 0;
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_2_2,
|
||
|
prioritiesarray^Mctypes.ksizemissiontracksarray, initmtrack);
|
||
|
missiontrackswithprio =
|
||
|
map<<Mctypes.ksizemissiontracksarray>> prio_setpriorityinmissiontrackarray
|
||
|
<(prioritytracknumbers)>(missiontracks_6);
|
||
|
init<<prio>> initprio = 0^4;
|
||
|
prioritytracknumbers = newprioritiesarray_4;
|
||
|
withouttracknb = fused_tracks;
|
||
|
(withtracknumber, l81) =
|
||
|
mapfold<<Mctypes.ksizemissiontracksarray>> calculatemissiontracknumber
|
||
|
<(Mctypes.kinitmissiontrackarray -> pre withtracknumber)>(withouttracknb,
|
||
|
0 -> pre l81);
|
||
|
rdrtracks_2 = rdrtracks_3;
|
||
|
ifftracks_2_2 = ifftracks_3;
|
||
|
missiontracks_2_3 = mergedrdrtracks @ mergedifftracks;
|
||
|
(mergedrdrtracks, mergedifftracks) =
|
||
|
mapfold<<Mctypes.ksizerdrtracksarray>> mc_tracks_fusion_onerdrwithifftracks
|
||
|
<()>(l140, l139);
|
||
|
init<<rdr>> l140 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> convertrdrtracktomissiontrack
|
||
|
<()>(rdrtracks_2);
|
||
|
init<<iff>> l139 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> convertifftracktomissiontrack
|
||
|
<()>(ifftracks_2_2);
|
||
|
init<<r>> fused_tracks = missiontracks_2_3;
|
||
|
missiontracks_7 = missiontrackswithprio;
|
||
|
missiontracks_8 = missiontracks_7;
|
||
|
iffonoffcmd = iffonoffcmd_2;
|
||
|
rdrmodecmd = rdrmodecmd_2;
|
||
|
rdronoffcmd_3 = rdronoffcmd_2;
|
||
|
currentrdrstate_2 = currentrdrstate;
|
||
|
rdronoffbutton_2 = rdronoffbutton;
|
||
|
rdronoffcmd = l1;
|
||
|
a_2 = (&)(re_Output, (=)(currentrdrstate_2, Mctypes.TState_FAIL));
|
||
|
b_2 = (=)(rdronoffcmd, false -> pre rdronoffcmd);
|
||
|
c_2 = (or)(not(a_2), b_2);
|
||
|
re_Input = rdronoffbutton_2;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
proof1_2 = c_2;
|
||
|
ifftracks_2 = ifftracks;
|
||
|
missiontracks_2 = l3;
|
||
|
a = (=)(ifftracks_2, Mctypes.kinitifftrackarray);
|
||
|
b = l33_2;
|
||
|
c = (or)(not(a), b);
|
||
|
l33_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_detectedbyiff
|
||
|
<()>(missiontracks_2, true);
|
||
|
proof2_2 = c;
|
||
|
missiontracks = l3;
|
||
|
l33 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_tracknumberexist
|
||
|
<()>(missiontracks, missiontracks^Mctypes.ksizemissiontracksarray,
|
||
|
false);
|
||
|
proof3_2 = not(l33);
|
||
|
proof3 = proof3_2;
|
||
|
proof2 = proof2_2;
|
||
|
proof1 = proof1_2;
|
||
|
(l1, l4, l3, l5) =
|
||
|
(rdronoffcmd_3, rdrmodecmd, missiontracks_8, iffonoffcmd)
|
||
|
tel
|
||
|
*)
|
||
|
|
||
|
node fighterdebug(res : bool; rdronoffclicked : bool; iffonoffclicked : bool)
|
||
|
returns (missiontracks : Mctypes.tmissiontracksarray)
|
||
|
var onoffcmd_4 : bool; modecmd_3 : bool; failure_3 : bool;
|
||
|
rdrdetectedtracks : Mctypes.tdetectedrdrtracksarray;
|
||
|
tracks_4 : Mctypes.ttracksarray; onoffcmd_2_3 : bool; failure_2_2 : bool;
|
||
|
x_2 : bool; initializing_2_2 : bool; st_3_2 : Mctypes.tsensorstate;
|
||
|
modecmd_2 : bool; mode_2 : Mctypes.trdrmode;
|
||
|
st_2_2 : Mctypes.tsensorstate; tracks_2_2 : Mctypes.ttracksarray;
|
||
|
rdrdetectedtracks_2 : Mctypes.tdetectedrdrtracksarray;
|
||
|
l22 : Mctypes.ttrack^Mctypes.ksizerdrtracksarray;
|
||
|
l30 : Mctypes.trdrtrack^Mctypes.ksizerdrtracksarray;
|
||
|
rdrtracks_2_2 : Mctypes.trdrtracksarray; initializing_3 : bool;
|
||
|
st_4 : Mctypes.tsensorstate; mode : Mctypes.trdrmode;
|
||
|
rdrtracks_4 : Mctypes.trdrtracksarray; tracks_3 : Mctypes.ttracksarray;
|
||
|
failure : bool; iffdetectedtracks : Mctypes.tdetectedifftracksarray;
|
||
|
onoffcmd_3 : bool; onoffcmd_2_2 : bool; failure_2 : bool; x : bool;
|
||
|
initializing_2 : bool; st_3 : Mctypes.tsensorstate;
|
||
|
st_2 : Mctypes.tsensorstate; tracks_2 : Mctypes.ttracksarray;
|
||
|
iffdetectedtracks_2 : Mctypes.tdetectedifftracksarray;
|
||
|
l34 : Mctypes.ttrack^Mctypes.ksizeifftracksarray;
|
||
|
l40 : Mctypes.tifftracksarray; ifftracks_2_2 : Mctypes.tifftracksarray;
|
||
|
st : Mctypes.tsensorstate; ifftracks_4 : Mctypes.tifftracksarray;
|
||
|
initializing : bool; currentrdrstate : Mctypes.tsensorstate;
|
||
|
currentrdrmode : Mctypes.trdrmode; rdrtracks : Mctypes.trdrtracksarray;
|
||
|
rdronoffbutton : bool; rdrmodebutton : bool; iffonoffbutton : bool;
|
||
|
currentiffstate : Mctypes.tsensorstate;
|
||
|
ifftracks : Mctypes.tifftracksarray; rdronoffbutton_2 : bool;
|
||
|
currentrdrstate_3 : Mctypes.tsensorstate; onoffbuttonpressed_2 : bool;
|
||
|
currentstate_3 : Mctypes.tsensorstate; onoffcmd_2 : bool;
|
||
|
re_Input_3 : bool; re_Output_3 : bool; rdronoffcmd_2 : bool;
|
||
|
currentrdrstate_2 : Mctypes.tsensorstate; rdrmodebutton_2 : bool;
|
||
|
currentrdrmode_2 : Mctypes.trdrmode;
|
||
|
currentstate_2 : Mctypes.tsensorstate; modebuttonpressed : bool;
|
||
|
currentmode : Mctypes.trdrmode; modecmd : bool; re_Input_2 : bool;
|
||
|
re_Output_2 : bool; rdrmodecmd_2 : bool; iffonoffbutton_2 : bool;
|
||
|
currentiffstate_2 : Mctypes.tsensorstate; onoffbuttonpressed : bool;
|
||
|
currentstate : Mctypes.tsensorstate; onoffcmd : bool; re_Input : bool;
|
||
|
re_Output : bool; iffonoffcmd_2 : bool;
|
||
|
rdrtracks_3 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_3 : Mctypes.tifftracksarray;
|
||
|
missiontracks_6 : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_5 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_4 : Mctypes.tpriorityList at prio; indexpriority_4 : int;
|
||
|
initmtrack_4 : Mctypes.tmissiontrack at mt4;
|
||
|
missiontrackwithhighestpriority_4 : Mctypes.tmissiontrack at mt4;
|
||
|
newprioritiesarray_4 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_4 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_3 : Mctypes.tpriorityList at prio; indexpriority_3 : int;
|
||
|
initmtrack_3 : Mctypes.tmissiontrack at mt3;
|
||
|
missiontrackwithhighestpriority_3 : Mctypes.tmissiontrack at mt3;
|
||
|
newprioritiesarray_3 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_3 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_2 : Mctypes.tpriorityList at prio; indexpriority_2 : int;
|
||
|
initmtrack_2 : Mctypes.tmissiontrack at mt2;
|
||
|
missiontrackwithhighestpriority_2 : Mctypes.tmissiontrack at mt2;
|
||
|
newprioritiesarray_2 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_2_2 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio; indexpriority : int;
|
||
|
initmtrack : Mctypes.tmissiontrack at mt;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at mt;
|
||
|
newprioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
initprio : Mctypes.tpriorityList at prio;
|
||
|
prioritytracknumbers : Mctypes.tpriorityList at prio;
|
||
|
missiontrackswithprio : Mctypes.tmissiontracksarray at r;
|
||
|
withouttracknb : Mctypes.tmissiontracksarray at r; l81 : int;
|
||
|
withtracknumber : Mctypes.tmissiontracksarray at r;
|
||
|
rdrtracks_2 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_2 : Mctypes.tifftracksarray;
|
||
|
mergedrdrtracks : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray;
|
||
|
mergedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray;
|
||
|
l140 : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray at rdr;
|
||
|
l139 : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at iff;
|
||
|
missiontracks_2 : Mctypes.tmissiontracksarray;
|
||
|
fused_tracks : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_7 : Mctypes.tmissiontracksarray; rdronoffcmd : bool;
|
||
|
rdrmodecmd : bool; missiontracks_8 : Mctypes.tmissiontracksarray;
|
||
|
iffonoffcmd : bool; l4 : Mctypes.trdrtracksarray; l3 : Mctypes.trdrmode;
|
||
|
l6 : Mctypes.tifftracksarray; l5 : Mctypes.tsensorstate; l12 : bool;
|
||
|
l11 : bool; l10 : bool; l172 : Mctypes.tsensorstate;
|
||
|
l179 : Mctypes.ttracksarray; l200 : bool; l201 : bool;
|
||
|
let
|
||
|
onoffcmd_4 = false -> pre l10;
|
||
|
modecmd_3 = false -> pre l11;
|
||
|
failure_3 = false;
|
||
|
rdrdetectedtracks = [0, 1, 2, 3, 4];
|
||
|
tracks_4 = l179;
|
||
|
onoffcmd_2_3 = onoffcmd_4;
|
||
|
failure_2_2 = failure_3;
|
||
|
initializing_2_2 = (&)((=)(st_3_2, Mctypes.TState_OFF), onoffcmd_2_3);
|
||
|
x_2 = false fby false fby false fby false fby false fby onoffcmd_2_3;
|
||
|
st_3_2 =
|
||
|
if failure_2_2
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd_2_3 then x_2 else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
;
|
||
|
modecmd_2 = modecmd_3;
|
||
|
mode_2 =
|
||
|
if modecmd_2 then Mctypes.TRdrMode_NARROW else Mctypes.TRdrMode_WIDE;
|
||
|
st_2_2 = st_4;
|
||
|
tracks_2_2 = tracks_4;
|
||
|
rdrdetectedtracks_2 = rdrdetectedtracks;
|
||
|
rdrtracks_2_2 =
|
||
|
if (=)(st_2_2, Mctypes.TState_ON)
|
||
|
then l30
|
||
|
else Mctypes.kinitrdrtrackarray;
|
||
|
l30 = map<<Mctypes.ksizerdrtracksarray>> elaboraterdrtrack<()>(l22);
|
||
|
l22 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> selectdetectedtrack
|
||
|
<()>(rdrdetectedtracks_2, tracks_2_2^Mctypes.ksizerdrtracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizerdrtracksarray);
|
||
|
rdrtracks_4 = rdrtracks_2_2;
|
||
|
mode = mode_2;
|
||
|
(initializing_3, st_4) = (initializing_2_2, st_3_2);
|
||
|
tracks_3 = l179;
|
||
|
failure = false;
|
||
|
iffdetectedtracks = [1, 2, 3];
|
||
|
onoffcmd_3 = false -> pre l12;
|
||
|
onoffcmd_2_2 = onoffcmd_3;
|
||
|
failure_2 = failure;
|
||
|
initializing_2 = (&)((=)(st_3, Mctypes.TState_OFF), onoffcmd_2_2);
|
||
|
x = false fby false fby false fby false fby false fby onoffcmd_2_2;
|
||
|
st_3 =
|
||
|
if failure_2
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd_2_2 then x else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
;
|
||
|
st_2 = st;
|
||
|
tracks_2 = tracks_3;
|
||
|
iffdetectedtracks_2 = iffdetectedtracks;
|
||
|
l34 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> selectdetectedtrack
|
||
|
<()>(iffdetectedtracks_2, tracks_2^Mctypes.ksizeifftracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizeifftracksarray);
|
||
|
l40 = map<<Mctypes.ksizeifftracksarray>> ifftrack_of_track<()>(l34);
|
||
|
ifftracks_2_2 =
|
||
|
if (=)(st_2, Mctypes.TState_ON) then l40 else Mctypes.kinitifftrackarray;
|
||
|
ifftracks_4 = ifftracks_2_2;
|
||
|
(initializing, st) = (initializing_2, st_3);
|
||
|
currentrdrstate = l172;
|
||
|
currentrdrmode = l3;
|
||
|
rdrtracks = l4;
|
||
|
rdronoffbutton = rdronoffclicked;
|
||
|
rdrmodebutton = false;
|
||
|
iffonoffbutton = iffonoffclicked;
|
||
|
currentiffstate = l5;
|
||
|
ifftracks = l6;
|
||
|
rdronoffbutton_2 = rdronoffbutton;
|
||
|
currentrdrstate_3 = currentrdrstate;
|
||
|
onoffbuttonpressed_2 = re_Output_3;
|
||
|
currentstate_3 = currentrdrstate_3;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd_2 = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd_2 = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input_3 = rdronoffbutton_2;
|
||
|
re_Output_3 = (&)(not(re_Input_3 -> pre re_Input_3), re_Input_3);
|
||
|
rdronoffcmd_2 = onoffcmd_2;
|
||
|
currentrdrstate_2 = currentrdrstate;
|
||
|
rdrmodebutton_2 = rdrmodebutton;
|
||
|
currentrdrmode_2 = currentrdrmode;
|
||
|
currentstate_2 = currentrdrstate_2;
|
||
|
modebuttonpressed = re_Output_2;
|
||
|
currentmode = currentrdrmode_2;
|
||
|
automaton
|
||
|
state Wide
|
||
|
do
|
||
|
modecmd = false
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_WIDE)))
|
||
|
then Narrow
|
||
|
state Narrow
|
||
|
do
|
||
|
modecmd = true
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_NARROW)))
|
||
|
then Wide
|
||
|
end;
|
||
|
re_Input_2 = rdrmodebutton_2;
|
||
|
re_Output_2 = (&)(not(re_Input_2 -> pre re_Input_2), re_Input_2);
|
||
|
rdrmodecmd_2 = modecmd;
|
||
|
iffonoffbutton_2 = iffonoffbutton;
|
||
|
currentiffstate_2 = currentiffstate;
|
||
|
onoffbuttonpressed = re_Output;
|
||
|
currentstate = currentiffstate_2;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input = iffonoffbutton_2;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
iffonoffcmd_2 = onoffcmd;
|
||
|
rdrtracks_3 = rdrtracks;
|
||
|
ifftracks_3 = ifftracks;
|
||
|
missiontracks_6 = withtracknumber;
|
||
|
missiontracks_5 = missiontracks_6;
|
||
|
prioritiesarray_4 = newprioritiesarray_3;
|
||
|
indexpriority_4 = 3;
|
||
|
newprioritiesarray_4 =
|
||
|
[prioritiesarray_4 with [indexpriority_4] =
|
||
|
missiontrackwithhighestpriority_4.Mctypes.m_tracknumber];
|
||
|
init<<mt4>> initmtrack_4 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_4 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_5,
|
||
|
prioritiesarray_4^Mctypes.ksizemissiontracksarray, initmtrack_4);
|
||
|
missiontracks_4 = missiontracks_6;
|
||
|
prioritiesarray_3 = newprioritiesarray_2;
|
||
|
indexpriority_3 = 2;
|
||
|
newprioritiesarray_3 =
|
||
|
[prioritiesarray_3 with [indexpriority_3] =
|
||
|
missiontrackwithhighestpriority_3.Mctypes.m_tracknumber];
|
||
|
init<<mt3>> initmtrack_3 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_3 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_4,
|
||
|
prioritiesarray_3^Mctypes.ksizemissiontracksarray, initmtrack_3);
|
||
|
missiontracks_3 = missiontracks_6;
|
||
|
prioritiesarray_2 = newprioritiesarray;
|
||
|
indexpriority_2 = 1;
|
||
|
newprioritiesarray_2 =
|
||
|
[prioritiesarray_2 with [indexpriority_2] =
|
||
|
missiontrackwithhighestpriority_2.Mctypes.m_tracknumber];
|
||
|
init<<mt2>> initmtrack_2 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_3,
|
||
|
prioritiesarray_2^Mctypes.ksizemissiontracksarray, initmtrack_2);
|
||
|
missiontracks_2_2 = missiontracks_6;
|
||
|
prioritiesarray = initprio;
|
||
|
indexpriority = 0;
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<mt>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_2_2,
|
||
|
prioritiesarray^Mctypes.ksizemissiontracksarray, initmtrack);
|
||
|
missiontrackswithprio =
|
||
|
map<<Mctypes.ksizemissiontracksarray>> prio_setpriorityinmissiontrackarray
|
||
|
<(prioritytracknumbers)>(missiontracks_6);
|
||
|
init<<prio>> initprio = 0^4;
|
||
|
prioritytracknumbers = newprioritiesarray_4;
|
||
|
withouttracknb = fused_tracks;
|
||
|
(withtracknumber, l81) =
|
||
|
mapfold<<Mctypes.ksizemissiontracksarray>> calculatemissiontracknumber
|
||
|
<(Mctypes.kinitmissiontrackarray -> pre withtracknumber)>(withouttracknb,
|
||
|
0 -> pre l81);
|
||
|
rdrtracks_2 = rdrtracks_3;
|
||
|
ifftracks_2 = ifftracks_3;
|
||
|
missiontracks_2 = mergedrdrtracks @ mergedifftracks;
|
||
|
(mergedrdrtracks, mergedifftracks) =
|
||
|
mapfold<<Mctypes.ksizerdrtracksarray>> mc_tracks_fusion_onerdrwithifftracks
|
||
|
<()>(l140, l139);
|
||
|
init<<rdr>> l140 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> convertrdrtracktomissiontrack
|
||
|
<()>(rdrtracks_2);
|
||
|
init<<iff>> l139 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> convertifftracktomissiontrack
|
||
|
<()>(ifftracks_2);
|
||
|
init<<r>> fused_tracks = missiontracks_2;
|
||
|
missiontracks_7 = missiontrackswithprio;
|
||
|
missiontracks_8 = missiontracks_7;
|
||
|
iffonoffcmd = iffonoffcmd_2;
|
||
|
rdrmodecmd = rdrmodecmd_2;
|
||
|
rdronoffcmd = rdronoffcmd_2;
|
||
|
l179 = createalltracks(res);
|
||
|
(l10, l11, missiontracks, l12) =
|
||
|
(rdronoffcmd, rdrmodecmd, missiontracks_8, iffonoffcmd);
|
||
|
(l5, l6, l200) = (st, ifftracks_4, initializing);
|
||
|
(l201, l172, l3, l4) = (initializing_3, st_4, mode, rdrtracks_4)
|
||
|
tel
|
||
|
|
||
|
(*
|
||
|
node dv_fighterdebug(res : bool; rdronoffclicked : bool;
|
||
|
iffonoffclicked : bool)
|
||
|
returns (proof3 : bool)
|
||
|
var missiontracks_9 : Mctypes.tmissiontracksarray; l33 : bool;
|
||
|
proof3_2 : bool; res_2 : bool; rdronoffclicked_2 : bool;
|
||
|
iffonoffclicked_2 : bool; onoffcmd_4 : bool; modecmd_3 : bool;
|
||
|
failure_3 : bool; rdrdetectedtracks : Mctypes.tdetectedrdrtracksarray;
|
||
|
tracks_4 : Mctypes.ttracksarray; onoffcmd_2_3 : bool; failure_2_2 : bool;
|
||
|
x_2 : bool; initializing_2_2 : bool; st_3_2 : Mctypes.tsensorstate;
|
||
|
modecmd_2 : bool; mode_2 : Mctypes.trdrmode;
|
||
|
st_2_2 : Mctypes.tsensorstate; tracks_2_2 : Mctypes.ttracksarray;
|
||
|
rdrdetectedtracks_2 : Mctypes.tdetectedrdrtracksarray;
|
||
|
l22 : Mctypes.ttrack^Mctypes.ksizerdrtracksarray;
|
||
|
l30 : Mctypes.trdrtrack^Mctypes.ksizerdrtracksarray;
|
||
|
rdrtracks_2_2 : Mctypes.trdrtracksarray; initializing_3 : bool;
|
||
|
st_4 : Mctypes.tsensorstate; mode : Mctypes.trdrmode;
|
||
|
rdrtracks_4 : Mctypes.trdrtracksarray; tracks_3 : Mctypes.ttracksarray;
|
||
|
failure : bool; iffdetectedtracks : Mctypes.tdetectedifftracksarray;
|
||
|
onoffcmd_3 : bool; onoffcmd_2_2 : bool; failure_2 : bool; x : bool;
|
||
|
initializing_2 : bool; st_3 : Mctypes.tsensorstate;
|
||
|
st_2 : Mctypes.tsensorstate; tracks_2 : Mctypes.ttracksarray;
|
||
|
iffdetectedtracks_2 : Mctypes.tdetectedifftracksarray;
|
||
|
l34 : Mctypes.ttrack^Mctypes.ksizeifftracksarray;
|
||
|
l40 : Mctypes.tifftracksarray; ifftracks_2_2 : Mctypes.tifftracksarray;
|
||
|
st : Mctypes.tsensorstate; ifftracks_4 : Mctypes.tifftracksarray;
|
||
|
initializing : bool; currentrdrstate : Mctypes.tsensorstate;
|
||
|
currentrdrmode : Mctypes.trdrmode; rdrtracks : Mctypes.trdrtracksarray;
|
||
|
rdronoffbutton : bool; rdrmodebutton : bool; iffonoffbutton : bool;
|
||
|
currentiffstate : Mctypes.tsensorstate;
|
||
|
ifftracks : Mctypes.tifftracksarray; rdronoffbutton_2 : bool;
|
||
|
currentrdrstate_3 : Mctypes.tsensorstate; onoffbuttonpressed_2 : bool;
|
||
|
currentstate_3 : Mctypes.tsensorstate; onoffcmd_2 : bool;
|
||
|
re_Input_3 : bool; re_Output_3 : bool; rdronoffcmd_2 : bool;
|
||
|
currentrdrstate_2 : Mctypes.tsensorstate; rdrmodebutton_2 : bool;
|
||
|
currentrdrmode_2 : Mctypes.trdrmode;
|
||
|
currentstate_2 : Mctypes.tsensorstate; modebuttonpressed : bool;
|
||
|
currentmode : Mctypes.trdrmode; modecmd : bool; re_Input_2 : bool;
|
||
|
re_Output_2 : bool; rdrmodecmd_2 : bool; iffonoffbutton_2 : bool;
|
||
|
currentiffstate_2 : Mctypes.tsensorstate; onoffbuttonpressed : bool;
|
||
|
currentstate : Mctypes.tsensorstate; onoffcmd : bool; re_Input : bool;
|
||
|
re_Output : bool; iffonoffcmd_2 : bool;
|
||
|
rdrtracks_3 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_3 : Mctypes.tifftracksarray;
|
||
|
missiontracks_6 : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_5 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_4 : Mctypes.tpriorityList at prio; indexpriority_4 : int;
|
||
|
initmtrack_4 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_4 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_4 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_4 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_3 : Mctypes.tpriorityList at prio; indexpriority_3 : int;
|
||
|
initmtrack_3 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_3 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_3 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_3 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray_2 : Mctypes.tpriorityList at prio; indexpriority_2 : int;
|
||
|
initmtrack_2 : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority_2 : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray_2 : Mctypes.tpriorityList at prio;
|
||
|
missiontracks_2_2 : Mctypes.tmissiontracksarray;
|
||
|
prioritiesarray : Mctypes.tpriorityList at prio; indexpriority : int;
|
||
|
initmtrack : Mctypes.tmissiontrack at r;
|
||
|
missiontrackwithhighestpriority : Mctypes.tmissiontrack at r;
|
||
|
newprioritiesarray : Mctypes.tpriorityList at prio;
|
||
|
initprio : Mctypes.tpriorityList at prio;
|
||
|
prioritytracknumbers : Mctypes.tpriorityList at prio;
|
||
|
missiontrackswithprio : Mctypes.tmissiontracksarray at r;
|
||
|
withouttracknb : Mctypes.tmissiontracksarray at r; l81 : int;
|
||
|
withtracknumber : Mctypes.tmissiontracksarray at r;
|
||
|
rdrtracks_2 : Mctypes.trdrtracksarray;
|
||
|
ifftracks_2 : Mctypes.tifftracksarray;
|
||
|
mergedrdrtracks : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray;
|
||
|
mergedifftracks : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray;
|
||
|
l140 : Mctypes.tmissiontrack^Mctypes.ksizerdrtracksarray at rdr;
|
||
|
l139 : Mctypes.tmissiontrack^Mctypes.ksizeifftracksarray at iff;
|
||
|
missiontracks_2 : Mctypes.tmissiontracksarray;
|
||
|
fused_tracks : Mctypes.tmissiontracksarray at r;
|
||
|
missiontracks_7 : Mctypes.tmissiontracksarray; rdronoffcmd : bool;
|
||
|
rdrmodecmd : bool; missiontracks_8 : Mctypes.tmissiontracksarray;
|
||
|
iffonoffcmd : bool; l4 : Mctypes.trdrtracksarray; l3 : Mctypes.trdrmode;
|
||
|
l6 : Mctypes.tifftracksarray; l5 : Mctypes.tsensorstate; l12 : bool;
|
||
|
l11 : bool; l10 : bool; l172 : Mctypes.tsensorstate;
|
||
|
l179 : Mctypes.ttracksarray; l200 : bool; l201 : bool;
|
||
|
missiontracks : Mctypes.tmissiontracksarray;
|
||
|
let
|
||
|
missiontracks_9 = missiontracks;
|
||
|
l33 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_tracknumberexist
|
||
|
<()>(missiontracks_9, missiontracks_9^Mctypes.ksizemissiontracksarray,
|
||
|
false);
|
||
|
proof3_2 = not(l33);
|
||
|
res_2 = res;
|
||
|
rdronoffclicked_2 = rdronoffclicked;
|
||
|
iffonoffclicked_2 = iffonoffclicked;
|
||
|
onoffcmd_4 = false -> pre l10;
|
||
|
modecmd_3 = false -> pre l11;
|
||
|
failure_3 = false;
|
||
|
rdrdetectedtracks = [0, 1, 2, 3, 4];
|
||
|
tracks_4 = l179;
|
||
|
onoffcmd_2_3 = onoffcmd_4;
|
||
|
failure_2_2 = failure_3;
|
||
|
initializing_2_2 = (&)((=)(st_3_2, Mctypes.TState_OFF), onoffcmd_2_3);
|
||
|
x_2 = false fby false fby false fby false fby false fby onoffcmd_2_3;
|
||
|
st_3_2 =
|
||
|
if failure_2_2
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd_2_3 then x_2 else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
;
|
||
|
modecmd_2 = modecmd_3;
|
||
|
mode_2 =
|
||
|
if modecmd_2 then Mctypes.TRdrMode_NARROW else Mctypes.TRdrMode_WIDE;
|
||
|
st_2_2 = st_4;
|
||
|
tracks_2_2 = tracks_4;
|
||
|
rdrdetectedtracks_2 = rdrdetectedtracks;
|
||
|
rdrtracks_2_2 =
|
||
|
if (=)(st_2_2, Mctypes.TState_ON)
|
||
|
then l30
|
||
|
else Mctypes.kinitrdrtrackarray;
|
||
|
l30 = map<<Mctypes.ksizerdrtracksarray>> elaboraterdrtrack<()>(l22);
|
||
|
l22 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> selectdetectedtrack
|
||
|
<()>(rdrdetectedtracks_2, tracks_2_2^Mctypes.ksizerdrtracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizerdrtracksarray);
|
||
|
rdrtracks_4 = rdrtracks_2_2;
|
||
|
mode = mode_2;
|
||
|
(initializing_3, st_4) = (initializing_2_2, st_3_2);
|
||
|
tracks_3 = l179;
|
||
|
failure = false;
|
||
|
iffdetectedtracks = [1, 2, 3];
|
||
|
onoffcmd_3 = false -> pre l12;
|
||
|
onoffcmd_2_2 = onoffcmd_3;
|
||
|
failure_2 = failure;
|
||
|
initializing_2 = (&)((=)(st_3, Mctypes.TState_OFF), onoffcmd_2_2);
|
||
|
x = false fby false fby false fby false fby false fby onoffcmd_2_2;
|
||
|
st_3 =
|
||
|
if failure_2
|
||
|
then Mctypes.TState_FAIL
|
||
|
else if if onoffcmd_2_2 then x else false
|
||
|
then Mctypes.TState_ON
|
||
|
else Mctypes.TState_OFF
|
||
|
;
|
||
|
st_2 = st;
|
||
|
tracks_2 = tracks_3;
|
||
|
iffdetectedtracks_2 = iffdetectedtracks;
|
||
|
l34 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> selectdetectedtrack
|
||
|
<()>(iffdetectedtracks_2, tracks_2^Mctypes.ksizeifftracksarray,
|
||
|
Mctypes.kinittrack^Mctypes.ksizeifftracksarray);
|
||
|
l40 = map<<Mctypes.ksizeifftracksarray>> ifftrack_of_track<()>(l34);
|
||
|
ifftracks_2_2 =
|
||
|
if (=)(st_2, Mctypes.TState_ON) then l40 else Mctypes.kinitifftrackarray;
|
||
|
ifftracks_4 = ifftracks_2_2;
|
||
|
(initializing, st) = (initializing_2, st_3);
|
||
|
currentrdrstate = l172;
|
||
|
currentrdrmode = l3;
|
||
|
rdrtracks = l4;
|
||
|
rdronoffbutton = rdronoffclicked_2;
|
||
|
rdrmodebutton = false;
|
||
|
iffonoffbutton = iffonoffclicked_2;
|
||
|
currentiffstate = l5;
|
||
|
ifftracks = l6;
|
||
|
rdronoffbutton_2 = rdronoffbutton;
|
||
|
currentrdrstate_3 = currentrdrstate;
|
||
|
onoffbuttonpressed_2 = re_Output_3;
|
||
|
currentstate_3 = currentrdrstate_3;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd_2 = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd_2 = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed_2, (=)(currentstate_3, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input_3 = rdronoffbutton_2;
|
||
|
re_Output_3 = (&)(not(re_Input_3 -> pre re_Input_3), re_Input_3);
|
||
|
rdronoffcmd_2 = onoffcmd_2;
|
||
|
currentrdrstate_2 = currentrdrstate;
|
||
|
rdrmodebutton_2 = rdrmodebutton;
|
||
|
currentrdrmode_2 = currentrdrmode;
|
||
|
currentstate_2 = currentrdrstate_2;
|
||
|
modebuttonpressed = re_Output_2;
|
||
|
currentmode = currentrdrmode_2;
|
||
|
automaton
|
||
|
state Wide
|
||
|
do
|
||
|
modecmd = false
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_WIDE)))
|
||
|
then Narrow
|
||
|
state Narrow
|
||
|
do
|
||
|
modecmd = true
|
||
|
unless
|
||
|
| (&)
|
||
|
(modebuttonpressed,
|
||
|
(&)
|
||
|
((=)(currentstate_2, Mctypes.TState_ON),
|
||
|
(=)(currentmode, Mctypes.TRdrMode_NARROW)))
|
||
|
then Wide
|
||
|
end;
|
||
|
re_Input_2 = rdrmodebutton_2;
|
||
|
re_Output_2 = (&)(not(re_Input_2 -> pre re_Input_2), re_Input_2);
|
||
|
rdrmodecmd_2 = modecmd;
|
||
|
iffonoffbutton_2 = iffonoffbutton;
|
||
|
currentiffstate_2 = currentiffstate;
|
||
|
onoffbuttonpressed = re_Output;
|
||
|
currentstate = currentiffstate_2;
|
||
|
automaton
|
||
|
state Off
|
||
|
do
|
||
|
onoffcmd = false
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_OFF)) then On
|
||
|
state On
|
||
|
do
|
||
|
onoffcmd = true
|
||
|
unless
|
||
|
| (&)(onoffbuttonpressed, (=)(currentstate, Mctypes.TState_ON)) then Off
|
||
|
end;
|
||
|
re_Input = iffonoffbutton_2;
|
||
|
re_Output = (&)(not(re_Input -> pre re_Input), re_Input);
|
||
|
iffonoffcmd_2 = onoffcmd;
|
||
|
rdrtracks_3 = rdrtracks;
|
||
|
ifftracks_3 = ifftracks;
|
||
|
missiontracks_6 = withtracknumber;
|
||
|
missiontracks_5 = missiontracks_6;
|
||
|
prioritiesarray_4 = newprioritiesarray_3;
|
||
|
indexpriority_4 = 3;
|
||
|
newprioritiesarray_4 =
|
||
|
[prioritiesarray_4 with [indexpriority_4] =
|
||
|
missiontrackwithhighestpriority_4.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_4 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_4 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_5,
|
||
|
prioritiesarray_4^Mctypes.ksizemissiontracksarray, initmtrack_4);
|
||
|
missiontracks_4 = missiontracks_6;
|
||
|
prioritiesarray_3 = newprioritiesarray_2;
|
||
|
indexpriority_3 = 2;
|
||
|
newprioritiesarray_3 =
|
||
|
[prioritiesarray_3 with [indexpriority_3] =
|
||
|
missiontrackwithhighestpriority_3.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_3 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_3 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_4,
|
||
|
prioritiesarray_3^Mctypes.ksizemissiontracksarray, initmtrack_3);
|
||
|
missiontracks_3 = missiontracks_6;
|
||
|
prioritiesarray_2 = newprioritiesarray;
|
||
|
indexpriority_2 = 1;
|
||
|
newprioritiesarray_2 =
|
||
|
[prioritiesarray_2 with [indexpriority_2] =
|
||
|
missiontrackwithhighestpriority_2.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack_2 = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority_2 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_3,
|
||
|
prioritiesarray_2^Mctypes.ksizemissiontracksarray, initmtrack_2);
|
||
|
missiontracks_2_2 = missiontracks_6;
|
||
|
prioritiesarray = initprio;
|
||
|
indexpriority = 0;
|
||
|
newprioritiesarray =
|
||
|
[prioritiesarray with [indexpriority] =
|
||
|
missiontrackwithhighestpriority.Mctypes.m_tracknumber];
|
||
|
init<<r>> initmtrack = Mctypes.kinitmissiontrack;
|
||
|
missiontrackwithhighestpriority =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> prio_selecthighestprioritynotinpriorityarray
|
||
|
<()>(missiontracks_2_2,
|
||
|
prioritiesarray^Mctypes.ksizemissiontracksarray, initmtrack);
|
||
|
missiontrackswithprio =
|
||
|
map<<Mctypes.ksizemissiontracksarray>> prio_setpriorityinmissiontrackarray
|
||
|
<(prioritytracknumbers)>(missiontracks_6);
|
||
|
init<<prio>> initprio = 0^4;
|
||
|
prioritytracknumbers = newprioritiesarray_4;
|
||
|
withouttracknb = fused_tracks;
|
||
|
(withtracknumber, l81) =
|
||
|
mapfold<<Mctypes.ksizemissiontracksarray>> calculatemissiontracknumber
|
||
|
<(Mctypes.kinitmissiontrackarray -> pre withtracknumber)>(withouttracknb,
|
||
|
0 -> pre l81);
|
||
|
rdrtracks_2 = rdrtracks_3;
|
||
|
ifftracks_2 = ifftracks_3;
|
||
|
missiontracks_2 = mergedrdrtracks @ mergedifftracks;
|
||
|
(mergedrdrtracks, mergedifftracks) =
|
||
|
mapfold<<Mctypes.ksizerdrtracksarray>> mc_tracks_fusion_onerdrwithifftracks
|
||
|
<()>(l140, l139);
|
||
|
init<<rdr>> l140 =
|
||
|
map<<Mctypes.ksizerdrtracksarray>> convertrdrtracktomissiontrack
|
||
|
<()>(rdrtracks_2);
|
||
|
init<<iff>> l139 =
|
||
|
map<<Mctypes.ksizeifftracksarray>> convertifftracktomissiontrack
|
||
|
<()>(ifftracks_2);
|
||
|
init<<r>> fused_tracks = missiontracks_2;
|
||
|
missiontracks_7 = missiontrackswithprio;
|
||
|
missiontracks_8 = missiontracks_7;
|
||
|
iffonoffcmd = iffonoffcmd_2;
|
||
|
rdrmodecmd = rdrmodecmd_2;
|
||
|
rdronoffcmd = rdronoffcmd_2;
|
||
|
l179 = createalltracks(res_2);
|
||
|
(l10, l11, missiontracks, l12) =
|
||
|
(rdronoffcmd, rdrmodecmd, missiontracks_8, iffonoffcmd);
|
||
|
(l5, l6, l200) = (st, ifftracks_4, initializing);
|
||
|
(l201, l172, l3, l4) = (initializing_3, st_4, mode, rdrtracks_4);
|
||
|
proof3 = proof3_2
|
||
|
tel
|
||
|
|
||
|
node dv_debug(missiontracks : Mctypes.tmissiontracksarray)
|
||
|
returns (proof3 : bool)
|
||
|
var missiontracks_2 : Mctypes.tmissiontracksarray; l33 : bool;
|
||
|
proof3_2 : bool;
|
||
|
let
|
||
|
missiontracks_2 = missiontracks;
|
||
|
l33 =
|
||
|
fold<<Mctypes.ksizemissiontracksarray>> dv_tracknumberexist
|
||
|
<()>(missiontracks_2, missiontracks_2^Mctypes.ksizemissiontracksarray,
|
||
|
false);
|
||
|
proof3_2 = not(l33);
|
||
|
proof3 = proof3_2
|
||
|
tel
|
||
|
*)
|