Hi xeleema.
Thank you for your answer.
Quote:
Originally Posted by xeleema
Greetingz!
Okay, let me make sure we have the facts....
a) You're trying to build-in to your application support for controlling a Plain-Old-Telephone-System (POTS) modem.
|
Yup.
Quote:
b) This isn't a GSM/CDMA/3G/4G/ATM modem.
|
Nope.
Quote:
c) You want to use D-Bus to control
|
...the dialling, yes. But...
No, it is not a GUI-based dialler. It is a background process 'B' that at regular intervals needs to fetch updated information, and it does so by asking another background process 'C', to establish a PPP connection. Background process 'B' can be interrogated by a GUI process 'D', which can also ask it to do a refresh (therefore causing 'B' to tell 'C' to dial). In summary:
'B': Background process which holds/processes some data which requires regular or irregular updates over PPP.
'C': Background process which establishes or tears down a PPP connection and tells 'B' (or whoever is interested) that a connection is up / down.
'D': GUI process which interrogates 'B'. It does not talk directly do 'C', but can cause 'B' to tell 'C' to do some action.
Quote:
d) You already have a wrapper for pppd, but it's unreliable.
|
Correct. That's the process called 'C' above.
Now for the questions;
Quote:
Have you made sure pppd was configured properly?
|
Yup. Activating and deactivating pppd manually via the command line works exactly as required.
Quote:
I assume you have defined "active-filter"?
|
I do not have access to the code right now, so I can't give you a categorical answer on this specific point, but a priori pppd is configured to never terminate the connection unless requested.
That said, using active-filter with a very restrictive filter could very well be the answer to both the connect and disconnect use cases, obviating the need for process 'C' above, so I will research into that. Thanks a lot for bringing this to my attention!
Quote:
Have you double-checked the pppd daemon's "idle" settings?
|
Yup, see above.
Quote:
Exactly what's been the problem with pppd,
|
I believe pppd itself is behaving like a champ, the problem is with process 'C' not killing pppd when it's supposed to, and/or not bringing it up when needed. The root problem here is that 'C' has been put together from a bunch of reused bits of code which have themselves been recycled over and over, and it's all a horrible mess. So I've got two options: rewrite 'C' from scratch, or use an off-the-shelf solution if one is available. Requirements for such a solution are as per my first post, i.e.,:
* establish PPP connection (using predefined settings)
* tear down PPP connection
* expose a DBus method to command the two actions above.
* expose a DBus signal to let anyone interested know when the link is available / no longer available.
Quote:
wvdial, and network-manager (and why are the latter two undesireable?)
|
wvdial does not provide a DBus interface. NetworkManager does not seem to support POTS dial-up (the platform is Debian 6)
It's been looked at, I believe, but it fails the DBus requirement.
Once again, thanks for your help, especially the excellent lead on using demand dialling mode. I'll get back to let you know how that worked after it's been tested (it could take up to a couple of months due to other commitments, so please bear with me!).