MihaiP
25-05-09, 10:24
Consecvent ideii ca imaginea FLASH este singura care merita efortul de dezvoltare ! am
facut un nou experiment : adaptarea panelului PKT unei imagini flash SIF 041.
Operatia in sine nu este una simpla si necesita intelegerea unor concepte Enigma dar
are ca final o procedura simpla acesibila chiar si celor cu notiuni elementare de utilizare
a unui calculator.
- panelul PKT este echivalentul BP ( Blue Pannel) de la Dreambox si a fost dezvoltat
initial de catre echipa PKT ( Polish Kathy Team ) in colaborare cu grupul TDT pentru
receptoarelele Kathrein si extins ulterior la familia receptoarelor echipate cu chipsetul SH40.
- implementarea unui astfel de panel poate fi realizata ca plugin sistem , plugin care va fi
lansat din lista sistem ( buton galben ) sau la actionarea unui buton de pe telecomanda ,
operatia presupune redefinirea functionalitatii unuia dintre butoanele functionale ( de ex. albastru )
sau ca un plugin din categoria "extensii" ... lista activata prin butonul rosu.
- implementarea unui plugin este subiectul unor conventii de interfata cu interpretorul
limbajului Pithon , limbaj in care sint scrise plugin-urile, si care poate executa programe atit
la nivel sursa ( .py ) cat si precompilate ( .pyc ) , programe care pot contine apeluri directe la
shell ( interpretorul de comenzi sistem ) cat si lansarea unor scripturi shell ( .sh ) .
- locatia fizica a pluginurilor extensie este /usr/lib/enigma/Pithon/Plugins/Extensions unde
fiecare subdirector contine un plugin extensie ... in cazul nostru PKT ( panelul PKT ).
- toate pluginurile contin in directorul gazda urmatoarele fisiere : plugin.py ( sau derivatele .pyc
.pys .pit .pio ) , __init__.py sau .pyc. Fisierul plugin.py este fisierul radcina program de la care
porneste interpretarea ( executia ) pluginului ... in cazul panelului aici sint definite entitatile care
vor compune meniurile ( daca ele exista ) ... in cazul nostru structura fisierelor .cfg care permit
descrierea meniului panelului
- fisierele .cfg sint la rindul lor grupate logic intr-o ierarhie ( structura arborescenta ) avind in varful
ei fisierul main.cfg el contine elemente de meniu care pot : apela un nou meniu, apela un progrem
precompilat sau un script shell.
* S:main:E2 PKT Mod:startup.sh - S este linia de start , main este numele modulului,
E2 PKT Mod este titlul atasat ecranului meniu, startup.sh este numele scriptului shell
lansat la initializarea modulului curent si care se gaseste in directorul curent
* M:emu:Emu - M este linia de tip apel la un alt meniu , emu este numele fisierului meniu
emu.cfg , Emu este textul tabului de selectie din meniu
* P:main:Plugins:PluginBrowser - P este linia de tip apel program/plugin precompilat , main
este numele modulului apelant , Plugins - este textul tabului de selectie , PluginBrowser - este
numele programului/plugin apelat
* C:main:PKT info:PKT.sh - C - este linia de tip apel script shell , main - modulul apelant ,
PKT info este textul tabului de selectie , PKT.sh - este numele scriptului shell
* M:addons:Powrot - o linie de incheiere modul a unui modul meniu care permite apelul de tip M cu intoarcere
la modulul meniu apelant ( addons )
Iata si un exemplu de posibil modul main :
S:main:E2 PKT Mod:startup.sh
M:system:System
M:addons:Addons
P:main:Pluginy:PluginBrowser
M:settings:Ustawienia
M:language:Language
C:main:PKT info:PKT.sh
Acestea sint elementele de baza necesare celui care doreste sa implementeze un plugin
extensie sau care adapteaza o astfel de constructie. Problema concreta de la care am plecat a
fost adaptarea PKT Mod v4.0 conceput pentru a lucra in context USB la o imagine de tip FLASH !
acest lucru este posibil doar daca se au in vedere urmatoarele conditii :
- executia Python numai la nivel sursa ( .py )
- referinta la module precomplilate .pyc de tip sistem
- referinta la module precompilate independente de context
- reconstituirea contextului de date ( subdirectoare specifice in /var si continutul lor )
Cazul concret al panelului PKT :
- initializarea pluginului PKT la nivel sursa ( plugin.py )
- inlocuirea pluginului dependent de context ( EmuManager ) printr-un meniu
- reconstituirea contextului de date PKT din directorul /var/conf
- simplificarea unor meniuri eliminind functii de mai mic interes
Procedura de instalare :
- pluginul si contextul sau de date se prezinta ca o arhiva ( .zip ) care contine doua
directoare /var si /usr care la randul lor au subdirectoare
- va legati FTP cu TotalComander la IPBOX pe care ruleaza in FLASH o imagine SIF 041 FLASH
- transferati cele doua directoare din arhiva in imaginea de pe IPBOX
- navigati apoi in FLASH urmarind traseul /usr/lib/enigma/Pithon/Plugins/Extensions/PKT
- selectati in PKT toate fisierele cu extensia diferita de .cfg ( evident executabile ) si din
File-Attributes dati drepturi 755 !!!
- din telecomanda IPBOX dati un restart GUI ( meniu-standby/restart- restart GUI )
- RED BUTTON - alegeti tabul Polish Kathy Team Meniu ...
Arhiva PKT-pannel.zip o gasiti la RSP Upload ! ea demonstraza ca panelul este functional fara
a-mi fi propus ca el sa fie un scop in sine ! fara a fi perfect functional in toate detaliile ... ca urmare
...orice sugestii sint binevenite.
P.S. Pentru moment RSP upload este ...down ! dar mai insist
facut un nou experiment : adaptarea panelului PKT unei imagini flash SIF 041.
Operatia in sine nu este una simpla si necesita intelegerea unor concepte Enigma dar
are ca final o procedura simpla acesibila chiar si celor cu notiuni elementare de utilizare
a unui calculator.
- panelul PKT este echivalentul BP ( Blue Pannel) de la Dreambox si a fost dezvoltat
initial de catre echipa PKT ( Polish Kathy Team ) in colaborare cu grupul TDT pentru
receptoarelele Kathrein si extins ulterior la familia receptoarelor echipate cu chipsetul SH40.
- implementarea unui astfel de panel poate fi realizata ca plugin sistem , plugin care va fi
lansat din lista sistem ( buton galben ) sau la actionarea unui buton de pe telecomanda ,
operatia presupune redefinirea functionalitatii unuia dintre butoanele functionale ( de ex. albastru )
sau ca un plugin din categoria "extensii" ... lista activata prin butonul rosu.
- implementarea unui plugin este subiectul unor conventii de interfata cu interpretorul
limbajului Pithon , limbaj in care sint scrise plugin-urile, si care poate executa programe atit
la nivel sursa ( .py ) cat si precompilate ( .pyc ) , programe care pot contine apeluri directe la
shell ( interpretorul de comenzi sistem ) cat si lansarea unor scripturi shell ( .sh ) .
- locatia fizica a pluginurilor extensie este /usr/lib/enigma/Pithon/Plugins/Extensions unde
fiecare subdirector contine un plugin extensie ... in cazul nostru PKT ( panelul PKT ).
- toate pluginurile contin in directorul gazda urmatoarele fisiere : plugin.py ( sau derivatele .pyc
.pys .pit .pio ) , __init__.py sau .pyc. Fisierul plugin.py este fisierul radcina program de la care
porneste interpretarea ( executia ) pluginului ... in cazul panelului aici sint definite entitatile care
vor compune meniurile ( daca ele exista ) ... in cazul nostru structura fisierelor .cfg care permit
descrierea meniului panelului
- fisierele .cfg sint la rindul lor grupate logic intr-o ierarhie ( structura arborescenta ) avind in varful
ei fisierul main.cfg el contine elemente de meniu care pot : apela un nou meniu, apela un progrem
precompilat sau un script shell.
* S:main:E2 PKT Mod:startup.sh - S este linia de start , main este numele modulului,
E2 PKT Mod este titlul atasat ecranului meniu, startup.sh este numele scriptului shell
lansat la initializarea modulului curent si care se gaseste in directorul curent
* M:emu:Emu - M este linia de tip apel la un alt meniu , emu este numele fisierului meniu
emu.cfg , Emu este textul tabului de selectie din meniu
* P:main:Plugins:PluginBrowser - P este linia de tip apel program/plugin precompilat , main
este numele modulului apelant , Plugins - este textul tabului de selectie , PluginBrowser - este
numele programului/plugin apelat
* C:main:PKT info:PKT.sh - C - este linia de tip apel script shell , main - modulul apelant ,
PKT info este textul tabului de selectie , PKT.sh - este numele scriptului shell
* M:addons:Powrot - o linie de incheiere modul a unui modul meniu care permite apelul de tip M cu intoarcere
la modulul meniu apelant ( addons )
Iata si un exemplu de posibil modul main :
S:main:E2 PKT Mod:startup.sh
M:system:System
M:addons:Addons
P:main:Pluginy:PluginBrowser
M:settings:Ustawienia
M:language:Language
C:main:PKT info:PKT.sh
Acestea sint elementele de baza necesare celui care doreste sa implementeze un plugin
extensie sau care adapteaza o astfel de constructie. Problema concreta de la care am plecat a
fost adaptarea PKT Mod v4.0 conceput pentru a lucra in context USB la o imagine de tip FLASH !
acest lucru este posibil doar daca se au in vedere urmatoarele conditii :
- executia Python numai la nivel sursa ( .py )
- referinta la module precomplilate .pyc de tip sistem
- referinta la module precompilate independente de context
- reconstituirea contextului de date ( subdirectoare specifice in /var si continutul lor )
Cazul concret al panelului PKT :
- initializarea pluginului PKT la nivel sursa ( plugin.py )
- inlocuirea pluginului dependent de context ( EmuManager ) printr-un meniu
- reconstituirea contextului de date PKT din directorul /var/conf
- simplificarea unor meniuri eliminind functii de mai mic interes
Procedura de instalare :
- pluginul si contextul sau de date se prezinta ca o arhiva ( .zip ) care contine doua
directoare /var si /usr care la randul lor au subdirectoare
- va legati FTP cu TotalComander la IPBOX pe care ruleaza in FLASH o imagine SIF 041 FLASH
- transferati cele doua directoare din arhiva in imaginea de pe IPBOX
- navigati apoi in FLASH urmarind traseul /usr/lib/enigma/Pithon/Plugins/Extensions/PKT
- selectati in PKT toate fisierele cu extensia diferita de .cfg ( evident executabile ) si din
File-Attributes dati drepturi 755 !!!
- din telecomanda IPBOX dati un restart GUI ( meniu-standby/restart- restart GUI )
- RED BUTTON - alegeti tabul Polish Kathy Team Meniu ...
Arhiva PKT-pannel.zip o gasiti la RSP Upload ! ea demonstraza ca panelul este functional fara
a-mi fi propus ca el sa fie un scop in sine ! fara a fi perfect functional in toate detaliile ... ca urmare
...orice sugestii sint binevenite.
P.S. Pentru moment RSP upload este ...down ! dar mai insist