diff --git a/tv/genconf/sat_base_ng.py b/tv/genconf/sat_base_ng.py new file mode 100755 index 00000000..6f2b85e2 --- /dev/null +++ b/tv/genconf/sat_base_ng.py @@ -0,0 +1,206 @@ +#! /usr/bin/env python +# -*- coding: iso8859-15 -*- + +""" +Configuration de base des différents transpondeurs disponibles +""" + +#Auteurs: Frédéric Pauget, Brice Dubost, Nicolas Dandrimont +#Licence : GPLv2 + +from commands import getoutput +from time import sleep +import os, socket + +import textwrap + +IP = socket.gethostbyaddr(socket.gethostname())[-1][0] + +class CardBusy(Exception) : + """ La carte est déja utilisée """ + +class NotRunning(Exception) : + """ La carte ne diffuse rien """ + +class Card(object): + """ Classe parent de toute classe de transpondeur """ + # Niveux de verbosite : + # 0 : ne dit rien + # 1 : messages à caractères informatifs + # 2 : messages de debug + # 3 : ne permet pas à mumudvb de daemonizer + verbose = 3 + + CONF_FILE = "/etc/sat/carte%i.conf" # %i : numero de la carte + + timeout_accord = 20 #en secondes + timeout_no_diff = 0 #en secondes + + srate = 0 + bandwidth = "" + + template_conf_TNT = textwrap.dedent("""\ + ### Fichier généré par /usr/scripts/tv/* + ### Ne pas éditer ! + + # Autoconfiguration complète + autoconfiguration=2 + + # Configuration multicast + multicast_auto_join=1 + common_port=1234 + + # Ne pas toucher aux chaines chiffrées + dont_send_scrambled=1 + dvr_buffer_size=100 + + # Configuration de la carte TNT + freq=%(freq)i + card=%(card)i + bandwidth=%(bandwidth)s + + # Timeouts + timeout_accord=%(timeout_accord)i + timeout_no_diff=%(timeout_no_diff)i + + # Autoconfiguration des chaines + autoconf_ip=239.%(ip)s.%%card.%%number + autoconf_lcn=1 + autoconf_name_template=TNT%%2lcn %%name + + # Configuration SAP + sap_organisation=crans + sap_default_group=TNT + """) + + + template_conf_SAT = textwrap.dedent("""\ + ### Fichier généré par /usr/scripts/tv/* + ### Ne pas éditer ! + + # Autoconfiguration complète + autoconfiguration=2 + + # Configuration multicast + multicast_auto_join=1 + common_port=1234 + + # Ne pas toucher aux chaines chiffrées + dont_send_scrambled=1 + dvr_buffer_size=100 + + # Configuration de la carte Sat + freq=%(freq)i + pol=%(pol)s + card=%(card)i + srate=%(srate)i + + # Timeouts + timeout_accord=%(timeout_accord)i + timeout_no_diff=%(timeout_no_diff)i + + # Autoconfiguration des chaines + autoconf_ip=239.%(ip)s.%%card.%%number + autoconf_lcn=1 + autoconf_name_template=%%name + + # Configuration SAP + sap_organisation=crans + sap_default_group=%(sap)s + """) + + + def __cmp__(a,b) : + for attr in ( 'card', 'freq', 'chaines' ) : + if getattr(a,attr) != getattr(b,attr) : + return -2 + return 0 + + def __init__(self, card) : + """ Initalisation card est le numéro (entier) de la carte + correspondante """ + try : + self.freq = int(self.__class__.__name__.split('_')[-1]) + self.pol = '' + except ValueError: + try: + self.freq = int(self.__class__.__name__.split('_')[-1][:-1]) + self.pol = self.__class__.__name__.split('_')[-1][-1] + except ValueError: + # On ne pourra pas faire grand chose à part killer le flux de la carte + self.freq = '' + self.pol = '' + self.classe = self.__class__.__name__.split('_')[0] + self.card = card + self.sap = self.classe + + def gen_conf(self) : + """ Génère le fichier de conf """ + if not self.freq : + if self.verbose > 1 : print "Instance ne permettant pas la génération de la conf" + return + + fd = open(self.CONF_FILE % self.card,'w') + # Entète du fichier + fd.write( getattr(self, 'template_conf_%s' % self.classe) % + { 'bandwidth' : self.bandwidth, + 'freq' : self.freq , + 'card' : self.card , + 'timeout_accord' : self.timeout_accord , + 'timeout_no_diff' : self.timeout_no_diff, + 'pol': self.pol, + 'sap': self.sap, + 'srate': self.srate, + 'ip': IP.split('.')[-1]} ) + fd.close() + + def start(self) : + """ Lance la diffusion """ + if not self.freq : + if self.verbose > 1 : print "Instance ne permettant pas le lancement d'un flux" + return + + if self.verbose >0 : + print "Generation de la conf de %s sur la carte %i" % (self.__class__.__name__, self.card) + + self.gen_conf() + if self.verbose >0 : print " OK" + +class TNT_base(Card) : + bandwidth="8MHz" + +class TNT_R1_586000(TNT_base): + pass + +class TNT_R2_474000(TNT_base): + pass + +class TNT_R3_522000(TNT_base): + pass + +class TNT_R4_498000(TNT_base): + pass + +class TNT_R5_538000(TNT_base): + pass + +class TNT_R6_562000(TNT_base): + pass + +class TNT_R7_490000(TNT_base): + pass + +class SAT_UK_base(Card): + sap="UK" + +class SAT_10773h(SAT_UK_base): + """BBC""" + srate = 22000 + +class SAT_10714h(SAT_UK_base): + """Channel4""" + srate = 22000 + +class SAT_12480v(SAT_UK_base): + """Channel 4""" + srate = 27500