'How to represent communication protocol in UML?

In my UML model I have a system and its subcomponents that talk to each other. For Example, I have a computer and a RC robot where they talk via Bluetooth. Currently in the diagrams the flow is something like:

"Computer" triggers "setVelocity()" function of "RC car".

At this point, I want to refine the communication by saying that

  • computer sends "Movement" message
  • with velocity field is set to 100 and direction field is set to 0
  • which is acknowledged by RC car by sending ACK message
  • with message id "Movement" and sequence number X.

How do I do that?

EDIT: Clarification

Normally this is what my diagram looks like without protocol details:

Current Model

But when I tried to add messages, there are at least 2 problems:

  • It seems like Computer first triggered the setVelocity() funciton and then sendBluetoothMessage() sequentially which are not sequential . The followings of setVelocity() are actually what happens inside that.
  • sendBluetoothMessage() is actually a function of Computer. But here it belongs to RC Car. (or am I wrong?) And the same things for ACK.

What I tried

Thanks for the responses. You are gold!



Solution 1:[1]

If you really want to display this level of detail in a sequence diagram, it would look like this:

enter image description here

Notes:

  1. For an asynchronous call, use an open arrowhead.
  2. Use stacked bars to represent the call stack.
  3. In the operation's argument list, write "argumentName=argumentValue" or just "argumentValue".
  4. For messages for which the exact operation name is unknown or irrelevant, I use just a description without an argument list.

But be careful about which level of detail you want to show. Often, a sequence diagram becomes too complex if you display every operation in the call stack.

Solution 2:[2]

I was dealing with the same issue. I searched online and couldn't find something that I like. Hence I come up with this solution. I show the communication ports on the sequence diagram and I draw communication dependent steps among port lines. Here is a screenshot: my version of your problem.

Note: I haven't used bluetooth before so I am not sure about the acknowledge step. If this is something done automatically by the hardware( Like in the CAN Bus) I wouldn't draw it like this. I probabily wouldn't show it or I wouldn't add the function acknowledge(); and just draw the line between bluetooth port life lines.

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 www.admiraalit.nl
Solution 2 ?pek