Jump to content
OpenSplice DDS Forum

ianisM

Members
  • Content Count

    18
  • Joined

  • Last visited

About ianisM

  • Rank
    Member

Profile Information

  • Company
    spherea
  1. Well it was my first tought but it indeed has the include guards. the other strange thing is that only those 2 would cause me trouble and not the other struct that were declared pretty much identically in those LDM_Common.IDL Plus I did not wrote those IDL files, and I'm 100% not allowed to touch them or modify anything with them. I must do with whatever was given to me. Anyway I solved my probleme by editing the generated h files and putting all the declaration of those problematic functions as inline. Not pretty but it will do the trick untill I find a more elegant solution that does not require me tinkering with those generated files.
  2. sure that would be the definition of struct T_IdentifierType { T_Int32 A_resourceIdentifier; T_Int32 A_instanceIdentifier; }; this definition is found in a IDL file that is included in all my other IDL files. This strutc type is also used in all my other IDL files. the problems appear to be with the __alloc and _alloc function of the DDS_sequence for that type. in all of my *Dcps.h file that I got i have these lines that were generated : DDS_sequence_P_LDM_Common_PSM_T_IdentifierType *DDS_sequence_P_LDM_Common_PSM_T_IdentifierType__alloc (void); P_LDM_Common_PSM_T_IdentifierType *DDS_sequence_P_LDM_Common_PSM_T_IdentifierType_allocbuf (DDS_unsigned_long len); #define P_HUMS_PSM_C_Monitored_Entity_sequence_P_LDM_Common_PSM_T_IdentifierType__alloc DDS_sequence_P_LDM_Common_PSM_T_IdentifierType__alloc #define P_HUMS_PSM_C_Monitored_Entity_sequence_P_LDM_Common_PSM_T_IdentifierType_allocbuf DDS_sequence_P_LDM_Common_PSM_T_IdentifierType_allocbuf and this is exactly what poses problem. Is there a way to regenerate those file without those multi-inclusion trouble or do I have to go and try to find a manual correction ?
  3. HI, I have multiple IDL files, lets says A.idl, C.idl D.idl, and all of these IDL have the same F.idl included at the top. I have run the IDL preprocessor n all those files for a C standalone exit and do have all my *.c and *.h file. The probleme occurs when I try to complie those .c and .h file I got a linker error dure to multiple declaration of type that where in the F.idl. Howerver those .c and .h files seems to have multi-inclusion protection written by the preprocessor but they seem not to work at compilation. Is there any way to generate those *.c and *.h file all together so the preprocessor implement working multi-iclution and multi-definition protection or do I have to try and correct them manually ?
  4. No i'm french but I learned a little bit of dutch a while ago
  5. Ok I tried outside of the VM and I have a 7 second latency. So the VM did slow down the alignment process. There is some other strange behaviour but i attriute them to a quick and dirty coding. unfortunately I will be stuck with transient as i will have to do an app that will have to interact with a system that was already designed and therefore impose me the QoS policy (I'll have to design a test program for a ECU). But now that I know the limitations it's not that complicated to find a way around them. I just have to be sure that my reader are launched before the ECU and it's writer. Anyway, bedankt for the help understanding all that.
  6. Ok thanks for the quick responses. Maybe it's because I'm on a VM. I tried to make another application that just created a domainparticipant then when idle until closed, and I launched it befor launchin the others. it have helped a little bit, my delais dropped to about 10 seconds.
  7. And why if I launch the reader first and the writter after I don't have this huge delay ?
  8. Ok I did some more test and found out 2 things : DDS_DATAREADER_QOS_USE_TOPIC_QOS works fine my reader is indeed set in transient since the topic is in transient my reader finally did manage to find data, but it took him about 15 second before being able to see it. Meaning that it took about 15 sec from the moment the sample was supposedly sent by the writter and the moment it was seen by the reader. Why there is as much as a delay ? The other message that i send, who are in volatile durability are transmited immediately between my writter and my reader. why those transient messages took so long ? The delay is even greater if i have more writter and different instances of this topic.
  9. But for my writer I used the DDS_DATAREADER_QOS_USE_TOPIC_QOS. Since the topic is set up to have TRANSIENT durability shouldn't my reader also use TRANSIENT then ? As for the multitopic thing, it's exactly where my version differs for the most part. I got rid of this multitopic emulation to simplify it to just test the kind of things that I will need in my real application (I'm still in the learning phase for now, gathering the info that will be usefull). Instead of crating a pseudo multi-topic with a listener i just print info from 2 topic.
  10. Hi, I have some trouble with the transient durability that I use on a topic. It does not seems to work. If a wrtier is created and send a sample, a reader that comes later cannot access those data (read operation returns with a status DDS_RETCODE_NO_DATA. Everything works fine if the reader is created (or try to read, i'm not sure) before the sample is written. I'm using OpensSplice 6.9 community on windows 7 x64. my code is a variation of the chat tutorial. Here is the code used to create the topic and its QoS, it is done the same on the reader and writter executable: /* Obtain a private copy of the default QoS to tailor it. */ setting_topic_qos = DDS_TopicQos__alloc(); checkHandle(setting_topic_qos, "DDS_TopicQos__alloc"); status = DDS_DomainParticipant_get_default_topic_qos(dp, setting_topic_qos); checkStatus(status, "DDS_DomainParticipant_get_default_topic_qos"); /* Note: changing the copy doesn't change the original itself!*/ setting_topic_qos->durability.kind = DDS_TRANSIENT_DURABILITY_QOS; nameServieTopic = DDS_DomainParticipant_create_topic(dp, "Chat_NameService", nameServicetypeName, setting_topic_qos, NULL, DDS_STATUS_MASK_NONE); checkHandle(nameServieTopic, "DDS_DomainParticipant_create_topic"); here is the writer : dw_qos = DDS_DataWriterQos__alloc(); checkHandle(dw_qos, "DDS_Publisher_create_datawriter"); status = DDS_Publisher_get_default_datawriter_qos(chatPublisher, dw_qos); checkStatus(status, "DDS_Publisher_get_default_datawriter_qos"); status = DDS_Publisher_copy_from_topic_qos(chatPublisher, dw_qos, setting_topic_qos); checkStatus(status, "DDS_Publisher_copy_from_topic_qos"); dw_qos->writer_data_lifecycle.autodispose_unregistered_instances = FALSE; nameServer = DDS_Publisher_create_datawriter(chatPublisher, nameServieTopic, dw_qos, NULL, DDS_STATUS_MASK_NONE); checkHandle(nameServer, "DDS_Publisher_create_datawriter"); here is the reader : sub_qos = DDS_SubscriberQos__alloc(); checkHandle(sub_qos, "DDS_Subscriberqos__alloc"); status = DDS_DomainParticipant_get_default_subscriber_qos(dp, sub_qos); checkStatus(status, "DDS_DomainParticipant_get_default_subscriber_qos"); sub_qos->partition.name._length = 1; sub_qos->partition.name._maximum = 1; sub_qos->partition.name._buffer = DDS_StringSeq_allocbuf(1); checkHandle(sub_qos->partition.name._buffer, "DDS_StringSeq_allocbuf"); sub_qos->partition.name._buffer[0] = DDS_string_alloc(strlen(partitionname)); checkHandle(sub_qos->partition.name._buffer[0], "DDS_string_alloc"); strcpy(sub_qos->partition.name._buffer[0], partitionname); chatSubscriber = DDS_DomainParticipant_create_subscriber(dp, sub_qos, NULL, DDS_STATUS_MASK_NONE); checkHandle(chatSubscriber, "DDS_DomainParticipant_create_subscriber"); nsReader = DDS_Subscriber_create_datareader(chatSubscriber, nameServieTopic, DDS_DATAREADER_QOS_USE_TOPIC_QOS, NULL, DDS_STATUS_MASK_NONE); What really troubles me is that using executable create by compilling the example given with OpenSplice i got the exact same behaviour. If i launch the chatter before the messageboard, then it is unable to retrive the chatter name, while if I launch the messageboard first, then it can retrieve the chatter name without any trouble. Why is that ? why does transient durability does not work ? Even with the source code provided in the release ?
  11. 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....
  12. 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
  13. 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.
  14. 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 1.3.1.60616 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 ?
  15. I found the missing .lib to add to the linker, it was the DDSkernel.lib.
×
×
  • Create New...