diff --git a/NEWS b/NEWS index c34031a76..0173bf7d2 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ linphone-3.3.0 -- ????????? * new tabbed ui * be nat friendly using OPTIONS request and using received,rport from responses. + * use stun guessed ports even if symmetric is detected (works with freeboxes) * improve bitrate usage of speex codec * allow speex to run with vbr (variable bit rate) mode * add speex/32000 (ultra wide band speex codec) diff --git a/configure.in b/configure.in index fec1ed279..2ecf17659 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([linphone],[3.2.99.5],[linphone-developers@nongnu.org]) +AC_INIT([linphone],[3.2.99.7],[linphone-developers@nongnu.org]) AC_CANONICAL_SYSTEM dnl Source packaging numbers diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index de05c798c..0f1dc4126 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -382,8 +382,8 @@ static void register_success(SalOp *op, bool_t registered){ LinphoneCore *lc=(LinphoneCore *)sal_get_user_pointer(sal_op_get_sal(op)); LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)sal_op_get_user_pointer(op); char *msg; - gstate_new_state(lc, GSTATE_REG_OK, NULL); cfg->registered=registered; + gstate_new_state(lc, GSTATE_REG_OK, NULL); if (cfg->registered) msg=ms_strdup_printf(_("Registration on %s successful."),sal_op_get_proxy(op)); else msg=ms_strdup_printf(_("Unregistration on %s done."),sal_op_get_proxy(op)); if (lc->vtable.display_status) diff --git a/coreapi/help/doxygen.dox.in b/coreapi/help/doxygen.dox.in index acdec9090..13502d424 100644 --- a/coreapi/help/doxygen.dox.in +++ b/coreapi/help/doxygen.dox.in @@ -28,6 +28,49 @@ * @verbinclude COPYING */ +/** + * @defgroup tutorial_liblinphone Tutorial: Placing and receiving calls with liblinphone + * + +
+ ##include+ + /** * @defgroup initializing Initialization and destruction diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index be7689a14..f9d3f29bf 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -879,6 +879,7 @@ static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vta linphone_core_assign_payload_type(&payload_type_speex_uwb,112,"vbr=on"); linphone_core_assign_payload_type(&payload_type_telephone_event,101,"0-11"); linphone_core_assign_payload_type(&payload_type_ilbc,113,"mode=30"); + linphone_core_assign_payload_type(&payload_type_amr,114,"octet-align=1"); #ifdef ENABLE_NONSTANDARD_GSM { diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 4c595cd0e..390c56232 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -352,16 +352,38 @@ extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_setIdentity(JNIEn linphone_proxy_config_set_identity((LinphoneProxyConfig*)proxyCfg,identity); env->ReleaseStringUTFChars(jidentity, identity); } +extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getIdentity(JNIEnv* env,jobject thiz,jlong proxyCfg) { + const char* identity = linphone_proxy_config_get_identity((LinphoneProxyConfig*)proxyCfg); + if (identity) { + return env->NewStringUTF(identity); + } else { + return NULL; + } +} extern "C" int Java_org_linphone_core_LinphoneProxyConfigImpl_setProxy(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jproxy) { const char* proxy = env->GetStringUTFChars(jproxy, NULL); int err=linphone_proxy_config_set_server_addr((LinphoneProxyConfig*)proxyCfg,proxy); env->ReleaseStringUTFChars(jproxy, proxy); return err; } +extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_getProxy(JNIEnv* env,jobject thiz,jlong proxyCfg) { + const char* proxy = linphone_proxy_config_get_addr((LinphoneProxyConfig*)proxyCfg); + if (proxy) { + return env->NewStringUTF(proxy); + } else { + return NULL; + } +} extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_enableRegister(JNIEnv* env,jobject thiz,jlong proxyCfg,jboolean enableRegister) { linphone_proxy_config_enable_register((LinphoneProxyConfig*)proxyCfg,enableRegister); } +extern "C" jboolean Java_org_linphone_core_LinphoneProxyConfigImpl_isRegistered(JNIEnv* env,jobject thiz,jlong proxyCfg) { + return linphone_proxy_config_is_registered((LinphoneProxyConfig*)proxyCfg); +} +extern "C" jboolean Java_org_linphone_core_LinphoneProxyConfigImpl_isRegisterEnabled(JNIEnv* env,jobject thiz,jlong proxyCfg) { + return linphone_proxy_config_register_enabled((LinphoneProxyConfig*)proxyCfg); +} extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_edit(JNIEnv* env,jobject thiz,jlong proxyCfg) { linphone_proxy_config_edit((LinphoneProxyConfig*)proxyCfg); } diff --git a/coreapi/misc.c b/coreapi/misc.c index 62fa0b1f0..55aa83d4d 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -567,6 +567,10 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){ } } } + if ((ac->addr[0]!='\0' && vc->addr[0]!='\0' && strcmp(ac->addr,vc->addr)==0) + || sock2==-1){ + strcpy(call->localdesc->addr,ac->addr); + } close_socket(sock1); if (sock2>=0) close_socket(sock2); } diff --git a/java/org/.DS_Store b/java/common/org/.DS_Store similarity index 100% rename from java/org/.DS_Store rename to java/common/org/.DS_Store diff --git a/java/org/linphone/.DS_Store b/java/common/org/linphone/.DS_Store similarity index 100% rename from java/org/linphone/.DS_Store rename to java/common/org/linphone/.DS_Store diff --git a/java/common/org/linphone/core/CallDirection.java b/java/common/org/linphone/core/CallDirection.java new file mode 100644 index 000000000..142708cc2 --- /dev/null +++ b/java/common/org/linphone/core/CallDirection.java @@ -0,0 +1,32 @@ +/* +CallDirection.java +Copyright (C) 2010 Belledonne Communications, Grenoble, France + +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. +*/ + +package org.linphone.core; + + public class CallDirection { + public static CallDirection Outgoing = new CallDirection("CallOutgoing"); + public static CallDirection Incoming = new CallDirection("Callincoming"); + private String mStringValue; + private CallDirection(String aStringValue) { + mStringValue = aStringValue; + } + public String toString() { + return mStringValue; + } +} diff --git a/java/org/linphone/core/LinphoneAddress.java b/java/common/org/linphone/core/LinphoneAddress.java similarity index 100% rename from java/org/linphone/core/LinphoneAddress.java rename to java/common/org/linphone/core/LinphoneAddress.java diff --git a/java/org/linphone/core/LinphoneAuthInfo.java b/java/common/org/linphone/core/LinphoneAuthInfo.java similarity index 100% rename from java/org/linphone/core/LinphoneAuthInfo.java rename to java/common/org/linphone/core/LinphoneAuthInfo.java diff --git a/java/org/linphone/core/LinphoneCallLog.java b/java/common/org/linphone/core/LinphoneCallLog.java similarity index 100% rename from java/org/linphone/core/LinphoneCallLog.java rename to java/common/org/linphone/core/LinphoneCallLog.java diff --git a/java/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java similarity index 64% rename from java/org/linphone/core/LinphoneCore.java rename to java/common/org/linphone/core/LinphoneCore.java index 8c3674d66..927c9596e 100644 --- a/java/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -28,39 +28,44 @@ public interface LinphoneCore { * linphone core states */ static public class GeneralState { - /* states for GSTATE_GROUP_POWER */ - static GeneralState GSTATE_POWER_OFF = new GeneralState(0); /* initial state */ - static GeneralState GSTATE_POWER_STARTUP = new GeneralState(1); - static GeneralState GSTATE_POWER_ON = new GeneralState(2); - static GeneralState GSTATE_POWER_SHUTDOWN = new GeneralState(3); - /* states for GSTATE_GROUP_REG */ - static GeneralState GSTATE_REG_NONE = new GeneralState(10); /* initial state */ - static GeneralState GSTATE_REG_OK = new GeneralState(11); - static GeneralState GSTATE_REG_FAILED = new GeneralState(12); - /* states for GSTATE_GROUP_CALL */ - static GeneralState GSTATE_CALL_IDLE = new GeneralState(20); /* initial state */ - static GeneralState GSTATE_CALL_OUT_INVITE = new GeneralState(21); - static GeneralState GSTATE_CALL_OUT_CONNECTED = new GeneralState(22); - static GeneralState GSTATE_CALL_IN_INVITE = new GeneralState(23); - static GeneralState GSTATE_CALL_IN_CONNECTED = new GeneralState(24); - static GeneralState GSTATE_CALL_END = new GeneralState(25); - static GeneralState GSTATE_CALL_ERROR = new GeneralState(26); - static GeneralState GSTATE_INVALID = new GeneralState(27); - private final int mValue; - static private Vector values = new Vector(); - - private GeneralState(int value) { - mValue = value; - values.addElement(this); - } - public static GeneralState fromInt(int value) { - - for (int i=0; i+ + //callback function for notification of incoming calls + static void on_invite_recv(LinphoneCore *lc, const char *from){ + printf("Receiving a call from %s\n",from); + } + + //callback function for notification end of calls (by remote) + static void on_bye_recv(LinphoneCore *lc, const char *from){ + printf("Remote end hangup\n"); + } + + / + static void on_display_status(LinphoneCore *lc, const char *msg){ + printf("%s",msg); + } + + int main(int argc, char *argv[]){ + LinphoneCoreVTable vtable; + + memset(&vtable,0,sizeof(vtable)); + vtable.inv_recv=&on_invite_recv; + vtable.bye_recv=&on_bye_recv; + vtable.display_status=&on_display_status; + + } + +