\documentclass[../mainDocument.tex]{subfiles}
\begin{document}
\section{Use-Cases}

\input{tikzImgs/uc_diagram.tex}

%TO DO Reihenfolge ändern	???

\subsection*{UC - 10 Status ausgeben}\label{UC:showStatus}
\addcontentsline{toc}{subsection}{\nameref{UC:showStatus}}

Dieser Use-Case dient dazu, als Operator jederzeit \gls{IPD} und \gls{PS} sowie \gls{LV}, \gls{FV} und potentielle Kolonnenkandidaten (\gls{PFV}) einsehen zu können.
Weitere Informationen sind in Tabelle~\ref{tab:UC:showStatus} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:showStatus}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Mindestens ein Fahrzeug ist eingeschaltet.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Ausgeben des aktuellen Status verändert während der Übertragung nicht die Operation der Fahrzeuge.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{Operator, \gls{GV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Fahrzeug(e) wird/werden eingeschaltet.
      \item Fahrzeuge beginnen mit Übertragung von Position, Geschwindigkeit und Kolonnenstatus.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Ausgeben des aktuellen Status} \label{tab:UC:showStatus}
\end{table}

\subsection*{UC - 20 Kolonne erstellen}\label{UC:createPlatoon}
\addcontentsline{toc}{subsection}{\nameref{UC:createPlatoon}}

Dieser Use-Case dient dazu, eine Kolonne zu erstellen.
Mehrere Fahrzeuge ( mind. 2 ) erkennen sich gegenseitig und beginnen zu kommunizieren.
Weitere Informationen sind in Tabelle~\ref{tab:UC:createPlatoon} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:createPlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Es existieren mindestens 2 Fahrzeuge, die eine Kolonne bilden wollen.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Die Fahrzeuge kommunizieren miteinander und die Rollenverteilung hat statt gefunden.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{Operator, 2 \gls{PFV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Die \gls{PFV} erhalten die Ausgabe, sich zu einer Kolonne zusammenzuschließen.
      \item Die Kommunikation zwischen den \gls{PFV} wird aufgenommen.
      \item Die \gls{PFV} legen selbständig fest, welches der Fahrzeuge das \gls{LV} und welches das \gls{FV} wird.
      \item Der Kolonnenstatus wird im Log festgehalten.
      \item Die nun erstellte Kolonne kann mit \nameref{UC:showStatus} überprüft werden.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:circle}
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonne erstellen} \label{tab:UC:createPlatoon}
\end{table}

\subsection*{UC - 30 Kolonnenfahren}\label{UC:runPlatoon}
%Unter Use Cases wie UC 31: Abstand halten siehe CrESt?
\addcontentsline{toc}{subsection}{\nameref{UC:runPlatoon}}

Dieser Use-Case dient dazu, das Fahren einer bereits existierende Kolonne
auf einer Fahrbahn in festgelegten Abständen und mit einer festgelegten
Geschwindigkeit zu organisieren.
%Das \gls{LV} kann dabei neue \gls{IPD} und \gls{PS}-Werte für die Kolonne festlegen.
%Diese Werte umzusetzen heißt, dass die Fahrzeuge dafür sorgen, dass sie selbstständig die Geschwindigkeit und Abstände fahren,
%die vom \gls{LV} erwartet werden. Beide Werte müssen so schnell wie möglich umgesetzt werden,
%wobei erst die Entfernung und dann die Geschwindigkeit angepasst wird.
%Jedes Fahrzeug ist stets damit beschäftigt, so dicht wie möglich seinen Abstand zum voranfahrenden Fahrzeug
%und seine Geschwindigkeit an \gls{IPD} und \gls{PS} anzupassen und die Differenz dazwischen zu minimieren.
Weitere Informationen sind in Tabelle~\ref{tab:UC:runPlatoon} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:runPlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Eine existierende Kolonne steht oder fährt auf einer Fahrbahn.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Die Kolonne fährt weiter auf der Fahrbahn} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{\gls{LV}, mindestens ein \gls{FV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \gls{LV} prüft seinen Abstand und relative Geschwindigkeit zu voraus befindlichen Objekten auf der Strecke.
      \item \gls{LV} legt neue Werte für die \gls{IPD} und den \gls{PS} fest.
      \item Jedes \gls{FV} passt seinen Abstand zum voranfahrenden Fahrzeug an die \gls{IPD} an und setzt die \gls{PS} um.\footnotemark
      \item Jedes \gls{FV} übermittelt die geänderten Werte.
      \item Jedes \gls{FV} hält die vorgegebenen Werte bis vom \gls{LV} neue Werte vorgegeben werden, indem die Differenz zwischen dem \gls{IPD} und der eigenen Distanz zum voranfahrenden Fahrzeug und die Differenz \gls{PS} und der eigenen Geschwindigkeit durch Geschwindigkeitskorrekturen minimiert wird.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}  
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonnenfahren} \label{tab:UC:runPlatoon}
\end{table}
\footnotetext{{Details dazu folgen in der Modulbeschreibung zum (C)ACC.}}

