\appendix

\section{Hvordan sette opp serveren}


\subsection{Bygging av koden}

	For å bygge koden trengs byggeverktøyet CMake, samt en installasjon av Qt versjon 5.2 eller senere.
	Qt kan lastes ned fra \url{http://qt-project.org/downloads}
	CMake kan lastes ned fra \url{http://cmake.org/}.

	Kildekoden er lagt ved innleveringen av rapporten som en fil (\file{server.zip}), men kan også lastes ned med Git fra \url{https://bitbucket.org/eit2014/server}.

	\subsubsection{Installasjon av Qt}
		Under installasjon av Qt, velg standard installasjonsvei.
		Som kompilator, velg MinGW som C++-kompilator.
		Pass på å krysse av for installere av QtCreator.
		Det er ikke nødvendig å kompilere med diverse MSVC kompilatorer, disse vil bare ta ekstra tid.

	\subsubsection{Installasjon av CMake}
		Programmet installeres på vanlig måte.

	\subsubsection{Kompilering}
		\begin{itemize}
			\item Åpne QtCreator
			\item Velg \textbf{Open Project}
			\item Bla frem til mappen der kildekoden ligger og velg filen \textbf{CMakeLists.txt} og trykk \textbf{Next}
			\item På bygge-plassering velges ønsket lokalisering av de kompilerte filene. Trykk \textbf{Next}.
			\item Om det ikke er gjort tidligere, må lokalisering av \emph{cmake.exe} finnes.
				Denne ligger der CMake er installert
			\item Trykk \textbf{Run CMake}. På Windows kommer det her noen advarsler,
				men så lenge byggefilene ble skrevet, er alt OK.
			\item Prosjektet kan nå kompileres ved å trykke hammeren nederst til venstre.
		\end{itemize}

\subsection{Test kommunikasjon med roboten}
\label{sec:robot-communication-test}

	For å gjøre det enkelt å teste roboten, ble det laget flere små programmer
		som kjøres uavhengig av konfigurasjon.
	Det enkleste programmet å teste er \textbf{wriggle}.

	Roboten er koplet til datamaskinen gjennom en serieport.
	På Linux vil den få et device-name som \texttt{/dev/ttyUSB\#} der \# er et
		tall fra og med \texttt{0}.
	Om ingen andre serieporter er tilkoplet, vil dette tallet være 0.

	På Windows vil den dukke opp i \emph{Device Manager} som en
	 \texttt{COM\#}-input der \texttt{\#} er et
		tall fra og med \texttt{3}.
	Om ingen andre serieporter er opptatt, er dette tallet \texttt{3}.

	\begin{itemize}
		\item Kople til roboten.
		\item I QtCreator trykk på \textbf{Projects} i venstremenyen.
		\item Øverst i programmet kan man velge mellom \textbf{Build} og \textbf{Run}. Trykk på \textbf{Run}.
		\item Under \emph{Run configuration}, velg \textbf{wriggle}.
		\item I tekstboksen \textbf{Arguments}, skriv inn \textbf{0} for Linux eller \textbf{3} for Windows. Dette er det samme 	nummeret som beskrevet i paragrafen over.
		\item For linux kan det hende det må endres rettigheter på robot-input-filen. Gå inn i en terminal og skriv inn
			\emph{\texttt{``sudo chmod 777 /dev/ttyUSB0''}}. For å kjøre denne kommandoen trengs passord.
		\item Trykk på den grønne \textbf{Run}-knappen i nedre venstre hjørne for å starte.
		\item Følg instruksjonene til programmet. Roboten vil begynne å bevege seg,
			så pass på at den står slik at ingen blir skadet.
	\end{itemize}

\subsection{Modellfilen}

	Modellfilen er en JSON-fil som beskriver hvordan roboten er bygget opp.
	Denne modellfilen viser hvor de forskjellige servoene er koplet sammen.
	Hvis det brukes en annen robot enn den som ble brukt i dette prosjektet, må
		modellfilen konfigureres for den nye roboten.

	Hvis modellfilen er korrekt, er neste punkt å teste serverprogrammet.

\subsection{Starte serveren}

	\begin{itemize}
		\item Kople til roboten og test kommunikasjonen som beskrevet i kap.~\ref{sec:robot-communication-test}.
		\item Bytt program fra \textbf{wriggle} til \textbf{server}.
		\item I tekstboksen \textbf{Arguments}, skriv inn samme tall som fungerte under \textbf{wriggle}testen.
		\item Trykk på den grønne \textbf{Run}-knappen i nedre venstre hjørne for å starte.
	\end{itemize}

	Et terminalvindu dukker opp når serveren er oppe å gå. Når klienter kobler seg til og fra serveren vil informasjon om dette dukke opp i terminalvinduet.

\subsection{Finn IP}

	For å gjøre det mulig for andre å kople seg til serveren, må de vite hvilken
		IP serveren ligger på.
	IPen kan blant annet finnes ved å gå inn på \url{http://www.whatsmyip.org/}.
	Hvis datamaskinen serveren ligger på er bak en ruter, har man to valg.
	For at serveren skal komme på internett må man bruke \emph{port forwarding}
		på de to portene \texttt{1991} og \text{5555} på ruteren.
	Det er disse portene som styringsforbindelsen og tilstandsforbindelsen opprettes mot.
	Hvis både server og klient kjører på samme lokale nettverk, kan den lokale
		IP-adressen brukes i stedet.

\newpage

\section{Hvordan sette opp web-siden (klienten)}
Websiden bør aksesseres gjennom en webserver. For test er det tilstrekkelig å bruke en liten webserver som Mongoose (\url{https://code.google.com/p/mongoose/}). Det kan være mulig å vise nettsiden  i nettleseren rett fra filsystemet, men dette kan kreve en spesiell innstilling i nettleseren for at JavaScript fungerer.
	\begin{itemize}
	\item Pakk ut filen \file{client.zip} som er vedlagt rapporten, til en mappe som webserveren er konfigurert for å levere.
	\item Finn filen \file{rpcserver.js} i mappen \textit{src}.
	\item Åpne denne filen med et hvilket som helst tekstredigeringsverktøy (feks. notepad/notisblokk).
	\item På fjerde linje finner du variabelen \class{ip}. Endre verdien på denne variabelen til å samsvare med IP-adressen som tilhører robot-serveren. Lagre endringene og lukk programmet.
	\item Brukeren kan nå styre roboten over internett gjennom nettleseren sin ved å aksessere \file{index.html} som du deler på din web-server.
	\end{itemize}

