Jump to content
OpenSplice DDS Forum

All Activity

This stream auto-updates     

  1. Last week
  2. To clarify what I tried: I made a topic with a normal and reasonable history_length and made a writer from that. Then I tried to make another topic instance (using the same domain participant) with a history_length of 1 for my reader. Creating that second topic failed. No big deal, just a minor disappointment. Note: I have no desire to limit the read queue length itself to a length of 1 because I need to be able to handle bursts of data without losing any. Again, not a big deal. I'll just throw out the historical data I don't want.
  3. Ok I got to have the ./configure return to me a configuration OK (I change all the path to the gsoap files in the different makefile to mach the one my installation actually had). But now when i try to do the make i get an error when it tries to execute ospl_wincmd.exe. I tried to execute it manually and indeed I got a segmentation fault if no option are passed to it (hoped for a usage) or a exec failed 2 when using options. I give up, I think that this release was done with about as much care as the C api tutorial with its many english errors, its sentences that means nothing and all.... I have nothing left than to try to convince my client that i will use the 6.9 version and hope that it will cause no problem when trying to comunicate with the 6.7.0 commercial version his ECU implemented....
  4. well I also tried that line change in src/services/cmsoap/makefile.mak and that didn't worked for me. I think the issue is that i give the GSOAPHOME a path to an installation of gsoap for windows on my PC and not one in cygwin like in the example given. I'm not sure how can I build and install gsoap in cygwin but i'll try to found
  5. I guess that setting has indeed no effect on 6.7 .. but that ticket was about a somewhat strange requirement w.r.t. setting-up soap: ".. Currently missing on the build page is the dependency on the stdsoap2.c file which is expected to be found in the include directory of the soap install directory. Building OpenSplice without this file will fail." So perhaps this is why it considers your soap-setup as invalid ?
  6. Well if you manage to convince my client I would gladly use 6.9, but I can't unfortunately. I have to use 6.7. I tried to set the INCLUDE_SERVICES_CMSOAP like said in the link you provided it had no effect.
  7. maybe switching to 6.9 would help, see https://github.com/ADLINK-IST/opensplice/issues/34#issuecomment-344305476
  8. hmm not sure I understand: the history-depth is 'local' for each reader, so any of those can configure an arbitrary depth. If its about TRANSIENT/TRANSIENT_LOCAL data historical-data availability for late-joiners, then its indeed the topic-level durability_service QoS setting for that topic that defines the amount of 'maintained-historical-data' for any late-joiner (of that topic). Yet still, if your reader calles wait_for_historical_data it will still be the case that you'll see 'at most' your local reader's history-depth of historical samples (as the rest will be pushed-out during the 'provisioning-of-that-historical-data')
  9. Hello, I'm curently working on a project where I have to use opensplice Community 6.7. on windows (7 or 10, the version was not confirmed yet by my client) For now i'm testing with a windows 7 x64 VM . SInce I could not find binaries for this version I have downloaded it from Github. To complie it I am using the guide that can be found in the readme.md of the 6.9 release on github since I could not find instructions on the 6.7 release. I have set the VM_STUDIO and WINDOWSSDKDIR environment variables as well as unset the temps one. Yet when I source the configure in cygwin I got this : VS: OK - using compiler version: 19.00.24234.1 for VS: 2015 Visual Studio builder: OK - using devenv.com C#: OK - using version MAKE: OK - using GNU Make 4.2.1 Perl: OK - using perl version='5.26.3'; Qt: Warning - Cannot find Qt libraries. Standalone demo package will not be built. Please specifiy QTLIBDIR. GAWK: OK - using GNU Awk 5.0.0, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2) BISON: OK - using bison (GNU Bison) 3.0.4 FLEX: OK - using 2.6.4 JAVAC: Warning - Java compiler environment not set, building of all Java related features is disabled. TAO: Warning - No TAO found TAO environment not set, disabling TAO related features. JACORB: Warning - JACORB_HOME not set JACORB environment not set, disabling JACORB related features. GSOAP: Error - Not found DOXYGEN: OK GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME has not been set Warning - Protobuf compiler environment not set, building of all protobuf related features is disabled. C99: OK - supported Configuration Invalid So I tried to set the GSOAPHOME environment variable event if it's marked as optional but i get the result below no matter which gsoap version I use : [....] // everything before is the same as above GSOAP: Error - Invalid Setup DOXYGEN: OK GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME has not been set Warning - Protobuf compiler environment not set, building of all protobuf related features is disabled. C99: OK - supported Configuration Invalid I don't see where the problem is and why my configuration is invalid or how to correct this so I can have a working opensplice 6.7 install. Can anyone help ?
  10. Hans van 't Hag


    I think there's indeed a difference in interpretation (like there is for the liveliness alive_count_change) of the specification. In OpenSplice its the number of changes .. Similarly for the livelinessChangedStatus "alive_count_change" which for OpenSplice is the number of (alive writer) changes whereas for RTI its the difference-in-counter-value
  11. Hi, I want to use the "publication_matched_status().current_count_change()" function but am not sure what value this function is suppose to return. Should this value always be positive (value incremented whether a reader is added or removed) or can it be negative (if one reader is removed it equals -1, if one reader is added it equals 1)? The standard and the OpenSplice documentation both state: which to me sounds like I should have negative values if readers are removed. The following code gives me different results with OpenSplice and RTI: int main(int argc, char **argv) { dds::domain::DomainParticipant participant(domain_id); dds::topic::Topic<Data> topic(participant, "Data"); dds::pub::Publisher pub(participant); dds::sub::Subscriber sub(participant); // Create writer DataWriter writer(pub, topic); std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << writer.publication_matched_status().current_count_change() << std::endl; // Create reader DataReader reader(sub, topic); std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << writer.publication_matched_status().current_count_change() << std::endl; // Destroy reader reader = DataReader(dds::core::null); std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << writer.publication_matched_status().current_count_change() << std::endl; std::cin.get(); return 0; } With Opensplice it prints: 0 1 1 With RTI it prints: 0 1 -1
  12. Hans van 't Hag

    Doesn't work on two machines.

    You're using a 8-years old release, so I'd suggest to migrate to 6.9. Anyhow, I see you didn't configure a networkInterfaceAddress (to be configured in the 'General' section of the NetworkService) so you're probably not using the correct interface adapter.
  13. aphelix

    Doesn't work on two machines.

    Any suggestions? :((
  14. aphelix

    Doesn't work on two machines.

    Hi. I'am currently trying "OpenSplice version : V5.5.1OSS". I have 2 apps. One sends a very basic topic to other. If two apps run on same machine. Everything seems alright. But if they work on different machines, messages cannot be sent. My configuration file ospl.xml OpenSplice> <Domain> <Name>OpenSpliceV5.5.1OSS</Name> <Database> <Size>10485760</Size> </Database> <Lease> <ExpiryTime update_factor="0.05">60.0</ExpiryTime> </Lease> <Service name="networking"> <Command>networking</Command> </Service> <Service name="durability"> <Command>durability</Command> </Service> </Domain> <NetworkService name="networking"> <Partitioning> <GlobalPartition Address="broadcast"/> </Partitioning> <Channels> <Channel default="true" enabled="true" name="BestEffort" reliable="false"> <PortNr>53370</PortNr> </Channel> <Channel enabled="true" name="Reliable" reliable="true"> <PortNr>53380</PortNr> </Channel> </Channels> <Discovery enabled="true"> <PortNr>53390</PortNr> </Discovery> </NetworkService> <DurabilityService name="durability"> <Network> <InitialDiscoveryPeriod>2.0</InitialDiscoveryPeriod> <Alignment> <TimeAlignment>FALSE</TimeAlignment> <RequestCombinePeriod> <Initial>2.5</Initial> <Operational>0.1</Operational> </RequestCombinePeriod> </Alignment> <WaitForAttachment maxWaitCount="10"> <ServiceName>networking</ServiceName> </WaitForAttachment> </Network> <NameSpaces> <NameSpace name="defaultNamespace"> <Partition>*</Partition> </NameSpace> <Policy nameSpace="defaultNamespace" durability="Durable" alignee="Initial" aligner="True"/> </NameSpaces> <Persistent> <StoreDirectory>/opt/dps/rdb</StoreDirectory> </Persistent> </DurabilityService> </OpenSplice> What is the problem ? Thanks...
  15. Hans van 't Hag

    Determination of the used network adapter

    I typically use the logical-name so that the same configuration can be exploited on multiple (similarly 'hosted') machines. Not sure which of the 2 options doesn't work when your WLAN adapter is activated, but I can't imagine why any of them wouldn't work (assuming that both adapters have both unique names as well as unique ip-addresses)
  16. Hi, What is the safest or best way to determine which network adapter to use? I have a PC with Linux (Ubuntu 16.04) with 2 network adapters (cable adapter and wireless adapter). The name of the wireless adapter is "wlp2s0" and the ip address is "". I'm trying to set the network adapter to use in the configuration file: <DDSI2Service name="ddsi2"> <General> <NetworkInterfaceAddress>wlp2s0</NetworkInterfaceAddress> ... or <DDSI2Service name="ddsi2"> <General> <NetworkInterfaceAddress></NetworkInterfaceAddress> ... This works fine if only the WLAN adapter is activated. If both network adapters are activated, then it will not work. Remark: Selecting the network adapter this way works fine on a PC with Windos 7. Best regards Jan-Marc.
  17. Hans van 't Hag

    DDS configuration for multicast-disabled network

    Perhaps there's some ports that are blocked by the VPN .. not sure .. You might want to try using TCP rather than UDP, configuration then looks something like this: <DDSI2Service name="ddsi2"> <General> <NetworkInterfaceAddress>AUTO</NetworkInterfaceAddress> <AllowMulticast>false</AllowMulticast> <EnableMulticastLoopback>true</EnableMulticastLoopback> <CoexistWithNativeNetworking>false</CoexistWithNativeNetworking> </General> <Compatibility> <!-- see the release notes and/or the OpenSplice configurator on DDSI interoperability --> <StandardsConformance>lax</StandardsConformance> <!-- the following one is necessary only for TwinOaks CoreDX DDS compatibility --> <!-- <ExplicitlyPublishQosSetToDefault>true</ExplicitlyPublishQosSetToDefault> --> </Compatibility> <TCP> <Enable>true</Enable> <Port>6002</Port> </TCP> <Discovery> <Peers> <Peer Address=""/> <Peer Address=""/> <Peer Address=""/> </Peers> </Discovery> </DDSI2Service> Note that above there's a setup for 3 applications that run on the same machine, if you'd run each application on a different machine, you could use the same port-number on each machine (so the port-specification in the TCP-section would be always the same e.g. 6001) in which case you could re-use the same configuration for each node.. If that also doesn't work, it might (again) be an issue with ports being blocked, but then at least you have control over which port to use
  18. Hi Hans, I changed the configuration as recommended by you. Now, DDS works even if the nodes are in different networks (for example, Network 1 "192.168.2.x" and Network 2 "192.168.5.x"; the networks are coupled together with a switch). This also applies to our WLAN network. I had the hope that this also works over VPN. Unfortunately it does not work. From my PC (connected via VPN to the network) I can successfully "ping" all nodes which are registered in the confiruration! Do you have any indication of what this might be? Best regards Jan-Marc.
  19. Hans van 't Hag

    Building a DDS application under CYGWIN

    When you say "I want the same program code as for an application on a Linux-PC", then that sort of implies that the DDS-API is platform-dependent, which it isn't Of course when you're using OS-calls such as sleeps or timers, you can run into platform-dependent code, but the DDS-API shouldn't suffer from that. I remember us using CYGWIN in the (far) past on windows so theoretically it should be possible, but I'm surely not an expert on it. Perhaps with 'program code' you mean the DDS_sources in which case there's indeed some OS-specific sources (the OS-abstraction-layer under C:\Program Files\ADLINK\Vortex_v2\Device\VortexOpenSplice\6.9.181018OSS\HDE\x86_64.win64\src\VortexOpenSplice\src\abstraction\os)...
  20. Hi Hans, many thanks for your response! I'll try it right now. Best regards, Jan-Marc.
  21. Hi, I would like to ask if there is a way to create a DDS application on a Windows-PC using CYGWIN. I want to use the same program code as for an application on a Linux-PC (GNU GCC/G ++). I tried using the "Eclipse IDE" on a Windows-PC to create a C ++ project with the "Cygwin GCC" toolchain. However, the project can not be build successfully. I had the hope that it would work, because the "OpenSplice DDS" libraries for "Windows" are also build with the help of CYGWIN. It must have something to do with which include directory the file "os_os_defs.h" is taken from. On Windows there is only the directory "${OSPL_DIR}\install\HDE\x86_64.win64\include\" If "_MSC_VER=1910" is defined (as a define for the platform), the file "os_os_defs.h" from this directory is used. When building the project, however, I get an error message: "conflicting declaration of C function 'int getopt(int, char* const*, const char*)'" I am very grateful for any help! Best regards, Jan-Marc.
  22. There's indeed no such 'break' .. and (thus) you'd have to revert to the (source) timestamp of the received samples. It's still not that easy as historical samples might be produced by different (potentially past-)writers that exploit perhaps-not-sufficiently-aligned clocks .. Note however that (also after wait_for_historical_data()), the datareader's history (of each instance) will be ordered, something that should prevent checking each/every sample .. Anyhow, my advice would be not to rely on such a distinction and if time-validity is an issue, model that validity explicitly in your data(-model)
  23. Hans van 't Hag

    DDS configuration for multicast-disabled network

    Hi, When not using multicast, you must define your set of 'peers' as automatic discovery relies on multicast (which you don't have). So your 'ddsi2' section in the configuration should look like this; <DDSI2Service name="ddsi2"> <General> <NetworkInterfaceAddress>AUTO</NetworkInterfaceAddress> <AllowMulticast>false</AllowMulticast> <EnableMulticastLoopback>false</EnableMulticastLoopback> <CoexistWithNativeNetworking>false</CoexistWithNativeNetworking> </General> <Compatibility> <StandardsConformance>lax</StandardsConformance> </Compatibility> <Discovery> <Peers> <Peer Address="name_or_address_of_machine1"/> <Peer Address="name_or_address_of_machine2"/> <Peer Address="name_or_address_of_machine3"/> </Peers> </Discovery> </DDSI2Service> This should at least work when you have 1 application per machine .. need to dig a little deeper in my memory on how to additionally specify port-numbers in those cases where you'd want to run multiple applications 'per machine' .. PS> I checked-around and as it turns out, the above configuration should also work when running multiple (standalone) applications on a single machine, so you should be 'good to-go' exploiting unicast-only after specifying the peer-list (of all your machines in your network) and instructing DDSI to NOT-use multicast.
  24. I found the missing .lib to add to the linker, it was the DDSkernel.lib.
  25. I'm using the 6.9.181127OSS version for windows vs-2017 that i have downloaded from ADlink website. I'm on a win 7 x64 (on a VM). I'm not using the solution files, I've started a new project to follow along the "Vortex_OpenSplice_Tutorial_C.pdf" that is also found on the Adlink website. The example solution are compiling thought, so I'll look on those project configuration what i'm missing.
  26. Earlier
  27. When my domain participant and readers start up I call wait_for_historical_data (which takes 6.5 seconds on my machine for the first reader, alas) but writers may be producing new data during that time. I'd like to be able to tell the difference between historical samples and new samples (where the latter might be defined as "written since I called wait_for_historical_data", unless some other similar definition is easier). I was hoping for a flag in the dds.SampleInfo that told me if this was historical or new, and/or a read condition that would only return historical data, but I have not found either. There are timestamps in the dds.SampleInfo associated with each sample that might help, but the obvious choice is source_timestamp and I would have to know the clock offset to use that reliably. reception_timestamp seems to use the local clock, but there is no obvious break between historical data and new data. Any suggestions?
  1. Load more activity