Tak, teď se mohu zase vrátit k vizím.
Určitě bych udělal pár změn, které bych se nebál nazvat "opravou chyb". Například sjednotit chování. Stávající software má takový problém, že při programování lokomotivy (dispatch get) očekává, že dostane slot ve stavu "active", nicméně uhlenbrock ovladače odevzdávají lokomotivu ve stavu "idle". To fred zmate o místo adresy ze slotu si nastaví adresu 0. Dokonce jsem tuhle chybu reportoval a chtěl jí opravit, ale od verze 1.8 jsou zdrojáky neveřejné a tak jsem se na to vykašlal. Je to zvláštní, protože další funkce se přiklání právě k tomu unlenbrocku a ne k digitraxu.
Druhá taková podivnost se týká obsluhy inkrementálu. To, čemu říkáme inkrementál je varianta
kvadraturní ho enkodéru. komerčně se rozlišují různé verze, například podle toho, v kolika kvadrantech má stabilní polohu (klikne) a kolik má vlastně "pulzů" na otáčku (jako pulz se rozumí průchod všemi kvadranty). Nejlevnější (čínské) inkrementály mají kolem 20 kliknutí na otáčku a mají 20 pulzů (často značené jako 20/20). Tedy jenom jednu stabilní polohu ze čtyřech kvadrantů. U nás prodávají častěji enkodéry 24/24, což je o malinko lepší. Lze však narazit i na enkodéry 15/30. Tedy takové, které na jednu otočku třicetkrát kliknou, ale mají jenom 15 pulzů, takže mají dvě stabilní polohy. A teď v čem spočívá hlavní finta - ferd čte každý kvadrant. Takže pokud mám inkrementál 15/30, tak rychlostní stupně přibývají po 2, pokud mám inkrementál 24/24, tak rychlosti přiskakují po 4. To se mi nezdá moc dobré, já bych byl spíš pro nastavení, jaký inkrementál je použitý a pak měnit rychlostní kroky po 1.
Pak už jsou tu jen zlepšováky. Pro funkce F9+ fred používá Uhlenbrock specifický paket, ale používá jen zápis a nikoli čtení. Poslední stav si ukládá do své flash a pokaždé vychází z toho co má uložené. To je poněkud nepříjemné, pokud připojíme fred po dlouhé době, tak nám na začátku přehraje nějaký stav. Tady by se dalo zlepšit dvě věci.
První tedy detekovat typ centrály. Prostě si přečtu master slot a podle toho poznám, jestli jsem na digitraxu, nebo uhlenbrocku. Zároveň poznám protokol P2, takže podle toho mohu změnit chování.
Druhá je zavedení zálohované RAM. To zní magicky, ale při dnešních spotřebách a rozvoji kondenzátorů dostáváme do stavu, že na nejlevnějším superkondenzátoru mi procesor vydrží fungovat zhruba dvě hodiny. To je o dost víc, než potřebuji. Dovedu si představit, že čas přepojení do 5~10 minut budu považovat za přepojení v rámci jedné session a tak budu používat informace jak jsem si je uložil. Co je nad tuto hranici, budu považovat za nový začátek a tak provedu znovu detekci a načtení stavu funkcí z centrály. To zní strašně komplikovaně, ale v zásadě není. Podstata je, že tím zásadně klesne množství komunikace na sběrnici.
Samozřejmě tyto změny vyžadují přechod na novější procesor. Po pravdě, atmega*8 už je opravdu za zenitem. Navíc se platí, že se u těchto procesorů platí velké poplatky za archeologii. Pokud bychom chtěli zůstat u osmibitů, tak například PIC16F18055 stojí třetinu, spotřebu jádra má menší než 100μA (100x méně než atmega).
Ale to jsou jen takové vize, realizovat to nebudu, stejně o to nikdo nestojí.