From cb9232b3ab413fae7bcc2b94abd70f18ca02b263 Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期二, 03 十二月 2024 11:20:32 +0800
Subject: [PATCH] 增加铃声;增加TCP/UDP连接选择

---
 Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/linphone.framework/Headers/types.h |  703 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 367 insertions(+), 336 deletions(-)

diff --git a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/linphone.framework/Headers/types.h b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/linphone.framework/Headers/types.h
old mode 100644
new mode 100755
index 5b62a90..7c415da
--- a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/linphone.framework/Headers/types.h
+++ b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/linphone.framework/Headers/types.h
@@ -29,27 +29,50 @@
 // For migration purpose.
 #include "linphone/api/c-types.h"
 
+// -----------------------------------------------------------------------------
+// Account creator.
+// -----------------------------------------------------------------------------
+
 /**
- * The #LinphoneAccountCreator object used to configure an account on a server via XML-RPC.
+ * @brief Represents an account configuration to be used by #LinphoneCore.
+ * 
+ * In addition to the #LinphoneAuthInfo that stores the credentials, 
+ * you need to configure a #LinphoneProxyConfig as well to be able to connect to a proxy server.
+ * 
+ * A minimal proxy config consists of an identity address (sip:username@domain.tld) 
+ * and the proxy server address, @see linphone_proxy_config_set_server_addr().
+ * 
+ * If any, it will be stored inside the default configuration file, so it will survive the destruction
+ * of the #LinphoneCore and be available at the next start.
+ *
+ * The account set with linphone_core_set_default_proxy_config() will be used as default 
+ * for outgoing calls & chat messages unless specified otherwise.
+ * @ingroup proxies
+**/
+typedef struct _LinphoneProxyConfig LinphoneProxyConfig;
+
+/**
+ * @brief The object used to configure an account on a server via XML-RPC, 
+ * see @link https://wiki.linphone.org/xwiki/wiki/public/view/Lib/Features/Override%20account%20creator%20request/
  * @ingroup account_creator
 **/
 typedef struct _LinphoneAccountCreator LinphoneAccountCreator;
 
 /**
- * An object to define a #LinphoneAccountCreator service.
+ * @brief An object to define a LinphoneAccountCreator service.
  * @ingroup account_creator
  * @donotwrap
 **/
 typedef struct _LinphoneAccountCreatorService LinphoneAccountCreatorService;
 
 /**
- * An object to handle the responses callbacks for handling the #LinphoneAccountCreator operations.
+ * @brief An object to handle the responses callbacks for handling the #LinphoneAccountCreator operations.
  * @ingroup account_creator
 **/
 typedef struct _LinphoneAccountCreatorCbs LinphoneAccountCreatorCbs;
 
 /**
- * Enum describing Phone number checking.
+ * @brief Enum describing phone number checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorPhoneNumberStatus {
@@ -61,13 +84,13 @@
 } LinphoneAccountCreatorPhoneNumberStatus;
 
 /**
- * A mask of #LinphoneAccountCreatorPhoneNumberStatus values
+ * @brief A mask of #LinphoneAccountCreatorPhoneNumberStatus values.
  * @ingroup account_creator
  */
 typedef unsigned int LinphoneAccountCreatorPhoneNumberStatusMask;
 
 /**
- * Enum describing Username checking.
+ * @brief Enum describing username checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorUsernameStatus {
@@ -79,7 +102,7 @@
 } LinphoneAccountCreatorUsernameStatus;
 
 /**
- * Enum describing Email checking.
+ * @brief Enum describing email checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorEmailStatus {
@@ -89,7 +112,7 @@
 } LinphoneAccountCreatorEmailStatus;
 
 /**
- * Enum describing Password checking.
+ * @brief Enum describing password checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorPasswordStatus {
@@ -101,16 +124,15 @@
 } LinphoneAccountCreatorPasswordStatus;
 
 /**
- * Enum describing language checking.
+ * @brief Enum describing language checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorLanguageStatus {
 	LinphoneAccountCreatorLanguageStatusOk /**< Language ok */
 } LinphoneAccountCreatorLanguageStatus;
 
-
 /**
- * Enum algorithm checking.
+ * @brief Enum describing algorithm checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
  **/
 typedef enum _LinphoneAccountCreatorAlgoStatus {
@@ -119,7 +141,7 @@
 } LinphoneAccountCreatorAlgoStatus;
 
 /**
- * Enum describing Activation code checking.
+ * @brief Enum describing activation code checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorActivationCodeStatus {
@@ -130,7 +152,7 @@
 } LinphoneAccountCreatorActivationCodeStatus;
 
 /**
- * Enum describing Domain checking
+ * @brief Enum describing domain checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorDomainStatus {
@@ -139,7 +161,7 @@
 } LinphoneAccountCreatorDomainStatus;
 
 /**
- * Enum describing Transport checking
+ * @brief Enum describing transport checking, used by the #LinphoneAccountCreator.
  * @ingroup account_creator
 **/
 typedef enum _LinphoneAccountCreatorTransportStatus {
@@ -148,7 +170,7 @@
 } LinphoneAccountCreatorTransportStatus;
 
 /**
- * Enum describing the status of server request.
+ * @brief Enum describing the status of server request, used by the #LinphoneAccountCreator.
  * @ingroup account_creator_request
 **/
 typedef enum _LinphoneAccountCreatorStatus {
@@ -183,81 +205,16 @@
 	LinphoneAccountCreatorStatusPhoneNumberInvalid, /**< Error cannot send SMS */
 	LinphoneAccountCreatorStatusWrongActivationCode, /**< Error key doesn't match */
 	LinphoneAccountCreatorStatusPhoneNumberOverused, /**< Error too many SMS sent */
-	LinphoneAccountCreatorStatusAlgoNotSupported, /** < Error algo isn't MD5 or SHA-256 */
+	LinphoneAccountCreatorStatusAlgoNotSupported, /**< Error algo isn't MD5 or SHA-256 */
+	LinphoneAccountCreatorStatusUnexpectedError, /**< Generic error */
 } LinphoneAccountCreatorStatus;
 
