diff --git a/basic/test_data_port_periodic_three_domains_CASE/aadl/.gitignore b/basic/test_data_port_periodic_three_domains_CASE/aadl/.gitignore
new file mode 100644
index 0000000..11d04b4
--- /dev/null
+++ b/basic/test_data_port_periodic_three_domains_CASE/aadl/.gitignore
@@ -0,0 +1 @@
+/.aadlbin-gen/
diff --git a/basic/test_data_port_periodic_three_domains_CASE/aadl/.project b/basic/test_data_port_periodic_three_domains_CASE/aadl/.project
new file mode 100644
index 0000000..6464b53
--- /dev/null
+++ b/basic/test_data_port_periodic_three_domains_CASE/aadl/.project
@@ -0,0 +1,18 @@
+
+
+ test_data_port_periodic_three_domains_CASE
+
+
+
+
+
+ org.eclipse.xtext.ui.shared.xtextBuilder
+
+
+
+
+
+ org.osate.core.aadlnature
+ org.eclipse.xtext.ui.shared.xtextNature
+
+
diff --git a/basic/test_data_port_periodic_three_domains_CASE/aadl/behavior_code/T1.c b/basic/test_data_port_periodic_three_domains_CASE/aadl/behavior_code/T1.c
new file mode 100644
index 0000000..1d244d7
--- /dev/null
+++ b/basic/test_data_port_periodic_three_domains_CASE/aadl/behavior_code/T1.c
@@ -0,0 +1,21 @@
+#include
+#include
+#include
+#include
+
+static int8_t _value;
+
+void init(const int64_t *in_arg) {
+ printf("[%s] called\n", get_instance_name());
+ _value = 0;
+}
+
+void compute(const int64_t *in_arg) {
+ printf("---------------------------------------\n");
+ if (sb_write_port_write( &_value )) {
+ printf("[%s] Sent %d\n", get_instance_name(), _value);
+ _value = (_value + 1) % 500;
+ } else {
+ printf("[%s] Unable to send\n", get_instance_name());
+ }
+}
\ No newline at end of file
diff --git a/basic/test_data_port_periodic_three_domains_CASE/aadl/behavior_code/T2.c b/basic/test_data_port_periodic_three_domains_CASE/aadl/behavior_code/T2.c
new file mode 100644
index 0000000..d05ff54
--- /dev/null
+++ b/basic/test_data_port_periodic_three_domains_CASE/aadl/behavior_code/T2.c
@@ -0,0 +1,24 @@
+#include
+#include
+#include
+#include
+
+void init(const int64_t *in_arg) {
+ printf("[%s] init called\n", get_instance_name());
+}
+
+void compute(const int64_t * in_arg) {
+ int8_t _value;
+
+ if (sb_read_port_read(&value)) {
+ printf("[%s] value {%d}\n", get_instance_name(), value);
+
+ if (sb_write_port_write( &_value )) {
+ printf("[%s] Sent %d\n", get_instance_name(), _value);
+ } else {
+ printf("[%s] Unable to send\n", get_instance_name());
+ }
+ } else {
+ printf("[%s] no value consumed.\n", get_instance_name());
+ }
+}
\ No newline at end of file
diff --git a/basic/test_data_port_periodic_three_domains_CASE/aadl/domain_schedule.c b/basic/test_data_port_periodic_three_domains_CASE/aadl/domain_schedule.c
new file mode 100644
index 0000000..7bd5e2f
--- /dev/null
+++ b/basic/test_data_port_periodic_three_domains_CASE/aadl/domain_schedule.c
@@ -0,0 +1,41 @@
+// Copyright 2020 Adventium Labs
+
+// This is a kernel data structure.
+
+#include
+#include