
Vc           @   s   d  d l  Z  d  d l m Z d  d l m Z m Z m Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 m Z d  d l m Z d d	 d     YZ d S(
   iN(   t   config(   t	   localtimet   mktimet   gmtime(   t   ServiceReference(   t   iServiceInformationt   eServiceCentert   eServiceReferencet   getBestPlayableServiceReference(   t
   TimerEntryt   TimerSanityCheckc           B   s>   e  Z d d   Z d d  Z d   Z d   Z d d  Z RS(   c         C   s\   d t  t d   |  _ | |  _ | |  _ g  |  _ g  |  _ g  |  _ d |  _ d |  _	 d  S(   Ni   i  ii   i_ i_ (
   R   R   t   localtimedifft	   timerlistt   newtimert
   simultimert   rep_eventlistt   nrep_eventlistt   bflagt   eflag(   t   selfR   R   (    (    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyt   __init__
   s    						i   c         C   s_   t  j j j s t S| d k r+ | |  _ n  |  j d  k rF g  |  _ n |  j g |  _ |  j   S(   Ni   (	   R    t   usaget   timer_sanity_check_enabledt   valuet   TrueR   t   NoneR   t   checkTimerlist(   R   t	   ext_timer(    (    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyt   check   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyt   getSimulTimerList   s    c         C   sJ  |  j  d  k	 rF|  j  j j j   rF|  j  g |  _ x|  j D]} | |  j  k rV t S|  j  j | j k r= |  j  j	 | j	 k r= | j j j
 t j @} |  j  j j j
 t j @} | | k r t S| r | j j j   |  j  j j j   k S| j j j } |  j  j j j } x1 d D]" } | |  | |  k rPqqWt Sq= q= Wn  t S(   Ni   i   i   i   (   i   i   i   i   (   R   R   t   service_reft   reft   validR   R   R   t   begint   endt   flagsR   t   isGroupt   Falset   getPatht   getUnsignedData(   R   t   timert   fl1t   fl2t   getUnsignedDataRef1t   getUnsignedDataRef2t   x(    (    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyt   doubleCheck"   s&    $*%c   #         s
  t  j     g  |  _ g  |  _ | d k r6 | |  _ n  |  j d  k	 r|  j j r|  j j j j	   sk t
 S|  j j } | d @d ?| d @d >B} | rh|  j j d } |  j d k r | |  j d k r | d ?d @| d	 >d
 @B} n; |  j d k  r!| |  j k  r!| d >d @| d	 ?d @B} n  x~ | rd| d @rM|  j j | d f  n  | d 7} | d L} q$Wq|  j j |  j j |  j d f |  j j |  j d f g  n  d } xz|  j D]o} | |  j k r| j r| j r| j } | d @d ?| d @d >B} | j d } |  j d k rL| |  j d k rL| d ?d @| d	 >d
 @B} n; |  j d k  r| |  j k  r| d >d @| d	 ?d @B} n  x | r| d @r|  j j | | f  n  | d 7} | d L} qWq| j t j k  r|  j j | j |  j | f | j |  j | f g  qn  | d 7} qW|  j rt |  j  d } t |  j  d } | | d } | | d }	 | | d r|	 d 7}	 n  x[t t |	   D]l}
 xc|  j D]X} | d d k r|  j j } |  j j } n( |  j | d j } |  j | d j } | d | |
 d } t |  j } | d t |  j | 7} | | | } | d d k r| |  j j k r	|  j j | |  j | d f | |  j | d f g  q	q| |  j | d j k r|  j j | |  j | d f | |  j | d f g  qqWqWn d } x d D] }
 x |  j D] } | d d k rb|  j j } |  j j } n( |  j | d j } |  j | d j } | d | |
 d } | | | } |  j j | |  j | d f | |  j | d f g  q1Wq!W|  j j   g  } d  } d  } d  } d }
 d } g  } x|  j D]} |
 | d 7}
 | d d k r]|  j } n |  j | d } | d |  j k rJg  } | j j r| j j j t j  @rt! j" j# t$ | j j t   t%  t%  } n t! j" j# | j t%  } | r| j& t%  } n d } | sF| j'   } | r| j | j(   j) d   qn   f d   } | j j } | j t j  @r  j* |  } | rxB | j+ d  D]. } | |  } | | k r| j |  qqWqn | j | |   | d d k r| } n  | j | | | f  | j | | f  | r| d  k rG| } | } qGqn | d |  j k rxL | D]D } | | d k rd| d rdt! j" j, | d  | j- |  qdqdWd  } x6 | D]& } | d | k r| j- |  qqWn d GH| d | d | d |
 | f |  j | <| d 7} q-W| d  k r2	t% S|  j d  k	 r	|  j | k	 r	x |  j D] } t. | d  d k rZ	t
 }  t
 }! xG | d D]; } | d | k r	t% }  n  | d |  j k r	t% }! q	q	W|! r	|  r	|  j } | } Pq	qZ	qZ	Wq	n  | g |  _/ x |  j D] } t. | d  d k r
x) | d D] } | d | k r5
Pq5
q5
Wq
xd | d D]U } | d |  j/ k ra
x9 | d D]* }" |" | k r
|  j/ j | d  Pq
q
Wqa
qa
Wq
q
Wt. |  j/  d k  r
d GHt% St
 S(   Ni   i   i   i   i   iQ i    i?   i   i@   i~   ii:	 i  i F i   t
   tuner_typec            s>     j  |   } | o' | j |  t j  } | r: | d p= d S(   NR/   t    (   t   infot   getInfoObjectR   t   sTransponderData(   R   t   serviceInfo(   t   serviceHandler(    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyt   getServiceType   s    t   Rs   Bug: unknown flag!s   Possible Bug: unknown Conflict!(   i    i   (0   R   t   getInstanceR   R   R   R   t   disabledR   R   R    R%   t   repeatedR!   R   t   appendt   extendR   R"   R   R   t   stateR	   t
   StateEndedt   mint   maxt   ranget   intR   t   tm_hourt   sortR#   R   R$   t   NavigationInstancet   instancet   recordServiceR   R   t   startt   frontendInfot   getFrontendDatat   gett   listt
   getContentt   stopRecordServicet   removet   lenR   (#   R   R   t   rflagsR!   t   idxR(   t   interval_begint   interval_endt   offset_0t   weekst   cntt   eventt   event_begint	   event_endt   new_event_begint   new_ltht   new_event_endt   fakeRecListt   ConflictTimert   ConflictTunerTypet   newTimerTunerTypet   overlaplistt	   tunerTypet   fakeRecServicet   fakeRecResultt   feinfoR6   R   t   serviceListt   typet   fakeRect   entryt   ktt   ntR-   (    (   R5   s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyR   9   sH   		"	

=		"	

:	<D>"-"	)		N(   t   __name__t
   __module__R   R   R   R   R.   R   (    (    (    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyR
   	   s
   
		(    (   RE   R    t   timeR   R   R   R   t   enigmaR   R   R   R   R(   R	   R
   (    (    (    s6   /usr/lib/enigma2/python/Components/TimerSanityCheck.pyt   <module>   s   "