\subsection*{UC - 40 Kolonne beitreten}\label{UC:joinPlatoon}
\addcontentsline{toc}{subsection}{\nameref{UC:joinPlatoon}}
Dieser Use-Case dient dazu, weitere Fahrzeuge in eine bereits existierende Kolonne aufzunehmen.
Dabei können nur Fahrzeuge, die direkt hinter der Kolonne fahren, in diese aufgenommen werden.
Weitere Informationen sind in Tabelle~\ref{tab:UC:joinPlatoon} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:joinPlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Ein einzelnes Fahrzeug (\gls{PFV}) fährt hinter einer bestehenden Kolonne (ein \gls{LV} und mindestens ein \gls{FV}) und will dieser beitreten.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Das Fahrzeug fährt als \gls{FV} an hinterster Position als Teil der Kolonne.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{\gls{LV}, mindestens ein \gls{FV}, \gls{PFV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \gls{PFV} sendet seinen Beitrittswunsch als eine Nachricht.
      \item \gls{LV} sendet Antwort mit der Kennung\footnote{In der Gruppe wurden QR Codes als Kennung diskutiert. Dies gehört jedoch nicht in die Use Case Beschreibung.} des letzten \gls{FV}.
      \item \gls{PFV} prüft die Kennung des voranfahrenden Fahrzeugs.
            \begin{enumerate}
              \item Kennung passt, dann weiter mit \ref{it:afterIdMatch}.
              \item \label{it:idMissmatch}Kennung passt nicht, dann Abbruch.
            \end{enumerate}
      \item \label{it:afterIdMatch}\gls{PFV} erhält die nächsten \gls{PS} und \gls{IPD} vom \gls{LV}.
      \item \gls{PFV} passt den Abstand zum letzen \gls{FV} an.
      \item \gls{PFV} passt die eigene Geschwindigkeit an.
      \item \gls{PFV} bestätigt erfolgreiche Umsetzung in einer Nachricht.
      \item \gls{LV} passt sein Wissen über die Kennung des letzen \gls{FV} an.
      \item Der Kolonnenstatus wird im Log festgehalten.
    \end{enumerate}} \\ \hline

    \tabHead{alt. Ende} &
    \tabBody{Abbruch in \ref{it:idMissmatch} - Fahrzeug wird nicht in die Kolonne aufgenommen.} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonne beitreten} \label{tab:UC:joinPlatoon}
\end{table}

\subsection*{UC - 50 Kolonne verlassen}\label{UC:leavePlatoon}
\addcontentsline{toc}{subsection}{\nameref{UC:leavePlatoon}}

Dieser Use-Case dient dazu, als \gls{FV} aus der Kolonne auszutreten. Dabei können nur \gls{FV}, welche an letzter Stelle der Kolonne fahren, diese regulär verlassen.
Weitere Informationen sind in Tabelle~\ref{tab:UC:leavePlatoon} zu finden.

\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:leavePlatoon}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Eine Kolonne existiert. Fahrzeug fährt an letzter Position.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Fahrzeug ist nicht mehr in der Kolonne. 
    \gls{LV} hat aktualisierte Platoon-Statusdaten} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{\gls{LV}, \gls{PFV}, \gls{FV}} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Letzte \gls{FV} signalisiert Austrittswunsch und wird zu einem \gls{PFV}
      \item \gls{LV} aktualisiert Platoon-Statusdaten
      \item \gls{LV} signalisiert \gls{PFV}, dass es nicht mehr Teil des Platoons ist
      \item Der Kolonnenstatus wird im Log festgehalten.
      \item \gls{PFV} schert aus
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:stopCar}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item \nameref{RQ:leaveMsg}
    %  \item \nameref{RQ:mngPlatState}
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Kolonne verlassen} \label{tab:UC:leavePlatoon}
\end{table}

\subsection*{UC - 60 Kolonne auflösen}\label{UC:deletePlatoon} % in CrRESt stand dissolvePlatoon
\addcontentsline{toc}{subsection}{\nameref{UC:deletePlatoon}}    % in CrRESt stand dissolvePlatoon

Dieser Use-Case dient dazu, eine existierende Kolonne aufzulösen, wenn \nameref{UC:leavePlatoon} eintritt und sich in der Kolonne nur noch das \gls{LV} und ein \gls{FV} befinden.
Weitere Informationen sind in Tabelle~\ref{tab:UC:deletePlatoon} zu finden.

\begin{table}[H] \centering
\rowcolors{1}{light-gray}{white}
\begin{tabularx}{\textwidth}{|c|X|} \hline
\tabHead{Id} &
\tabBody{\nameref{UC:deletePlatoon}} \\ \hline

