by millsb » Sat Aug 13, 2011 11:25 pm
OK, let's consider (a) what is the requirement and (b) what is technically possible.
(a) the requirement
The basis of the requirement is to prevent long phone calls which result in the user incurring excessive phone usage charges.
I think therefore that the requirement is [1] to enable the user to be able to specify that normal (daily automatic) modem calls are limited to a maximum time - and if that time is exceeded [2] TiVo should abandon the call in as graceful a way as is possible. The presumption is that the time limit gets exceeded due to some transient fault (with the phone connection, with the server, with the TiVo itself) which is not expected to occur every time a call is made. Put another way, this means that if we abandon such a long call, we're assuming that there's a reasonable chance that next time TiVo attempts a call, it will complete successfully.
By implication therefore, it is required [3] that the limit does not apply if the call is not automatic (ie it's user-initiated), or is via network/serialPPP rather than modem, or is associated with activities other than daily programme guide download (so guided setup is exempt).
An implied requirement is that it should be possible [4] to achieve this with an unmodified tivo, or at least with one that is not configured for bash/telnet access.
(b) technical solutions
[1] the existing (altepg) mechanism for specifying call restrictions (using callwaitingprefix) could be extended to allow the user to specify a maximum call time limit.
[2] detecting duration of call time is possible (eg monitoring subprocess forked by TClient when it starts). If time limit is exceeded TiVo could be forced to reboot (not very graceful). Alternatively we could just kill the TClient process. This probably won't cause TiVo to reboot (so more graceful) and the tcphonehome process will probably catch the TClient process failure and ensure the phone line gets disconnected. I think this is existing standard functionality but it will need testing to make sure it does what's expected. Some care is needed here to distinguish between the case where a call actually exceeds the limit and the case one where the call completes in time but loading/indexing continues beyond the time limit. It is important that this latter case doesn't cause the TClient process to get killed.
[3] there's no problem distinguishing automatic calls from user initiated, test, guided setup. Also no problem detecting whether or not the call is via modem.
[4] this clearly isn't possible today with an unmodified TiVo. It could however be built into (an update to) the altepg image, and support for unmodded Tivos could be added once we've got online software updates working (that's still a while off yet).
So in summary, if I've understood the requirement correctly, then it's possible, but would require a fair bit of work to implement a reliable solution. It's worth doing if it's going to save a lot of people a lot of call charges - so maybe put to a vote: if the ability to limit call times as described here was available, would you use it? How much is it actually worth to you?
Brian