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
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 bude zařízen pohyb kurzoru po obrázku a následně se půjde na jednotlivé části obrázku přibližovat, aby obrázek nebyl moc malý.
Prohlížeč textových souborů je poslední program, ten bude umět otevírat kterékoliv soubory, ale korektně bude zobrazovat jen ty textové. Půjde se v něm pohybovat za pomoci rotačních enkoderů.
Vstup bude zařízen standardním vstupem pro ovládání na dálku a rotačními enkodery pro ovládání přímo. Standardní výstup bude použit k logování hlášek o tom, co program právě dělá nebo v jakém chybovém stavu se nachází.
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.
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ů.
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.
Program se skládá z oken, mezi kterými se přepíná.
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ů 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.
V kontextovém menu lze soubor spustit nebo ho zobrazit v prohlížeči textu.
Dialogové okno se typicky ukáže při chybě. Je v něm zachycená chyba, která nastala.
Program nepřijímá žádné argumenty, ty jsou ignorovány.
Použití:
./file-browser
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.
Chyby se hlásí přes dialogové okno.
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í textun
- vrácení pohledu na začátek seznamu souborům
- pohled na konec seznamu souborůe
- ukončení programuc
- kontextové menu souboruv
- potvrzení výběru (spuštění souboru / přepnutí složky)Program zobrazí na LCD displeji text z textového souboru, lze se po něm pohybovat rotačními enkodery. Pokud program nedostane textový soubor, je možné, že ho nezobrazí korektně.
Program nelze bez argumentů spustit, je vždy potřeba spustit s cestou k souboru s textem. Jinak program skončí s chybovým stavem vyobrazeným na RGB LEDkách.
./text-viewer [cesta-k-souboru]
Na LED pásku se ve fázi načítání ukazuje kolik dat je již načtených. Po načtení se zobrazuje vertikální pozice v souboru podle toho, jak moc je soubor posunutý.
Pokud se program nespustí správně, jedna z RGB LEDek se rozsvítí červeně.
Levá RGB LED znamená, že nebyl předán žádný argument. Pravá RGB LED znamená, že soubor se nepodařilo načíst, neexistuje nebo k němu nejsou přístupová práva. Konkrétní chybová hláška se objeví na standardním výstupu.
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í textun
- vrácení pohledu na začátek souborum
- pohled na konec souborue
- ukončení programuProgram zobrazí na LCD displeji přeškálovaný obrázek, který se dá přibližovat pomocí rotačních enkoderů nebo standardního vstupu. Při spuštění programu je obrázek oddálený tak, aby se vešel celý na obrazovku.
Program nelze bez argumentů spustit, je vždy potřeba spustit s cestou k souboru s obrázkem. Jinak program skončí s chybovým stavem vyobrazeným na RGB LEDkách.
Použití:
./image-viewer [cesta-k-souboru]
Formáty se rozlišují podle jejich hlaviček, koncovky se nerozlišují
Na LED pásku se ve fázi načítání ukazuje kolik dat je již načtených. Po načtení se zobrazuje horizontální pozice kurzoru na obrázku pro snazší orientaci při větším zvětšení.
Pokud se program nespustí správně, jedna z RGB LEDek se rozsvítí červeně.
Levá RGB LED znamená, že nebyl předán žádný argument. Pravá RGB LED znamená, že soubor se nepodařilo načíst, neexistuje, není správný formát nebo k němu nejsou přístupová práva. Konkrétní chybová hláška se objeví na standardním výstupu.
Program má kurzor, podle kterého se určuje, kam se přibližuje. Kurzor se zobrazí, když se s ním hýbe a chvilku potom.
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 (při módu pohybu po obrázku svítí RGB LEDky zeleně)e
- ukončení programuNa kompilaci je použit Makefile
.
Pro křížovou kompilaci je zapotřebí arm-gnueabihf-gcc
a dynamické knihovny
libjpeg
verze 62, libpng
verze 16 a libmagic
verze 1 pro MZAPO.
Soubory se po kompilaci uloží do složky bin
, pro spuštění je potřeba
je překopírovat na MZAPO.
Překopírování jde realizovat pomocí ssh, lze použít make
, konkrétně
TARGET_IP=[ip-addr] make copy-executable
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
Makefilev 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ů:
TARGET_IP=[ip-addr] make run
případně pro spuštění prohlížeče obrázků run-image-viewer
a pro spuštění prohlížeče textových souborů run-text-viewer
.
Pro předání argumentu slouží environment proměnná ARG
Například lze použít
TARGET_IP=[ip-addr] ARG=/path/to/image make run-image-viewer
nebo
TARGET_IP=[ip-addr] ARG=/path/to/image make run-text-viewer
Program je třeba spouštět s cwd ve složce, kde se nachází binární soubory.
Pro lepší ladění je možnost program zkompilovat pro osobní počítač, kde je displej simulován pomocí SDL okna.
Pro kompilaci pro počítač lze využít environment proměnné COMPUTER
.
Lze pak využít
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