doc: Tweak comment on behavior of VoiceCall.Hangup
[platform/upstream/ofono.git] / doc / voicecall-api.txt
index b360cca..2d715be 100644 (file)
@@ -7,21 +7,9 @@ Object path    [variable prefix]/{modem0,modem1,...}/{voicecall01,voicecall02,...}
 
 Methods                dict GetProperties()
 
-                       Returns all global system properties. See the
+                       Returns all properties for this object. See the
                        properties section for available properties.
 
-                       Possible Errors: [service].Error.InvalidArguments
-
-               void Busy()
-
-                       Notifies the incoming or waiting call that the user
-                       is busy. This is done by setting the User Determined
-                       User Busy (UDUB) condition. This method is only valid
-                       if there is an incoming or waiting call.
-
-                       This functionality is generally implemented by using
-                       the +CHLD=0 AT command.
-
                void Deflect(string number)
 
                        Deflects the incoming or waiting call to number given
@@ -35,12 +23,49 @@ Methods             dict GetProperties()
                        This method should not be confused with the Transfer()
                        method.
 
+                       Possible Errors: [service].Error.InProgress
+                                        [service].Error.NotImplemented
+                                        [service].Error.InvalidArguments
+                                        [service].Error.InvalidFormat
+                                        [service].Error.Failed
+
                void Hangup()
 
                        Hangs up the voice call.
 
-                       This functionality is generally implemented by
-                       +CHLD=1X, +CHUP or ATH AT commands.
+                       For an incoming call, the call is hung up using ATH or
+                       equivalent.  For a waiting call, the remote party is
+                       notified by using the User Determined User Busy (UDUB)
+                       condition.  This is generally implemented using CHLD=0.
+
+                       Please note that the GSM specification does not allow
+                       the release of a held call when a waiting call exists.
+                       This is because 27.007 allows CHLD=1X to operate only
+                       on active calls.  Hence a held call cannot be hung up
+                       without affecting the state of the incoming call (e.g.
+                       using other CHLD alternatives). Most manufacturers
+                       provide vendor extensions that do allow the state of
+                       the held call to be modified using CHLD=1X or
+                       equivalent.  It should be noted that Bluetooth HFP
+                       specifies the classic 27.007 behavior and does not
+                       allow CHLD=1X to modify the state of held calls.
+
+                       Based on the discussion above, it should also be noted
+                       that releasing a particular party of a held multiparty
+                       call might not be possible on some implementations.
+                       It is recommended for the applications to structure
+                       their UI accordingly.
+
+                       NOTE: Releasing active calls does not produce
+                       side-effects.  That is the state of held or waiting
+                       calls is not affected.  As an exception, in the case
+                       where a single active call and a waiting call are
+                       present, releasing the active call will result in the
+                       waiting call transitioning to the 'incoming' state.
+
+                       Possible Errors: [service].Error.InProgress
+                                        [service].Error.Failed
+                                        [service].Error.NotImplemented
 
                void Answer()
 
@@ -50,6 +75,10 @@ Methods              dict GetProperties()
                        This functionality is generally implemented by ATA
                        AT command.
 
+                       Possible Errors: [service].Error.InProgress
+                                        [service].Error.Failed
+                                        [service].Error.NotImplemented
+
 Signals                PropertyChanged(string property, variant value)
 
                        Signal is emitted whenever a property has changed.
@@ -60,11 +89,12 @@ Signals             PropertyChanged(string property, variant value)
                        This signal is emitted when the modem manager can
                        provide extra information about why this call was
                        released. The possible reason values are:
-                               "local" - The call was release due to local user action
+                               "local" - The call was release due to local
+                                               user action
                                "remote" - Remote party released the call
-                               "network" - Network released the call, most likely due
-                                               to low signal or other network
-                                               failure
+                               "network" - Network released the call, most
+                                               likely due to low signal or
+                                               other network failure
 
                        Not all implementations are able to provide this
                        information, so applications should treat the emission
@@ -85,6 +115,29 @@ Properties  string LineIdentification [readonly]
                        "override category" option was not provisioned for
                        the current subscriber.
 
+               string IncomingLine [readonly, optional]
+
+                       Contains the Called Line Identification information
+                       returned by the network. This is only available for
+                       incoming calls and indicates the local subscriber
+                       number which was dialed by the remote party. This is
+                       useful for subscribers which have a multiple line
+                       service with their network provider and would like
+                       to know what line the call is coming in on.
+
+               string Name [readonly]
+
+                       Contains the Name Identification information returned
+                       by the network, if present.
+
+               boolean Multiparty [readonly]
+
+                       Contains the indication if the voice call is part
+                       of a multiparty call or not.
+
+                       Notifications if a call becomes part or leaves a
+                       multipart call are sent.
+
                string State [readonly]
 
                        Contains the state of the current call.  The state
@@ -104,3 +157,29 @@ Properties string LineIdentification [readonly]
                        stamped when the call enters the "active" state.
                        Client applications can use this to infer somewhat
                        reliable call duration information.
+
+               string Information [readonly, optional]
+
+                       Contains information related to the call for the
+                       user.  Currently this property is set for calls
+                       initiated by SIM Toolkit applications.
+
+               byte Icon [readonly, optional]
+
+                       Icon identifier to be used instead of or together
+                       with the text information.
+
+               boolean Emergency [readonly]
+
+                       Contains the indication if the voice call is an
+                       emergency call or not.
+
+               boolean RemoteHeld [experimental]
+
+                       Contains the indication whether the voice call is put
+                       on hold by the remote party or not.
+
+               boolean RemoteMultiparty [experimental]
+
+                       Contains the indication whether the voice call is
+                       joined in a multiparty call by the remote party or not.