mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-23 22:28:07 +00:00
Merge branch 'master' into dev_multicall
This commit is contained in:
commit
2027bef314
20 changed files with 206 additions and 46 deletions
1
NEWS
1
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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,49 @@
|
|||
* @verbinclude COPYING
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup tutorial_liblinphone Tutorial: Placing and receiving calls with liblinphone
|
||||
*
|
||||
|
||||
<H1>Initialize liblinphone</H1>
|
||||
|
||||
The first thing to do is to initialize the library passing it a set of callbacks functions to receive
|
||||
various notifications: incoming calls, progress of calls etc...
|
||||
These callbacks are all grouped in the LinphoneCoreVTable structure.
|
||||
All are optionnals (use NULL if you don't need them).
|
||||
The following code shows how initialize liblinphone:
|
||||
|
||||
<PRE>
|
||||
##include <linphonecore.h>
|
||||
|
||||
//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;
|
||||
|
||||
}
|
||||
|
||||
</PRE>
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @defgroup initializing Initialization and destruction
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
32
java/common/org/linphone/core/CallDirection.java
Normal file
32
java/common/org/linphone/core/CallDirection.java
Normal file
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<values.size();i++) {
|
||||
GeneralState state = (GeneralState) values.elementAt(i);
|
||||
if (state.mValue == value) return state;
|
||||
static private Vector values = new Vector();
|
||||
/* states for GSTATE_GROUP_POWER */
|
||||
static public GeneralState GSTATE_POWER_OFF = new GeneralState(0,"GSTATE_POWER_OFF"); /* initial state */
|
||||
static public GeneralState GSTATE_POWER_STARTUP = new GeneralState(1,"GSTATE_POWER_STARTUP");
|
||||
static public GeneralState GSTATE_POWER_ON = new GeneralState(2,"GSTATE_POWER_ON");
|
||||
static public GeneralState GSTATE_POWER_SHUTDOWN = new GeneralState(3,"GSTATE_POWER_SHUTDOWN");
|
||||
/* states for GSTATE_GROUP_REG */
|
||||
static public GeneralState GSTATE_REG_NONE = new GeneralState(10,"GSTATE_REG_NONE"); /* initial state */
|
||||
static public GeneralState GSTATE_REG_OK = new GeneralState(11,"GSTATE_REG_OK");
|
||||
static public GeneralState GSTATE_REG_FAILED = new GeneralState(12,"GSTATE_REG_FAILED");
|
||||
/* states for GSTATE_GROUP_CALL */
|
||||
static public GeneralState GSTATE_CALL_IDLE = new GeneralState(20,"GSTATE_CALL_IDLE"); /* initial state */
|
||||
static public GeneralState GSTATE_CALL_OUT_INVITE = new GeneralState(21,"GSTATE_CALL_OUT_INVITE");
|
||||
static public GeneralState GSTATE_CALL_OUT_CONNECTED = new GeneralState(22,"GSTATE_CALL_OUT_CONNECTED");
|
||||
static public GeneralState GSTATE_CALL_IN_INVITE = new GeneralState(23,"GSTATE_CALL_IN_INVITE");
|
||||
static public GeneralState GSTATE_CALL_IN_CONNECTED = new GeneralState(24,"GSTATE_CALL_IN_CONNECTED");
|
||||
static public GeneralState GSTATE_CALL_END = new GeneralState(25,"GSTATE_CALL_END");
|
||||
static public GeneralState GSTATE_CALL_ERROR = new GeneralState(26,"GSTATE_CALL_ERROR");
|
||||
static public GeneralState GSTATE_INVALID = new GeneralState(27,"GSTATE_INVALID");
|
||||
private final int mValue;
|
||||
private final String mStringValue;
|
||||
|
||||
private GeneralState(int value,String stringValue) {
|
||||
mValue = value;
|
||||
values.addElement(this);
|
||||
mStringValue=stringValue;
|
||||
}
|
||||
public static GeneralState fromInt(int value) {
|
||||
|
||||
for (int i=0; i<values.size();i++) {
|
||||
GeneralState state = (GeneralState) values.elementAt(i);
|
||||
if (state.mValue == value) return state;
|
||||
}
|
||||
throw new RuntimeException("state not found ["+value+"]");
|
||||
}
|
||||
public String toString() {
|
||||
return mStringValue;
|
||||
}
|
||||
throw new RuntimeException("sate not found ["+value+"]");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -99,7 +104,7 @@ public interface LinphoneCore {
|
|||
*/
|
||||
public void invite(String destination)throws LinphoneCoreException;
|
||||
|
||||
public void invite(LinphoneAddress to);
|
||||
public void invite(LinphoneAddress to)throws LinphoneCoreException;
|
||||
|
||||
public void terminateCall();
|
||||
/**
|
||||
|
|
@ -19,36 +19,36 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
package org.linphone.core;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
abstract public class LinphoneCoreFactory {
|
||||
|
||||
private static String defaulfFactory = "org.linphone.core.LinphoneCoreFactoryImpl";
|
||||
private static String factoryName = "org.linphone.core.LinphoneCoreFactoryImpl";
|
||||
|
||||
|
||||
static LinphoneCoreFactory theLinphoneCoreFactory;
|
||||
/**
|
||||
* Indicate the name of the class used by this factory
|
||||
* @param pathName
|
||||
*/
|
||||
static void setFactoryClassName (String className) {
|
||||
defaulfFactory = className;
|
||||
public static void setFactoryClassName (String className) {
|
||||
factoryName = className;
|
||||
}
|
||||
|
||||
public static LinphoneCoreFactory instance() {
|
||||
try {
|
||||
if (theLinphoneCoreFactory == null) {
|
||||
Class lFactoryClass = Class.forName(defaulfFactory);
|
||||
Class lFactoryClass = Class.forName(factoryName);
|
||||
theLinphoneCoreFactory = (LinphoneCoreFactory) lFactoryClass.newInstance();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("cannot instanciate factory ["+defaulfFactory+"]");
|
||||
System.err.println("cannot instanciate factory ["+factoryName+"]");
|
||||
}
|
||||
return theLinphoneCoreFactory;
|
||||
}
|
||||
abstract public LinphoneAuthInfo createAuthInfo(String username,String password);
|
||||
abstract public LinphoneAuthInfo createAuthInfo(String username,String password, String realm);
|
||||
|
||||
abstract public LinphoneCore createLinphoneCore(LinphoneCoreListener listener, String userConfig,String factoryConfig,Object userdata) throws IOException;
|
||||
abstract public LinphoneCore createLinphoneCore(LinphoneCoreListener listener, String userConfig,String factoryConfig,Object userdata) throws LinphoneCoreException;
|
||||
|
||||
abstract public LinphoneAddress createLinphoneAddress(String username,String domain,String displayName);
|
||||
|
||||
47
java/j2me/org/linphone/core/LinphoneCoreException.java
Normal file
47
java/j2me/org/linphone/core/LinphoneCoreException.java
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
LinphoneCoreException.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 LinphoneCoreException extends Exception {
|
||||
Throwable mE;
|
||||
public LinphoneCoreException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public LinphoneCoreException(String detailMessage) {
|
||||
super(detailMessage);
|
||||
|
||||
}
|
||||
public LinphoneCoreException(Throwable e) {
|
||||
mE = e;
|
||||
}
|
||||
|
||||
public LinphoneCoreException(String detailMessage,Throwable e) {
|
||||
super(detailMessage);
|
||||
mE = e;
|
||||
}
|
||||
|
||||
public void printStackTrace() {
|
||||
super.printStackTrace();
|
||||
mE.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -22,14 +22,19 @@ package org.linphone.core;
|
|||
public class LinphoneCoreException extends Exception {
|
||||
|
||||
public LinphoneCoreException() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public LinphoneCoreException(String detailMessage) {
|
||||
super(detailMessage);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public LinphoneCoreException(Throwable e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
public LinphoneCoreException(String detailMessage,Throwable e) {
|
||||
super(detailMessage,e);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit b437bd3bcac6ce8f09218168ae75cc11e9a9255e
|
||||
Subproject commit b340a76e998c7dd2670372212b0bf14d7c59b987
|
||||
Loading…
Add table
Reference in a new issue