-/**
- * Enum describing Ip family.
- * @ingroup initializing
-**/
-typedef enum _LinphoneAddressFamily {
-	LinphoneAddressFamilyInet, /**< IpV4 */
-	LinphoneAddressFamilyInet6, /**< IpV6 */
-	LinphoneAddressFamilyUnspec, /**< Unknown */
-} LinphoneAddressFamily;
+// -----------------------------------------------------------------------------
+// Call.
+// -----------------------------------------------------------------------------
 
 /**
- * Enum describing type of audio route.
- * @ingroup call_control
-**/
-typedef enum _LinphoneAudioRoute {
-	LinphoneAudioRouteEarpiece,
-	LinphoneAudioRouteSpeaker
-} LinphoneAudioRoute;
-
-/**
- * Object holding authentication information.
- *
- * @note The object's fields should not be accessed directly. Prefer using
- * the accessor methods.
- *
- * In most case, authentication information consists of a username and password.
- * Sometimes, a userid is required by proxy, and realm can be useful to discriminate
- * different SIP domains.
- *
- * Once created and filled, a #LinphoneAuthInfo must be added to the #LinphoneCore in
- * order to become known and used automatically when needed.
- * Use linphone_core_add_auth_info() for that purpose.
- *
- * The #LinphoneCore object can take the initiative to request authentication information
- * when needed to the application through the auth_info_requested callback of the
- * #LinphoneCoreVTable structure.
- *
- * The application can respond to this information request later using
- * linphone_core_add_auth_info(). This will unblock all pending authentication
- * transactions and retry them with authentication headers.
- *
- * @ingroup authentication
-**/
-typedef struct _LinphoneAuthInfo LinphoneAuthInfo;
-
-/**
- * Enum describing the authentication methods
- * @ingroup network_parameters
-**/
-typedef enum _LinphoneAuthMethod {
-	LinphoneAuthHttpDigest, /**< Digest authentication requested */
-	LinphoneAuthTls, /**< Client certificate requested */
-} LinphoneAuthMethod;
-
-/**
- * Enum describing RTP AVPF activation modes.
- * @ingroup media_parameters
-**/
-typedef enum _LinphoneAVPFMode {
-	LinphoneAVPFDefault = -1, /**< Use default value defined at upper level */
-	LinphoneAVPFDisabled, /**< AVPF is disabled */
-	LinphoneAVPFEnabled /**< AVPF is enabled */
-} LinphoneAVPFMode;
-
-/**
- * The #LinphoneContent object representing a data buffer.
- * @ingroup misc
-**/
-typedef struct _LinphoneBuffer LinphoneBuffer;
-
-/**
- * Enum representing the direction of a call.
+ * @brief Enum representing the direction of a call.
  * @ingroup call_logs
 **/
 typedef enum _LinphoneCallDir {
@@ -266,76 +223,112 @@
 } LinphoneCallDir;
 
 /**
- * Structure representing a call log.
- * @ingroup call_logs
-**/
-typedef struct _LinphoneCallLog LinphoneCallLog;
-
-/**
- * The #LinphoneCallParams is an object containing various call related parameters.
- * It can be used to retrieve parameters from a currently running call or modify
- * the call's characteristics dynamically.
- * @ingroup call_control
-**/
-typedef struct _LinphoneCallParams LinphoneCallParams;
-
-/**
- * The #LinphoneCallStats objects carries various statistic informations regarding quality of audio or video streams.
+ * @brief This object carry various statistic informations regarding the quality of an audio or video stream for a given #LinphoneCall.
  *
- * To receive these informations periodically and as soon as they are computed, the application is invited to place a #LinphoneCoreCallStatsUpdatedCb callback in the #LinphoneCoreVTable structure
- * it passes for instanciating the #LinphoneCore object (see linphone_core_new() ).
+ * To receive these informations periodically and as soon as they are computed, 
+ * implement the call_stats_updated() callback inside a #LinphoneCoreCbs.
  *
- * At any time, the application can access last computed statistics using linphone_call_get_audio_stats() or linphone_call_get_video_stats().
+ * At any time, the application can access latest computed statistics using linphone_call_get_audio_stats() and linphone_call_get_video_stats().
  * @ingroup call_misc
 **/
 typedef struct _LinphoneCallStats LinphoneCallStats;
 
 /**
- * Enum representing the status of a call
+ * @brief Enum representing the status of a call.
  * @ingroup call_logs
 **/
 typedef enum _LinphoneCallStatus {
 	LinphoneCallSuccess, /**< The call was sucessful */
-	LinphoneCallAborted, /**< The call was aborted */
-	LinphoneCallMissed, /**< The call was missed (unanswered) */
+	LinphoneCallAborted, /**< The call was aborted (caller hanged up) */
+	LinphoneCallMissed, /**< The call was missed (incoming call timed out without being answered or hanged up) */
 	LinphoneCallDeclined, /**< The call was declined, either locally or by remote end */
 	LinphoneCallEarlyAborted, /**<The call was aborted before being advertised to the application - for protocol reasons*/
 	LinphoneCallAcceptedElsewhere, /**<The call was answered on another device*/
 	LinphoneCallDeclinedElsewhere /**<The call was declined on another device*/
 } LinphoneCallStatus;
 
-/**
- * #LinphoneConference class
- * The _LinphoneConference struct does not exists, it's the Conference C++ class that is used behind
- * @ingroup call_control
- */
-typedef struct _LinphoneConference LinphoneConference;
+// -----------------------------------------------------------------------------
+// Friends.
+// -----------------------------------------------------------------------------
 
 /**
- * Parameters for initialization of conferences
- * The _LinphoneConferenceParams struct does not exists, it's the ConferenceParams C++ class that is used behind
- * @ingroup call_control
+ * @brief This object is used to store a SIP address.
+ * 
+ * #LinphoneFriend is mainly used to implement an adressbook feature, and are used as data for the #LinphoneMagicSearch object.
+ * If your proxy supports it, you can also use it to subscribe to presence information.
+ * 
+ * The objects are stored in a #LinphoneFriendList which are in turn stored inside the #LinphoneCore.
+ * They can be stored inside a database if the path to it is configured, otherwise they will be lost after the #LinphoneCore is destroyed.
+ * 
+ * Thanks to the vCard plugin, you can also store more information like phone numbers, organization, etc...
+ * @ingroup buddy_list
  */
