@@ -388,6 +388,7 @@ man_MANS += doc/org.bluez.obex.Client.5 doc/org.bluez.obex.Session.5 \
doc/org.bluez.obex.Message.5 \
doc/org.bluez.obex.AgentManager.5 doc/org.bluez.obex.Agent.5 \
doc/org.bluez.obex.Image.5
+man_MANS += doc/org.bluez.TelephonyAg.5 doc/org.bluez.TelephonyCall.5
endif
manual_pages += src/bluetoothd.8
manual_pages += doc/hci.7 doc/mgmt.7 doc/l2cap.7 doc/rfcomm.7 doc/sco.7
@@ -422,6 +423,7 @@ manual_pages += doc/org.bluez.obex.Client.5 doc/org.bluez.obex.Session.5 \
doc/org.bluez.obex.Message.5 \
doc/org.bluez.obex.AgentManager.5 doc/org.bluez.obex.Agent.5 \
doc/org.bluez.obex.Image.5
+manual_pages += doc/org.bluez.TelephonyAg.5 doc/org.bluez.TelephonyCall.5
EXTRA_DIST += src/genbuiltin src/bluetooth.conf \
src/main.conf profiles/network/network.conf \
@@ -506,6 +508,8 @@ EXTRA_DIST += doc/org.bluez.obex.Client.rst doc/org.bluez.obex.Session.rst \
doc/org.bluez.obex.AgentManager.rst doc/org.bluez.obex.Agent.rst \
doc/org.bluez.obex.Image.rst
+EXTRA_DIST += doc/org.bluez.TelephonyAg.rst doc/org.bluez.TelephonyCall.rst
+
EXTRA_DIST += doc/pics-opp.txt doc/pixit-opp.txt \
doc/pts-opp.txt
new file mode 100644
@@ -0,0 +1,200 @@
+======================
+org.bluez.TelephonyAg1
+======================
+
+-----------------------------------------------------
+BlueZ D-Bus Telephony Audio Gateway API documentation
+-----------------------------------------------------
+
+:Version: BlueZ
+:Date: May 2025
+:Manual section: 5
+:Manual group: Linux System Administration
+
+Interface
+=========
+
+:Service: org.bluez
+:Interface: org.bluez.TelephonyAg1
+:Object path: [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/{ccp,hfp,hsp}
+
+Methods
+-------
+
+object Dial(string number)
+``````````````````````````
+
+ Call number, if number is void try to call last dialed number.
+ Initiates a new outgoing call. Returns the object path to the newly
+ created call.
+
+ The number must be a string containing the following characters:
+ `[0-9+*#,ABCD]{1,80}` The character set can contain numbers, `+`, `*`,
+ `#`, `,` and the letters `A` to `D`. Besides this sanity checking no
+ further number validation is performed. It is assumed that the gateway
+ and/or the network will perform further validation.
+
+ If number is an empty string, it will try to call last dialed number.
+
+ NOTE: If an active call (single or multiparty) exists, then it is
+ automatically put on hold if the dial procedure is successful.
+
+ Possible Errors:
+
+ :org.bluez.Error.InvalidState:
+ :org.bluez.Error.InvalidArguments:
+ :org.bluez.Error.NotSupported:
+ :org.bluez.Error.Failed:
+
+void SwapCalls()
+````````````````
+
+ Swaps Active and Held calls. The effect of this is that all calls (0 or
+ more including calls in a multi-party conversation) that were Active
+ are now Held, and all calls (0 or more) that were Held are now Active.
+
+ GSM specification does not allow calls to be swapped in the case where
+ Held, Active and Waiting calls exist. Some modems implement this
+ anyway, thus it is manufacturer specific whether this method will
+ succeed in the case of Held, Active and Waiting calls.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void ReleaseAndAnswer()
+```````````````````````
+
+ Releases currently active call (0 or more) and answers the currently
+ waiting call. Please note that if the current call is a multiparty
+ call, then all parties in the multi-party call will be released.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void ReleaseAndSwap()
+`````````````````````
+
+ Releases currently active call (0 or more) and activates any currently
+ held calls. Please note that if the current call is a multiparty call,
+ then all parties in the multi-party call will be released.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void HoldAndAnswer()
+````````````````````
+
+ Puts the current call (including multi-party calls) on hold and answers
+ the currently waiting call. Calling this function when a user already
+ has a both Active and Held calls is invalid, since in GSM a user can
+ have only a single Held call at a time.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void HangupAll()
+````````````````
+
+ Releases all calls except waiting calls. This includes multiparty
+ calls.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void HangupActive()
+```````````````````
+
+ Releases active calls. This includes multiparty active calls.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void HangupHeld()
+`````````````````
+
+ Releases held calls except waiting calls. This includes multiparty
+ held calls.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+array{object} CreateMultiparty()
+````````````````````````````````
+
+ Joins active and held calls together into a multi-party call. If one of
+ the calls is already a multi-party call, then the other call is added
+ to the multiparty conversation. Returns the new list of calls
+ participating in the multiparty call.
+
+ There can only be one subscriber controlled multi-party call according
+ to the GSM specification.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void SendTones(string tones)
+````````````````````````````
+
+ Sends the DTMF tones to the network. The tones have a fixed duration.
+ Tones can be one of: '0' - '9', '*', '#', 'A', 'B', 'C', 'D'. The last
+ four are typically not used in normal circumstances.
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.InvalidArgs
+ :org.bluez.Error.Failed
+
+Properties
+----------
+
+string State [readonly]
+```````````````````````
+
+ Contains the state of the current connection.
+
+ Possible values:
+
+ :"connecting":
+
+ RFComm connection in progress
+
+ :"slc_connecting":
+
+ Service Level Connection in progress
+
+ :"connected":
+
+ RFComm and Service Level Connection are connected
+
+ :"disconnecting":
+
+ No further use of this object is allowed, it will be destroyed
+ shortly
+
+boolean Service [readonly]
+``````````````````````````
+
+ Network service availability.
+
+byte Signal [readonly]
+``````````````````````
+
+ Network level signal from 0 to 5.
+
+boolean Roaming [readonly]
+``````````````````````````
+
+ Network roaming usage.
+
+byte BattChg [readonly]
+```````````````````````
+
+ Battery level from 0 to 5.
new file mode 100644
@@ -0,0 +1,144 @@
+========================
+org.bluez.TelephonyCall1
+========================
+
+--------------------------------------------
+BlueZ D-Bus Telephony Call API documentation
+--------------------------------------------
+
+:Version: BlueZ
+:Date: May 2025
+:Manual section: 5
+:Manual group: Linux System Administration
+
+Interface
+=========
+
+:Service: org.bluez
+:Interface: org.bluez.TelephonyCall1
+:Object path: [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/{ccp,hfp,hsp}/callX
+
+Methods
+-------
+
+void Answer()
+`````````````
+
+ Answers an incoming call. Only valid if the state of the call is
+ "incoming".
+
+ Possible Errors:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+void Hangup()
+`````````````
+
+ Hangs up the call.
+
+ 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:
+ :org.bluez.Error.InvalidState
+ :org.bluez.Error.Failed
+
+Properties
+----------
+
+string LineIdentification [readonly]
+````````````````````````````````````
+
+ Contains the Line Identification information returned by the network,
+ if present. For incoming calls this is effectively the CLIP. For
+ outgoing calls this attribute will hold the dialed number, or the COLP
+ if received by the audio gateway.
+
+ Please note that COLP may be different from the dialed number. A
+ special "withheld" value means the remote party refused to provide
+ caller ID and the "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 call is part of a multiparty call or
+ not.
+
+ Notifications if a call becomes part or leaves a multiparty call are
+ sent.
+
+string State [readonly]
+```````````````````````
+
+ Contains the state of the current call.
+
+ Possible values:
+
+ :"active":
+
+ The call is active
+
+ :"held":
+
+ The call is on hold
+
+ :"dialing":
+
+ The call is being dialed
+
+ :"alerting":
+
+ The remote party is being alerted
+
+ :"incoming":
+
+ Incoming call in progress
+
+ :"waiting":
+
+ Call is waiting
+
+ :"disconnected":
+
+ No further use of this object is allowed, it will be
+ destroyed shortly