\section{Begrepp och systemöversikt} Runt om bilbanan finns 9 sensorer (kallade ''givare'') som skickar en signal när en bil åker under dem. En av dessa givare agerar målgång (kallad ''målgivare'') och skickar en egen signal systemet kan läsa av. Givarna delar naturligt in banan i nio delar, kallade ''segment''. Dessa segment har i sin tur delats in i mindre delsegment, kallade ''subsegment''. Banan består av totalt 80 subsegment. För vardera bana och subsegment har ett värde på önskad spänningstillförsel till banan tagits fram. Detta värde varierar dels eftersom bilarna vid olika delar av banan behöver olika mycket spänningstillförsel för samma hastighet och dels eftersom bilarna vid vissa delar av banan inte kan åka lika snabbt som vid andra delar av banan. Värden som är relevanta för styrningen av vardera bara är i systemet sparad i två så kallade \emph{structs} med samma struktur. Att de båda banorna beskrivs av samma typ av objekt gör att funktionerna (som beskrivs nedan) kan utformas oberoende av vilken bana det är de hanterar. Dessa variabler hänvisas till som \texttt{car.value}. Om två bilar körs finns det således två värden sparade för varje variabel som är specifierad nedan, en för bana 1 och en för bana 2. \begin{itemize} \item \texttt{car.num} - Om bilen är på bana ett eller två. \item \texttt{car.running} - Om bilen körs eller inte. \item \texttt{car.stopping} - Om bilen för tillfället letar efter ett ställe att stanna på. \item \texttt{car.stopped} - Om bilen har hittat ett ställe att stanna på. \item \texttt{car.automatic} - Om bilen ska köras autonomnt. \item \texttt{car.segment} - Bilens nuvarande segment. \item \texttt{car.lap} - Bilens nuvarande varv. \item \texttt{car.lap\_times} - En lista över bilens varvtider. \item \texttt{car.seg\_times} - En matris över bilens segmentstider per varv. \item \texttt{car.position} - Bilens position i meter efter målgivaren. \item \texttt{car.pos\_at} - En lista över hur långt det är kvar till målgivaren från de olika segmenten. \item \texttt{car.seg\_len} - En lista över längden för varje segment. \item \texttt{car.percents} - En lista över hur stor andel av varvtiden varje segment förväntas ta. \item \texttt{car.map} - Kartan över alla subsegment och önskad spänningstillförsel. \item \texttt{car.miss\_probability} - Sannolikheten att bilen vid en given givare inte får en signal. Används för att testa krav 3. \item \texttt{car.constant} - Multipliceras med den önskade spänningstillförseln för att kompensera för olika bilars olika påverkan av samma spänningstillförsel. \end{itemize} Utöver dessa värden sparas ett antal värden för själva systemet. \begin{itemize} \item \texttt{display.data} - En kö av kommandon som ska skickas till displayen. \item \texttt{bootN.status} - Om den så kallade ''bootstrapen'' (se REF) är aktiv för bana N. \item \texttt{halt} - Om någon av bilarna åkt av och användaren valt att avbryta körningen. \item \texttt{t} - Hur lång tid den nuvarande programcykeln tagit. \item \texttt{highToc} - Längden på den längsta programcykeln. Används för att kontrollera krav 31. \end{itemize}