-typedef struct _LinphoneConferenceParams LinphoneConferenceParams;
+typedef struct _LinphoneFriend LinphoneFriend;
 
 /**
- * The #LinphoneConfig object is used to manipulate a configuration file.
+* @brief Enum describing the capabilities of a #LinphoneFriend, populated through presence subscribe/notify process.
+* @ingroup buddy_list
+**/
+typedef enum _LinphoneFriendCapability {
+	LinphoneFriendCapabilityNone = 0, /**< No capabilities populated */
+	LinphoneFriendCapabilityGroupChat = 1 << 0, /**< This friend can be invited in a Flexisip backend #LinphoneChatRoom */
+	LinphoneFriendCapabilityLimeX3dh = 1 << 1, /**< This friend can be invited in a Flexisip backend end-to-end encrypted #LinphoneChatRoom */
+	LinphoneFriendCapabilityEphemeralMessages = 1 << 2 /**< This friend is able to delete ephemeral messages once they have expired */
+} LinphoneFriendCapability;
+
+/**
+ * @brief This object representing a list of #LinphoneFriend.
+ * 
+ * You can use it to store contacts locally or synchronize them through CardDAV protocol.
+ * @ingroup buddy_list
+**/
+typedef struct _LinphoneFriendList LinphoneFriendList;
+
+/**
+ * @brief An object to handle the callbacks for #LinphoneFriend synchronization.
+ * @ingroup buddy_list
+**/
+typedef struct _LinphoneFriendListCbs LinphoneFriendListCbs;
+
+/**
+* @brief Enum describing the status of a LinphoneFriendList operation.
+* @ingroup buddy_list
+**/
+typedef enum _LinphoneFriendListStatus {
+	LinphoneFriendListOK, /**< Operation went fine */
+	LinphoneFriendListNonExistentFriend, /**< #LinphoneFriend wasn't found in the #LinphoneFriendList */
+	LinphoneFriendListInvalidFriend /**< #LinphoneFriend is already present in a #LinphoneFriendList */
+} LinphoneFriendListStatus;
+
+/**
+ * @brief Enum describing the status of a CardDAV synchronization.
+ * @ingroup buddy_list
+ */
+typedef enum _LinphoneFriendListSyncStatus {
+	LinphoneFriendListSyncStarted, /**< Synchronization started */
+	LinphoneFriendListSyncSuccessful, /**< Synchronization finished successfuly */
+	LinphoneFriendListSyncFailure /**< Synchronization failed */
+} LinphoneFriendListSyncStatus;
+
+// -----------------------------------------------------------------------------
+// Core.
+// -----------------------------------------------------------------------------
+
+/**
+ * @brief This object is used to manipulate a configuration file.
  *
  * The format of the configuration file is a .ini like format:
  * - sections are defined in []
- * - each section contains a sequence of key=value pairs.
- *
- * Example:
- * @code
- * [sound]
- * echocanceler=1
- * playback_dev=ALSA: Default device
- *
- * [video]
- * enabled=1
- * @endcode
- *
- * @ingroup misc
+ * - each section contains a sequence of key=value pairs
+ * - each line starting by a # is a comment
+ * 
+ * Various types can be used: strings and lists of strings, integers, floats, booleans (written as 0 or 1) and range of integers.
+ * 
+ * Usually a #LinphoneCore is initialized using two #LinphoneConfig, one default (where configuration changes through API calls will be saved)
+ * and one named 'factory' which is read-only and overwrites any setting that may exists in the default one.
+ * 
+ * It is also possible to use only one (either default or factory) or even none.
+ * @ingroup initializing
 **/
 typedef struct _LpConfig LinphoneConfig;
 
@@ -345,8 +338,9 @@
 #define LpConfig LinphoneConfig
 
 /**
- * #LinphoneGlobalState describes the global state of the #LinphoneCore object.
- * It is notified via the LinphoneCoreVTable::global_state_changed
+ * @brief Describes the state of the remote configuring process of the #LinphoneCore object, 'Skipped' when the feature is disabled.
+ * 
+ * It is notified via the configuring_status() callback in #LinphoneCoreCbs.
  * @ingroup initializing
 **/
 typedef enum _LinphoneConfiguringState {
@@ -354,6 +348,159 @@
 	LinphoneConfiguringFailed,
 	LinphoneConfiguringSkipped
 } LinphoneConfiguringState;
+
+/**
+ * @brief Describes the global state of the #LinphoneCore object.
+ * 
+ * It is notified via the global_state_changed() callback in #LinphoneCoreCbs.
+ * @ingroup initializing
+**/
+typedef enum _LinphoneGlobalState {
+	/** State in which we're in after linphone_core_stop(). Do not call any method while in this state except for linphone_core_start() */
+	LinphoneGlobalOff,
+	/** Transient state for when we call linphone_core_start() */
+	LinphoneGlobalStartup,
+	/** Indicates #LinphoneCore has been started and is up and running */
+	LinphoneGlobalOn,
+	/** Transient state for when we call linphone_core_stop() */
+	LinphoneGlobalShutdown,
+	/** Transient state between Startup and On if there is a remote provisionning URI configured */
+	LinphoneGlobalConfiguring,
+	/** #LinphoneCore state after being created by linphone_factory_create_core(), generally followed by a call to linphone_core_start() */
+	LinphoneGlobalReady
+} LinphoneGlobalState;
+
+/**
+ * @brief Describes proxy registration states.
+ * 
+ * It is notified via the registration_state_changed() callback in #LinphoneCoreCbs.
+ * @ingroup proxies
+**/
+typedef enum _LinphoneRegistrationState {
+	LinphoneRegistrationNone, /**< Initial state for registrations */
+	LinphoneRegistrationProgress, /**< Registration is in progress */
+	LinphoneRegistrationOk,	/**< Registration is successful */
+	LinphoneRegistrationCleared, /**< Unregistration succeeded */
+	LinphoneRegistrationFailed	/**< Registration failed */
+} LinphoneRegistrationState;
+
+/**
+ * @brief Main object to instanciate and on which to keep a reference.
+ * 
+ * This object is the first object to instanciante, and will allow you to perform all kind of tasks.
+ * To create it, use either linphone_factory_create_core_3() or linphone_factory_create_core_with_config_3(),
+ * see #LinphoneConfig for more information about factory and default config.
+ * On some platforms like Android or iOS you will need to give it the Context of your application.
+ * 
+ * Once the #LinphoneCore is in state #LinphoneGlobalReady, use linphone_core_start(). 
+ * It will then go to state #LinphoneGlobalOn and from that you can start using it for calls and chat messages.
+ * It is recommended to add a #LinphoneCoreCbs listener using linphone_core_add_listener() to it to monitor different events.
+ * 
+ * To be able to receive events from the network, you must schedule a call linphone_core_iterate() often, like every 20ms.
+ * On Android & iOS linphone_core_is_auto_iterate_enabled() is enabled by default so you don't have to worry about that unless you disable it
+ * using linphone_core_set_auto_iterate_enabled() or by setting in the [misc] section of your configuration auto_iterate=0.
+ * @warning Our API isn't thread-safe but also isn't blocking, so it is strongly recommend to always call our methods from the main thread.
+ * 
+ * Once you don't need it anymore, call linphone_core_stop() and release the reference on it so it can gracefully shutdown.
+ * @ingroup initializing
+ */
+typedef struct _LinphoneCore LinphoneCore;
+
+/**
+ * @brief The factory is a singleton object devoted to the creation of all the objects
+ * of Liblinphone that cannot be created by #LinphoneCore itself.
+ * 
+ * It is also used to configure a few behaviors before creating the #LinphoneCore, like the logs verbosity or collection.
+ * @ingroup initializing
+ */
+typedef struct _LinphoneFactory LinphoneFactory;
+
+/**
+ * @brief That class holds all the callbacks which are called by #LinphoneCore.
+ *
+ * Once created, add your #LinphoneCoreCbs using linphone_core_add_listener().
+ * Keep a reference on it as long as you need it. 
+ * You can use linphone_core_remove_listener() to remove it but that isn't mandatory.
+ * 
+ * The same applies to all listeners in our API.
+ * @ingroup initializing
+ */
+typedef struct _LinphoneCoreCbs LinphoneCoreCbs;
+
+// -----------------------------------------------------------------------------
+// Misc.
+// -----------------------------------------------------------------------------
+
+/**
+ * @brief SIP transports & ports configuration object.
+ * 
+ * Indicates which transport among UDP, TCP, TLS and DTLS should be enabled and if so on which port to listen.
+ * You can use special values like #LC_SIP_TRANSPORT_DISABLED (0), #LC_SIP_TRANSPORT_RANDOM (-1) and #LC_SIP_TRANSPORT_DONTBIND (-2).
+ * 
+ * Once configuration is complete, use linphone_core_set_transports() to apply it.
+ * This will be saved in configuration file so you don't have to do it each time the #LinphoneCore starts.
+ * @ingroup initializing
+ */
+typedef struct _LinphoneTransports LinphoneTransports;
+
+/**
+ * @brief Object describing policy regarding video streams establishments.
+ * 
+ * Use linphone_video_activation_policy_set_automatically_accept() and linphone_video_activation_policy_set_automatically_initiate()
+ * to tell the Core to automatically accept or initiate video during calls.
+ * 
+ * Even if disabled, you'll still be able to add it later while the call is running.
+ * @ingroup media_parameters
+**/
+typedef struct _LinphoneVideoActivationPolicy LinphoneVideoActivationPolicy;
+
+/**
+ * @brief This object represents a video definition, eg. it's width, it's height and possibly it's name.
+ * 
+ * It is mostly used to configure the default video size sent by your camera during a video call with
+ * linphone_core_set_preferred_video_definition() method.
+ * @ingroup media_parameters
+ */
+typedef struct _LinphoneVideoDefinition LinphoneVideoDefinition;
+
+// -----------------------------------------------------------------------------
+// Other.
+// -----------------------------------------------------------------------------
+
+/**
+ * @brief Enum describing Ip family.
+ * @ingroup initializing
+**/
+typedef enum _LinphoneAddressFamily {
+	LinphoneAddressFamilyInet, /**< IpV4 */
+	LinphoneAddressFamilyInet6, /**< IpV6 */
+	LinphoneAddressFamilyUnspec, /**< Unknown */
+} LinphoneAddressFamily;
+
+/**
+ * @brief Enum describing the authentication methods.
+ * @ingroup network_parameters
+**/
+typedef enum _LinphoneAuthMethod {
+	LinphoneAuthHttpDigest, /**< Digest authentication requested */
+	LinphoneAuthTls, /**< Client certificate requested */
+} LinphoneAuthMethod;
+
+/**
+ * @brief Enum describing RTP AVPF activation modes.
+ * @ingroup media_parameters
+**/
+typedef enum _LinphoneAVPFMode {
+	LinphoneAVPFDefault = -1, /**< Use default value defined at upper level */
+	LinphoneAVPFDisabled, /**< AVPF is disabled */
+	LinphoneAVPFEnabled /**< AVPF is enabled */
+} LinphoneAVPFMode;
+
+/**
+ * @brief The object representing a data buffer.
+ * @ingroup misc
+**/
+typedef struct _LinphoneBuffer LinphoneBuffer;
 
 /**
  * Consolidated presence information: 'online' means the user is open for communication,
@@ -377,33 +524,15 @@
 
 /**
  * Old name of #LinphoneContactSearchID
- * @deprecated
+ * @deprecated 03/02/2017
  * @donotwrap
  */
 LINPHONE_DEPRECATED typedef LinphoneContactSearchID ContactSearchID;
 
