diff --git a/.DS_Store b/.DS_Store index 1a3c99b..23180b9 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Bachelor.bib b/Bachelor.bib index 2b92163..c05bf9f 100644 --- a/Bachelor.bib +++ b/Bachelor.bib @@ -154,6 +154,19 @@ file = {/Users/fabian/Zotero/storage/3K7HX2EI/flutter-on-raspberry-pi-mostly-from-scratch-2824c5e7dcb1.html} } +@online{gfallonItFOSSToyota2019, + title = {It's {{FOSS}}: {{Toyota Motors}} and Its {{Linux Journey}}}, + shorttitle = {It's {{FOSS}}}, + author = {{gfallon}}, + date = {2019-01-11T18:41:12+00:00}, + url = {https://www.automotivelinux.org/in-the-news/its-foss-toyota-motors-and-its-linux-journey/}, + urldate = {2024-03-10}, + abstract = {All Toyota vehicles and Lexus vehicles are going to use Automotive Grade Linux (AGL) majorly for the infotainment system. This is instrumental in Toyota Motor Corp because as per Brian...}, + langid = {american}, + organization = {Automotive Grade Linux}, + file = {/Users/fabian/Zotero/storage/RI36I2EG/its-foss-toyota-motors-and-its-linux-journey.html} +} + @online{googleinc.DartLanguageEvolution, title = {Dart Language Evolution}, author = {{Google Inc.}}, diff --git a/assets/.DS_Store b/assets/.DS_Store index 828f6ea..d447222 100644 Binary files a/assets/.DS_Store and b/assets/.DS_Store differ diff --git a/assets/mermaid/3SchichtenarchitekturderFlutterAnwendung.pdf b/assets/mermaid/3SchichtenarchitekturderFlutterAnwendung.pdf index e0aa10e..866d4c0 100644 Binary files a/assets/mermaid/3SchichtenarchitekturderFlutterAnwendung.pdf and b/assets/mermaid/3SchichtenarchitekturderFlutterAnwendung.pdf differ diff --git a/assets/screenshots/.DS_Store b/assets/screenshots/.DS_Store index 615991c..e85ecf7 100644 Binary files a/assets/screenshots/.DS_Store and b/assets/screenshots/.DS_Store differ diff --git a/assets/skizzen/.DS_Store b/assets/skizzen/.DS_Store new file mode 100644 index 0000000..47478e5 Binary files /dev/null and b/assets/skizzen/.DS_Store differ diff --git a/assets/skizzen/alle.png b/assets/skizzen/alle.png new file mode 100644 index 0000000..faf903d Binary files /dev/null and b/assets/skizzen/alle.png differ diff --git a/chapters/00_pandoc/00_pandoc.md b/chapters/00_pandoc/00_pandoc.md index ccd2fbe..b6a8359 100644 --- a/chapters/00_pandoc/00_pandoc.md +++ b/chapters/00_pandoc/00_pandoc.md @@ -86,3 +86,5 @@ postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space}, \pretocmd{\dirtree}{\bigskip}{}{} \newcommand{\mkbibnodate}{n\adddot d\adddot} + +\setlength{\parindent}{0em} diff --git a/chapters/02_einleitung/03_gliederung.md b/chapters/02_einleitung/03_gliederung.md new file mode 100644 index 0000000..e69de29 diff --git a/chapters/05_analyse_und_design/00_anforderungen.md b/chapters/05_analyse_und_design/00_anforderungen.md index 3b9ea15..6d4d3cf 100644 --- a/chapters/05_analyse_und_design/00_anforderungen.md +++ b/chapters/05_analyse_und_design/00_anforderungen.md @@ -4,6 +4,8 @@ ## Hardware +### Hardware für die Demo Anwendung + - Raspberry Pi 4 - Touchscreen 15 Zoll (1920x1080) - Raspberry Pi 0 2W @@ -11,88 +13,23 @@ - RGB Matrix - Led +### Build Hardware + +- AMD 6800U mit 16GB RAM, Linux + \pagebreak ## Anforderungen -\begin{multicols}{3} +\Begin{multicols}{2} \begin{figure}[H] -\caption{Home Screen} +\caption{Skizzen der Anwendung} \centering -{\includegraphics[width=2in]{./assets/skizzen/home.png}} +{\includegraphics[width=4in]{./assets/skizzen/alle.png}} \label{fig:screeplot} \end{figure} -\begin{figure}[H] -\caption{Material 3 Widgets} -\centering -{\includegraphics[width=2in]{./assets/skizzen/materialWidgets.png}} -\label{fig:screeplot} -\end{figure} +lorem ipsum -\begin{figure}[H] -\caption{Video Player} -\centering -{\includegraphics[width=2in]{./assets/skizzen/video.png}} -\label{fig:screeplot} -\end{figure} - -\end{multicols} - -\begin{multicols}{3} - -\begin{figure}[H] -\caption{Led Controller} -\centering -{\includegraphics[width=2in]{./assets/skizzen/led.png}} -\label{fig:screeplot} -\end{figure} - -\begin{figure}[H] -\caption{Matrix Painter} -\centering -{\includegraphics[width=2in]{./assets/skizzen/matrix.png}} -\label{fig:screeplot} -\end{figure} - -\begin{figure}[H] -\caption{System Informationen} -\centering -{\includegraphics[width=2in]{./assets/skizzen/systeminfo.png}} -\label{fig:screeplot} -\end{figure} - -\end{multicols} - -\begin{multicols}{3} - -\begin{figure}[H] -\caption{Unendliche Liste} -\centering -{\includegraphics[width=2in]{./assets/skizzen/openapi.png}} -\label{fig:screeplot} -\end{figure} - -\begin{figure}[H] -\caption{Kartenansicht} -\centering -{\includegraphics[width=2in]{./assets/skizzen/openstreetmap.png}} -\label{fig:screeplot} -\end{figure} - -\begin{figure}[H] -\caption{Einstellungen} -\centering -{\includegraphics[width=2in]{./assets/skizzen/einstellungen.png}} -\label{fig:screeplot} -\end{figure} - -\end{multicols} - -\begin{figure}[H] -\caption{Endless Runner} -\centering -{\includegraphics[width=2in]{./assets/skizzen/dashgame.png}} -\label{fig:screeplot} -\end{figure} +\End{multicols} diff --git a/chapters/05_analyse_und_design/01_architektur.md b/chapters/05_analyse_und_design/01_architektur.md index acbcc65..0832172 100644 --- a/chapters/05_analyse_und_design/01_architektur.md +++ b/chapters/05_analyse_und_design/01_architektur.md @@ -118,3 +118,7 @@ unveränderlichen Klasse: - toString, equlas, hashCode Methode - copyWith Methode - JSON Serialisierung + +### State Management + +Für das State Management wurde Riverpod gewählt. diff --git a/chapters/06_implementierung/.DS_Store b/chapters/06_fallstudie/.DS_Store similarity index 100% rename from chapters/06_implementierung/.DS_Store rename to chapters/06_fallstudie/.DS_Store diff --git a/chapters/06_implementierung/00_entwicklungsumgebung.md b/chapters/06_fallstudie/00_entwicklungsumgebung.md similarity index 97% rename from chapters/06_implementierung/00_entwicklungsumgebung.md rename to chapters/06_fallstudie/00_entwicklungsumgebung.md index 6b9aa4b..4f0bcf7 100644 --- a/chapters/06_implementierung/00_entwicklungsumgebung.md +++ b/chapters/06_fallstudie/00_entwicklungsumgebung.md @@ -137,3 +137,8 @@ Tools • Dart 3.3.0 • DevTools 2.31.1 ``` ## Setup von Raspberry Pi --> + +### Raspberry Pi OS + +- Einrichtung als Entwicklungsbetriebssystem mit Flutter Hot-Reload +- für rapide Entwicklung und Testen diff --git a/chapters/06_implementierung/01_programmierung.md b/chapters/06_fallstudie/01_programmierung.md similarity index 82% rename from chapters/06_implementierung/01_programmierung.md rename to chapters/06_fallstudie/01_programmierung.md index 4d497b2..38a97ac 100644 --- a/chapters/06_implementierung/01_programmierung.md +++ b/chapters/06_fallstudie/01_programmierung.md @@ -78,12 +78,21 @@ Key Design Concepts: ## Implementierung der Features +Im Folgenden wird die Implementierung der +einzelnen Features des Projektes beschrieben. + \pagebreak -### Home +### Home Feature -\begin{figure}[ht] -\caption{Example caption} +Das Home-Feature ist die Startseite der App. Es +besteht aus einem einfachen Screen, der +nur den Text "Flutter on Embedded Linux" anzeigt. + +\Begin{multicols}{2} + +\begin{figure}[H] +\caption{Ordnerstruktur des Home-Features} \centering \begin{minipage}{7cm} \dirtree{% @@ -94,8 +103,6 @@ Key Design Concepts: \end{minipage} \end{figure} -\begin{multicols}{2} - \begin{figure}[H] \caption{Home Screen} \centering @@ -103,21 +110,21 @@ Key Design Concepts: \label{fig:screeplot} \end{figure} -\begin{figure}[H] -\caption{Home Screen} -\centering -{\includegraphics[width=8cm]{./assets/screenshots/homeDebug.png}} -\label{fig:screeplot} -\end{figure} - -\end{multicols} +\End{multicols} \pagebreak -### Material Demo +### Material Demo Feature -\begin{figure}[ht] -\caption{Example caption} +Das Material Demo Feature zeigt eine Auswahl +von Material Design Widgets. Es besteht aus +einem Screen, der eine Liste von Widgets +anzeigt. + +\Begin{multicols}{2} + +\begin{figure}[H] +\caption{Ordnerstruktur des Material Demo Features} \centering \begin{minipage}{10cm} \dirtree{% @@ -130,28 +137,30 @@ Key Design Concepts: \end{minipage} \end{figure} -\begin{multicols}{2} - \begin{figure}[H] -\caption{Home Screen} +\caption{Material Demo Screen} \centering {\includegraphics[width=8cm]{./assets/screenshots/material3.png}} \label{fig:screeplot} \end{figure} -\begin{figure}[H] +\End{multicols} + + \pagebreak ### Benchmark +Das Benchmark Feature zeigt verschiedene +Benchmarks, die die Leistungsfähigkeit von +Flutter auf Embedded Linux demonstrieren. + \begin{figure}[h] \caption{Example caption} \centering @@ -258,7 +267,12 @@ Key Design Concepts: ### News -\begin{figure}[ht] +Das News Feature zeigt eine Liste von Nachrichten +der Tagesschau. + +\Begin{multicols}{2} + +\begin{figure}[H] \caption{Example caption} \centering \begin{minipage}{7cm} @@ -286,8 +300,6 @@ Key Design Concepts: \end{minipage} \end{figure} -\begin{multicols}{2} - \begin{figure}[H] \caption{Home Screen} \centering @@ -302,7 +314,22 @@ Key Design Concepts: \label{fig:screeplot} \end{figure} -\end{multicols} +\End{multicols} + +\pagebreak + +#### Freezed + +wurde verwendet, um die Modelle zu generieren. + +\lstinputlisting[language=Java, caption=Implementierung der News Klasse, linerange={0-20}, captionpos=t] +{code/flutter_elinux/lib/features/news_api/data/models/news.dart} + +\lstinputlisting[language=Java, caption=Implementierung des News Controllers, captionpos=t] +{code/flutter_elinux/lib/features/news_api/data/repository/news_repository.dart} + +\lstinputlisting[language=Java, caption=Implementierung des News Controllers, captionpos=t] +{code/flutter_elinux/lib/features/news_api/business/news_controller.dart} \pagebreak @@ -341,6 +368,9 @@ Key Design Concepts: \end{multicols} +\lstinputlisting[language=Java, caption=Implementierung des Morse Service, captionpos=t] +{code/flutter_elinux/lib/features/morse_led/business/service/morse_service.dart} + \pagebreak ### Matrix @@ -405,11 +435,16 @@ Key Design Concepts: \end{multicols} +\lstinputlisting[language=Java, caption=Implementierung des Matrix Service, captionpos=t] +{code/flutter_elinux/lib/features/matrix_rgb/business/service/matrix_service.dart} + \pagebreak ### System Informationen -\begin{figure}[ht] +\Begin{multicols}{2} + +\begin{figure}[H] \caption{Example caption} \centering \begin{minipage}{7cm} @@ -433,11 +468,18 @@ Key Design Concepts: \label{fig:screeplot} \end{figure} +\End{multicols} + +\lstinputlisting[language=Java, caption=Implementierung des Memory Service, captionpos=t] +{code/flutter_elinux/lib/features/system_resources/business/service/memory_service.dart} + \pagebreak ### Einstellungen -\begin{figure}[ht] +\Begin{multicols}{2} + +\begin{figure}[H] \caption{Example caption} \centering \begin{minipage}{7cm} @@ -462,8 +504,6 @@ Key Design Concepts: \end{minipage} \end{figure} -\begin{multicols}{2} - \begin{figure}[H] \caption{Home Screen} \centering @@ -478,7 +518,7 @@ Key Design Concepts: \label{fig:screeplot} \end{figure} -\end{multicols} +\End{multicols} \pagebreak @@ -524,3 +564,8 @@ Key Design Concepts: {\includegraphics[width=8cm]{./assets/screenshots/settingsMaterial2.png}} \label{fig:screeplot} \end{figure} + +\pagebreak + +\lstinputlisting[language=Java, caption=Implementierung des Wifi Controllers, captionpos=t] +{code/flutter_elinux/lib/features/settings/business/wifi_controller.dart} diff --git a/chapters/06_implementierung/02_yocto.md b/chapters/06_fallstudie/02_yocto.md similarity index 100% rename from chapters/06_implementierung/02_yocto.md rename to chapters/06_fallstudie/02_yocto.md diff --git a/chapters/07_zusammenfassung_und_ausblick/01_vergleich.md b/chapters/07_zusammenfassung_und_ausblick/01_vergleich.md index 8ececea..3df5365 100644 --- a/chapters/07_zusammenfassung_und_ausblick/01_vergleich.md +++ b/chapters/07_zusammenfassung_und_ausblick/01_vergleich.md @@ -10,7 +10,7 @@ \hline Flutter Embedder & Ergebnisse (Animationen nach 30 Minuten) & Durchschnittlich (gerundet) \\ \hline Flutter-Pi & 537, 543, 544 & 541 \\ \hline -Flutter-Auto & 1025, 1163, 1129 & 1106 \\ \hline +Flutter-Auto mit Cage & 1025, 1163, 1129 & 1106 \\ \hline \end{tabular}% } \end{table}