\tabHead{Vorbed.} &
\tabBody{Ein Kolonne aus einem \gls{LV} und einem \gls{FV} existiert. } \\ \hline

\tabHead{Nachbed.} &
\tabBody{Kolonne wurde aufgelöst. Alle teilnehmenden Fahrzeuge treffen ihre Entscheidungen nun selbstständig.} \\ \hline

\tabHead{Akteure} &
\tabBody{LV, FV} \\ \hline

\tabHead{Ablauf} &
\tabBody{\begin{enumerate}[leftmargin=*]
             \item \gls{LV} sendet an das \gls{FV} die Information, die Kolonne zu verlassen.
             \item \gls{LV} löst Kolonne auf.
             \item Der Kolonnenstatus wird im Log festgehalten.
\end{enumerate}} \\ \hline

\tabHead{für \gls{AS}} &
\tabBody{\begin{enumerate}[leftmargin=*]
             \item keine
\end{enumerate}} \\ \hline

%\tabHead{nutzt \gls{RQ}}  &
%\tabBody{\begin{enumerate}[leftmargin=*]
%             \item Hier stehen Anforderungen mit **nameref**
%\end{enumerate}}\\ \hline

\end{tabularx}
\caption{Details zum UC - Kolonne auflösen} \label{tab:UC:deletePlatoon}
\end{table}


\subsection*{UC - 70 Fahrbahn folgen}\label{UC:laneKeeping}
\addcontentsline{toc}{subsection}{\nameref{UC:laneKeeping}}
Dieser Use-Case dient dazu, ein automatisch agierendes Fahrzeug auf einer vorgegeben Fahrbahn zu halten.
Weitere Information sind in Tabelle~\ref{tab:UC:laneKeeping} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:laneKeeping}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{Ein Fahrzeug befindet sich auf einer Fahrbahn.} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{Das Fahrzeug befindet sich auf einem späteren Teil der Fahrbahn.} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{Ein allgemeines Fahrzeug (\gls{GV}).} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item Das \gls{GV} fährt auf der Fahrbahn.
      \item Das \gls{GV} erkennt den Streckenverlauf.
      \item Das \gls{GV} passt seine Geschwindigkeit und seine Radstellung dem Streckenverlauf an.
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:circle}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - Fahrbahn folgen} \label{tab:UC:laneKeeping}
\end{table}

\subsection*{UC - 80 Abstand halten}\label{UC:distKeeping}
\addcontentsline{toc}{subsection}{\nameref{UC:distKeeping}}
Weitere Information sind in Tabelle~\ref{tab:UC:distKeeping} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:distKeeping}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item 
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:min}
      \item \nameref{AS:setupDist}
      \item \nameref{AS:stopCar}
      \item \nameref{AS:changeDist}
      \item \nameref{AS:asynStart-2}
      \item \nameref{AS:circle}
      \item \nameref{AS:changeSpeed}
      \item \nameref{AS:RCcontrol}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - 80 Abstand halten} \label{tab:UC:distKeeping}
\end{table}

\subsection*{UC - 90 Kolonnendaten ändern}\label{UC:changePlatoonData}
\addcontentsline{toc}{subsection}{\nameref{UC:changePlatoonData}}
Weitere Information sind in Tabelle~\ref{tab:UC:changePlatoonData} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:changePlatoonData}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item 
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:changeDist}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - 90 Kolonnendaten ändern} \label{tab:UC:changePlatoonData}
\end{table}

\subsection*{UC - 100 Geschwindigkeit ändern}\label{UC:changeSpeed}
\addcontentsline{toc}{subsection}{\nameref{UC:changeSpeed}}
Weitere Information sind in Tabelle~\ref{tab:UC:changeSpeed} zu finden.
\begin{table}[H] \centering
  \rowcolors{1}{light-gray}{white}
  \begin{tabularx}{\textwidth}{|c|X|} \hline
    \tabHead{Id} & 
    \tabBody{\nameref{UC:changeSpeed}} \\ \hline
    
    \tabHead{Vorbed.} & 
    \tabBody{} \\ \hline
    
    \tabHead{Nachbed.} & 
    \tabBody{} \\ \hline
    
    \tabHead{Akteure} & 
    \tabBody{} \\ \hline
    
    \tabHead{Ablauf} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item 
    \end{enumerate}} \\ \hline
    
    \tabHead{für \gls{AS}} &
    \tabBody{\begin{enumerate}[leftmargin=*]
      \item \nameref{AS:changeSpeed}
    \end{enumerate}} \\ \hline
    
    %\tabHead{nutzt \gls{RQ}}  &
    %\tabBody{\begin{enumerate}[leftmargin=*]
    %  \item Hier stehen Anforderungen mit **nameref**
    %\end{enumerate}}\\ \hline
    
  \end{tabularx}
  \caption{Details zum UC - 100 Geschwindigkeit ändern} \label{tab:UC:changeSpeed}
\end{table}
\end{document}