示例#1
0
 def Activate(self):
     MediaDevice.Activate(self)
     try:
         #if( self.player ):
         #self.player.Activate()
         self.tuner = FMRadio(dev=self.dev_path)
         #l,h = self.tuner.get_frequency_range()
         low, high = self.tuner.get_frequency_range()
         self.MinFrequency = low / 1000.0
         self.MaxFrequency = high / 1000.0
         #print( '[{},{}]'.format( l, h ) )
         if (self.rds_listener is not None):
             self.tuner.rds.add_listener(self.rds_listener)
         self.is_active = True
         self.Tune(self.state.frequency)
         print('Radio is active')
         # keep the app running
         #while 1:
         #time.sleep(1000)
     except FMRadioUnavailableError:
         error_msg = "FM radio device is unavailable"
         print error_msg
         self._ReportError(error_msg)
         self.is_active = False
         import sys, traceback
         xc = traceback.format_exception(*sys.exc_info())
         print(''.join(xc))
         return
示例#2
0
    def InitUI(self, video_panel_parent, control_panel_parent,
               video_panel_click_callback):
        '''For the time being video_panel_click_callback is not used for radio'''
        MediaDevice.InitUI(self, video_panel_parent, control_panel_parent,
                           video_panel_click_callback)
        #sizer = self._video_panel_parent.GetSizer()
        self._video_panel = wx.Panel(video_panel_parent)
        video_panel_parent.GetSizer().Add(self._video_panel, 1, wx.EXPAND)

        video_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self._video_panel.SetSizer(video_sizer)

        video_sizer.Add(self._BuildFrequencyDisplay(self._video_panel),
                        5,
                        wx.EXPAND | wx.ALL,
                        border=0)

        self.signalStrengthControl = self._BuildSignalControl(
            self._video_panel)
        video_sizer.Add(self.signalStrengthControl,
                        2,
                        wx.EXPAND | wx.ALL,
                        border=0)

        self.media_player = self._CreateMediaPlayer()
示例#3
0
    def Deactivate(self):
        MediaDevice.Deactivate(self)

        if (self.scanTimer.IsRunning()):
            #logging.debug( 'scanTimer stopped!' )
            self.scanTimer.Stop()
        self.scanUntilObserver.Stop()
示例#4
0
    def __init__(self, abstract_device, RDSListener, frequency=87.5):
        MediaDevice.__init__(
            self, abstract_device.name, abstract_device.dev_path,
            abstract_device.dev_type, abstract_device._mmedia_gui,
            abstract_device._gui_media_functions, abstract_device._playerLock,
            abstract_device._error_reporter, abstract_device._message_reporter
        )  #, abstract_device._playlist_select_callback )
        self.rds_listener = RDSListener
        self.frequency = frequency

        self.signalStrength = 0.0
        self.isStereo = False
        self.MaxFrequency = 108.0
        self.MinFrequency = 87.5
        self.frequencyObservers = []
        self.signalStrengthObservers = []
        self.stereoMonoObservers = []
        self.stationList = StationList()
        self.stationList.Load()
        self.mixer = DummyMixer()  #PulseaudioMixer( _PULSEAUDIO_SOURCENAME )
        self._is_active = False

        self.tuner = None
        self.player = RadioPlayer(pulsesrc_device=_PULSEAUDIO_SOURCENAME)
        #print( 'TunerPlayer created successfully' )
        self.scanTimer = wx.Timer(self._mmedia_gui)
        abstract_device._mmedia_gui.Bind(wx.EVT_TIMER, self.Scan,
                                         self.scanTimer)

        self.signalBarCount = 10
        self.signalBar = []

        self.scanUntilObserver = ScanUntilObserver(self._mmedia_gui, self)
        self.AddSignalStrengthObserver(SignalStrengthPanelObserver(self))
        self.AddSignalStrengthObserver(self.scanUntilObserver)
        self.AddFrequencyObserver(FrequencyPanelObserver(self))
        self.AddFrequencyObserver(self.state)

        # register signal handler for exiting
        def handler(signum, frame):
            #self.tuner.close()
            self.Deactivate()
            sys.exit(0)

        #
        signal.signal(signal.SIGINT, handler)
示例#5
0
 def DoPlayTrack(self, track_hash):
     if (track_hash):
         channel = self.channels[track_hash]
         self.Tune(channel)
         MediaDevice.DoPlayTrack(self, track_hash)
     else:
         raise Exception(
             'TV was asked to play unknown track with hash: {}'.format(
                 track_hash))
示例#6
0
 def InitUI(self, video_panel_parent, control_panel_parent,
            video_panel_click_callback):
     #I do not want the media_player observers so I override it and call the MediaDevice parent function
     MediaDevice.InitUI(self, video_panel_parent, control_panel_parent,
                        video_panel_click_callback)
     self.media_player = self._CreateMediaPlayer(
         video_panel_parent, self._playerLock, video_panel_click_callback)
     self._video_panel = self.media_player.video_panel
     #self._controls_panel = self.media_player.ctrlpanel
     self._video_panel_parent.GetSizer().Add(self._video_panel, 1,
                                             wx.EXPAND)
示例#7
0
 def Deactivate(self):
     MediaDevice.Deactivate(self)
     if (self.tuner):
         print('closing the tuner')
         self.tuner.close()
         print('closed the tuner')
     #if( self.player ):
     #self.player.Deactivate()
     self.is_active = False
     if (self.scanTimer.IsRunning()):
         print('scanTimer stopped!')
         self.scanTimer.Stop()
     self.scanUntilObserver.Stop()
示例#8
0
 def PlayTrack(self, track_hash):
     self.scanUntilObserver.Stop()
     self.Tune(float(track_hash))
     MediaDevice.PlayTrack(self, track_hash)