]> sjero.net Git - linphone/commitdiff
Merge branch 'master' into dev_sal
authorSimon Morlat <simon.morlat@linphone.org>
Wed, 3 Mar 2010 15:31:23 +0000 (16:31 +0100)
committerSimon Morlat <simon.morlat@linphone.org>
Wed, 3 Mar 2010 15:31:23 +0000 (16:31 +0100)
Conflicts:
coreapi/linphonecore.h

1  2 
coreapi/linphonecore.c
coreapi/linphonecore.h
coreapi/private.h

index ecb50a0a189a214eba07e9d9fbc1da99f141ba22,5f94e634ecabb52673a67e9eb8d9fb346ddccc02..1833de2fd01de7d27e27d284150a514d19df5cc5
@@@ -1009,9 -948,11 +1009,10 @@@ static void linphone_core_init (Linphon
        lc->presence_mode=LINPHONE_STATUS_ONLINE;
        lc->max_call_logs=15;
        ui_config_read(lc);
 -      ms_mutex_init(&lc->lock,NULL);
        lc->vtable.display_status(lc,_("Ready"));
          gstate_new_state(lc, GSTATE_POWER_ON, NULL);
-       lc->ready=TRUE;
+       lc->auto_net_state_mon=TRUE;
+     lc->ready=TRUE;
  }
  
  /**
@@@ -1450,18 -1411,18 +1451,19 @@@ static void proxy_update(LinphoneCore *
                char result[LINPHONE_IPADDR_SIZE];
                /* only do the network up checking every five seconds */
                if (last_check==0 || (curtime-last_check)>=5){
 -                      if (eXosip_guess_localip(lc->sip_conf.ipv6_enabled ? AF_INET6 : AF_INET,result,LINPHONE_IPADDR_SIZE)==0){
 -                              if (strcmp(result,"::1")!=0 && strcmp(result,"127.0.0.1")!=0){
 -                                      last_status=TRUE;
 -                                      ms_message("Network is up, registering now (%s)",result);
 -                              }else last_status=FALSE;
 -                      }
 +                      sal_get_default_local_ip(lc->sal,
 +                          lc->sip_conf.ipv6_enabled ? AF_INET6 : AF_INET,
 +                          result,LINPHONE_IPADDR_SIZE);
 +                      if (strcmp(result,"::1")!=0 && strcmp(result,"127.0.0.1")!=0){
 +                              last_status=TRUE;
 +                              ms_message("Network is up, registering now (%s)",result);
 +                      }else last_status=FALSE;
                        last_check=curtime;
                }
-               doit=last_status;
-       }else doit=TRUE;
-       if (doit) ms_list_for_each(lc->sip_conf.proxies,(void (*)(void*))&linphone_proxy_config_update);
+               linphone_core_set_network_reachable(lc,last_status);
+       }else {
+               ms_list_for_each(lc->sip_conf.proxies,(void (*)(void*))&linphone_proxy_config_update);
+       }
  }
  
  static void assign_buddy_info(LinphoneCore *lc, BuddyInfo *info){
index 5f79f693937ae1a2d60ebc54f1fb1965b2aa561c,0796a6d05b062169ef96843a908e08ed629eca9f..afd523d0ed1ff04ba333a4388cb2c038f6e3b8b5
@@@ -445,7 -595,75 +445,11 @@@ typedef enum _LinphoneWaitingState
  } LinphoneWaitingState;
  typedef void * (*LinphoneWaitingCallback)(struct _LinphoneCore *lc, void *context, LinphoneWaitingState ws, const char *purpose, float progress);
  
 -
 -typedef struct _LinphoneCore
 -{
 -      LinphoneCoreVTable vtable;
 -      struct _LpConfig *config;
 -      net_config_t net_conf;
 -      sip_config_t sip_conf;
 -      rtp_config_t rtp_conf;
 -      sound_config_t sound_conf;
 -      video_config_t video_conf;
 -      codecs_config_t codecs_conf;
 -      ui_config_t ui_conf;
 -      autoreplier_config_t autoreplier_conf;
 -      LinphoneProxyConfig *default_proxy;
 -      MSList *friends;
 -      MSList *auth_info;
 -      struct _RingStream *ringstream;
 -      LCCallbackObj preview_finished_cb;
 -      bool_t preview_finished;
 -      struct _LinphoneCall *call;   /* the current call, in the future it will be a list of calls (conferencing)*/
 -      int rid; /*registration id*/
 -      MSList *queued_calls;   /* used by the autoreplier */
 -      MSList *call_logs;
 -      MSList *chatrooms;
 -      int max_call_logs;
 -      int missed_calls;
 -      struct _AudioStream *audiostream;  /**/
 -      struct _VideoStream *videostream;
 -      struct _VideoStream *previewstream;
 -      RtpTransport *a_rtp,*a_rtcp;
 -      struct _RtpProfile *local_profile;
 -      MSList *bl_reqs;
 -      MSList *subscribers;    /* unknown subscribers */
 -      int minutes_away;
 -      LinphoneOnlineStatus presence_mode;
 -      LinphoneOnlineStatus prev_mode;
 -      char *alt_contact;
 -      void *data;
 -      ms_mutex_t lock;
 -      char *play_file;
 -      char *rec_file;
 -      time_t prevtime;
 -      int dw_audio_bw;
 -      int up_audio_bw;
 -      int dw_video_bw;
 -      int up_video_bw;
 -      int audio_bw;
 -      int automatic_action;
 -      gstate_t gstate_power;
 -      gstate_t gstate_reg;
 -      gstate_t gstate_call;
 -      LinphoneWaitingCallback wait_cb;
 -      void *wait_ctx;
 -      bool_t use_files;
 -      bool_t apply_nat_settings;
 -      bool_t ready;
 -      bool_t bl_refresh;
 -#ifdef VINCENT_MAURY_RSVP
 -      /* QoS parameters*/
 -      int rsvp_enable;
 -      int rpc_enable;
 -#endif
 +typedef struct _LinphoneCore LinphoneCore;
+       /*set this field to false if application manage  network connection state
+        * In case of false, network state must be communicate to linphone core with method linphone_core_
+        */
+       bool_t auto_net_state_mon;
 -} LinphoneCore;
 -
 -
  
  /* THE main API */
  
