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
measurementdialog-v1.patch.bz2
Description: Binary data
channel-getsignal+isopen-v1.patch.bz2
Description: Binary data
tvrec-getsignal-v1.patch.bz2
Description: Binary data
GET_SIGNAL-v1.patch.bz2
Description: Binary data
checksignal-v1.patch.bz2
Description: Binary data_______________________________________________ mythtv-dev mailing list [email protected] http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
