Hi all,
I need to understand if there some limitations of the number of participant that i could use on Android. I have develop two Apps Android that each other sends and receive data with default Qos policy. When i start RTI Administration Console or a third app, i have noticed that communication stop each other, and it resume only when i close the third app or RTI Administration Console.
Who Could help me?
Thank you,
Manuel.
Manuel
There is no DDS limit on participants specific to Android. I am able to run three DDS apps and they communicate between themselves ok.
DDS on Android does not use shared memory (unlike DDS on other platforms) as its considered undesirable for Android apps to communicate too easily. That's an Android position. Depending on whether you are on an emulator or a device and how its configured for multicast you may have to set locators for discovery. This is especially likely if you are running RTI Admin Console on a different machine (I assume that your are). If you are connecting from an Android emulator to another machine you will need to ensure that DDS discovery crosses the virtual NIC properly.
Discovery issues don't appear to exactly match the symptoms you describe but I'm not sure what else would. As I say I have a similar configuration working OK.
Lastly, I assume that you are running with the Android Application Framework, rather than as a raw linux distro, as you mention "Apps".
Dave
One further thought, if you are using an emulator there is section in the "Getting Started with Android" document that comes with DDS
The section "Communications between Connext applications in Emulator and on Host" includes this:
" The emulator does not (for the version used at time of writing) support multicast. Therefore, discovery will be over unicast UDP. The number of participants within the host + emulator is limited due to the need to allocate ports for each participant. By default, that limit is five participants. In normal Connext usage, the participants would acquire ports automatically. (The assignment would be implicitly based on the order of start up). The emulator that encapsulates one or more participants needs to explicitly acquire the ports that its contained participants will use. Therefore, it is necessary to explicitly manage the ports used. "
This looks like it might be relevent to your problem. Note that the limit is 5 by default but this limit can be changed.
Dave
Hi Dave,
first of all, i have appreciate your reply about my problem. I'll try to describe more precicely my use case. I must to develop an use case where three o more different smartphone devices could communicate using an model driven approach described in my thesis. So i have kept the example included with RTI Connext for publisher e subscriver and then i have added to my Eclipse ADT to start the experiment. At first time using RTI Admin monitor i have noticed that starting the RTI example like java application in the same HOST (localhost) as you have correctly mentioned on your comment, the application uses UDP+SHEM. After that, i have done a little modify to the example to deploy in the smartphone devices. After deployed the .apk to the different 3 devices, i start the simulation like with the java application scenario, but i encoutered the the incomprehensible situation that i have post before. So i would like to try to talk with you to understand what i could done to resolve, cause it's so important for my final dissertation :(. Do you could help me? Have you wrote some particular java code to implement your scenario? But when you said:"I am able to run three DDS apps and they communicate between themselves" you talk about that you thart the apps on the same device??
I'll appreciate some helps.
Manuel
Hi Dave,
I would like add some details:
1) I have test the apps with different devices with Android version 4.2.2 and 4.3, and i have Java SDK 1.6
2) Looking the "RTI_CoreLibrariesAndUtilities_GettingStarted_AndroidAddendum", i have added the library suggested in the manual and I try example showed in the manual and all gone ok. But when i have start RTI Admin, the communication with the simple example stopped or when i have start in other third device an app with an subscriver. The domain for ALL entities is the same, zero. How you have corretly said Android does not support SHMEM, infact when i start RTI Admin i could saw that the ip for all participant are different but the protocol is UDP but the ports are the same of each other.
So, i would like to know ho i could resolve or undestand how i could see your implementation, probably the example of RTI Connext i so simple or probably i have to configure some Qos?
Thank you.
Manuel
Manuel
You mention that you use Eclipse. This can obscure what is happening, what options are used for various steps. Is it correct that your publishers and subscribers communicate as expected prior to running RTI Admin Console? I assume Admin Console is running on the same machine as the Eclipse from which you launch your Android Apps.
Have you tried launching your Android Apps directly from the Android SDK? I.e. using "adb" to install the apk files and the shell to start the apps (as described in the Android SDK documentation). After eliminating Eclipse from the scenario, does the starting of Admin Console still disrupt communication? If so would it be possible to use rtiddsping and rtiddsspy (apk files provided with DDS distribution) in place of your Apps, installed and started directly from with the Android SDK, to see if Admin Console still disrupts communication?
Are your three Android devices connected to the machine with Eclipse by USB or Wi-Fi? Are they communicating with each other directly or via the machine they are connected to?
Dave