There were some requests for a signal quality ui in the past. I've implemented a first pass at this and have broken it down into 5 small patches. The user visible functionality is that if the signal is not strong a dialog showing the current channel and signal measurement pops up with two buttons: return to main menu, and change channel.

If the signal improves to the configured threshold we teardown this
dialog and start the recorder, and if the user selects one of the buttons we either return to the main menu or select the next channel, resp.

On the backend...
  The measurementdialog patch ads a couple functions to
  MythProgressDialog, and creates a MeasurementDialog
  that is basically a full screen version of the progress
  dialog that you can add buttons to.

  The channel-getsignal+isopen patch adds two functions
  to the Channel objects: GetSignal() and IsOpen(). GetSignal
  tells us the current signal value (0..100 or negative for
  error), and the values signalThresholdWait and signalThreshold.
  I've also simplified the internal implementation, and rewritten
  the queries for signalThresholdWait and signalThreshold in
  channel.cpp so they only happen once per channel instance.
  IsOpen() just tells us if the channel object is already open,
  this is used by the next patch.

  tvrec-getsignal patch adds two functions to TVRec, GetSignal() and
  IsSignalGood(). This patch depends on the channel-getsignal+isopen
  patch for the ChannelBase::GetSignal() method. The GetSignal() in
  the tv recorder enables the next patch, while IsSignalGood()
  simplifies checking the signal value in HandleStateChange when
  we want to start a recording. I've also made two small changes
  to tv_rec.cpp: first, if we abort a recording while starting it
  and have a channel object, I call ChannelBase::ChannelUp() this
  is so that people do never need an external program to unstick
  MythTV from a bad channel; second, change channel object
  initialization for HDTV, in this case I simply set the channel
  format to ATSC, instead of the default format, since a format other
  than ATSC is always wrong no matter how the card is configured.

  GET_SIGNAL patch adds GET_SIGNAL to the myth protocol so that
  tv_play can query the recorder for the signal. This depends on
  the tvrec-getsignal patch for TVRec::GetSignal().

  Finally, the checksignal patch subclasses MeasurementDialog
  with SignalDialog, which has an exec that queries the recorder
  for the current signal value.

There are a couple problems I'd like to address
before this patch is ready for cvs...

  rename MeasurementDialog -> MythMeasurementDialog

  move SignalDialog class to some place where it makes sense

  is it ok to have GET_SIGNAL return three values?
    I could break it up into
      GET_SIGNAL, GET_SIGNAL_THRESHOLD, GET_SIGNAL_THRESHOLD_TIMEOUT
    The reason we don't just query the database is because dvb and
    pcHDTV might wish to use a different timeout and threshold and
    the channel would know about this.

  style, is "func(int& x)" or "func(int &x)" official myth style?

  should we let the user choose a channel, or is ChannelUp() ok?

-- Daniel

Attachment: measurementdialog-v1.patch.bz2
Description: Binary data


Attachment: channel-getsignal+isopen-v1.patch.bz2
Description: Binary data

Attachment: tvrec-getsignal-v1.patch.bz2
Description: Binary data

Attachment: GET_SIGNAL-v1.patch.bz2
Description: Binary data

Attachment: checksignal-v1.patch.bz2
Description: Binary data

_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to