Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
OpenGEODE
Commits
0a732acc
Commit
0a732acc
authored
Nov 17, 2014
by
Maxime Perrotin
Browse files
Add body of the callback registration function (Ada)
parent
46c55074
Changes
4
Hide whitespace changes
Inline
Side-by-side
AdaGenerator.py
View file @
0a732acc
...
...
@@ -125,9 +125,9 @@ def _process(process, simu=False, **kwargs):
res
.
append
(
'FEATURES'
)
for
param_name
,
sort
,
direction
in
io_param
:
res
.
append
(
' {pname}: {io} PARAMETER DataView::{sort} '
'{encoding=>Native;};'
.
format
(
pname
=
param_name
,
sort
=
sort
,
io
=
direction
))
'{
{
encoding=>Native;}
}
;'
.
format
(
pname
=
param_name
,
sort
=
sort
,
io
=
direction
))
res
.
append
(
'END {};
\n
'
.
format
(
sp_name
))
res
.
append
(
'SUBPROGRAM IMPLEMENTATION {}.GUI_{}'
.
format
(
sp_name
,
pi_or_ri
))
...
...
@@ -320,7 +320,8 @@ package {process_name} is'''.format(process_name=process_name,
# output signals are the asynchronous RI - only one parameter
for
signal
in
process
.
output_signals
:
param_name
=
signal
.
get
(
'param_name'
)
or
'MISSING_PARAM_NAME'
param_name
=
signal
.
get
(
'param_name'
)
\
or
u
'{}_param'
.
format
(
signal
[
'name'
])
# Add (optional) RI parameter
param_spec
=
''
if
'type'
in
signal
:
...
...
@@ -346,6 +347,13 @@ package {process_name} is'''.format(process_name=process_name,
'IN'
)]
if
'type'
in
signal
else
[]
minicv
.
append
(
aadl_template
(
signal
[
'name'
],
params
,
'RI'
))
taste_template
.
append
(
'procedure Register_{sig}'
'(Callback:{sig}_T) is'
.
format
(
sig
=
signal
[
'name'
]))
taste_template
.
append
(
'begin'
)
taste_template
.
append
(
'{} := Callback;'
.
format
(
signal
[
'name'
]))
taste_template
.
append
(
'end Register_{};'
.
format
(
signal
[
'name'
]))
taste_template
.
append
(
''
)
else
:
ads_template
.
append
(
u
'procedure {}{};'
.
format
(
signal
[
'name'
],
param_spec
))
...
...
tests/regression/test-debug/Makefile
View file @
0a732acc
...
...
@@ -15,7 +15,10 @@ test-ada: orchestrator.ali dataview-uniq.o | test_ada.o
test-llvm
:
orchestrator.o
test-python
:
orchestrator.ali
test-python
:
$(OPENGEODE)
orchestrator.pr system_structure.pr
--shared
$(ASN1SCC)
-Ada
dataview-uniq.asn
-typePrefix
asn1Scc
-equal
$(GNATMAKE)
-O
$(O)
-c
*
.adb
$(GNATBIND)
-n
-Llibrorchestrator
orchestrator
$(GNATMAKE)
-c
b~orchestrator.adb
$(CC)
-shared
-o
liborchestrator.so b~orchestrator.o orchestrator.o taste_basictypes.o adaasn1rtl.o
-lgnat
...
...
tests/regression/test-debug/orchestrator.pr
View file @
0a732acc
...
...
@@ -2,7 +2,7 @@
PROCESS orchestrator
/* CIF COMMENT (405, 192), (71, 35) */
COMMENT 'Hello';
/* CIF TEXT (
39
, 94), (398, 293) */
/* CIF TEXT (
0
, 94), (398, 293) */
dcl seq tastE_Peek_id_list;
dcl fixed FixedString := 'Hello';
...
...
@@ -23,7 +23,10 @@ dcl choice Mychoice;
dcl opt SeqOpt := { A TRUE, b FALSE }; -- test optional fields
/* CIF ENDTEXT */
/* CIF PROCEDURE (760, 371), (91, 35) */
/* CIF PROCEDURE (1273, 175), (106, 35) */
PROCEDURE emptyproc;
ENDPROCEDURE;
/* CIF PROCEDURE (1306, 371), (91, 35) */
PROCEDURE numProc;
/* CIF START (161, 82), (70, 35) */
START;
...
...
@@ -34,124 +37,127 @@ dcl opt SeqOpt := { A TRUE, b FALSE }; -- test optional fields
ENDDECISION;
/* CIF DECISION (135, 240), (122, 50) */
DECISION num(myenum);
/* CIF ANSWER (163, 2
80
), (70, 23) */
/* CIF ANSWER (163, 2
65
), (70, 23) */
else:
ENDDECISION;
/* CIF RETURN (178, 3
18
), (35, 35) */
/* CIF RETURN (178, 3
03
), (35, 35) */
RETURN ;
ENDPROCEDURE;
/* CIF PROCEDURE (727, 175), (106, 35) */
PROCEDURE emptyproc;
ENDPROCEDURE;
/* CIF START (502, 224), (80, 36) */
/* CIF START (596, 224), (80, 36) */
START;
/* CIF TASK (
470
, 275), (144, 35) */
/* CIF TASK (
564
, 275), (144, 35) */
TASK opt := { B TRUE }
/* CIF COMMENT (
634
, 275), (155, 35) */
/* CIF COMMENT (
728
, 275), (155, 35) */
COMMENT 'Test optional fields';
/* CIF DECISION (
481
, 325), (122, 50) */
/* CIF DECISION (
575
, 325), (122, 50) */
DECISION num(myenum);
/* CIF ANSWER (
462
, 395), (70, 23) */
/* CIF ANSWER (
556
, 395), (70, 23) */
(0):
/* CIF ANSWER (
553
, 395), (70, 23) */
/* CIF ANSWER (
647
, 395), (70, 23) */
else:
ENDDECISION;
/* CIF DECISION (
481
, 433), (122, 50) */
/* CIF DECISION (
575
, 433), (122, 50) */
DECISION num(myenum);
/* CIF ANSWER (
460, 47
3), (70, 23) */
/* CIF ANSWER (
547, 50
3), (70, 23) */
(0):
/* CIF ANSWER (
550, 47
3), (70, 23) */
/* CIF ANSWER (
644, 50
3), (70, 23) */
else:
ENDDECISION;
/* CIF DECISION (
492
, 5
1
1), (99, 50) */
/* CIF DECISION (
586
, 5
4
1), (99, 50) */
DECISION 'informal'
/* CIF COMMENT (
611, 473
), (179, 53) */
/* CIF COMMENT (
716, 536
), (179, 53) */
COMMENT 'Informal decision -
check that it is ignored
by the code generator';
/* CIF ANSWER (
462, 55
1), (70, 33) */
/* CIF ANSWER (
543, 61
1), (70, 33) */
('a'):
/* CIF ANSWER (
550, 55
1), (70, 33) */
/* CIF ANSWER (
647, 61
1), (70, 33) */
('2'):
ENDDECISION;
/* CIF TASK (
430, 59
9), (223, 38) */
/* CIF TASK (
524, 65
9), (223, 38) */
TASK seqboolean := {true, false},
seqboolean := not {true, false};
/* CIF TASK (
438, 65
2), (208, 83) */
/* CIF TASK (
532, 71
2), (208, 83) */
TASK for x in seqen:
call writeln(num(x));
call writeln(num(myenum));
call writeln(num(myenum));
endfor
/* CIF COMMENT (
666, 67
6), (174, 38) */
/* CIF COMMENT (
760, 73
6), (174, 38) */
COMMENT 'Check that num is not
declared twice';
/* CIF TASK (
460, 75
0), (164, 53) */
/* CIF TASK (
554, 81
0), (164, 53) */
TASK for x in seqen2:
call writeln(num(x));
endfor;
/* CIF TASK (
461
, 8
1
8), (162, 53) */
/* CIF TASK (
555
, 8
7
8), (162, 53) */
TASK for x in seqboolean:
call writeln(x);
endfor
/* CIF COMMENT (
643
, 8
2
7), (168, 38) */
/* CIF COMMENT (
737
, 8
8
7), (168, 38) */
COMMENT 'FOR with a basic type';
/* CIF TASK (
431, 88
6), (222, 35) */
/* CIF TASK (
525, 94
6), (222, 35) */
TASK seqboolean := not seqboolean
/* CIF COMMENT (67
3
,
88
6), (279, 35) */
/* CIF COMMENT (
7
67,
94
6), (279, 35) */
COMMENT 'check NOT on a SEQUENCE of BOOLEAN';
/* CIF TASK (
461
, 9
3
6), (162, 53) */
/* CIF TASK (
555
, 9
9
6), (162, 53) */
TASK for x in seqboolean:
call writeln(x);
endfor;
/* CIF TASK (
479
, 10
0
4), (126, 38) */
/* CIF TASK (
573
, 10
6
4), (126, 38) */
TASK fixed := 'hello';
/* CIF TASK (
467
, 1
05
7), (149, 35) */
/* CIF TASK (
561
, 1
11
7), (149, 35) */
TASK variable := 'HELLO';
/* CIF PROCEDURECALL (
4
54, 11
0
7), (176, 35) */
/* CIF PROCEDURECALL (54
8
, 11
6
7), (176, 35) */
CALL writeln(variable // '!!!');
/* CIF PROCEDURECALL (
406
, 11
5
7), (272, 35) */
/* CIF PROCEDURECALL (
500
, 1
2
17), (272, 35) */
CALL writeln(variable // variable // variable);
/* CIF TASK (
496
, 12
0
7), (91, 35) */
/* CIF TASK (
590
, 12
6
7), (91, 35) */
TASK seq := {1};
/* CIF TASK (
465
, 1
25
7), (153, 35) */
/* CIF TASK (
559
, 1
31
7), (153, 35) */
TASK seq := {1} // {2} // {3};
/* CIF TASK (
456
, 13
0
7), (172, 35) */
/* CIF TASK (
550
, 13
6
7), (172, 35) */
TASK seq := seq // {2} // {1};
/* CIF DECISION (
507
, 1
35
7), (70, 50) */
/* CIF DECISION (
601
, 1
41
7), (70, 50) */
DECISION any;
/* CIF ANSWER (
462
, 14
2
7), (70, 23) */
/* CIF ANSWER (
556
, 14
8
7), (70, 23) */
('a'):
/* CIF ANSWER (
552
, 14
2
7), (70, 23) */
/* CIF ANSWER (
646
, 14
8
7), (70, 23) */
('b'):
ENDDECISION;
/* CIF DECISION (
497
, 1
46
5), (89, 50) */
/* CIF DECISION (
591
, 1
52
5), (89, 50) */
DECISION myenum
/* CIF COMMENT (
606
, 1
47
2), (183, 35) */
/* CIF COMMENT (
700
, 1
53
2), (183, 35) */
COMMENT 'Check case insensitivity';
/* CIF ANSWER (
314
, 15
3
5), (70, 23) */
/* CIF ANSWER (
408
, 15
9
5), (70, 23) */
(a):
/* CIF ANSWER (
394
, 15
3
5), (70, 23) */
/* CIF ANSWER (
488
, 15
9
5), (70, 23) */
(B):
/* CIF ANSWER (
474
, 15
3
5), (70, 23) */
/* CIF ANSWER (
568
, 15
9
5), (70, 23) */
(c):
/* CIF ANSWER (
552
, 15
3
5), (70, 23) */
/* CIF ANSWER (
646
, 15
9
5), (70, 23) */
(d):
/* CIF ANSWER (
640
, 15
3
5), (70, 23) */
/* CIF ANSWER (
734
, 15
9
5), (70, 23) */
(Ee):
ENDDECISION;
/* CIF DECISION (
473
, 1
57
3), (138, 50) */
/* CIF DECISION (
567
, 1
63
3), (138, 50) */
DECISION present(choice)
/* CIF COMMENT (
630
, 1
58
0), (183, 35) */
/* CIF COMMENT (
724
, 1
64
0), (183, 35) */
COMMENT 'Check case insensitivity';
/* CIF ANSWER (
425
, 1
64
3), (70, 23) */
/* CIF ANSWER (
519
, 1
70
3), (70, 23) */
(cde2):
/* CIF ANSWER (
596
, 1
64
3), (70, 23) */
/* CIF ANSWER (
690
, 1
70
3), (70, 23) */
ELSE:
ENDDECISION;
/* CIF NEXTSTATE (
483
, 1
68
1), (116, 33) */
/* CIF NEXTSTATE (
577
, 1
74
1), (116, 33) */
NEXTSTATE Wait_for_GUI;
/* CIF STATE (
438
, 1
63
), (116, 33) */
/* CIF STATE (
1063
, 1
19
), (116, 33) */
STATE Wait_for_GUI;
/* CIF INPUT (1056, 172), (130, 35) */
INPUT pulse(myenum);
/* CIF OUTPUT (1041, 222), (160, 35) */
OUTPUT telemetry(myenum);
/* CIF NEXTSTATE (1086, 272), (70, 35) */
NEXTSTATE -;
ENDSTATE;
ENDPROCESS orchestrator;
\ No newline at end of file
tests/regression/test-debug/system_structure.pr
View file @
0a732acc
...
...
@@ -2,9 +2,9 @@
USE Datamodel;
SYSTEM orchestrator;
SIGNAL pulse;
SIGNAL pulse
(myenum)
;
SIGNAL telemetry;
SIGNAL telemetry
(myenum)
;
CHANNEL c
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment