From df63ece978d2feeef8c10504d5ff42e3d6e3314d Mon Sep 17 00:00:00 2001 From: Klagarge Date: Wed, 13 Sep 2023 13:01:21 +0200 Subject: [PATCH] add full sequence --- UML/full_sequence.puml | 25 +++++++++++++++++++++++++ UML/pdf-png/full_sequence.png | Bin 0 -> 29828 bytes 2 files changed, 25 insertions(+) create mode 100644 UML/full_sequence.puml create mode 100644 UML/pdf-png/full_sequence.png diff --git a/UML/full_sequence.puml b/UML/full_sequence.puml new file mode 100644 index 0000000..519b06a --- /dev/null +++ b/UML/full_sequence.puml @@ -0,0 +1,25 @@ +@startuml +'https://plantuml.com/sequence-diagram + +actor User as usr +participant can_message as can +control kartculator as kc +queue XF as xf +entity Drive as drive +entity Steering as steering + +usr -\ xf : set message "move" +xf -> can : new value on joystick + +== If X axis change value == +can -> kc : calculate new position +kc -> can : build message +can -> steering : set new position + +== If Y axis change value == +can -> kc : calculate new torque +kc -> can : build message +can -> xf : set message "torque" +xf -> drive : set new torque + +@enduml \ No newline at end of file diff --git a/UML/pdf-png/full_sequence.png b/UML/pdf-png/full_sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1dbcac2dabbd7fd4c8feb9f709c4af976003e7 GIT binary patch literal 29828 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