producer_consumer.aadl 4.67 KB
Newer Older
1
2
3
package Producer::Consumer
public
  with Deployment, Software;
4
5
  with ocarina_drivers;
  with ocarina_buses;
yoogx's avatar
yoogx committed
6
7
  with ocarina_drivers_grspw_packet;
  
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  ---------------
  -- Processor --
  ---------------

  processor the_processor
  properties
    Deployment::Execution_Platform => Native;
  end the_processor;

  processor implementation the_processor.i
  end the_processor.i;

  ---------------
  -- Processes --
  ---------------

  process A
  features
    Alpha : out data port Software::Alpha_Type;
    Beta  : in data port Software::Alpha_Type;
  end A;

  process implementation A.Impl
  subcomponents
    Producer        : thread Software::P.Impl;
    Result_Consumer : thread Software::Q.Impl;
  connections
    port Producer.Data_Source -> Alpha;
    port Beta -> Result_Consumer.Data_Sink;
  end A.Impl;

  process B
  features
    Alpha : out data port Software::Alpha_Type;
    Beta  : in data port Software::Alpha_Type;
  end B;

  process implementation B.Impl
  subcomponents
    Consumer        : thread Software::Q.Impl;
    Result_Producer : thread Software::P.Impl;
  connections
    port Beta -> Consumer.Data_Sink;
    port Result_Producer.Data_Source -> Alpha;
  end B.Impl;

  process singleProcess
  end singleProcess;

  process implementation singleProcess.Impl
  subcomponents
    ProducerA        : thread Software::P.Impl;
    Result_ConsumerA : thread Software::Q.Impl;
    ConsumerB        : thread Software::Q.Impl;
    Result_ProducerB : thread Software::P.Impl;
  connections
    port ProducerA.Data_Source -> ConsumerB.Data_Sink;
    port Result_ProducerB.Data_Source -> Result_ConsumerA.Data_Sink;
  end singleProcess.Impl;

  ------------
  -- System --
  ------------

  system PC_Simple
  end PC_Simple;

  system implementation PC_Simple.Impl
  subcomponents
    pr_A : process A.Impl {Deployment::port_number => 4001;};
    pr_B : process B.Impl {Deployment::port_number => 4002;};
    Device_A : device ocarina_drivers::generic_sockets_ip.pohic
    {Source_Text => ("devicesconf.c");};
    Device_B : device ocarina_drivers::generic_sockets_ip.pohic
    {Source_Text => ("devicesconf.c");};
    CPU_A : processor the_processor.i;
    CPU_B : processor the_processor.i;
    the_bus : bus ocarina_buses::ip.i;
  connections
    bus access the_bus -> Device_A.link;
    bus access the_bus -> Device_B.link;

    port pr_A.Alpha -> pr_B.Beta
91
    {Actual_Connection_Binding => (reference (the_bus));};
92
    port pr_B.Alpha -> pr_A.Beta
93
    {Actual_Connection_Binding => (reference (the_bus));};
94
  properties
yoogx's avatar
yoogx committed
95
96
    actual_processor_binding => (reference (CPU_A)) applies to pr_A;
    actual_processor_binding => (reference (CPU_B)) applies to pr_B;
97
98
99
100
    actual_processor_binding => (reference (CPU_A)) applies to Device_A;
    actual_processor_binding => (reference (CPU_B)) applies to Device_B;
  end PC_Simple.Impl;

101
102
103
104
105
106
107
108
109
110
111
112
113
  system implementation PC_Simple.Loopback
  subcomponents
    pr_A : process A.Impl {Deployment::port_number => 4001;};
    Device_A : device ocarina_drivers::generic_sockets_ip.pohic
    {Source_Text => ("devicesconf.c");};
    CPU_A : processor the_processor.i;
    the_bus : bus ocarina_buses::ip.i;
  connections
    bus access the_bus -> Device_A.link;

    port pr_A.Alpha -> pr_A.Beta
    {Actual_Connection_Binding => (reference (the_bus));};
  properties
yoogx's avatar
yoogx committed
114
    actual_processor_binding => (reference (CPU_A)) applies to pr_A;
115
116
117
    actual_processor_binding => (reference (CPU_A)) applies to Device_A;
  end PC_Simple.Loopback;

yoogx's avatar
yoogx committed
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
  system implementation PC_Simple.Loopback_Spw
  subcomponents
    pr_A : process A.Impl {Deployment::port_number => 4001;};
    Device_A : device ocarina_drivers::rasta_spacewire.grspw_pohic
    {Source_Text => ("devicesconf.c");};
    CPU_A : processor the_processor.i;
    the_bus : bus ocarina_buses::spacewire.generic;
  connections
    bus access the_bus -> Device_A.link;

    port pr_A.Alpha -> pr_A.Beta
    {Actual_Connection_Binding => (reference (the_bus));};
  properties
    actual_processor_binding => (reference (CPU_A)) applies to pr_A;
    actual_processor_binding => (reference (CPU_A)) applies to Device_A;
  end PC_Simple.Loopback_Spw;

135
136
137
138
139
  system implementation PC_Simple.local
  subcomponents
    prodr_cons : process singleProcess.Impl;
    CPU_A : processor the_processor.i;
  properties
yoogx's avatar
yoogx committed
140
    actual_processor_binding => (reference (CPU_A)) applies to prodr_cons;
141
142
143
144
145
146
147
148
149
150
151
152
153
  end PC_Simple.local;

  system implementation PC_Simple.Xenomai
  extends PC_Simple.local
  properties
    Deployment::Execution_Platform => linux32_xenomai_native applies to CPU_A;
  end PC_Simple.Xenomai;

  system implementation PC_Simple.RTEMS
  extends PC_Simple.local
  properties
    Deployment::Execution_platform => LEON_RTEMS applies to CPU_A ;
  end PC_Simple.RTEMS;
154
155

end Producer::Consumer;