@@@ -690,6 -902,18 +694,16 @@@ const LinphoneAddress *linphone_core_ge
  int linphone_core_get_mtu(const LinphoneCore *lc);
  void linphone_core_set_mtu(LinphoneCore *lc, int mtu);
  
 -bool_t linphone_core_is_in_main_thread(LinphoneCore *lc);
 -
+ /**
+  * This method is called by the application to notify the linphone core library when network is reachable.
+  * Calling this method with true trigger linphone to initiate a registration process for all proxy
+  * configuration with parameter register set to enable.
+  * This method disable the automatic registration mode. It means you must call this method after each network state changes
+  *
+  */
+ void linphone_core_set_network_reachable(LinphoneCore* lc,bool_t value);
  void *linphone_core_get_user_data(LinphoneCore *lc);
  
  /* returns LpConfig object to read/write to the config file: usefull if you wish to extend
index bcd9144399a68b5219196b0c177bb51f9400fc65,93b1c77be124f3152749e45728c73d0b56e8c23d..6050449d51c022fc73aca767d9f994bea962a373
@@@ -169,223 -194,4 +169,224 @@@ void linphone_proxy_config_write_to_con
  
  int linphone_proxy_config_normalize_number(LinphoneProxyConfig *cfg, const char *username, char *result, size_t result_len);
  
 +void linphone_core_text_received(LinphoneCore *lc, const char *from, const char *msg);
 +
 +void linphone_core_start_media_streams(LinphoneCore *lc, struct _LinphoneCall *call);
 +void linphone_core_stop_media_streams(LinphoneCore *lc, struct _LinphoneCall *call);
 +const char * linphone_core_get_identity(LinphoneCore *lc);
 +const char * linphone_core_get_route(LinphoneCore *lc);
 +bool_t linphone_core_interpret_url(LinphoneCore *lc, const char *url, LinphoneAddress **real_parsed_url, char **route);
 +void linphone_core_start_waiting(LinphoneCore *lc, const char *purpose);
 +void linphone_core_update_progress(LinphoneCore *lc, const char *purpose, float progresses);
 +void linphone_core_stop_waiting(LinphoneCore *lc);
 +
 +
 +extern SalCallbacks linphone_sal_callbacks;
 +
 +
 +struct _LinphoneProxyConfig
 +{
 +      struct _LinphoneCore *lc;
 +      char *reg_proxy;
 +      char *reg_identity;
 +      char *reg_route;
 +      char *realm;
 +      int expires;
 +      int reg_time;
 +      SalOp *op;
 +      char *type;
 +      struct _SipSetupContext *ssctx;
 +      int auth_failures;
 +      char *dial_prefix;
 +      bool_t commit;
 +      bool_t reg_sendregister;
 +      bool_t registered;
 +      bool_t publish;
 +      bool_t dial_escape_plus;
 +};
 +
 +struct _LinphoneAuthInfo 
 +{
 +      char *username;
 +      char *realm;
 +      char *userid;
 +      char *passwd;
 +      char *ha1;
 +      int usecount;
 +      bool_t works;
 +};
 +
 +struct _LinphoneChatRoom{
 +      struct _LinphoneCore *lc;
 +      char  *peer;
 +      char *route;
 +      LinphoneAddress *peer_url;
 +      void * user_data;
 +};
 +
 +struct _LinphoneFriend{
 +      LinphoneAddress *uri;
 +      SalOp *insub;
 +      SalOp *outsub;
 +      LinphoneSubscribePolicy pol;
 +      LinphoneOnlineStatus status;
 +      struct _LinphoneCore *lc;
 +      BuddyInfo *info;
 +      char *refkey;
 +      bool_t subscribe;
 +      bool_t inc_subscribe_pending;
 +};    
 +
 +typedef struct sip_config
 +{
 +      char *contact;
 +      char *guessed_contact;
 +      int sip_port;
 +      MSList *proxies;
 +      MSList *deleted_proxies;
 +      int inc_timeout;        /*timeout after an un-answered incoming call is rejected*/
 +      bool_t use_info;
 +      bool_t use_rfc2833;     /*force RFC2833 to be sent*/
 +      bool_t guess_hostname;
 +      bool_t loopback_only;
 +      bool_t ipv6_enabled;
 +      bool_t sdp_200_ack;
 +      bool_t only_one_codec; /*in SDP answers*/
 +      bool_t register_only_when_network_is_up;
 +} sip_config_t;
 +
 +typedef struct rtp_config
 +{
 +      int audio_rtp_port;
 +      int video_rtp_port;
 +      int audio_jitt_comp;  /*jitter compensation*/
 +      int video_jitt_comp;  /*jitter compensation*/
 +      int nortp_timeout;
 +}rtp_config_t;
 +
 +
 +
 +typedef struct net_config
 +{
 +      char *nat_address;
 +      char *stun_server;
 +      char *relay;
 +      int download_bw;
 +      int upload_bw;
 +      int firewall_policy;
 +      int mtu;
 +      bool_t nat_sdp_only;
 +}net_config_t;
 +
 +
 +typedef struct sound_config
 +{
 +      struct _MSSndCard * ring_sndcard;       /* the playback sndcard currently used */
 +      struct _MSSndCard * play_sndcard;       /* the playback sndcard currently used */
 +      struct _MSSndCard * capt_sndcard; /* the capture sndcard currently used */
 +      const char **cards;
 +      int latency;    /* latency in samples of the current used sound device */
 +      char rec_lev;
 +      char play_lev;
 +      char ring_lev;
 +      char source;
 +      char *local_ring;
 +      char *remote_ring;
 +      bool_t ec;
 +      bool_t ea;
 +      bool_t agc;
 +} sound_config_t;
 +
 +typedef struct codecs_config
 +{
 +      MSList *audio_codecs;  /* list of audio codecs in order of preference*/
 +      MSList *video_codecs;   /* for later use*/
 +}codecs_config_t;
 +
 +typedef struct video_config{
 +      struct _MSWebCam *device;
 +      const char **cams;
 +      MSVideoSize vsize;
 +      bool_t capture;
 +      bool_t show_local;
 +      bool_t display;
 +      bool_t selfview; /*during calls*/
 +}video_config_t;
 +
 +typedef struct ui_config
 +{
 +      int is_daemon;
 +      int is_applet;
 +      unsigned int timer_id;  /* the timer id for registration */
 +}ui_config_t;
 +
 +
 +
 +typedef struct autoreplier_config
 +{
 +      int enabled;
 +      int after_seconds;              /* accept the call after x seconds*/
 +      int max_users;                  /* maximum number of user that can call simultaneously */
 +      int max_rec_time;       /* the max time of incoming voice recorded */
 +      int max_rec_msg;                /* maximum number of recorded messages */
 +      const char *message;            /* the path of the file to be played */
 +}autoreplier_config_t;
 +
 +
 +struct _LinphoneCore
 +{
 +      LinphoneCoreVTable vtable;
 +      Sal *sal;
 +      struct _LpConfig *config;
 +      net_config_t net_conf;
 +      sip_config_t sip_conf;
 +      rtp_config_t rtp_conf;
 +      sound_config_t sound_conf;
 +      video_config_t video_conf;
 +      codecs_config_t codecs_conf;
 +      ui_config_t ui_conf;
 +      autoreplier_config_t autoreplier_conf;
 +      LinphoneProxyConfig *default_proxy;
 +      MSList *friends;
 +      MSList *auth_info;
 +      struct _RingStream *ringstream;
 +      LCCallbackObj preview_finished_cb;
 +      struct _LinphoneCall *call;   /* the current call, in the future it will be a list of calls (conferencing)*/
 +      MSList *queued_calls;   /* used by the autoreplier */
 +      MSList *call_logs;
 +      MSList *chatrooms;
 +      int max_call_logs;
 +      int missed_calls;
 +      struct _AudioStream *audiostream;  /**/
 +      struct _VideoStream *videostream;
 +      struct _VideoStream *previewstream;
 +      RtpTransport *a_rtp,*a_rtcp;
 +      MSList *bl_reqs;
 +      MSList *subscribers;    /* unknown subscribers */
 +      int minutes_away;
 +      LinphoneOnlineStatus presence_mode;
 +      LinphoneOnlineStatus prev_mode;
 +      char *alt_contact;
 +      void *data;
 +      char *play_file;
 +      char *rec_file;
 +      time_t prevtime;
 +      int dw_audio_bw;
 +      int up_audio_bw;
 +      int dw_video_bw;
 +      int up_video_bw;
 +      int audio_bw;
 +      gstate_t gstate_power;
 +      gstate_t gstate_reg;
 +      gstate_t gstate_call;
 +      LinphoneWaitingCallback wait_cb;
 +      void *wait_ctx;
 +      bool_t use_files;
 +      bool_t apply_nat_settings;
 +      bool_t ready;
 +      bool_t bl_refresh;
 +      bool_t preview_finished;
++      bool_t auto_net_state_mon;
 +};
 +
  #endif /* _PRIVATE_H */