mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-18 11:38:08 +00:00
408 lines
12 KiB
C
408 lines
12 KiB
C
/*
|
|
linphonefriend.h
|
|
Copyright (C) 2010 Belledonne Communications SARL
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef LINPHONEFRIEND_H_
|
|
#define LINPHONEFRIEND_H_
|
|
|
|
#include "linphonepresence.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @addtogroup buddy_list
|
|
* @{
|
|
*/
|
|
/**
|
|
* Enum controlling behavior for incoming subscription request.
|
|
* <br> Use by linphone_friend_set_inc_subscribe_policy()
|
|
*/
|
|
typedef enum _LinphoneSubscribePolicy {
|
|
/**
|
|
* Does not automatically accept an incoming subscription request.
|
|
* This policy implies that a decision has to be taken for each incoming subscription request notified by callback LinphoneCoreVTable.new_subscription_requested
|
|
*
|
|
*/
|
|
LinphoneSPWait,
|
|
/**
|
|
* Rejects incoming subscription request.
|
|
*/
|
|
LinphoneSPDeny,
|
|
/**
|
|
* Automatically accepts a subscription request.
|
|
*/
|
|
LinphoneSPAccept
|
|
} LinphoneSubscribePolicy;
|
|
|
|
/**
|
|
* Enum describing remote friend status
|
|
* @deprecated Use #LinphonePresenceModel and #LinphonePresenceActivity instead
|
|
*/
|
|
typedef enum _LinphoneOnlineStatus{
|
|
/**
|
|
* Offline
|
|
*/
|
|
LinphoneStatusOffline,
|
|
/**
|
|
* Online
|
|
*/
|
|
LinphoneStatusOnline,
|
|
/**
|
|
* Busy
|
|
*/
|
|
LinphoneStatusBusy,
|
|
/**
|
|
* Be right back
|
|
*/
|
|
LinphoneStatusBeRightBack,
|
|
/**
|
|
* Away
|
|
*/
|
|
LinphoneStatusAway,
|
|
/**
|
|
* On the phone
|
|
*/
|
|
LinphoneStatusOnThePhone,
|
|
/**
|
|
* Out to lunch
|
|
*/
|
|
LinphoneStatusOutToLunch,
|
|
/**
|
|
* Do not disturb
|
|
*/
|
|
LinphoneStatusDoNotDisturb,
|
|
/**
|
|
* Moved in this sate, call can be redirected if an alternate contact address has been set using function linphone_core_set_presence_info()
|
|
*/
|
|
LinphoneStatusMoved,
|
|
/**
|
|
* Using another messaging service
|
|
*/
|
|
LinphoneStatusAltService,
|
|
/**
|
|
* Pending
|
|
*/
|
|
LinphoneStatusPending,
|
|
/**
|
|
* Vacation
|
|
*/
|
|
LinphoneStatusVacation,
|
|
|
|
LinphoneStatusEnd
|
|
}LinphoneOnlineStatus;
|
|
|
|
|
|
struct _LinphoneFriend;
|
|
/**
|
|
* Represents a buddy, all presence actions like subscription and status change notification are performed on this object
|
|
*/
|
|
typedef struct _LinphoneFriend LinphoneFriend;
|
|
|
|
/**
|
|
* Contructor
|
|
* @return a new empty #LinphoneFriend
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend * linphone_friend_new();
|
|
|
|
/**
|
|
* Contructor same as linphone_friend_new() + linphone_friend_set_address()
|
|
* @param addr a buddy address, must be a sip uri like sip:joe@sip.linphone.org
|
|
* @return a new #LinphoneFriend with \link linphone_friend_get_address() address initialized \endlink
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend *linphone_friend_new_with_address(const char *addr);
|
|
|
|
/**
|
|
* Contructor same as linphone_friend_new() + linphone_friend_set_address()
|
|
* @deprecated Use #linphone_friend_new_with_address instead
|
|
*/
|
|
#define linphone_friend_new_with_addr linphone_friend_new_with_address
|
|
|
|
/**
|
|
* Destructor
|
|
* @param lf #LinphoneFriend object
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_friend_destroy(LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Set #LinphoneAddress for this friend
|
|
* @param fr #LinphoneFriend object
|
|
* @param address #LinphoneAddress
|
|
*/
|
|
LINPHONE_PUBLIC int linphone_friend_set_address(LinphoneFriend *fr, const LinphoneAddress* address);
|
|
|
|
/**
|
|
* Set #LinphoneAddress for this friend
|
|
* @deprecated Use #linphone_friend_set_address instead
|
|
*/
|
|
#define linphone_friend_set_addr linphone_friend_set_address
|
|
|
|
/**
|
|
* Get address of this friend
|
|
* @param lf #LinphoneFriend object
|
|
* @return #LinphoneAddress
|
|
*/
|
|
LINPHONE_PUBLIC const LinphoneAddress *linphone_friend_get_address(const LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Set the display name for this friend
|
|
* @param lf #LinphoneFriend object
|
|
* @param name
|
|
*/
|
|
LINPHONE_PUBLIC int linphone_friend_set_name(LinphoneFriend *lf, const char *name);
|
|
|
|
/**
|
|
* Get the display name for this friend
|
|
* @param lf #LinphoneFriend object
|
|
* @return The display name of this friend
|
|
*/
|
|
LINPHONE_PUBLIC const char * linphone_friend_get_name(const LinphoneFriend *lf);
|
|
|
|
/**
|
|
* get subscription flag value
|
|
* @param lf #LinphoneFriend object
|
|
* @return returns true is subscription is activated for this friend
|
|
*
|
|
*/
|
|
LINPHONE_PUBLIC bool_t linphone_friend_subscribes_enabled(const LinphoneFriend *lf);
|
|
#define linphone_friend_get_send_subscribe linphone_friend_subscribes_enabled
|
|
|
|
/**
|
|
* Configure #LinphoneFriend to subscribe to presence information
|
|
* @param fr #LinphoneFriend object
|
|
* @param val if TRUE this friend will receive subscription message
|
|
*/
|
|
|
|
LINPHONE_PUBLIC int linphone_friend_enable_subscribes(LinphoneFriend *fr, bool_t val);
|
|
#define linphone_friend_send_subscribe linphone_friend_enable_subscribes
|
|
|
|
/**
|
|
* Configure incoming subscription policy for this friend.
|
|
* @param fr #LinphoneFriend object
|
|
* @param pol #LinphoneSubscribePolicy policy to apply.
|
|
*/
|
|
LINPHONE_PUBLIC int linphone_friend_set_inc_subscribe_policy(LinphoneFriend *fr, LinphoneSubscribePolicy pol);
|
|
|
|
/**
|
|
* get current subscription policy for this #LinphoneFriend
|
|
* @param lf #LinphoneFriend object
|
|
* @return #LinphoneSubscribePolicy
|
|
*
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneSubscribePolicy linphone_friend_get_inc_subscribe_policy(const LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Starts editing a friend configuration.
|
|
*
|
|
* Because friend configuration must be consistent, applications MUST
|
|
* call linphone_friend_edit() before doing any attempts to modify
|
|
* friend configuration (such as \link linphone_friend_set_address() address \endlink or \link linphone_friend_set_inc_subscribe_policy() subscription policy\endlink and so on).
|
|
* Once the modifications are done, then the application must call
|
|
* linphone_friend_done() to commit the changes.
|
|
**/
|
|
LINPHONE_PUBLIC void linphone_friend_edit(LinphoneFriend *fr);
|
|
|
|
/**
|
|
* Commits modification made to the friend configuration.
|
|
* @param fr #LinphoneFriend object
|
|
**/
|
|
LINPHONE_PUBLIC void linphone_friend_done(LinphoneFriend *fr);
|
|
|
|
/**
|
|
* Get the status of a friend
|
|
* @param[in] lf A #LinphoneFriend object
|
|
* @return #LinphoneOnlineStatus
|
|
* @deprecated Use linphone_friend_get_presence_model() instead
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneOnlineStatus linphone_friend_get_status(const LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Get the presence model of a friend
|
|
* @param[in] lf A #LinphoneFriend object
|
|
* @return A #LinphonePresenceModel object, or NULL if the friend do not have presence information (in which case he is considered offline)
|
|
*/
|
|
LINPHONE_PUBLIC const LinphonePresenceModel * linphone_friend_get_presence_model(LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Store user pointer to friend object.
|
|
**/
|
|
LINPHONE_PUBLIC void linphone_friend_set_user_data(LinphoneFriend *lf, void *data);
|
|
|
|
/**
|
|
* Retrieve user data associated with friend.
|
|
**/
|
|
LINPHONE_PUBLIC void* linphone_friend_get_user_data(const LinphoneFriend *lf);
|
|
|
|
LINPHONE_PUBLIC BuddyInfo * linphone_friend_get_info(const LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Set the reference key of a friend.
|
|
* @param[in] lf #LinphoneFriend object.
|
|
* @param[in] key The reference key to use for the friend.
|
|
**/
|
|
LINPHONE_PUBLIC void linphone_friend_set_ref_key(LinphoneFriend *lf, const char *key);
|
|
|
|
/**
|
|
* Get the reference key of a friend.
|
|
* @param[in] lf #LinphoneFriend object.
|
|
* @returns The reference key of the friend.
|
|
**/
|
|
LINPHONE_PUBLIC const char *linphone_friend_get_ref_key(const LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Check that the given friend is in a friend list.
|
|
* @param[in] lf #LinphoneFriend object.
|
|
* @returns TRUE if the friend is in a friend list, FALSE otherwise.
|
|
**/
|
|
LINPHONE_PUBLIC bool_t linphone_friend_in_list(const LinphoneFriend *lf);
|
|
|
|
|
|
/**
|
|
* Return humain readable presence status
|
|
* @param ss
|
|
* @deprecated Use #LinphonePresenceModel, #LinphonePresenceActivity and linphone_presence_activity_to_string() instead.
|
|
*/
|
|
LINPHONE_PUBLIC const char *linphone_online_status_to_string(LinphoneOnlineStatus ss);
|
|
|
|
|
|
/**
|
|
* Create a default LinphoneFriend.
|
|
* @param[in] lc #LinphoneCore object
|
|
* @return The created #LinphoneFriend object
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend * linphone_core_create_friend(LinphoneCore *lc);
|
|
|
|
/**
|
|
* Create a LinphoneFriend from the given address.
|
|
* @param[in] lc #LinphoneCore object
|
|
* @param[in] address A string containing the address to create the LinphoneFriend from
|
|
* @return The created #LinphoneFriend object
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend * linphone_core_create_friend_with_address(LinphoneCore *lc, const char *address);
|
|
|
|
/**
|
|
* Set my presence status
|
|
* @param[in] lc #LinphoneCore object
|
|
* @param[in] minutes_away how long in away
|
|
* @param[in] alternative_contact sip uri used to redirect call in state #LinphoneStatusMoved
|
|
* @param[in] os #LinphoneOnlineStatus
|
|
* @deprecated Use linphone_core_set_presence_model() instead
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_set_presence_info(LinphoneCore *lc,int minutes_away,const char *alternative_contact,LinphoneOnlineStatus os);
|
|
|
|
/**
|
|
* Set my presence model
|
|
* @param[in] lc #LinphoneCore object
|
|
* @param[in] presence #LinphonePresenceModel
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_set_presence_model(LinphoneCore *lc, LinphonePresenceModel *presence);
|
|
|
|
/**
|
|
* Get my presence status
|
|
* @param[in] lc #LinphoneCore object
|
|
* @return #LinphoneOnlineStatus
|
|
* @deprecated Use linphone_core_get_presence_model() instead
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneOnlineStatus linphone_core_get_presence_info(const LinphoneCore *lc);
|
|
|
|
/**
|
|
* Get my presence model
|
|
* @param[in] lc #LinphoneCore object
|
|
* @return A #LinphonePresenceModel object, or NULL if no presence model has been set.
|
|
*/
|
|
LINPHONE_PUBLIC LinphonePresenceModel * linphone_core_get_presence_model(const LinphoneCore *lc);
|
|
|
|
/**
|
|
* @deprecated Use linphone_core_interpret_url() instead
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_interpret_friend_uri(LinphoneCore *lc, const char *uri, char **result);
|
|
|
|
/**
|
|
* Add a friend to the current buddy list, if \link linphone_friend_enable_subscribes() subscription attribute \endlink is set, a SIP SUBSCRIBE message is sent.
|
|
* @param lc #LinphoneCore object
|
|
* @param fr #LinphoneFriend to add
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_add_friend(LinphoneCore *lc, LinphoneFriend *fr);
|
|
|
|
/**
|
|
* remove a friend from the buddy list
|
|
* @param lc #LinphoneCore object
|
|
* @param fr #LinphoneFriend to add
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_remove_friend(LinphoneCore *lc, LinphoneFriend *fr);
|
|
|
|
/**
|
|
* Black list a friend. same as linphone_friend_set_inc_subscribe_policy() with #LinphoneSPDeny policy;
|
|
* @param lc #LinphoneCore object
|
|
* @param lf #LinphoneFriend to add
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_reject_subscriber(LinphoneCore *lc, LinphoneFriend *lf);
|
|
|
|
/**
|
|
* Get Buddy list of LinphoneFriend
|
|
* @param lc #LinphoneCore object
|
|
*/
|
|
LINPHONE_PUBLIC const MSList * linphone_core_get_friend_list(const LinphoneCore *lc);
|
|
|
|
/**
|
|
* Notify all friends that have subscribed
|
|
* @param lc #LinphoneCore object
|
|
* @param presence #LinphonePresenceModel to notify
|
|
*/
|
|
LINPHONE_PUBLIC void linphone_core_notify_all_friends(LinphoneCore *lc, LinphonePresenceModel *presence);
|
|
|
|
/**
|
|
* Search a LinphoneFriend by its address.
|
|
* @param[in] lc #LinphoneCore object.
|
|
* @param[in] addr The address to use to search the friend.
|
|
* @returns The #LinphoneFriend object corresponding to the given address.
|
|
* @deprecated use linphone_core_find_friend() instead.
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend *linphone_core_get_friend_by_address(const LinphoneCore *lc, const char *addr);
|
|
|
|
/**
|
|
* Search a LinphoneFriend by its address.
|
|
* @param[in] lc #LinphoneCore object.
|
|
* @param[in] addr The address to use to search the friend.
|
|
* @returns The #LinphoneFriend object corresponding to the given address.
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend *linphone_core_find_friend(const LinphoneCore *lc, const LinphoneAddress *addr);
|
|
|
|
/**
|
|
* Search a LinphoneFriend by its reference key.
|
|
* @param[in] lc #LinphoneCore object.
|
|
* @param[in] key The reference key to use to search the friend.
|
|
* @returns The #LinphoneFriend object corresponding to the given reference key.
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneFriend *linphone_core_get_friend_by_ref_key(const LinphoneCore *lc, const char *key);
|
|
|
|
|
|
/**
|
|
* Returns the LinphoneCore object managing this friend, if any.
|
|
*/
|
|
LINPHONE_PUBLIC LinphoneCore *linphone_friend_get_core(const LinphoneFriend *fr);
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* LINPHONEFRIEND_H_ */
|