-/**
- * Linphone core main object created by function linphone_core_new() .
- * @ingroup initializing
- */
-typedef struct _LinphoneCore LinphoneCore;
-
-/**
- * That class holds all the callbacks which are called by #LinphoneCore.
- *
- * Use linphone_factory_create_core_cbs() to create an instance. Then, call the
- * callback setters on the events you need to monitor and pass the object to
- * a #LinphoneCore instance through linphone_core_add_callbacks().
- *
- * That class is inherited from belle_sip_object_t.
- * @ingroup initializing
- */
-typedef struct _LinphoneCoreCbs LinphoneCoreCbs;
-
 typedef struct belle_sip_dict LinphoneDictionary;
 
 /**
- * Enum describing the result of the echo canceller calibration process.
+ * @brief Enum describing the result of the echo canceller calibration process.
  * @ingroup media_parameters
 **/
 typedef enum _LinphoneEcCalibratorStatus {
@@ -414,7 +543,8 @@
 } LinphoneEcCalibratorStatus;
 
 /**
- * Object representing full details about a signaling error or status.
+ * @brief Object representing full details about a signaling error or status.
+ * 
  * All #LinphoneErrorInfo object returned by the liblinphone API are readonly and transcients. For safety they must be used immediately
  * after obtaining them. Any other function call to the liblinphone may change their content or invalidate the pointer.
  * @ingroup misc
@@ -422,7 +552,8 @@
 typedef struct _LinphoneErrorInfo LinphoneErrorInfo;
 
 /**
- * Object representing an event state, which is subcribed or published.
+ * @brief Object representing an event state, which is subcribed or published.
+ * 
  * @see linphone_core_publish()
  * @see linphone_core_subscribe()
  * @ingroup event_api
@@ -430,22 +561,15 @@
 typedef struct _LinphoneEvent LinphoneEvent;
 
 /**
- * An object to handle the callbacks for handling the LinphoneEvent operations.
+ * @brief An object to handle the callbacks for handling the LinphoneEvent operations.
  * @ingroup event_api
 **/
 typedef struct _LinphoneEventCbs LinphoneEventCbs;
 
 /**
- * #LinphoneFactory is a singleton object devoted to the creation of all the object
- * of Liblinphone that cannot be created by #LinphoneCore itself.
- * @ingroup initializing
- */
-typedef struct _LinphoneFactory LinphoneFactory;
-
-/**
- * Policy to use to pass through firewalls.
+ * @brief Policy to use to pass through firewalls.
  * @ingroup network_parameters
- * @deprecated Use #LinphoneNatPolicy instead.
+ * @deprecated 03/02/2017 Use #LinphoneNatPolicy instead.
  * @donotwrap
 **/
 typedef enum _LinphoneFirewallPolicy {
@@ -457,75 +581,7 @@
 } LinphoneFirewallPolicy;
 
 /**
- * Represents a buddy, all presence actions like subscription and status change notification are performed on this object
- * @ingroup buddy_list
- */
-typedef struct _LinphoneFriend LinphoneFriend;
-
-/**
-* Enum describing the status of a LinphoneFriendList operation.
-* @ingroup buddy_list
-**/
-typedef enum _LinphoneFriendCapability {
-	LinphoneFriendCapabilityNone = 0,
-	LinphoneFriendCapabilityGroupChat = 1 << 0,
-	LinphoneFriendCapabilityLimeX3dh = 1 << 1
-} LinphoneFriendCapability;
-
-/**
- * The #LinphoneFriendList object representing a list of friends.
- * @ingroup buddy_list
-**/
-typedef struct _LinphoneFriendList LinphoneFriendList;
-
-/**
- * An object to handle the callbacks for #LinphoneFriend synchronization.
- * @ingroup buddy_list
-**/
-typedef struct _LinphoneFriendListCbs LinphoneFriendListCbs;
-
-/**
-* Enum describing the status of a LinphoneFriendList operation.
-* @ingroup buddy_list
-**/
-typedef enum _LinphoneFriendListStatus {
-	LinphoneFriendListOK,
-	LinphoneFriendListNonExistentFriend,
-	LinphoneFriendListInvalidFriend
-} LinphoneFriendListStatus;
-
-/**
- * Enum describing the status of a CardDAV synchronization
- * @ingroup buddy_list
- */
-typedef enum _LinphoneFriendListSyncStatus {
-	LinphoneFriendListSyncStarted,
-	LinphoneFriendListSyncSuccessful,
-	LinphoneFriendListSyncFailure
-} LinphoneFriendListSyncStatus;
-
-/**
- * #LinphoneGlobalState describes the global state of the #LinphoneCore object.
- * It is notified via the LinphoneCoreVTable::global_state_changed
- * @ingroup initializing
-**/
-typedef enum _LinphoneGlobalState {
-	/** State in which we're in after linphone_core_stop(). Do not call any method while in this state except for linphone_core_start() */
-	LinphoneGlobalOff,
-	/** Transient state for when we call linphone_core_start() */
-	LinphoneGlobalStartup,
-	/** Indicates #LinphoneCore has been started and is up and running */
-	LinphoneGlobalOn,
-	/** Transient state for when we call linphone_core_stop() */
-	LinphoneGlobalShutdown,
-	/** Transient state between Startup and On if there is a remote provisionning URI configured */
-	LinphoneGlobalConfiguring,
-	/** #LinphoneCore state after being created by linphone_factory_create_core(), generally followed by a call to linphone_core_start() */
-	LinphoneGlobalReady
-} LinphoneGlobalState;
-
-/**
- * Enum describing ICE states.
+ * @brief Enum describing ICE states.
  * @ingroup initializing
 **/
 typedef enum _LinphoneIceState {
@@ -538,28 +594,31 @@
 } LinphoneIceState;
 
 /**
- * IM encryption engine.
+ * @brief IM encryption engine.
+ * 
+ * @see https://wiki.linphone.org/xwiki/wiki/public/view/Lib/Features/Instant%20Messaging%20Encryption%20Engine/
  * @ingroup misc
  * @donotwrap
  */
 typedef struct _LinphoneImEncryptionEngine LinphoneImEncryptionEngine;
 
 /**
- * An object to handle the callbacks for the handling a #LinphoneImEncryptionEngine object.
+ * @brief An object to handle the callbacks for the handling a #LinphoneImEncryptionEngine object.
  * @ingroup misc
  * @donotwrap
  */
 typedef struct _LinphoneImEncryptionEngineCbs LinphoneImEncryptionEngineCbs;
 
 /**
- * Policy to use to send/receive instant messaging composing/delivery/display notifications.
+ * @brief Policy to use to send/receive instant messaging composing/delivery/display notifications.
+ * 
  * The sending of this information is done as in the RFCs 3994 (is_composing) and 5438 (imdn delivered/displayed).
  * @ingroup chatroom
  */
 typedef struct _LinphoneImNotifPolicy LinphoneImNotifPolicy;
 
 /**
- * The #LinphoneInfoMessage is an object representing an informational message sent or received by the core.
+ * @brief Object representing an informational message sent or received by the core.
  * @ingroup misc
 **/
 typedef struct _LinphoneInfoMessage LinphoneInfoMessage;
