@@ 1,12 1,12 @@
#+TITLE: APO - Semestrální práce
#+SUBTITLE: Průzkumník souborů, prohlížeč obrázků, textových souborů
#+AUTHOR: František Boháček
-#+DATE: červen 2020
+#+DATE: červen 2021
* Zadání
Semestrální práce bude rozdělena do 3 jednotlivých programů vypracovaných pro MZAPO. Hlavní z nich
-bude průzkumník souborů, ve kterém bude možné procházet celý kořenový souborový systém a také externí zařízení.
-Průzkumník bude umět základní operace jako kopírování, přesouvání a mazání souborů. Dále spouštět spustitelné soubory
+bude průzkumník souborů, ve kterém bude možné procházet celý kořenový souborový systém +a také externí zařízení+.
++Průzkumník bude umět základní operace jako kopírování, přesouvání a mazání souborů+. Dále spouštět spustitelné soubory
a pro obrázky, resp. pro textové soubory otevřít prohlížeč obrázků, resp. textových souborů.
Prohlížeč obrázků je druhý program, který bude umět otevřít formáty jpeg, png a ppm. Přes rotační enkodery
@@ 21,8 21,89 @@ Standardní výstup bude použit k logování hlášek o tom, co program právě
Pro rychlejší ladění bude možnost programy spouštět na osobním počítači, kde se jako displej využije SDL okno.
+** Zhodnocení splnění zadání
+U průzkumníku souborů jsem bohužel nestihl implementovat základní operace jako přesouvání, mazání nebo kopírování souborů.
+Stejně tak průzkumník souborů neumí sám namountovat externí zařízení jak bylo v plánu. Průzkumník tak umí pouze procházet složky,
+otevírat soubory v příslušném programu (podle mime typu).
+Na druhou stranu z prohlížeče textových souborů i obrázků se mi podařilo implementovat vše ze zadání
+jak pro ovládání přes rotační enkodery nebo přes standardní vstup.
+
+Program na rychlejší lazení se mi povedlo vytvořit tak, že z většiny simuluje reálnou nízkou úroveň periferií. V kódu je tak potřeba
+minimum změn, aby místo na MZAPO běžel na osobních počítačích, je potřeba pouze změnit inicializaci programu, mapovací funkci nahradit
+vlastní mapovací funkcí a změnit posílání dat a příkazů displeji. Ovládání RGB LEDek i LED pásku zůstává stejné, není potřeba žádný zásah
+do kódu. Šlo by i jednoduše implementovat rotační enkodery po odchycení SDL eventů.
+
* Manuál
** Průzkumník souborů
+*** Funkce
+Program slouží na procházení kořenového systému souborů.
+Dokáže spouštět soubory a otevírat obrázky nebo textové soubory.
+Lze vyvolat kontextové menu, ve kterém lze otevřít kterýkoliv
+soubor v prohlížeči textu.
+
+Program obsahuje jednoduchý návod k obsluze,
+ke kterému se jde dostat v hlavním menu.
+
+*** (Virtuální) okna
+Program se skládá z oken, mezi kterými se přepíná.
+
+**** Výchozí menu
+
+Ve výchozím menu lze otevřít průzkumník souborů
+nebo si přečíst, jak se program ovládá.
+
+**** Průzkumník souborů
+
+Průzkumník souborů zobrazuje, v jaké složce
+se zrovna člověk nachází a soubory v ní.
+Lze se navigovat mezi složkami, zobrazit kontextové
+menu nebo spouštět soubory.
+
+**** Kontextové menu
+
+V kontextovém menu lze soubor spustit nebo ho
+zobrazit v prohlížeči textu.
+
+**** Dialog
+
+Dialogové okno se typicky ukáže při chybě.
+Je v něm zachycená chyba, která nastala.
+
+*** Spouštění
+Program nepřijímá žádné argumenty, ty jsou ignorovány.
+
+Použití:
+#+begin_src
+./file-browser
+#+end_src
+
+*** LED pásek
+Na LED pásku se ukazuje vertikální pozice v průzkumníku souborů,
+aby bylo poznat, kolik souborů je ještě potřeba projít do konce
+složky.
+
+*** Chybové stavy
+Chyby se hlásí přes dialogové okno.
+
+*** Ovládání
+
+**** Standardní vstup
+- ~h~, ~j~, ~k~, ~l~ - pohyb pohledu po souboru (doleva, dolů, nahoru, doprava)
+- ~y~, ~i~, ~o~, ~p~ - pohyb o celou obrazovku pro rychlejší navigaci (doleva, dolů, nahoru, doprava)
+- ~z~, ~x~ - přiblížení a oddálení textu
+- ~n~ - vrácení pohledu na začátek seznamu souborů
+- ~m~ - pohled na konec seznamu souborů
+- ~e~ - ukončení programu
+- ~c~ - kontextové menu souboru
+- ~v~ - potvrzení výběru (spuštění souboru / přepnutí složky)
+
+**** Rotační enkodery
+- První (červený) - horizontální posun pohledu
+- Druhý (zelený) - vertikální posun pohledu
+- Třetí (modrý) - přiblížení nebo oddálení textu
+- Tlačítko prvního enkoderu - ukončení programu / pohyb zpět
+- Tlačítko druhého enkoderu - kontextové menu souboru
+- Tlačítko třetího enkoderu - potvrzení výběru (spuštění souboru / přepnutí složky)
** Prohlížeč textových souborů
*** Funkce
Program zobrazí na LCD displeji text z textového souboru, lze se po něm pohybovat rotačními enkodery.
@@ 51,13 132,16 @@ neexistuje nebo k němu nejsou přístupová práva. Konkrétní chybová hláš
**** Standardní vstup
- ~h~, ~j~, ~k~, ~l~ - pohyb pohledu po souboru (doleva, dolů, nahoru, doprava)
-- ~r~ - vrácení pohledu na začátek souboru
-- ~t~ - pohled na konec souboru
+- ~y~, ~i~, ~o~, ~p~ - pohyb o celou obrazovku pro rychlejší navigaci (doleva, dolů, nahoru, doprava)
+- ~z~, ~x~ - přiblížení a oddálení textu
+- ~n~ - vrácení pohledu na začátek souboru
+- ~m~ - pohled na konec souboru
- ~e~ - ukončení programu
**** Rotační enkodery
- První (červený) - horizontální posun pohledu
- Druhý (zelený) - vertikální posun pohledu
+- Třetí (modrý) - přiblížení nebo oddálení textu
- Tlačítko prvního enkoderu - ukončení programu
- Tlačítko druhého enkoderu - vrácení pohledu na začátek souboru
- Tlačítko třetího enkoderu - pohled na konec souboru
@@ 100,7 184,7 @@ Program má kurzor, podle kterého se určuje, kam se přibližuje. Kurzor se zo
- ~h~, ~j~, ~k~, ~l~ - ovládání kurzoru nebo posunu po celém obrázku v závislosti na módu, viz klávesa m (doleva, dolů, nahoru, doprava)
- ~z~, ~x~ - přiblížení a oddálení obrázku (do místa, kde je kurzor)
- ~r~ - vrácení do původního stavu (oddálí obrázek a nastaví kurzor doprostřed obrázku)
-- ~m~ - přepnutí mezi módy pohybu po obrázku nebo pohybu kurzorem
+- ~m~ - přepnutí mezi módy pohybu po obrázku nebo pohybu kurzorem (při módu pohybu po obrázku svítí RGB LEDky zeleně)
- ~e~ - ukončení programu
**** Rotační enkodery
@@ 112,7 196,7 @@ Program má kurzor, podle kterého se určuje, kam se přibližuje. Kurzor se zo
- Tlačítko třetího enkoderu - vrácení do původního stavu přiblížení
* Kompilace, instalace, spouštění
-Na kompilaci je použit Makefile.
+Na kompilaci je použit ~Makefile~.
** Křížová kompilace pro MZAPO
Pro křížovou kompilaci je zapotřebí ~arm-gnueabihf-gcc~ a dynamické knihovny
@@ 126,6 210,12 @@ Překopírování jde realizovat pomocí ssh, lze použít ~make~, konkrétně
TARGET_IP=[ip-addr] make copy-executable
#+end_src
kde za ~ip-addr~ je potřeba dosadit ip adresu MZAPO.
+V základním režimu se počítá s tím, že je použit SSH tunel
+a ~mzapo-root-key~ (SSH klíč pro mzapo) se nachází
+na cestě ~~/.ssh/mzapo-root-key~. Pro změnu základního nastavení
+stačí změnit konfiguraci v ~Makefile~ v kořenu projektu.
+Možné konfigurace jsou zakomentované na řádcích začínajících
+~SSHOPTIONS~
Pro spuštění lze využít sériového portu nebo ssh. Případně pomocí ~make~,
na spuštění průzkumníku souborů:
@@ 144,6 234,8 @@ nebo
#+begin_src
TARGET_IP=[ip-addr] ARG=/path/to/image make run-text-viewer
#+end_src
+
+Program je třeba spouštět s cwd ve složce, kde se nachází binární soubory.
** Kompilace na osobní počítač
Pro lepší ladění je možnost program zkompilovat
pro osobní počítač, kde je displej simulován
@@ 157,3 249,6 @@ COMPUTER=1 make
Po kompilaci jsou soubory ve složce ~bin~ v kořenu projektu.
Lze je spustit napřímo s potřebnými parametry viz Manuál.
+
+Je potřeba překopírovat soubory ze složky ~copy/~ do složky ~bin/~ a program spouštět
+s cwd ve složce, kde se nachází všechny binární soubory