←  [EN] Third-Party Development

Forums

»

EIT weekly EPG for greek provider Nova

malakudi's Photo malakudi 21 Dec 2010

Greek provider Nova started transmitting weekly EPG in EIT format, in greek and english language. They use a non-standard pid, 0x1388, on transponders 12130H and 10930H (Hotbird 13). Is there a way to "tell" enigma2 to check this pid and import EIT epg? On standard pid 0x12 they only transmit now/next epg (this is read from enigma2)

PID found: 18 (0x0012) [SECTION: Event Information Table (EIT) - other transport stream, present/following]
PID found: 5000 (0x1388) [SECTION: Event Information Table (EIT) - other transport stream, schedule]


Thank you
Quote

pieterg's Photo pieterg 24 Dec 2010

do they use standard EIT format? Or do they use custom descriptors?
Quote

malakudi's Photo malakudi 24 Dec 2010

How can I check that? I can upload a dvbsnoop binary log if this will help. dvbsnoop in decode mode seems to understand the EIT information, so I think they must use compatible format.

I would like to apply a patch on epgcache.cpp to force it use pid 5000 (0x1388) for testing purposes but after a complete image build the enigma2 source is deleted from build-vuduo/tmp . Is there a way to keep this source in order to apply the change and create a proper diff file? I am not very familiar with bitbake.
Quote

pieterg's Photo pieterg 24 Dec 2010

If we are pretty sure the format is according to the EIT standard, I would just introduce a new EIT reader, on the custom pid.
But if we are not sure about the format, it's probably a waste of time.

If you want to experiment with the epgcache / epgreaders, remove rm_work from local.conf, and you will be able to force a new compile in the old workdir.
Quote

malakudi's Photo malakudi 25 Dec 2010

If we are pretty sure the format is according to the EIT standard, I would just introduce a new EIT reader, on the custom pid.
But if we are not sure about the format, it's probably a waste of time.

If you want to experiment with the epgcache / epgreaders, remove rm_work from local.conf, and you will be able to force a new compile in the old workdir.



I did as you suggested, removed rm_work and modified epgcache.cpp to try pid 0x1388. enigma2 loaded a full 7 days epg after leaving it for about 3 minutes in one of the channels transmitted on transponders from 10930H or 12130H. The only missing events were the now/next , because my modified enigma2 binary wasn't reading those events from pid 0x12.

How can I continue from here to apply a patch that doesn't affect normal now/next EPG parsing?
Quote

pieterg's Photo pieterg 25 Dec 2010

we have to add a new epgreader. Look at the freesat readers for instance, there are two, on different pids.
Would be great if you could save me some work by supplying a patch ;)
Quote

malakudi's Photo malakudi 25 Dec 2010

we have to add a new epgreader. Look at the freesat readers for instance, there are two, on different pids.
Would be great if you could save me some work by supplying a patch ;)



I'll try, which files should I look at? epgcache.cpp only or there are more?

Because I am not really familiar with bitbake, the correct way to recompile a package is by manually removing stamp files? or you can do this with some command parameter to bitbake?

Thank you for your help.
Quote

pieterg's Photo pieterg 25 Dec 2010

epgcache.cpp and epcache.h
Though we would also want a config option to enable/disable the reader, but I can take care of that afterwards.

force compile:

bitbake -f -c compile enigma2
(or point to the bb file with -b ../../openembedded/recipes/....bb to speed things up by avoiding the bb cache)
Quote

malakudi's Photo malakudi 26 Dec 2010

Thank you pieterg, will take a look at it from Monday.
Quote

malakudi's Photo malakudi 6 Jan 2011

I made some progress on this. I have patched epgcache.cpp/epgcache.h similarly to the viasat patch. Nova EIT EPG is transmitting two tables, some channels as 0x50 (schedule) and some other as 0x60 (schedule_other), both in the same pid. Everything else is standard EIT. I've also looked at the freesat code but it seems quite complicated, do I have to do a patch similar to freesat? A patch similar to viasat is far more easy for me but if it is not going to be accepted, i will look further the freesat way.
Quote

pieterg's Photo pieterg 6 Jan 2011

the freesat parser is way more complicated. And also the stuff which keep track of 'unseen' tables.
I actually only meant you could create additional section readers, just like freesat. Wasn't aware that we had viasat as an easier example ;)
Quote

malakudi's Photo malakudi 7 Jan 2011

I have a small question. At the following code:

	   enum {PRIVATE=0, NOWNEXT=1, SCHEDULE=2, SCHEDULE_OTHER=4
#ifdef ENABLE_MHW_EPG
	   ,MHW=8
#endif
#ifdef ENABLE_FREESAT
	   ,FREESAT_NOWNEXT=16
	   ,FREESAT_SCHEDULE=32
	   ,FREESAT_SCHEDULE_OTHER=64
#endif
	   ,VIASAT=256
	   ,EPG_IMPORT=0x80000000
	   };

can I continue with values over 256? I want to add two more values, NETMED_SCHEDULE and NETMED_SCHEDULE_OTHER. Value 128 is free, I would use 512 and 1024. Is this ok?
Quote

pieterg's Photo pieterg 7 Jan 2011

512 and 1024 are ok
believe we had 128 for freesat, but we removed it again (after viasat was already added)
Quote

malakudi's Photo malakudi 7 Jan 2011

Patch is complete, I tested it and it works fine. Do you want me to put changes around #ifdef ENABLE_NETMED , #endif sections?
Quote

pieterg's Photo pieterg 7 Jan 2011

no the ifdef's are not really required.
That's just so that people can build images without stuff which might be 'owned' by providers.
But since everything is reversed, and doesn't contain any provider code, I see no reason for that.
Quote

malakudi's Photo malakudi 7 Jan 2011

I prepared them with #ifdef NETMED ... #endif .

I attach two diff files in zip format, one for epgcache.h and one for epgcache.cpp . In epgcache.cpp and function eEPGCache::channel_data::readDataNetmed , I am not sure if the second part of the function is needed (I actually copied it from eEPGCache::channel_data::readData)

Attached Files

Quote

malakudi's Photo malakudi 7 Jan 2011

I think I made something wrong in uploaded patch. Please ignore it, I'll upload again.


edit: OK, here it is (some @ifdef were wrong in previous one)

Attached Files

Quote

pieterg's Photo pieterg 7 Jan 2011

we should probably try to optimize epgcache.cpp a bit, and let sources share the same readData, to avoid code duplication.
But other than that, it looks OK to me.
Quote

malakudi's Photo malakudi 7 Jan 2011

The viasat patch utilises same function by modifing data[0] and then checking for values D0 ... DF, E0 ... EF. I didn't want to interfere on this, thus I created a new function that shares some code.
Quote

charos's Photo charos 27 Jan 2011

Is this pushed to the image (any nightly builds)?
Quote