@@ -578,6 +637,17 @@
 } LinphoneLimeState;
 
 /**
+ * @brief Session Timers refresher
+ * @ingroup initializing
+ */
+typedef enum _LinphoneSessionExpiresRefresher {
+  LinphoneSessionExpiresRefresherUnspecified,
+  LinphoneSessionExpiresRefresherUAS,
+  LinphoneSessionExpiresRefresherUAC
+} LinphoneSessionExpiresRefresher;
+
+/**
+ * @brief Whether or not to keep a file with the logs.
  * @ingroup initializing
  */
 typedef enum _LinphoneLogCollectionState {
@@ -587,7 +657,7 @@
 } LinphoneLogCollectionState;
 
 /**
- * #LinphoneCoreLogCollectionUploadState is used to notify if log collection upload have been succesfully delivered or not.
+ * @brief Used to notify if log collection upload have been succesfully delivered or not.
  * @ingroup initializing
  */
 typedef enum _LinphoneCoreLogCollectionUploadState {
@@ -597,7 +667,7 @@
 } LinphoneCoreLogCollectionUploadState;
 
 /**
- * Indicates for a given media the stream direction
+ * @brief Indicates for a given media the stream direction.
  * @ingroup call_control
  */
 typedef enum _LinphoneMediaDirection {
@@ -609,7 +679,16 @@
 } LinphoneMediaDirection;
 
 /**
- * Enum describing type of media encryption types.
+ * @brief Media resource usage.
+ * @ingroup media_parameters
+**/
+typedef enum _LinphoneMediaResourceMode {
+	LinphoneExclusiveMediaResources, /**< Media resources are not shared */
+	LinphoneSharedMediaResources, /**< Media resources are shared */
+} LinphoneMediaResourceMode;
+
+/**
+ * @brief Enum describing type of media encryption types.
  * @ingroup media_parameters
 **/
 typedef enum _LinphoneMediaEncryption {
@@ -620,7 +699,7 @@
 } LinphoneMediaEncryption;
 
 /**
- * Enum describing the ZRTP SAS validation status of a peer URI
+ * @brief Enum describing the ZRTP SAS validation status of a peer URI.
  * @ingroup media_parameters
 **/
 typedef enum _LinphoneZrtpPeerStatus {
@@ -630,14 +709,14 @@
 } LinphoneZrtpPeerStatus;
 
 /**
- * Policy to use to pass through NATs/firewalls.
+ * @brief Policy to use to pass through NATs/firewalls.
  * @ingroup network_parameters
  */
 typedef struct _LinphoneNatPolicy LinphoneNatPolicy;
 
 /**
- * Enum describing remote friend status
- * @deprecated Use #LinphonePresenceModel and #LinphonePresenceActivity instead
+ * @brief Enum describing remote friend status.
+ * @deprecated 03/02/2017 Use #LinphonePresenceModel and #LinphonePresenceActivity instead
  * @donotwrap
  */
 typedef enum _LinphoneOnlineStatus{
@@ -658,19 +737,19 @@
 } LinphoneOnlineStatus;
 
 /**
- * Player interface.
+ * @brief Player interface.
  * @ingroup call_control
 **/
 typedef struct _LinphonePlayer LinphonePlayer;
 
 /**
- * An object to handle the callbacks for the handling a #LinphonePlayer objects.
+ * @brief An object to handle the callbacks for the handling a #LinphonePlayer objects.
  * @ingroup call_control
  */
 typedef struct _LinphonePlayerCbs LinphonePlayerCbs;
 
 /**
- * The state of a LinphonePlayer.
+ * @brief The state of a #LinphonePlayer.
  * @ingroup call_control
  */
 typedef enum LinphonePlayerState {
@@ -680,13 +759,13 @@
 } LinphonePlayerState;
 
 /**
- * Presence activity type holding information about a presence activity.
+ * @brief Presence activity type holding information about a presence activity.
  * @ingroup buddy_list
  */
 typedef struct _LinphonePresenceActivity LinphonePresenceActivity;
 
 /**
- * Activities as defined in section 3.2 of RFC 4480
+ * @brief Activities as defined in section 3.2 of RFC 4480
  * @ingroup buddy_list
  */
 typedef enum LinphonePresenceActivityType {
@@ -782,7 +861,7 @@
 } LinphonePresenceActivityType;
 
 /**
- * Basic status as defined in section 4.1.4 of RFC 3863
+ * @brief Basic status as defined in section 4.1.4 of RFC 3863
  * @ingroup buddy_list
  */
 typedef enum LinphonePresenceBasicStatus {
@@ -794,25 +873,25 @@
 } LinphonePresenceBasicStatus;
 
 /**
- * Presence model type holding information about the presence of a person.
+ * @brief Presence model type holding information about the presence of a person.
  * @ingroup buddy_list
  */
 typedef struct _LinphonePresenceModel LinphonePresenceModel;
 
 /**
- * Presence note type holding information about a presence note.
+ * @brief Presence note type holding information about a presence note.
  * @ingroup buddy_list
  */
 typedef struct _LinphonePresenceNote LinphonePresenceNote;
 
 /**
- * Presence person holding information about a presence person.
+ * @brief Presence person holding information about a presence person.
  * @ingroup buddy_list
  */
 typedef struct _LinphonePresencePerson LinphonePresencePerson;
 
 /**
- * Presence service type holding information about a presence service.
+ * @brief Presence service type holding information about a presence service.
  * @ingroup buddy_list
  */
 typedef struct _LinphonePresenceService LinphonePresenceService;
