Jump to content


Photo

E2 architecture overview ?


  • Please log in to reply
7 replies to this topic

#1 alex22

  • Member
  • 40 posts

0
Neutral

Posted 1 November 2012 - 00:44

Hello,

Sorry if I'm missing the obvious, but after scanning the wiki I'm not aware of a document describing Enigma2's architecture.
Is there one somewhere ?

For example, I gather that enigma2 itself is a C++ binary, but python is involved here and there (eg plugins). Any details ?

Also, if there's a plan for evolution, I'm interested too; for one I'd love to see non-critical plugins "crash alone" in their child processes, instead of the existing "green screen" where E2 itself is recycled, splitting and losing dozens of seconds on all current recordings.

Note this is not gratuitous criticism; I am genuinely willing to contribute (as an embedded C developer)
Thanks in advance,

-Alex

Re: E2 architecture overview ? #2 hemertje

  • Forum Moderator
    PLi® Core member
  • 33,472 posts

+118
Excellent

Posted 1 November 2012 - 09:07

the only documentation available is the sourcecode
so setup an OpenPLi buildenvironment and start reading the code

on the Glassfibre 1GB DVB-C...


Re: E2 architecture overview ? #3 Persian Prince

  • Senior Member
  • 1,982 posts

+247
Excellent

Posted 1 November 2012 - 22:46

you can read the codes here : http://openpli.git.s...fs/heads/master

;)

Open Vision sources: https://github.com/OpenVisionE2


Re: E2 architecture overview ? #4 mirakels

  • Forum Moderator
    PLi® Core member
  • 7,599 posts

+62
Good

Posted 1 November 2012 - 23:37

just committed a basic setup to generate doxygen documentation. It can generate class relationship graphs that may be useful to start understanding enigam2...
Geen wonder... Had slechts een dm7000, maar wel ook een rotor. eigenlijk al een tijdje ook een dm600 en dm7025. Maar nu kijkend met een et9000 en vuduo

Re: E2 architecture overview ? #5 Sjaaky

  • Senior Member
  • 7,443 posts

+41
Good

Posted 1 November 2012 - 23:39

And there was some documentation effort by the original authors. Although outdated it might prove some use: http://openpli.git.s...dda5ba0;hb=HEAD

Re: E2 architecture overview ? #6 alex22

  • Member
  • 40 posts

0
Neutral

Posted 2 November 2012 - 00:13

Thank you. Now I see that plugins are SWIGged calls into Python, not separate processes.
Wouldn't it be cool if a crash in a plugin was confined to it (I hate to spoil 3 simultaneous recordings) ?

Edited by alex22, 2 November 2012 - 00:13.


Re: E2 architecture overview ? #7 MiLo

  • PLi® Core member
  • 14,045 posts

+298
Excellent

Posted 2 November 2012 - 14:16

Wouldn't it be cool if a crash in a plugin was confined to it (I hate to spoil 3 simultaneous recordings)?


That is actually unrelated to running in separate processes.

It is in fact quite easy to place a "catch" routine that will just kick out the guilty plugin and continue as if nothing happened. The major drawback is that the plugin may have messed up other things in subtle ways, even if the plugin were running in another process, thus screwing up all three your recordings without you noticing.
That is why I still prefer the current behaviour, restarting enigma at least ensures that you'll have a stable situation in about half a minute. And "crashing" is a choice of the author of the plugin. It's the plugin author who decides what to do when an error occurs. If the plugin author decides to just do nothing, then the end result will be a greenscreen, because Enigma2 cannot autmatically determine the severity of the error, i.e. if it was just a silly typo in a skin, or that the plugin has made the box run out of memory or some other resource, or caused memory corruption.
Real musicians never die - they just decompose

Re: E2 architecture overview ? #8 alex22

  • Member
  • 40 posts

0
Neutral

Posted 2 November 2012 - 19:35

OK, makes sense. From this I understand that there are no separate "API classes" for different kinds of plugins.
For example, when the EPG Alert plugin crashes while typing a poor search string, *I* know that nothing critical is compromised, but E2 doesn't ;)

So I guess I'll have to manually add a "catch" inside the plugin's code itself.. sigh.
(take-home lesson: don't play with new plugins while recording)

-Alex


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users