2010/3/10 Dan Williams <d...@redhat.com>

> On Tue, 2010-03-09 at 17:34 -0800, Dan Williams wrote:
> > On Tue, 2010-03-09 at 13:45 +0100, Pablo Martí Gamboa wrote:
> > > Hi Dan, Marcel and others,
> > >
> > >
> > > we would like to extend the ModemManager API so that it can handle
> > > USSD commands. The USSD API of oFono [0] looks quite nice IMHO and I'd
> > > like to propose a similar API:
> >
> > I'd actually change two things; this API (and by extension the ofono
> > one) doesn't allow clients to respond to a USSD request that is pending
> > when they start up.  Say your app sends the request, then crashes or
> > something.  When it's crashed, the network sends the response.  Now your
> > app can't get the response when it starts back up and handle it, it
> > would have to cancel the USSD session and send the request again.
>
> I tossed this into the MM introspection/ directory with my proposed
> changes; keeping the changes or dropping them doesn't make a huge
> difference to me, I just thought it was a slightly more robust way of
> doing the API.  Updated spec HTML attached for your review.
>
> Dan
>
>
> > A more robust API would change the NotificationReceived and
> > RequestReceived signals into properties instead, which can be queried
> > when your app starts up.  See below...
> >
> > I did add a org.freedesktop.DBus.Properties.MmPropertiesChanged signal
> > to ModemManager a bit ago, mainly to support the
> > org.freedesktop.ModemManager.Modem.Enabled property.  So we can
> > certainly use that.
> >
> > >
> > > USSD Interface
> > > ===============
> > >
> > >
> > > Service org.freedesktop.ModemManager
> > > Interface         org.freedesktop.ModemManager.Modem.Gsm.Ussd
> > >
> > >
> > > Methods string Initiate(string command)
> > >
> > >
> > > Sends a USSD command string to the network
> > > initiating a session.  When the request is handled
> > > by the appropriate node of the network, the
> > > method returns the response or an appropriate
> > > error.  The network may be awaiting further response
> > > from the ME after returning from this method and no
> > > new command can be initiated until this one is
> > > cancelled or ended.
> > >
> > >
> > > void Respond(string reply)
> > >
> > >
> > > Send a response to the network either when
> > > it is awaiting further input after Initiate()
> > > was called or after a network-initiated request.
> > >
> > >
> > > void Cancel()
> > >
> > >
> > > Cancel an ongoing USSD session, mobile- or
> > > network-initiated.
> > >
> > >
> > > Signals
> > >                 NotificationReceived(string message)
> >
> > I would change this to a read-only "NetworkNotification" property, and
> > then we can use the normal D-Bus properties API to get it, and the
> > MmPropertiesChanged signal to notify when it changes.
> >
> > >
> > > Signal is emitted on a network-initiated USSD
> > > request for which no response is needed.
> > >
> > >
> > > RequestReceived(string message)
> >
> > Same here, I'd suggest a read-only "NetworkRequest" property.
> >
> > Obviously when there is no request from the network, these two
> > properties would be empty strings.
> >
> > Any thoughts on this?
> >
> > Dan
> >
> > >
> > > Signal is emitted on a network-initiated USSD
> > > request for which a response must be sent using
> > > the Respond method unless it is cancelled or
> > > the request is not supported.
> > >
> > >
> > > Properties string State [readonly]
> > >
> > >
> > > Reflects the state of current USSD session.  The
> > > values have the following meanings:
> > >
> > >
> > > "idle" No active USSD session.
> > > "active" A session is active between the
> > > network and the ME, the ME is
> > > waiting for a reply from the
> > > network.
> > > "user-response" The network is waiting for the
> > > user's response, client must
> > > call Respond().
> > >
> > >
> > >
> > >
> > > It is basically a copy of their API (they nailed it down) except for
> > > GetProperties and PropertiesChanged signal which are ConnMan-specific.
> > > I haven't had a use-case yet for the "Respond" command (my USSD
> > > petitions are simple), but it needs to be there indeed for future
> > > uses. Thoughts?
> > >
> > >
> > > [0]
> http://git.kernel.org/?p=network/ofono/ofono.git;a=blob_plain;f=doc/supplementaryservices-api.txt;hb=HEAD
>

Looks good to me, thanks!


>
> > >
> > > --
> > > Pablo Martí
> > > http://www.linkedin.com/in/pmarti || http://www.warp.es
> > > python -c "print '706d6172746940776172702e6573'.decode('hex')"
> > >
> > >
> >
> >
> > _______________________________________________
> > NetworkManager-list mailing list
> > NetworkManager-list@gnome.org
> > http://mail.gnome.org/mailman/listinfo/networkmanager-list
>
>


-- 
Pablo Martí
http://www.linkedin.com/in/pmarti || http://www.warp.es
python -c "print '706d6172746940776172702e6573'.decode('hex')"
_______________________________________________
NetworkManager-list mailing list
NetworkManager-list@gnome.org
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to