What is the difference between message call API and function call API? Which type of API is best if I have one software module written in ROS C++ and another software module