@@ -868,32 +947,13 @@
 /* WARNING This enum MUST be kept in sync with the SalPrivacy enum from sal.h */
 
 /**
- * A mask of #LinphonePrivacy values
+ * @brief A mask of #LinphonePrivacy values
  * @ingroup call_control
  */
 typedef unsigned int LinphonePrivacyMask;
 
 /**
- * The #LinphoneProxyConfig object represents a proxy configuration to be used
- * by the #LinphoneCore object.
- * Its fields must not be used directly in favour of the accessors methods.
- * Once created and filled properly the #LinphoneProxyConfig can be given to
- * #LinphoneCore with linphone_core_add_proxy_config().
- * This will automatically triggers the registration, if enabled.
- *
- * The proxy configuration are persistent to restarts because they are saved
- * in the configuration file. As a consequence, after linphone_core_new() there
- * might already be a list of configured proxy that can be examined with
- * linphone_core_get_proxy_config_list().
- *
- * The default proxy (see linphone_core_set_default_proxy() ) is the one of the list
- * that is used by default for calls.
- * @ingroup proxies
-**/
-typedef struct _LinphoneProxyConfig LinphoneProxyConfig;
-
-/**
- * Enum for publish states.
+ * @brief Enum for publish states.
  * @ingroup event_api
 **/
 typedef enum _LinphonePublishState{
@@ -906,7 +966,7 @@
 } LinphonePublishState;
 
 /**
- * Enum describing various failure reasons or contextual information for some events.
+ * @brief Enum describing various failure reasons or contextual information for some events.
  * @see linphone_call_get_reason()
  * @see linphone_proxy_config_get_error()
  * @see linphone_error_info_get_reason()
@@ -921,6 +981,7 @@
 	LinphoneReasonNotAnswered, /**< The call was not answered in time (request timeout) */
 	LinphoneReasonBusy, /**< Phone line was busy */
 	LinphoneReasonUnsupportedContent, /**< Unsupported content */
+	LinphoneReasonBadEvent, /**< Bad event */
 	LinphoneReasonIOError, /**< Transport error: connection failures, disconnections etc... */
 	LinphoneReasonDoNotDisturb, /**< Do not disturb reason */
 	LinphoneReasonUnauthorized, /**< Operation is unauthorized because missing credential */
@@ -932,6 +993,7 @@
 	LinphoneReasonAddressIncomplete, /**< Address incomplete */
 	LinphoneReasonNotImplemented, /**< Not implemented */
 	LinphoneReasonBadGateway, /**< Bad gateway */
+	LinphoneReasonSessionIntervalTooSmall, /**< The received request contains a Session-Expires header field with a duration below the minimum timer */
 	LinphoneReasonServerTimeout, /**< Server timeout */
 	LinphoneReasonUnknown /**< Unknown reason */
 } LinphoneReason;
@@ -941,25 +1003,13 @@
 /*for compatibility*/
 #define LinphoneReasonMedia LinphoneReasonUnsupportedContent
 
-/**
- * #LinphoneRegistrationState describes proxy registration states.
- * @ingroup proxies
-**/
-typedef enum _LinphoneRegistrationState {
-	LinphoneRegistrationNone, /**< Initial state for registrations */
-	LinphoneRegistrationProgress, /**< Registration is in progress */
-	LinphoneRegistrationOk,	/**< Registration is successful */
-	LinphoneRegistrationCleared, /**< Unregistration succeeded */
-	LinphoneRegistrationFailed	/**< Registration failed */
-} LinphoneRegistrationState;
-
 typedef struct _LinphoneRingtonePlayer LinphoneRingtonePlayer;
 
 /**
  * Linphone core SIP transport ports.
  * Special values #LC_SIP_TRANSPORT_RANDOM, #LC_SIP_TRANSPORT_RANDOM, #LC_SIP_TRANSPORT_DONTBIND can be used.
- * Use with #linphone_core_set_sip_transports
- * @deprecated
+ * Use with #linphone_core_set_sip_transports()
+ * @deprecated 18/04/2017
  * @donotwrap
  */
 typedef struct _LinphoneSipTransports {
@@ -970,16 +1020,8 @@
 } LinphoneSipTransports;
 
 /**
- * Linphone core SIP transport ports.
- * Special values #LC_SIP_TRANSPORT_RANDOM, #LC_SIP_TRANSPORT_RANDOM, #LC_SIP_TRANSPORT_DONTBIND can be used.
- * Use with #linphone_core_set_sip_transports
- * @ingroup initializing
- */
-typedef struct _LinphoneTransports LinphoneTransports;
-
-/**
  * Old name of #LinphoneSipTransports
- * @deprecated
+ * @deprecated 03/02/2017
  * @donotwrap
  */
 LINPHONE_DEPRECATED typedef struct _LinphoneSipTransports LCSipTransports;
@@ -987,7 +1029,7 @@
 typedef struct _LinphoneSoundDaemon LinphoneSoundDaemon;
 
 /**
- * Enum describing the stream types.
+ * @brief Enum describing the stream types.
  * @ingroup initializing
 **/
 typedef enum _LinphoneStreamType {
@@ -998,7 +1040,7 @@
 } LinphoneStreamType;
 
 /**
- * Enum controlling behavior for incoming subscription request.
+ * @brief Enum controlling behavior for incoming subscription request.
  * Use by linphone_friend_set_inc_subscribe_policy()
  * @ingroup buddy_list
  */
@@ -1013,7 +1055,7 @@
 } LinphoneSubscribePolicy;
 
 /**
- * Enum for subscription direction (incoming or outgoing).
+ * @brief Enum for subscription direction (incoming or outgoing).
  * @ingroup event_api
 **/
 typedef enum _LinphoneSubscriptionDir{
@@ -1023,7 +1065,7 @@
 } LinphoneSubscriptionDir;
 
 /**
- * Enum for subscription states.
+ * @brief Enum for subscription states.
  * #LinphoneSubscriptionTerminated and #LinphoneSubscriptionError are final states.
  * @ingroup event_api
 **/
