Jump to content


Photo

Timer conflicts


  • Please log in to reply
94 replies to this topic

Re: Timer conflicts #81 Huevos

  • PLi® Contributor
  • 4,247 posts

+158
Excellent

Posted 7 February 2016 - 10:13

During testing both parts were found to be needed. A explanation of the conflicts and test results is given in the thread I linked to.

Sorry if this isn't useful to you.

Re: Timer conflicts #82 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 7 February 2016 - 10:18

The whole thing is a bit cryptic.... So lets see if we need that tuner part....
U
The first patch with the timer ended ai think we wolve it smarter to look at the timer starus... No timer or time needed... (Only build a new list is not really required).... But as tuner ended are now removed from the list I suppose the tuner stuff is not required anymore as far I read the complete story...

Edited by littlesat, 7 February 2016 - 10:20.

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: Timer conflicts #83 Dimitrij

  • PLi® Core member
  • 10,023 posts

+338
Excellent

Posted 7 February 2016 - 12:23


Each timer is assigned to the index.

self.nrep_eventlist.extend([(timer.begin,self.bflag,idx),(timer.end,self.eflag,idx)])

 

Then, with this index, a timer is taken from the list.

		for event in self.nrep_eventlist:
			cnt += event[1]
			if event[2] == -1: # new timer
				timer = self.newtimer
			else:
				timer = self.timerlist[event[2]]

timer = self.timerlist[event[2]]

 

And if the timer is not in the self.nrep_eventlist list, then the order of the index is broken.

 

I just fixed it

Please see

 +		self.check_timerlist = []
+		for timer in self.timerlist:
+			 if not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString() and timer.state < TimerEntry.StateEnded:
+				self.check_timerlist.append(timer)
+		self.timerlist = self.check_timerlist[:]
 		idx = 0
 		for timer in self.timerlist:
-			if timer != self.newtimer and not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString():
+			if timer != self.newtimer:
 				if timer.repeated:
 					rflags = timer.repeated
 					rflags = ((rflags & 0x7F)>> 3)|((rflags & 0x07)<<4)



GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: Timer conflicts #84 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 7 February 2016 - 12:37

So creating the new timerlist is mandatory?

 

so 

-            if timer != self.newtimer and not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString():
+            if timer != self.newtimer and not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString() and timer.state < TimerEntry.StateEnded:

is not sufficient?


Edited by littlesat, 7 February 2016 - 12:38.

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: Timer conflicts #85 Dimitrij

  • PLi® Core member
  • 10,023 posts

+338
Excellent

Posted 7 February 2016 - 14:53

So creating the new timerlist is mandatory?

 

so 

-            if timer != self.newtimer and not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString():
+            if timer != self.newtimer and not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString() and timer.state < TimerEntry.StateEnded:

is not sufficient?

I did the patch, I hope everything will be ok

https://github.com/O...nigma2/pull/184


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: Timer conflicts #86 Taapat

  • PLi® Core member
  • 2,343 posts

+120
Excellent

Posted 7 February 2016 - 14:55

Without going into nuances, but looking only changes I think that create two loop one after the other, with the same large number of checks, definitely is not what can be called a good and optimal solution.



Re: Timer conflicts #87 Dimitrij

  • PLi® Core member
  • 10,023 posts

+338
Excellent

Posted 7 February 2016 - 15:06

It is simply necessary.
Without this, we will get the wrong timers on the index.
And we can not change the real timer list.


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: Timer conflicts #88 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 7 February 2016 - 15:52

OK I see... this is about the index... and that is why it is required.... 

Thanks!!!

But can also someone look at this one...

 

https://github.com/O...870657b62d109ea

 

The GML:1 we do not need at all... This is fixed direrently...

 

But about the GML:2.... As far I understood this might fix the overlap tuners when it can be tuned by one and the same tuner.... 


Edited by littlesat, 7 February 2016 - 15:54.

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: Timer conflicts #89 Dimitrij

  • PLi® Core member
  • 10,023 posts

+338
Excellent

Posted 7 February 2016 - 16:07

Without going into nuances, but looking only changes I think that create two loop one after the other, with the same large number of checks, definitely is not what can be called a good and optimal solution.

Maybe so, but I'm not sure ....

--- a/TimerSanityCheck.py
+++ b/TimerSanityCheck.py
@@ -81,48 +81,33 @@

-		rflags = self.newtimer.repeated
-		rflags = ((rflags & 0x7F)>> 3)|((rflags & 0x07)<<4)
-		if rflags:
-			begin = self.newtimer.begin % 86400 # map to first day
-			if (self.localtimediff > 0) and ((begin + self.localtimediff) > 86400):
-				rflags = ((rflags >> 1)& 0x3F)|((rflags << 6)& 0x40)
-			elif (self.localtimediff < 0) and (begin < self.localtimediff):
-				rflags = ((rflags << 1)& 0x7E)|((rflags >> 6)& 0x01)
-			while rflags: # then arrange on the week
-				if rflags & 1:
-					self.rep_eventlist.append((begin, -1))
-				begin += 86400
-				rflags >>= 1
-		else:
-			self.nrep_eventlist.extend([(self.newtimer.begin,self.bflag,-1),(self.newtimer.end,self.eflag,-1)])
 
 ##################################################################################
 # now process existing timers
