Skip to content

Commit 0b645c2

Browse files
authored
Add Topology Ports in FPP (nasa#4805)
* Add topology port tests * Rename ref topology * Fix some includes * Bump to next alpha * Don't rename topology * Oops typo
1 parent eb49cdf commit 0b645c2

10 files changed

Lines changed: 210 additions & 108 deletions

File tree

FppTestProject/FppTest/topology/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/components")
2+
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/top_ports")
23
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/ports")
34
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/async")
45
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/sync")

FppTestProject/FppTest/topology/main/main.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ TEST_F(SenderTester, StructReturn) {
182182
sender2Guarded.testStructReturn(TestDeploymentPort::STRUCT_RETURN_GUARDED);
183183
}
184184

185+
TEST_F(SenderTester, SenderTop) {
186+
sender1Top.testPrimitiveArgs(TestDeploymentPort::PRIMITIVE_ARGS_SYNC);
187+
sender2Top.testPrimitiveArgs(TestDeploymentPort::PRIMITIVE_ARGS_SYNC);
188+
}
189+
185190
TEST_F(SenderTester, IsReceiverConnected) {
186191
ReceiverTester::testIsConnected();
187192
}

FppTestProject/FppTest/topology/main/topology.fpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ module FppTest {
77

88
topology FppTest {
99

10-
import Sync
11-
import Guarded
12-
import Async
10+
instance Sync
11+
instance Guarded
12+
instance Async
13+
instance TopPorts
14+
1315
}
1416

1517
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
set(SOURCE_FILES
2+
"${CMAKE_CURRENT_LIST_DIR}/Topology.fpp"
3+
)
4+
5+
set(MOD_DEPS
6+
${PROJECT_NAME}/topology/components/Sender
7+
${PROJECT_NAME}/topology/components/Receiver
8+
)
9+
10+
register_fprime_module()
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef ReceiverTopTopologyDefs_HPP
2+
#define ReceiverTopTopologyDefs_HPP
3+
4+
namespace FppTest {
5+
6+
struct TopologyState {};
7+
8+
} // namespace FppTest
9+
10+
#endif
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef SenderTopTopologyDefs_HPP
2+
#define SenderTopTopologyDefs_HPP
3+
4+
namespace FppTest {
5+
6+
struct TopologyState {};
7+
8+
} // namespace FppTest
9+
10+
#endif
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef TopPortsTopologyDefs_HPP
2+
#define TopPortsTopologyDefs_HPP
3+
4+
namespace FppTest {
5+
6+
struct TopologyState {};
7+
8+
} // namespace FppTest
9+
10+
#endif
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
module FppTest {
2+
3+
instance sender1Top: Sender base id 0x2010 queue size 1
4+
instance sender2Top: Sender base id 0x2020 queue size 1
5+
6+
instance receiver1Top: Receiver base id 0x2100 \
7+
queue size Default.QUEUE_SIZE \
8+
stack size Default.STACK_SIZE \
9+
priority 20
10+
11+
instance receiver2Top: Receiver base id 0x2200 \
12+
queue size Default.QUEUE_SIZE \
13+
stack size Default.STACK_SIZE \
14+
priority 20
15+
16+
topology SenderTop {
17+
instance sender1Top
18+
instance sender2Top
19+
20+
port primitiveArgsOut1 = sender1Top.primitiveArgsOut
21+
port primitiveArgsOut2 = sender2Top.primitiveArgsOut
22+
23+
port replyIn1 = sender1Top.replyIn
24+
port replyIn2 = sender2Top.replyIn
25+
}
26+
27+
topology ReceiverTop {
28+
instance receiver1Top
29+
instance receiver2Top
30+
31+
port primitiveArgsSync1 = receiver1Top.primitiveArgsSync
32+
port primitiveArgsSync2 = receiver2Top.primitiveArgsSync
33+
34+
port replyOut1 = receiver1Top.replyOut
35+
port replyOut2 = receiver2Top.replyOut
36+
}
37+
38+
topology TopPorts {
39+
instance SenderTop
40+
instance ReceiverTop
41+
42+
connections Top2Top {
43+
SenderTop.primitiveArgsOut1[0] -> ReceiverTop.primitiveArgsSync1[0]
44+
SenderTop.primitiveArgsOut1[1] -> ReceiverTop.primitiveArgsSync1[1]
45+
46+
SenderTop.primitiveArgsOut2[0] -> ReceiverTop.primitiveArgsSync2[0]
47+
SenderTop.primitiveArgsOut2[1] -> ReceiverTop.primitiveArgsSync2[1]
48+
49+
ReceiverTop.replyOut1[SenderId.SYNC] -> SenderTop.replyIn1
50+
ReceiverTop.replyOut2[SenderId.SYNC] -> SenderTop.replyIn2
51+
}
52+
}
53+
54+
}

0 commit comments

Comments
 (0)