@@ -1039,7 +1081,7 @@
 } LinphoneSubscriptionState;
 
 /**
- * Enum listing frequent telephony tones.
+ * @brief Enum listing frequent telephony tones.
  * @ingroup misc
 **/
 typedef enum _LinphoneToneID {
@@ -1051,7 +1093,7 @@
 } LinphoneToneID;
 
 /**
- * Enum describing transport type for LinphoneAddress.
+ * @brief Enum describing transport type for LinphoneAddress.
  * @ingroup linphone_address
 **/
 typedef enum _LinphoneTransportType {
@@ -1063,7 +1105,7 @@
 /* WARNING This enum MUST be kept in sync with the SalTransport enum from sal.h */
 
 /**
- * Linphone tunnel object.
+ * @brief Linphone tunnel object.
  * @ingroup tunnel
  */
 typedef struct _LinphoneTunnel LinphoneTunnel;
@@ -1075,7 +1117,7 @@
 typedef struct _LinphoneTunnelConfig LinphoneTunnelConfig;
 
 /**
- * Enum describing the tunnel modes.
+ * @brief Enum describing the tunnel modes.
  * @ingroup tunnel
 **/
 typedef enum _LinphoneTunnelMode {
@@ -1085,7 +1127,7 @@
 } LinphoneTunnelMode;
 
 /**
- * Enum describing uPnP states.
+ * @brief Enum describing uPnP states.
  * @ingroup initializing
 **/
 typedef enum _LinphoneUpnpState {
@@ -1100,13 +1142,13 @@
 } LinphoneUpnpState;
 
 /**
- * The #LinphoneVcard object.
+ * @brief Object storing contact information using vCard 4.0 format.
  * @ingroup carddav_vcard
  */
 typedef struct _LinphoneVcard LinphoneVcard;
 
 /**
- * Enum describing the result of a version update check.
+ * @brief Enum describing the result of a version update check.
  * @ingroup misc
  */
 typedef enum _LinphoneVersionUpdateCheckResult {
@@ -1116,15 +1158,9 @@
 } LinphoneVersionUpdateCheckResult;
 
 /**
- * The #LinphoneVideoDefinition object represents a video definition, eg. its width and its height.
+ * @brief Structure describing policy regarding video streams establishments.
  * @ingroup media_parameters
- */
-typedef struct _LinphoneVideoDefinition LinphoneVideoDefinition;
-
-/**
- * Structure describing policy regarding video streams establishments.
- * @ingroup media_parameters
- * @deprecated
+ * @deprecated 18/04/17
  * @donotwrap
 **/
 typedef struct _LinphoneVideoPolicy {
@@ -1133,12 +1169,6 @@
 	bool_t unused[2];
 } LinphoneVideoPolicy;
 
-/**
- * Structure describing policy regarding video streams establishments.
- * @ingroup media_parameters
-**/
-typedef struct _LinphoneVideoActivationPolicy LinphoneVideoActivationPolicy;
-
 typedef struct LinphoneVideoSizeDef {
 	MSVideoSize vsize;
 	const char *name;
@@ -1146,7 +1176,7 @@
 
 /**
  * Old name of #LinphoneVideoSizeDef
- * @deprecated
+ * @deprecated 03/02/2017
  */
 typedef LinphoneVideoSizeDef MSVideoSizeDef;
 
@@ -1157,35 +1187,36 @@
 } LinphoneWaitingState;
 
 /**
-* Enum describing the types of argument for LinphoneXmlRpcRequest.
+* @brief Enum describing the types of argument for LinphoneXmlRpcRequest.
 * @ingroup misc
 **/
 typedef enum _LinphoneXmlRpcArgType {
 	LinphoneXmlRpcArgNone,
 	LinphoneXmlRpcArgInt,
-	LinphoneXmlRpcArgString
+	LinphoneXmlRpcArgString,
+	LinphoneXmlRpcArgStringStruct
 } LinphoneXmlRpcArgType;
 
 /**
- * The #LinphoneXmlRpcRequest object representing a XML-RPC request to be sent.
+ * @brief The #LinphoneXmlRpcRequest object representing a XML-RPC request to be sent.
  * @ingroup misc
 **/
 typedef struct _LinphoneXmlRpcRequest LinphoneXmlRpcRequest;
 
 /**
- * An object to handle the callbacks for handling the #LinphoneXmlRpcRequest operations.
+ * @brief An object to handle the callbacks for handling the #LinphoneXmlRpcRequest operations.
  * @ingroup misc
 **/
 typedef struct _LinphoneXmlRpcRequestCbs LinphoneXmlRpcRequestCbs;
 
 /**
- * The #LinphoneXmlRpcSession object used to send XML-RPC requests and handle their responses.
+ * @brief The #LinphoneXmlRpcSession object used to send XML-RPC requests and handle their responses.
  * @ingroup misc
 **/
 typedef struct _LinphoneXmlRpcSession LinphoneXmlRpcSession;
 
 /**
-* Enum describing the status of a LinphoneXmlRpcRequest.
+* @brief Enum describing the status of a LinphoneXmlRpcRequest.
 * @ingroup misc
 **/
 typedef enum _LinphoneXmlRpcStatus {
@@ -1197,19 +1228,19 @@
 typedef struct _LsdPlayer LsdPlayer;
 
 /**
- * Object representing an RTP payload type.
+ * @brief Object representing an RTP payload type.
  * @ingroup media_parameters
  */
 typedef struct _LinphonePayloadType LinphonePayloadType;
 
 /**
- * Structure describing a range of integers
+ * @brief Structure describing a range of integers
  * @ingroup misc
  */
 typedef struct _LinphoneRange LinphoneRange;
 
 /**
- * Status code returned by some functions to
+ * @brief Status code returned by some functions to
  * notify whether the execution has been succesfully
  * done or not.
  * @ingroup misc
@@ -1217,7 +1248,7 @@
 typedef int LinphoneStatus;
 
 /**
- * Object representing a chain of protocol headers.
+ * @brief Object representing a chain of protocol headers.
  * It provides read/write access to the headers of the underlying protocol.
  * @ingroup misc
 **/

--
Gitblit v1.8.0