Frequently Asked Questions
Q: How to compile Mobile-C?
Mobile-C is compiled as a dynamic libary.
Mobile-C is distributed as C++ source code. It needs to be compiled into a dynamic library to be used.

Mobile-C has dependancies
Before compiling Mobile-C, three dependancies must be enabled in Ch:

  1. A C/C++ compiler must be enabled in Ch. Instructions on how to set up the compiler can be found in Section 1.1 of the ChSDK guide located in CHHOME/docs/chsdk.pdf. Demo code to test if the compiler is properly working can be found in CHHOME/demos/SDK/chapters/
  2. Embedded Ch must be installed. To check that Embedded Ch is properly working, demo code can be found in the CHHOME/demos/embedch/ directory.
  3. CMake must be installed and the path to its /bin directory must be added to the Ch environment variable '_path'. Instructions on how to perform this step can be found in the Mobile-C documentation, Chapter 2. To test if this step has been performed properly, restart Ch, type 'cmake' from a Ch command shell and make sure the command is recorgnized.
These three dependanices must be working before the Mobile-C library is compiled.

Instructions to Compile Mobile-C
Instructions on how to compile Mobile-C can be found in the MOBILEC/docs/mobilec.pdf file, Chapter 2.

Demo code
Together with the library, demo code is compiled to demonstrate the functionalities Mobile-C. Compiled demo code is located in MOBILEC/build/demos/, where MOBILEC/build/ is the build directory.

Q: What's difference between Mobile-C from other mobile agent platforms?
Mobile-C is designed for real-time applications.
Most other mobile agent platforms are written in Java to support mobile code written in Java. Unlike Java-based platforms, with underministic garbage collection. Mobile-C is time deterministic for real-time applications without garbage collection.

Mobile-C is designed for easy interface with hardware.
Mobile-C is written in C and it supports mobile code in C/C++. Because both agent platform and mobile code are written in C, it is especially appealing for applications such as robotics and sensor network that need to interface with hardware. To the best of our knowledge, Mobile-C is the only actively maintained agent platform that supports mobile agents written in C/C++. It can be easily integrated with applications written in C/C++.

Mobile-C is designed for power-sensitive applications.
For some applications such as sensor network, communication typically consumes more battery power than computation. To minimize the agent code, Mobile-C does not use bytecode which usually takes more space than the original source code. To reduce the communication, Mobile-C also supports incremental computing for mobile agents.

Mobile-C is designed for resource constrained applications.
Although Mobile-C is a general agent platform, it is specially developed for mechatronic and embedded systems to support code mobility. In comparison with other mobile agent platforms, Mobile-C has a smaller footprint. For example, for an agent printing the message "Hello, World", the memory usage in Mobile-C is 100 times less than that in JADE, a Java-based mobile agent platform.

Q: What's difference for performance between Mobile-C and JADE?
This study indicates that the performance for agent migration in Mobile-C is about two times faster than JADE for different numbers of agencies and different numbers of agent teams. Furthermore, there are many inherent differences in the design of the architecture of the two agent platforms. For instance,
  • JADE and JADE agents are all written in Java, whereas the Mobile-C agency framework is a library written in C and the agents are written in C/C++.
  • The Mobile-C platform is suitable for embedded and real-time systems, whereas the JADE platform is designed for IT applications.
  • The JADE agency framework requires one agency to be designated the central main agency, known as the "Main Container" in order for the entire framework to function. In Mobile-C, each agency is a strict peer and the framework is fully decentralized.
  • Mobile-C has a smaller footprint. For example, for an agent printing the message "Hello, World", the memory usage in Mobile-C is 100 times less than that in JADE.
Q: Where can Mobile-C be applied?
Mobile-C can be used to support the code mobility of networked systems, especially intelligent mechatronic and embedded systems. It can be found in many applications including Intelligent monitoring Autonomous mobile robotic systems Sensor network Intelligent sensor fusion Adaptive control Predictive maintenance Intelligent transportation systems
Q: Is there a limit in the number of agents for an agency?
Q: Can an agent communicate with other agents in a different agency?
Q: Does Mobile-C use peer-to-peer communication?
Yes. An agency in Mobile-C can communicate with different agencies. An agent can communicate with different agents and agencies.
Q: The demos run fine on the localhost, but the client cannot connect to the server when using multiple hosts. What's wrong?
There are several possibilities which may cause this behaviour.
  • More often than not, firewalls on the server side prevent connections to non-standard ports. Check your firewall software to make sure that the Mobile-C ports are open. Standard Mobile-C ports are 5050, 5051, 5052, 5053, etc. depending on how many agencies will be running on a host. Occasionally, ports 5125, 5126, etc. are also used.
  • Ensure that the destination host and port in the agent xml file is correct.
  • Check the server and client agency code to ensure that the ports and destination addresses are correct.
Q: Is Mobile-C open source?
Yes. Mobile-C is open source. You are welcome to contribute to the development of Mobile-C.