@startuml Sequence Diagram
  !define LIGHTORANGE
  !include style.puml
  skinparam actorStyle awesome
  skinparam SequenceBoxBorderColor #Blue

  actor SimRacer as "Sim Racer"

  participant ConvertAD as "HX711" << (C,#ADD1B2) >>
  participant Signal << (C,#ADD1B2) >>
  participant Arduino as "Arduino" << (I,#7d67a3) >>
  actor SimPC as "Sim PC"

  'sequences
  == Initialization ==
  Arduino -> Signal : create
  Signal -> ConvertAD : create
  Signal -> ConvertAD : start communication
  alt HX711 not available
    group while [no response]
      ...timout 1 second...
      Signal -> Arduino : error request
      Arduino -> SimRacer : error indication
      Signal -> ConvertAD : start communication
    end
  else HX711 available
      ConvertAD --> Signal : ok
  end
  Signal --> Arduino : ok
  Arduino -> SimRacer : communication OK indication

  Arduino -> SimPC : Serial.begin()
  alt USB CDC serial connection is not open
    group while [not open]
      SimPC --> Arduino : not ok
      Arduino -> SimRacer : error indication
      Arduino -> SimPC : start serial \ncommunication
    end
  else USB CDC serial connection is open
      SimPC --> Arduino : ok
  end
  Arduino -> SimRacer : communication OK indication

  == Braking ==
  Signal -> ConvertAD : read()
  alt 
    ConvertAD -> SimRacer : get force
    SimRacer --> ConvertAD : brake pedal force
    ConvertAD --> Signal : measurement //long//
    Signal -> Arduino : brake signal
    Arduino -> SimPC : brake input signal
    SimPC --> SimRacer : decceleration
  else
    ...timeout 1 second...
    Signal -> Arduino : error request
    Arduino -> SimRacer : error indication
  end

@enduml