From b58ec64a64d7dfaaad177cf888f4d7fdac582c4f Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 15 Jan 2025 10:26:38 -0700 Subject: [PATCH 01/28] Add CommunicationType Properties and Types --- .../property/CommunicationTypeProperty.java | 44 ++++++++++++++++ .../property/type/CommunicationTypeType.java | 52 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java create mode 100644 core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java diff --git a/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java b/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java new file mode 100644 index 0000000000..d997972842 --- /dev/null +++ b/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java @@ -0,0 +1,44 @@ +package org.lflang.target.property; + +import org.lflang.MessageReporter; +import org.lflang.ast.ASTUtils; +import org.lflang.lf.Element; +import org.lflang.target.property.type.CommunicationTypeType; +import org.lflang.target.property.type.CommunicationTypeType.CommunicationType; + +/** Directive to specify the target communication type such as 'TCP', 'SST', or 'MQTT'. */ +public final class CommunicationTypeProperty + extends TargetProperty { + + /** Singleton target property instance. */ + public static final CommunicationTypeProperty INSTANCE = new CommunicationTypeProperty(); + + private CommunicationTypeProperty() { + super(new CommunicationTypeType()); + } + + @Override + public Element toAstElement(CommunicationType value) { + return ASTUtils.toElement(value.toString()); + } + + @Override + public CommunicationType initialValue() { + return CommunicationType.TCP; + } + + @Override + public CommunicationType fromAst(Element node, MessageReporter reporter) { + return fromString(ASTUtils.elementToSingleString(node), reporter); + } + + @Override + protected CommunicationType fromString(String string, MessageReporter reporter) { + return this.type.forName(string); + } + + @Override + public String name() { + return "comm-type"; + } +} \ No newline at end of file diff --git a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java b/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java new file mode 100644 index 0000000000..f8260347e9 --- /dev/null +++ b/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java @@ -0,0 +1,52 @@ +package org.lflang.target.property.type; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import org.lflang.target.property.type.CommunicationTypeType.CommunicationType; + +/** Enumeration of communication types */ +public class CommunicationTypeType extends OptionsType { + + @Override + protected Class enumClass() { + return CommunicationType.class; + } + + /** + * Enumeration of communication types. + * + *
    + *
  • TCP: Communications occur through TCP servers/clients. + *
  • SST: Communications occur through SST modules. + *
  • MQTT: Communications occur through a broker and pub/sub methods. + *
+ */ + public enum CommunicationType { + TCP("TCP"), + SST("SST"), + MQTT("MQTT"); + + /** Alias used in toString method. */ + private final String alias; + + /** Private constructor for Cmake build types. */ + CommunicationType(String alias) { + this.alias = alias; + } + + /** Return the alias. */ + @Override + public String toString() { + return this.alias; + } + + public static List optionsList() { + return Arrays.stream(CommunicationType.values()).collect(Collectors.toList()); + } + + public static CommunicationType getDefault() { + return CommunicationType.TCP; + } + } +} \ No newline at end of file From 1064f2728cae68f1cc65469e000b2028f0aa56c1 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 15 Jan 2025 10:26:58 -0700 Subject: [PATCH 02/28] Enable build on federate. --- .../org/lflang/federated/extensions/CExtension.java | 12 ++++++------ .../lflang/federated/extensions/CExtensionUtils.java | 7 ++++++- .../java/org/lflang/generator/c/CCmakeGenerator.java | 5 +++++ .../main/java/org/lflang/generator/c/CGenerator.java | 2 +- .../org/lflang/generator/c/CPreambleGenerator.java | 2 +- core/src/main/java/org/lflang/target/Target.java | 1 + 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index 12edb2e693..07e43ec4e9 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -518,9 +518,9 @@ public String generatePreamble( extern "C" { #endif"""); includes.pr("#include \"core/federated/federate.h\""); - includes.pr("#include \"core/federated/network/net_common.h\""); - includes.pr("#include \"core/federated/network/net_util.h\""); - includes.pr("#include \"core/federated/network/socket_common.h\""); + includes.pr("#include \"network/api/net_driver.h\""); + includes.pr("#include \"network/api/net_common.h\""); + includes.pr("#include \"network/api/net_util.h\""); includes.pr("#include \"core/federated/clock-sync.h\""); includes.pr("#include \"core/threaded/reactor_threaded.h\""); includes.pr("#include \"core/utils/util.h\""); @@ -541,9 +541,9 @@ protected String makePreamble( var code = new CodeBuilder(); code.pr("#include \"core/federated/federate.h\""); - code.pr("#include \"core/federated/network/net_common.h\""); - code.pr("#include \"core/federated/network/net_util.h\""); - code.pr("#include \"core/federated/network/socket_common.h\""); + code.pr("#include \"network/api/net_driver.h\""); + code.pr("#include \"network/api/net_common.h\""); + code.pr("#include \"network/api/net_util.h\""); code.pr("#include \"core/federated/clock-sync.h\""); code.pr("#include \"core/threaded/reactor_threaded.h\""); code.pr("#include \"core/utils/util.h\""); diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java index ad982431a2..96960be7b9 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java @@ -28,6 +28,7 @@ import org.lflang.target.property.ClockSyncOptionsProperty; import org.lflang.target.property.ClockSyncOptionsProperty.ClockSyncOptions; import org.lflang.target.property.CmakeIncludeProperty; +import org.lflang.target.property.CommunicationTypeProperty; import org.lflang.target.property.CompileDefinitionsProperty; import org.lflang.target.property.CoordinationOptionsProperty; import org.lflang.target.property.CoordinationProperty; @@ -201,6 +202,10 @@ public static void handleCompileDefinitions( if (federate.targetConfig.get(AuthProperty.INSTANCE)) { definitions.put("FEDERATED_AUTHENTICATED", ""); } + if (federate.targetConfig.isSet(CommunicationTypeProperty.INSTANCE)) { + definitions.put( + "COMM_TYPE", federate.targetConfig.get(CommunicationTypeProperty.INSTANCE).toString()); + } definitions.put("NUMBER_OF_FEDERATES", String.valueOf(federateNames.size())); definitions.put("EXECUTABLE_PREAMBLE", ""); definitions.put("FEDERATE_ID", String.valueOf(federate.id)); @@ -325,7 +330,7 @@ public static void generateCMakeInclude( /** * Generate code that sends the neighbor structure message to the RTI. See {@code - * MSG_TYPE_NEIGHBOR_STRUCTURE} in {@code federated/net_common.h}. + * MSG_TYPE_NEIGHBOR_STRUCTURE} in {@code network/api/net_common.h}. * * @param federate The federate that is sending its neighbor structure */ diff --git a/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java b/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java index 7044265574..8ae70cec44 100644 --- a/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java @@ -37,6 +37,7 @@ import org.lflang.target.property.AuthProperty; import org.lflang.target.property.BuildTypeProperty; import org.lflang.target.property.CmakeIncludeProperty; +import org.lflang.target.property.CommunicationTypeProperty; import org.lflang.target.property.CompileDefinitionsProperty; import org.lflang.target.property.CompilerProperty; import org.lflang.target.property.PlatformProperty; @@ -426,6 +427,10 @@ CodeBuilder generateCMakeCode( cMakeCode.pr("target_link_libraries( ${LF_MAIN_TARGET} PRIVATE OpenSSL::SSL)"); cMakeCode.newLine(); } + if (targetConfig.isSet(CommunicationTypeProperty.INSTANCE)) { + cMakeCode.pr("set(COMM_TYPE " + targetConfig.get(CommunicationTypeProperty.INSTANCE) + ")"); + cMakeCode.newLine(); + } if (!targetConfig.get(SingleThreadedProperty.INSTANCE) && platformOptions.platform() != Platform.ZEPHYR diff --git a/core/src/main/java/org/lflang/generator/c/CGenerator.java b/core/src/main/java/org/lflang/generator/c/CGenerator.java index 2c21ae7b7f..75ac801c36 100644 --- a/core/src/main/java/org/lflang/generator/c/CGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CGenerator.java @@ -921,7 +921,7 @@ protected void copyTargetFiles() throws IOException { FileUtil.copyFromClassPath("/lib/c/reactor-c/" + directory, dest, true, false); } for (var directory : - List.of("logging", "platform", "low_level_platform", "trace", "version", "tag")) { + List.of("logging", "platform", "low_level_platform", "trace", "version", "tag", "network")) { var entry = "/lib/c/reactor-c/" + directory; if (arduino) { if (FileConfig.class.getResource(entry + "/api") != null) { diff --git a/core/src/main/java/org/lflang/generator/c/CPreambleGenerator.java b/core/src/main/java/org/lflang/generator/c/CPreambleGenerator.java index 1b3a6d22d9..09a4681c79 100644 --- a/core/src/main/java/org/lflang/generator/c/CPreambleGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CPreambleGenerator.java @@ -65,7 +65,7 @@ public static String generateIncludeStatements(TargetConfig targetConfig, boolea code.pr("int lf_reactor_c_main(int argc, const char* argv[]);"); if (targetConfig.isSet(FedSetupProperty.INSTANCE)) { code.pr("#include \"include/core/federated/federate.h\""); - code.pr("#include \"include/core/federated/network/net_common.h\""); + code.pr("#include \"network/api/net_common.h\""); } if (cppMode || arduinoBased(targetConfig)) { code.pr("}"); diff --git a/core/src/main/java/org/lflang/target/Target.java b/core/src/main/java/org/lflang/target/Target.java index 81adb25d3f..00bf73132f 100644 --- a/core/src/main/java/org/lflang/target/Target.java +++ b/core/src/main/java/org/lflang/target/Target.java @@ -556,6 +556,7 @@ public void initialize(TargetConfig config) { ClockSyncModeProperty.INSTANCE, ClockSyncOptionsProperty.INSTANCE, CmakeIncludeProperty.INSTANCE, + CommunicationTypeProperty.INSTANCE, CompileDefinitionsProperty.INSTANCE, CompilerProperty.INSTANCE, CoordinationOptionsProperty.INSTANCE, From 54e4f2735d41595813e819272bd99524fac05b87 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 18 Jan 2025 22:56:08 -0700 Subject: [PATCH 03/28] Fix naming of socket varaibles to netdrv. --- .../java/org/lflang/federated/extensions/CExtension.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index 07e43ec4e9..a2badbf797 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -684,7 +684,7 @@ private String generateCodeToInitializeFederate( String.join( "\n", "// Initialize the socket mutexes", - "lf_mutex_init(&lf_outbound_socket_mutex);", + "lf_mutex_init(&lf_outbound_netdrv_mutex);", "lf_mutex_init(&socket_mutex);", "lf_cond_init(&lf_port_status_changed, &env->mutex);")); @@ -740,14 +740,14 @@ else if (globalSTP instanceof CodeExprImpl) "\n", "// Initialize the array of socket for incoming connections to -1.", "for (int i = 0; i < NUMBER_OF_FEDERATES; i++) {", - " _fed.sockets_for_inbound_p2p_connections[i] = -1;", + " _fed.netdrvs_for_inbound_p2p_connections[i] = NULL;", "}")); code.pr( String.join( "\n", "// Initialize the array of socket for outgoing connections to -1.", "for (int i = 0; i < NUMBER_OF_FEDERATES; i++) {", - " _fed.sockets_for_outbound_p2p_connections[i] = -1;", + " _fed.netdrvs_for_outbound_p2p_connections[i] = NULL;", "}")); var clockSyncOptions = federate.targetConfig.getOrDefault(ClockSyncOptionsProperty.INSTANCE); // If a test clock offset has been specified, insert code to set it here. From 331b58b47f63724a4bfd7a394bb8244b2abe3b65 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 18 Jan 2025 22:56:22 -0700 Subject: [PATCH 04/28] Fix lf_send_neighbor_structure_to_RTI --- .../org/lflang/federated/extensions/CExtensionUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java index 96960be7b9..bb042eea99 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java @@ -347,7 +347,7 @@ public static String generateFederateNeighborStructure(FederateInstance federate "* information is needed for the RTI to perform the centralized coordination.", "* @see MSG_TYPE_NEIGHBOR_STRUCTURE in net_common.h", "*/", - "void lf_send_neighbor_structure_to_RTI(int rti_socket) {")); + "void lf_send_neighbor_structure_to_RTI(netdrv_t* rti_netdrv) {")); code.indent(); // Initialize the array of information about the federate's immediate upstream // and downstream relayed (through the RTI) logical connections, to send to the @@ -449,8 +449,8 @@ public static String generateFederateNeighborStructure(FederateInstance federate code.pr( String.join( "\n", - "write_to_socket_fail_on_error(", - " &rti_socket, ", + "write_to_netdrv_fail_on_error(", + " rti_netdrv, ", " buffer_size,", " buffer_to_send,", " NULL,", From 601a541423a7504c61d2a837b4da4d9cac670391 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 18 Jan 2025 23:01:43 -0700 Subject: [PATCH 05/28] Change socket_mutex to netdrv_mutex --- .../java/org/lflang/federated/extensions/CExtension.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index a2badbf797..828b956ee5 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -685,7 +685,7 @@ private String generateCodeToInitializeFederate( "\n", "// Initialize the socket mutexes", "lf_mutex_init(&lf_outbound_netdrv_mutex);", - "lf_mutex_init(&socket_mutex);", + "lf_mutex_init(&netdrv_mutex);", "lf_cond_init(&lf_port_status_changed, &env->mutex);")); // Find the STA (A.K.A. the global STP offset) for this federate. @@ -738,14 +738,14 @@ else if (globalSTP instanceof CodeExprImpl) code.pr( String.join( "\n", - "// Initialize the array of socket for incoming connections to -1.", + "// Initialize the array of network drivers for incoming connections to -1.", "for (int i = 0; i < NUMBER_OF_FEDERATES; i++) {", " _fed.netdrvs_for_inbound_p2p_connections[i] = NULL;", "}")); code.pr( String.join( "\n", - "// Initialize the array of socket for outgoing connections to -1.", + "// Initialize the array of network drivers for outgoing connections to -1.", "for (int i = 0; i < NUMBER_OF_FEDERATES; i++) {", " _fed.netdrvs_for_outbound_p2p_connections[i] = NULL;", "}")); @@ -763,7 +763,7 @@ else if (globalSTP instanceof CodeExprImpl) code.pr( String.join( "\n", - "// Connect to the RTI. This sets _fed.socket_TCP_RTI and _lf_rti_socket_UDP.", + "// Connect to the RTI. This sets _fed.netdrv_to_RTI and _lf_rti_socket_UDP.", "lf_connect_to_rti(" + addDoubleQuotes(rtiConfig.getHost()) + ", " From d88f8d57b724b49c8d96606fe1e48fd8fe166222 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Mon, 20 Jan 2025 10:21:36 -0700 Subject: [PATCH 06/28] Fix on names. --- .../java/org/lflang/federated/extensions/CExtension.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index 828b956ee5..e8889236d1 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -772,15 +772,16 @@ else if (globalSTP instanceof CodeExprImpl) // Disable clock synchronization for the federate if it resides on the same host as the RTI, // unless that is overridden with the clock-sync-options target property. + //TODO: Fix here. if (CExtensionUtils.clockSyncIsOn(federate, rtiConfig)) { - code.pr("synchronize_initial_physical_clock_with_rti(&_fed.socket_TCP_RTI);"); + code.pr("synchronize_initial_physical_clock_with_rti(_fed.netdrv_to_RTI);"); } if (numberOfInboundConnections > 0) { code.pr( String.join( "\n", - "// Create a socket server to listen to other federates.", + "// Create a server to listen to other federates.", "// If a port is specified by the user, that will be used", "// as the only possibility for the server. If not, the port", "// will be selected by the OS (by specifying port 0).", From 4f6d57557a7cd3800e881a2076c9bc42c111b61a Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 22 Jan 2025 12:36:39 -0700 Subject: [PATCH 07/28] Remove todo. --- .../main/java/org/lflang/federated/extensions/CExtension.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index e8889236d1..83a35bc7d8 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -772,7 +772,6 @@ else if (globalSTP instanceof CodeExprImpl) // Disable clock synchronization for the federate if it resides on the same host as the RTI, // unless that is overridden with the clock-sync-options target property. - //TODO: Fix here. if (CExtensionUtils.clockSyncIsOn(federate, rtiConfig)) { code.pr("synchronize_initial_physical_clock_with_rti(_fed.netdrv_to_RTI);"); } From 739fa52af641751fc4167b87bacfff45be3b75d1 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Fri, 24 Jan 2025 10:44:42 -0700 Subject: [PATCH 08/28] Minor fix. --- .../target/property/type/CommunicationTypeType.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java b/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java index f8260347e9..463ebc306b 100644 --- a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java +++ b/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java @@ -13,15 +13,7 @@ protected Class enumClass() { return CommunicationType.class; } - /** - * Enumeration of communication types. - * - *
    - *
  • TCP: Communications occur through TCP servers/clients. - *
  • SST: Communications occur through SST modules. - *
  • MQTT: Communications occur through a broker and pub/sub methods. - *
- */ + /** Enumeration of communication types. */ public enum CommunicationType { TCP("TCP"), SST("SST"), From 6a4285914f248447195505547b53420be8d88ff9 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Fri, 24 Jan 2025 11:42:14 -0700 Subject: [PATCH 09/28] Fix reactor-c --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index c2437e1f94..beea2a28b5 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit c2437e1f948a5d4f2bc487137c3ccb02ca89f631 +Subproject commit beea2a28b50ab19507a93ff66a51841bc23546a5 From cb1a95a5c5d461670743110b5ee4ee6390195d9e Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Fri, 24 Jan 2025 14:51:25 -0700 Subject: [PATCH 10/28] Add new line in EOF. --- .../org/lflang/target/property/CommunicationTypeProperty.java | 2 +- .../org/lflang/target/property/type/CommunicationTypeType.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java b/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java index d997972842..47e7d29ac9 100644 --- a/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java +++ b/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java @@ -41,4 +41,4 @@ protected CommunicationType fromString(String string, MessageReporter reporter) public String name() { return "comm-type"; } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java b/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java index 463ebc306b..b2c146330e 100644 --- a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java +++ b/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java @@ -41,4 +41,4 @@ public static CommunicationType getDefault() { return CommunicationType.TCP; } } -} \ No newline at end of file +} From 8979fc650e8999584d100a40e3ab615fdc7df628 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Fri, 24 Jan 2025 19:48:20 -0700 Subject: [PATCH 11/28] Change on netdrv_t to void* typedef. --- .../java/org/lflang/federated/extensions/CExtensionUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java index bb042eea99..044290de91 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java @@ -347,7 +347,7 @@ public static String generateFederateNeighborStructure(FederateInstance federate "* information is needed for the RTI to perform the centralized coordination.", "* @see MSG_TYPE_NEIGHBOR_STRUCTURE in net_common.h", "*/", - "void lf_send_neighbor_structure_to_RTI(netdrv_t* rti_netdrv) {")); + "void lf_send_neighbor_structure_to_RTI(netdrv_t rti_netdrv) {")); code.indent(); // Initialize the array of information about the federate's immediate upstream // and downstream relayed (through the RTI) logical connections, to send to the From bca06268134deb8fe040e58df2ed54fd221db48b Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 25 Jan 2025 01:06:13 -0700 Subject: [PATCH 12/28] Fix pointer to reactor-c --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index beea2a28b5..eb5378acca 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit beea2a28b50ab19507a93ff66a51841bc23546a5 +Subproject commit eb5378acca2cf2436078f1def92b326aad881a0f From d5ac8276f123ba56382a81d67a5baf63b4f01b1f Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 25 Jan 2025 01:07:29 -0700 Subject: [PATCH 13/28] spotlessApply --- core/src/main/java/org/lflang/generator/c/CGenerator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/lflang/generator/c/CGenerator.java b/core/src/main/java/org/lflang/generator/c/CGenerator.java index 75ac801c36..cb1ff1eace 100644 --- a/core/src/main/java/org/lflang/generator/c/CGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CGenerator.java @@ -921,7 +921,8 @@ protected void copyTargetFiles() throws IOException { FileUtil.copyFromClassPath("/lib/c/reactor-c/" + directory, dest, true, false); } for (var directory : - List.of("logging", "platform", "low_level_platform", "trace", "version", "tag", "network")) { + List.of( + "logging", "platform", "low_level_platform", "trace", "version", "tag", "network")) { var entry = "/lib/c/reactor-c/" + directory; if (arduino) { if (FileConfig.class.getResource(entry + "/api") != null) { From 5b53293086388462c395b924bd77fc7aaedb1b5e Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 25 Jan 2025 01:40:03 -0700 Subject: [PATCH 14/28] Fix reactor-c pointer --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index eb5378acca..aca13882a4 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit eb5378acca2cf2436078f1def92b326aad881a0f +Subproject commit aca13882a4da7003f17224f014e4363e3977ece7 From c6a88b6d163bb4416e777e73fd1b862ec1e6473e Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Tue, 28 Jan 2025 10:16:31 -0700 Subject: [PATCH 15/28] Make the arduino build to skip network files copied. --- core/src/main/java/org/lflang/generator/c/CGenerator.java | 3 +++ core/src/main/resources/lib/c/reactor-c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/lflang/generator/c/CGenerator.java b/core/src/main/java/org/lflang/generator/c/CGenerator.java index cb1ff1eace..f98ebe2e74 100644 --- a/core/src/main/java/org/lflang/generator/c/CGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CGenerator.java @@ -925,6 +925,9 @@ protected void copyTargetFiles() throws IOException { "logging", "platform", "low_level_platform", "trace", "version", "tag", "network")) { var entry = "/lib/c/reactor-c/" + directory; if (arduino) { + if ("network".equals(directory)) { + continue; // Skip processing for the "network" directory + } if (FileConfig.class.getResource(entry + "/api") != null) { FileUtil.copyFromClassPath( entry + "/api", diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index aca13882a4..bf557efa22 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit aca13882a4da7003f17224f014e4363e3977ece7 +Subproject commit bf557efa223db529be85b8f5d1bd9bde145b5a37 From fde2d43eb64cd806d9ae0750f03fc698bc19ccd6 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Tue, 28 Jan 2025 10:45:10 -0700 Subject: [PATCH 16/28] Fix reactor-c --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index bf557efa22..b4720bb0ce 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit bf557efa223db529be85b8f5d1bd9bde145b5a37 +Subproject commit b4720bb0ce367c673d39fe0b4dd516406c6e8d18 From 32350512827f225296293c2a0bd0791aa34a1c89 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 29 Jan 2025 12:58:00 -0700 Subject: [PATCH 17/28] Fix file names. --- .../org/lflang/generator/c/CGenerator.java | 2 +- .../property/CommunicationModeProperty.java | 44 +++++++++++++++++++ .../property/CommunicationTypeProperty.java | 44 ------------------- ...peType.java => CommunicationModeType.java} | 20 ++++----- 4 files changed, 55 insertions(+), 55 deletions(-) create mode 100644 core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java delete mode 100644 core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java rename core/src/main/java/org/lflang/target/property/type/{CommunicationTypeType.java => CommunicationModeType.java} (53%) diff --git a/core/src/main/java/org/lflang/generator/c/CGenerator.java b/core/src/main/java/org/lflang/generator/c/CGenerator.java index f98ebe2e74..46507a06ce 100644 --- a/core/src/main/java/org/lflang/generator/c/CGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CGenerator.java @@ -926,7 +926,7 @@ protected void copyTargetFiles() throws IOException { var entry = "/lib/c/reactor-c/" + directory; if (arduino) { if ("network".equals(directory)) { - continue; // Skip processing for the "network" directory + continue; // Skip copying for the "network" directory } if (FileConfig.class.getResource(entry + "/api") != null) { FileUtil.copyFromClassPath( diff --git a/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java b/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java new file mode 100644 index 0000000000..caaeb44d82 --- /dev/null +++ b/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java @@ -0,0 +1,44 @@ +package org.lflang.target.property; + +import org.lflang.MessageReporter; +import org.lflang.ast.ASTUtils; +import org.lflang.lf.Element; +import org.lflang.target.property.type.CommunicationModeType; +import org.lflang.target.property.type.CommunicationModeType.CommunicationMode; + +/** Directive to specify the target communication type such as 'TCP', 'SST', or 'MQTT'. */ +public final class CommunicationModeProperty + extends TargetProperty { + + /** Singleton target property instance. */ + public static final CommunicationModeProperty INSTANCE = new CommunicationModeProperty(); + + private CommunicationModeProperty() { + super(new CommunicationModeType()); + } + + @Override + public Element toAstElement(CommunicationMode value) { + return ASTUtils.toElement(value.toString()); + } + + @Override + public CommunicationMode initialValue() { + return CommunicationMode.TCP; + } + + @Override + public CommunicationMode fromAst(Element node, MessageReporter reporter) { + return fromString(ASTUtils.elementToSingleString(node), reporter); + } + + @Override + protected CommunicationMode fromString(String string, MessageReporter reporter) { + return this.type.forName(string); + } + + @Override + public String name() { + return "comm-type"; + } +} diff --git a/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java b/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java deleted file mode 100644 index 47e7d29ac9..0000000000 --- a/core/src/main/java/org/lflang/target/property/CommunicationTypeProperty.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.lflang.target.property; - -import org.lflang.MessageReporter; -import org.lflang.ast.ASTUtils; -import org.lflang.lf.Element; -import org.lflang.target.property.type.CommunicationTypeType; -import org.lflang.target.property.type.CommunicationTypeType.CommunicationType; - -/** Directive to specify the target communication type such as 'TCP', 'SST', or 'MQTT'. */ -public final class CommunicationTypeProperty - extends TargetProperty { - - /** Singleton target property instance. */ - public static final CommunicationTypeProperty INSTANCE = new CommunicationTypeProperty(); - - private CommunicationTypeProperty() { - super(new CommunicationTypeType()); - } - - @Override - public Element toAstElement(CommunicationType value) { - return ASTUtils.toElement(value.toString()); - } - - @Override - public CommunicationType initialValue() { - return CommunicationType.TCP; - } - - @Override - public CommunicationType fromAst(Element node, MessageReporter reporter) { - return fromString(ASTUtils.elementToSingleString(node), reporter); - } - - @Override - protected CommunicationType fromString(String string, MessageReporter reporter) { - return this.type.forName(string); - } - - @Override - public String name() { - return "comm-type"; - } -} diff --git a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java b/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java similarity index 53% rename from core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java rename to core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java index b2c146330e..0fd03e5baf 100644 --- a/core/src/main/java/org/lflang/target/property/type/CommunicationTypeType.java +++ b/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java @@ -3,18 +3,18 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -import org.lflang.target.property.type.CommunicationTypeType.CommunicationType; +import org.lflang.target.property.type.CommunicationModeType.CommunicationMode; /** Enumeration of communication types */ -public class CommunicationTypeType extends OptionsType { +public class CommunicationModeType extends OptionsType { @Override - protected Class enumClass() { - return CommunicationType.class; + protected Class enumClass() { + return CommunicationMode.class; } /** Enumeration of communication types. */ - public enum CommunicationType { + public enum CommunicationMode { TCP("TCP"), SST("SST"), MQTT("MQTT"); @@ -23,7 +23,7 @@ public enum CommunicationType { private final String alias; /** Private constructor for Cmake build types. */ - CommunicationType(String alias) { + CommunicationMode(String alias) { this.alias = alias; } @@ -33,12 +33,12 @@ public String toString() { return this.alias; } - public static List optionsList() { - return Arrays.stream(CommunicationType.values()).collect(Collectors.toList()); + public static List optionsList() { + return Arrays.stream(CommunicationMode.values()).collect(Collectors.toList()); } - public static CommunicationType getDefault() { - return CommunicationType.TCP; + public static CommunicationMode getDefault() { + return CommunicationMode.TCP; } } } From a0b4146b5ff9899ae90d7a058ad7fd7a1ff42bd4 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 29 Jan 2025 12:59:14 -0700 Subject: [PATCH 18/28] Fix names --- .../org/lflang/federated/extensions/CExtensionUtils.java | 6 +++--- .../main/java/org/lflang/generator/c/CCmakeGenerator.java | 6 +++--- core/src/main/java/org/lflang/target/Target.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java index 044290de91..20878ee217 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java @@ -28,7 +28,7 @@ import org.lflang.target.property.ClockSyncOptionsProperty; import org.lflang.target.property.ClockSyncOptionsProperty.ClockSyncOptions; import org.lflang.target.property.CmakeIncludeProperty; -import org.lflang.target.property.CommunicationTypeProperty; +import org.lflang.target.property.CommunicationModeProperty; import org.lflang.target.property.CompileDefinitionsProperty; import org.lflang.target.property.CoordinationOptionsProperty; import org.lflang.target.property.CoordinationProperty; @@ -202,9 +202,9 @@ public static void handleCompileDefinitions( if (federate.targetConfig.get(AuthProperty.INSTANCE)) { definitions.put("FEDERATED_AUTHENTICATED", ""); } - if (federate.targetConfig.isSet(CommunicationTypeProperty.INSTANCE)) { + if (federate.targetConfig.isSet(CommunicationModeProperty.INSTANCE)) { definitions.put( - "COMM_TYPE", federate.targetConfig.get(CommunicationTypeProperty.INSTANCE).toString()); + "COMM_TYPE", federate.targetConfig.get(CommunicationModeProperty.INSTANCE).toString()); } definitions.put("NUMBER_OF_FEDERATES", String.valueOf(federateNames.size())); definitions.put("EXECUTABLE_PREAMBLE", ""); diff --git a/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java b/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java index 8ae70cec44..281b9a203d 100644 --- a/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java +++ b/core/src/main/java/org/lflang/generator/c/CCmakeGenerator.java @@ -37,7 +37,7 @@ import org.lflang.target.property.AuthProperty; import org.lflang.target.property.BuildTypeProperty; import org.lflang.target.property.CmakeIncludeProperty; -import org.lflang.target.property.CommunicationTypeProperty; +import org.lflang.target.property.CommunicationModeProperty; import org.lflang.target.property.CompileDefinitionsProperty; import org.lflang.target.property.CompilerProperty; import org.lflang.target.property.PlatformProperty; @@ -427,8 +427,8 @@ CodeBuilder generateCMakeCode( cMakeCode.pr("target_link_libraries( ${LF_MAIN_TARGET} PRIVATE OpenSSL::SSL)"); cMakeCode.newLine(); } - if (targetConfig.isSet(CommunicationTypeProperty.INSTANCE)) { - cMakeCode.pr("set(COMM_TYPE " + targetConfig.get(CommunicationTypeProperty.INSTANCE) + ")"); + if (targetConfig.isSet(CommunicationModeProperty.INSTANCE)) { + cMakeCode.pr("set(COMM_TYPE " + targetConfig.get(CommunicationModeProperty.INSTANCE) + ")"); cMakeCode.newLine(); } diff --git a/core/src/main/java/org/lflang/target/Target.java b/core/src/main/java/org/lflang/target/Target.java index 1b8445abfd..f0dc63aef0 100644 --- a/core/src/main/java/org/lflang/target/Target.java +++ b/core/src/main/java/org/lflang/target/Target.java @@ -556,7 +556,7 @@ public void initialize(TargetConfig config) { ClockSyncModeProperty.INSTANCE, ClockSyncOptionsProperty.INSTANCE, CmakeIncludeProperty.INSTANCE, - CommunicationTypeProperty.INSTANCE, + CommunicationModeProperty.INSTANCE, CompileDefinitionsProperty.INSTANCE, CompilerProperty.INSTANCE, CoordinationOptionsProperty.INSTANCE, From b06277272e86dcc7e119c1c49e88272a904e9b7f Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 29 Jan 2025 13:22:27 -0700 Subject: [PATCH 19/28] Fix communication mode enum. --- .../lflang/target/property/CommunicationModeProperty.java | 1 - .../lflang/target/property/type/CommunicationModeType.java | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java b/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java index caaeb44d82..f4aade96c3 100644 --- a/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java +++ b/core/src/main/java/org/lflang/target/property/CommunicationModeProperty.java @@ -6,7 +6,6 @@ import org.lflang.target.property.type.CommunicationModeType; import org.lflang.target.property.type.CommunicationModeType.CommunicationMode; -/** Directive to specify the target communication type such as 'TCP', 'SST', or 'MQTT'. */ public final class CommunicationModeProperty extends TargetProperty { diff --git a/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java b/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java index 0fd03e5baf..ce338c7170 100644 --- a/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java +++ b/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java @@ -15,9 +15,8 @@ protected Class enumClass() { /** Enumeration of communication types. */ public enum CommunicationMode { - TCP("TCP"), - SST("SST"), - MQTT("MQTT"); + TCP("TCP"); + // More communication modes will be added. /** Alias used in toString method. */ private final String alias; From 635fc2ab2063bde9c8e5ea5ca59eabb9d858c330 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Wed, 29 Jan 2025 14:29:50 -0700 Subject: [PATCH 20/28] Formatting. --- .../org/lflang/target/property/type/CommunicationModeType.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java b/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java index ce338c7170..c2a30f612b 100644 --- a/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java +++ b/core/src/main/java/org/lflang/target/property/type/CommunicationModeType.java @@ -16,6 +16,7 @@ protected Class enumClass() { /** Enumeration of communication types. */ public enum CommunicationMode { TCP("TCP"); + // More communication modes will be added. /** Alias used in toString method. */ From d2b06a1e38e2d541abec2d0b346f2a58c8385366 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 1 Feb 2025 17:30:06 -0700 Subject: [PATCH 21/28] Add reactor-c --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index b4720bb0ce..93379ce75b 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit b4720bb0ce367c673d39fe0b4dd516406c6e8d18 +Subproject commit 93379ce75bd33dea62a503ec97152eb2596bdb48 From 4ba054bc9e7471103ed83ea3e6fa17f869ca3adc Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Sat, 1 Feb 2025 18:05:11 -0700 Subject: [PATCH 22/28] Add cpp rs submodule to latest --- core/src/main/resources/lib/cpp/reactor-cpp | 2 +- core/src/main/resources/lib/rs/reactor-rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/resources/lib/cpp/reactor-cpp b/core/src/main/resources/lib/cpp/reactor-cpp index e0df4349bb..d255a3da57 160000 --- a/core/src/main/resources/lib/cpp/reactor-cpp +++ b/core/src/main/resources/lib/cpp/reactor-cpp @@ -1 +1 @@ -Subproject commit e0df4349bb5726e659d5c6589fa948a18991e2b8 +Subproject commit d255a3da57d38db2988bcab68024b0a77ccc8657 diff --git a/core/src/main/resources/lib/rs/reactor-rs b/core/src/main/resources/lib/rs/reactor-rs index 10fee74e32..9fe7853ecd 160000 --- a/core/src/main/resources/lib/rs/reactor-rs +++ b/core/src/main/resources/lib/rs/reactor-rs @@ -1 +1 @@ -Subproject commit 10fee74e32a72f15ec3bc5605d61c27f63c8e037 +Subproject commit 9fe7853ecdbf6d33f6916ad5f822c6d9dd01609d From 856810231fe0629d0b3423bd9efb326095756146 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Mon, 24 Feb 2025 11:52:48 -0700 Subject: [PATCH 23/28] Change name to netchan --- .../org/lflang/federated/extensions/CExtension.java | 12 ++++++------ .../lflang/federated/extensions/CExtensionUtils.java | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index 1ecf4480d4..34bb553358 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -686,8 +686,8 @@ private String generateCodeToInitializeFederate( String.join( "\n", "// Initialize the socket mutexes", - "lf_mutex_init(&lf_outbound_netdrv_mutex);", - "lf_mutex_init(&netdrv_mutex);", + "lf_mutex_init(&lf_outbound_netchan_mutex);", + "lf_mutex_init(&netchan_mutex);", "lf_cond_init(&lf_port_status_changed, &env->mutex);")); // Find the STA (A.K.A. the global STP offset) for this federate. @@ -742,14 +742,14 @@ else if (globalSTP instanceof CodeExprImpl) "\n", "// Initialize the array of network drivers for incoming connections to -1.", "for (int i = 0; i < NUMBER_OF_FEDERATES; i++) {", - " _fed.netdrvs_for_inbound_p2p_connections[i] = NULL;", + " _fed.netchans_for_inbound_p2p_connections[i] = NULL;", "}")); code.pr( String.join( "\n", "// Initialize the array of network drivers for outgoing connections to -1.", "for (int i = 0; i < NUMBER_OF_FEDERATES; i++) {", - " _fed.netdrvs_for_outbound_p2p_connections[i] = NULL;", + " _fed.netchans_for_outbound_p2p_connections[i] = NULL;", "}")); var clockSyncOptions = federate.targetConfig.getOrDefault(ClockSyncOptionsProperty.INSTANCE); // If a test clock offset has been specified, insert code to set it here. @@ -765,7 +765,7 @@ else if (globalSTP instanceof CodeExprImpl) code.pr( String.join( "\n", - "// Connect to the RTI. This sets _fed.netdrv_to_RTI and _lf_rti_socket_UDP.", + "// Connect to the RTI. This sets _fed.netchan_to_RTI and _lf_rti_socket_UDP.", "lf_connect_to_rti(" + addDoubleQuotes(rtiConfig.getHost()) + ", " @@ -775,7 +775,7 @@ else if (globalSTP instanceof CodeExprImpl) // Disable clock synchronization for the federate if it resides on the same host as the RTI, // unless that is overridden with the clock-sync-options target property. if (CExtensionUtils.clockSyncIsOn(federate, rtiConfig)) { - code.pr("synchronize_initial_physical_clock_with_rti(_fed.netdrv_to_RTI);"); + code.pr("synchronize_initial_physical_clock_with_rti(_fed.netchan_to_RTI);"); } if (numberOfInboundConnections > 0) { diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java index 20878ee217..39b74febe2 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtensionUtils.java @@ -347,7 +347,7 @@ public static String generateFederateNeighborStructure(FederateInstance federate "* information is needed for the RTI to perform the centralized coordination.", "* @see MSG_TYPE_NEIGHBOR_STRUCTURE in net_common.h", "*/", - "void lf_send_neighbor_structure_to_RTI(netdrv_t rti_netdrv) {")); + "void lf_send_neighbor_structure_to_RTI(netchan_t rti_netchan) {")); code.indent(); // Initialize the array of information about the federate's immediate upstream // and downstream relayed (through the RTI) logical connections, to send to the @@ -449,8 +449,8 @@ public static String generateFederateNeighborStructure(FederateInstance federate code.pr( String.join( "\n", - "write_to_netdrv_fail_on_error(", - " rti_netdrv, ", + "write_to_netchan_fail_on_error(", + " rti_netchan, ", " buffer_size,", " buffer_to_send,", " NULL,", From 867533f6a432412ea24fe3fe14539435cc51817f Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Thu, 27 Feb 2025 18:28:59 -0700 Subject: [PATCH 24/28] Add shutdown mutex. --- .../main/java/org/lflang/federated/extensions/CExtension.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index 9e91349c98..fddc7ba86e 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -688,6 +688,7 @@ private String generateCodeToInitializeFederate( "// Initialize the socket mutexes", "lf_mutex_init(&lf_outbound_socket_mutex);", "lf_mutex_init(&socket_mutex);", + "lf_mutex_init(&shutdown_mutex);", "lf_cond_init(&lf_port_status_changed, &env->mutex);")); // Find the STA (A.K.A. the global STP offset) for this federate. From 2151bb23d65b029bf84d01536e23231af4ca1e33 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Thu, 27 Feb 2025 18:29:34 -0700 Subject: [PATCH 25/28] Add reactor-c --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index 77ed6d15e4..c8dbb993c9 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit 77ed6d15e4176103bdb2b410729c74533b1dbf73 +Subproject commit c8dbb993c9ef5586f5af070b438e7b0e854af628 From 945ec161bb4a3c54239736fb42b88d5a9c2ebde5 Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Thu, 27 Feb 2025 18:30:24 -0700 Subject: [PATCH 26/28] Update reactor-c --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index c8dbb993c9..4bf70ac08b 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit c8dbb993c9ef5586f5af070b438e7b0e854af628 +Subproject commit 4bf70ac08bb1976c89cd9f4e2883edd6f3294e21 From 7a15b7ad9970ac70401bf780c66b9e67a242e3fd Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Mon, 3 Mar 2025 13:49:46 -0700 Subject: [PATCH 27/28] Minor fix on changing names. --- .../main/java/org/lflang/federated/extensions/CExtension.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/lflang/federated/extensions/CExtension.java b/core/src/main/java/org/lflang/federated/extensions/CExtension.java index fddc7ba86e..386d79f9bf 100644 --- a/core/src/main/java/org/lflang/federated/extensions/CExtension.java +++ b/core/src/main/java/org/lflang/federated/extensions/CExtension.java @@ -687,7 +687,7 @@ private String generateCodeToInitializeFederate( "\n", "// Initialize the socket mutexes", "lf_mutex_init(&lf_outbound_socket_mutex);", - "lf_mutex_init(&socket_mutex);", + "lf_mutex_init(&lf_inbound_socket_mutex);", "lf_mutex_init(&shutdown_mutex);", "lf_cond_init(&lf_port_status_changed, &env->mutex);")); From 26cd524d331eb5d0267467d511075f09e5382f5e Mon Sep 17 00:00:00 2001 From: Dongha Kim Date: Tue, 4 Mar 2025 12:16:57 -0700 Subject: [PATCH 28/28] Fix reactor-c ref --- core/src/main/resources/lib/c/reactor-c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index 4bf70ac08b..618989d6f9 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit 4bf70ac08bb1976c89cd9f4e2883edd6f3294e21 +Subproject commit 618989d6f92e67916237a79b2ade5eff23023ad1