-		self.check_timerlist = []
-		for timer in self.timerlist:
-			 if not timer.disabled and timer.conflict_detection and timer.service_ref and '%3a//' not in timer.service_ref.ref.toString() and timer.state < TimerEntry.StateEnded:
-				self.check_timerlist.append(timer)
-		self.timerlist = self.check_timerlist[:]
 		idx = 0
 		for timer in self.timerlist:
-			if timer != self.newtimer:
-				if timer.repeated:
-					rflags = timer.repeated
-					rflags = ((rflags & 0x7F)>> 3)|((rflags & 0x07)<<4)
-					begin = timer.begin % 86400 # map all to first day
-					if (self.localtimediff > 0) and ((begin + self.localtimediff) > 86400):
-						rflags = ((rflags >> 1)& 0x3F)|((rflags << 6)& 0x40)
-					elif (self.localtimediff < 0) and (begin < self.localtimediff):
-						rflags = ((rflags << 1)& 0x7E)|((rflags >> 6)& 0x01)
-					while rflags:
-						if rflags & 1:
-							self.rep_eventlist.append((begin, idx))
-						begin += 86400
-						rflags >>= 1
-				else:
-					self.nrep_eventlist.extend([(timer.begin,self.bflag,idx),(timer.end,self.eflag,idx)])
-			idx += 1
+			count = idx
+			if timer == self.newtimer:
+				count = -1
+			elif timer.disabled or not timer.conflict_detection or not timer.service_ref or '%3a//' in timer.service_ref.ref.toString()) or timer.state == TimerEntry.StateEnded:
+				self.timerlist.remove(timer)
+				continue
+			if timer.repeated:
+				rflags = timer.repeated
+				rflags = ((rflags & 0x7F)>> 3)|((rflags & 0x07)<<4)
+				begin = timer.begin % 86400 # map all to first day
+				if (self.localtimediff > 0) and ((begin + self.localtimediff) > 86400):
+					rflags = ((rflags >> 1)& 0x3F)|((rflags << 6)& 0x40)
+				elif (self.localtimediff < 0) and (begin < self.localtimediff):
+					rflags = ((rflags << 1)& 0x7E)|((rflags >> 6)& 0x01)
+				while rflags:
+					if rflags & 1:
+						self.rep_eventlist.append((begin, count))
+					begin += 86400
+					rflags >>= 1
+			else:
+				self.nrep_eventlist.extend([(timer.begin, self.bflag, count),(timer.end, self.eflag, count)])
+		idx += 1
 
 ################################################################################
 # journalize timer repeations


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: Timer conflicts #90 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 7 February 2016 - 16:53

Does the double looping slows it down extremely.... .?

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: Timer conflicts #91 Dimitrij

  • PLi® Core member
  • 10,023 posts

+338
Excellent

Posted 7 February 2016 - 17:29

Does the double looping slows it down extremely.... .?

No, not slowing down.
But,i will solve it in the next few days.
Let's wait for checks on users.


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: Timer conflicts #92 Rob van der Does

  • Senior Member
  • 7,766 posts

+184
Excellent

Posted 10 February 2016 - 10:05

I'm on a very long camping trip in Portugal, so largely off-line (and even when on-line not able to update STB).

So sorry for not chipping in for the time being.



Re: Timer conflicts #93 Frenske

  • Forum Moderator
    PLi® Core member
  • 27,404 posts

+394
Excellent

Posted 10 February 2016 - 15:57

We will do our best to continue our developing and board activities during your absence Rob. ;)
Enjoy your holiday. :)

Mijn schotel is een T90 met 10 LNB's. Daarnaast voor de fun nog een draaibaar systeem met een Triax TD 78.

Dreamboxen heb ik niet meer echt actief. Verder heb ik ook nog een een VU+ duo2 met 500Gb harddisk + een VU+ Uno, Zero, Solo 4K, Ultimo 4K, Zero 4K, Uno 4Kse. + ook nog een Xtrend ET7x00. Daarnaast heb ik ook nog diverse andere modellen w.o. een Formuler F4, ET8500, ET7500, Mut@nt 2400HD, Xsarius Fusion HD se en verder nog wel het e.e.a. waarmee op verzoek vanalles wordt getest. Iemand moet het tenslotte doen. ;) :)
Los van de eerder genoemde modellen heb ik nog wel een rits aan testsamples als Mut@nt 2400HD, HD60, GB UE4K, GB Trio4K, Maxitec Multibox combo en Twin, Octagon sf8008, sf8008 mini en last but nog least enkele modellen van het Grieks Duitse Edision.

Voor centrale opslag van media gebruik ik een Qnap 219P 
met tweemaal 2 Tb harddisks + een Synology DS414 met 12 Tb Totale opslag.

-------------------------------------------------------------------------------------------
Many answers to your question can be found in our wiki: Just one click away from this "solutioncentre".

Als ik alles al wist hoefde ik ook niets te vragen. If I had all the knowledge I had no questions at all.


Re: Timer conflicts #94 Europalette

  • Senior Member
  • 75 posts

0
Neutral

Posted 8 May 2016 - 16:15

Good evening everybody,

 

did the option "Enable timer conflict detection" get his "conflict-information" from the "PDC"-information, send by the respective TV-channel?

 

 

Many thanks in advance!



Re: Timer conflicts #95 Europalette

  • Senior Member
  • 75 posts

0
Neutral

Posted 8 May 2016 - 16:22

What means that you integrate the external plugin "VPS-Plugin" to the OpenPLi-Image...




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users