]> sjero.net Git - linphone/commitdiff
add liblinphone jni for java binding
authorJehan Monnier <jehan.monnier@linphone.org>
Fri, 12 Feb 2010 14:43:06 +0000 (15:43 +0100)
committerJehan Monnier <jehan.monnier@linphone.org>
Fri, 12 Feb 2010 14:43:06 +0000 (15:43 +0100)
.cproject [new file with mode: 0644]
.project [new file with mode: 0644]
coreapi/linphonecore_jni.cc [new file with mode: 0644]
mediastreamer2
oRTP

diff --git a/.cproject b/.cproject
new file mode 100644 (file)
index 0000000..4dc56ec
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="0.2079208171">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.2079208171" moduleId="org.eclipse.cdt.core.settings" name="Default">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="linphone" buildProperties="" description="" id="0.2079208171" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
+<folderInfo id="0.2079208171." name="/" resourcePath="">
+<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.2084203071" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
+<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.2084203071.81924294" name=""/>
+<builder id="org.eclipse.cdt.build.core.settings.default.builder.731584538" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
+<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1252970003" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
+<tool id="org.eclipse.cdt.build.core.settings.holder.1371414073" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
+<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.306286573" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+</tool>
+<tool id="org.eclipse.cdt.build.core.settings.holder.391709798" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
+<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1702094818" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+</tool>
+<tool id="org.eclipse.cdt.build.core.settings.holder.754828354" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
+<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.585510934" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+</tool>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="0.2079208171">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="linphone.null.1149313048" name="linphone"/>
+</storageModule>
+</cproject>
diff --git a/.project b/.project
new file mode 100644 (file)
index 0000000..fb92684
--- /dev/null
+++ b/.project
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>linphone</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <triggers>clean,full,incremental,</triggers>
+                       <arguments>
+                               <dictionary>
+                                       <key>?name?</key>
+                                       <value></value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.append_environment</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+                                       <value>all</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.buildArguments</key>
+                                       <value></value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.buildCommand</key>
+                                       <value>make</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+                                       <value>clean</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.contents</key>
+                                       <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+                                       <value>false</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+                                       <value>all</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.stopOnError</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+                                       <value>true</value>
+                               </dictionary>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+</projectDescription>
diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
new file mode 100644 (file)
index 0000000..21a0182
--- /dev/null
@@ -0,0 +1,344 @@
+/*
+linphonecore_jni.cc
+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.
+ */
+#include <jni.h>
+#include "linphonecore.h"
+#ifdef ANDROID
+#include <android/log.h>
+#endif /*ANDROID*/
+
+extern "C" void ms_andsnd_register_card(JavaVM *jvm) ;
+static JavaVM *jvm=0;
+
+#ifdef ANDROID
+static void linphone_android_log_handler(OrtpLogLevel lev, const char *fmt, va_list args){
+       int prio;
+       switch(lev){
+       case ORTP_DEBUG:        prio = ANDROID_LOG_DEBUG;       break;
+       case ORTP_MESSAGE:      prio = ANDROID_LOG_INFO;        break;
+       case ORTP_WARNING:      prio = ANDROID_LOG_WARN;        break;
+       case ORTP_ERROR:        prio = ANDROID_LOG_ERROR;       break;
+       case ORTP_FATAL:        prio = ANDROID_LOG_FATAL;       break;
+       default:                prio = ANDROID_LOG_DEFAULT;     break;
+       }
+       __android_log_vprint(prio, LOG_DOMAIN, fmt, args);
+}
+#endif /*ANDROID*/
+
+JNIEXPORT jint JNICALL  JNI_OnLoad(JavaVM *ajvm, void *reserved)
+{
+       #ifdef ANDROID
+       linphone_core_enable_logs_with_cb(linphone_android_log_handler);
+       ms_andsnd_register_card(ajvm);
+#endif /*ANDROID*/
+       jvm=ajvm;
+       return JNI_VERSION_1_2;
+}
+
+
+
+// LinphoneCore
+
+class LinphoneCoreData {
+public:
+       LinphoneCoreData(JNIEnv*  env, jobject lc,jobject alistener, jobject auserdata) {
+
+               core = env->NewGlobalRef(lc);
+               listener = env->NewGlobalRef(alistener);
+               userdata = auserdata?env->NewGlobalRef(auserdata):0;
+               memset(&vTable,0,sizeof(vTable));
+               vTable.show = showInterfaceCb;
+               vTable.inv_recv = inviteReceivedCb;
+               vTable.auth_info_requested = authInfoRequested;
+               vTable.display_status = displayStatusCb;
+               vTable.display_message = displayMessageCb;
+               vTable.display_warning = displayMessageCb;
+               vTable.general_state = generalStateChange;
+
+               listernerClass = (jclass)env->NewGlobalRef(env->GetObjectClass( alistener));
+               /*displayStatus(LinphoneCore lc,String message);*/
+               displayStatusId = env->GetMethodID(listernerClass,"displayStatus","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;)V");
+               /*void generalState(LinphoneCore lc,int state); */
+               generalStateId = env->GetMethodID(listernerClass,"generalState","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneCore$GeneralState;)V");
+
+               generalStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneCore$GeneralState"));
+               generalStateFromIntId = env->GetStaticMethodID(generalStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneCore$GeneralState;");
+       }
+
+       ~LinphoneCoreData() {
+               JNIEnv *env = 0;
+               jvm->AttachCurrentThread(&env,NULL);
+               env->DeleteGlobalRef(core);
+               env->DeleteGlobalRef(listener);
+               if (userdata) env->DeleteGlobalRef(userdata);
+               env->DeleteGlobalRef(listernerClass);
+               env->DeleteGlobalRef(generalStateClass);
+       }
+       jobject core;
+       jobject listener;
+       jobject userdata;
+
+       jclass listernerClass;
+       jclass generalStateClass;
+       jmethodID displayStatusId;
+       jmethodID generalStateId;
+       jmethodID generalStateFromIntId;
+       LinphoneCoreVTable vTable;
+
+       static void showInterfaceCb(LinphoneCore *lc) {
+
+       }
+       static  void inviteReceivedCb(LinphoneCore *lc, const char *from) {
+
+       }
+       static void byeReceivedCb(LinphoneCore *lc, const char *from) {
+
+       }
+       static void displayStatusCb(LinphoneCore *lc, const char *message) {
+               JNIEnv *env = 0;
+               jint result = jvm->AttachCurrentThread(&env,NULL);
+               if (result != 0) {
+                       ms_error("cannot attach VM\n");
+                       return;
+               }
+               LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc);
+               env->CallVoidMethod(lcData->listener,lcData->displayStatusId,lcData->core,env->NewStringUTF(message));
+       }
+       static void displayMessageCb(LinphoneCore *lc, const char *message) {
+
+       }
+       static void authInfoRequested(LinphoneCore *lc, const char *realm, const char *username) {
+
+       }
+       static void generalStateChange(LinphoneCore *lc, LinphoneGeneralState *gstate) {
+               JNIEnv *env = 0;
+               jint result = jvm->AttachCurrentThread(&env,NULL);
+               if (result != 0) {
+                       ms_error("cannot attach VM\n");
+                       return;
+               }
+               LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc);
+               env->CallVoidMethod(lcData->listener
+                                                       ,lcData->generalStateId
+                                                       ,lcData->core
+                                                       ,env->CallStaticObjectMethod(lcData->generalStateClass,lcData->generalStateFromIntId,gstate->new_state));
+       }
+
+};
+extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_newLinphoneCore(JNIEnv*  env
+               ,jobject  thiz
+               ,jobject jlistener
+               ,jstring juserConfig
+               ,jstring jfactoryConfig
+               ,jobject  juserdata){
+
+       const char* userConfig = env->GetStringUTFChars(juserConfig, NULL);
+       const char* factoryConfig = env->GetStringUTFChars(jfactoryConfig, NULL);
+       LinphoneCoreData* ldata = new LinphoneCoreData(env,thiz,jlistener,juserdata);
+       jlong nativePtr = (jlong)linphone_core_new(     &ldata->vTable
+                       ,userConfig
+                       ,factoryConfig
+                       ,ldata);
+       //clear auth info list
+       linphone_core_clear_all_auth_info((LinphoneCore*) nativePtr);
+       //clear existing proxy config
+       linphone_core_clear_proxy_config((LinphoneCore*) nativePtr);
+
+       env->ReleaseStringUTFChars(juserConfig, userConfig);
+       env->ReleaseStringUTFChars(jfactoryConfig, factoryConfig);
+       return nativePtr;
+}
+extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_clearProxyConfigs(JNIEnv* env, jobject thiz,jlong lc) {
+       linphone_core_clear_proxy_config((LinphoneCore*)lc);
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setDefaultProxyConfig( JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc
+               ,jlong pc) {
+       linphone_core_set_default_proxy((LinphoneCore*)lc,(LinphoneProxyConfig*)pc);
+}
+extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_getDefaultProxyConfig(        JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc) {
+       LinphoneProxyConfig *config=0;
+       linphone_core_get_default_proxy((LinphoneCore*)lc,&config);
+       return (jlong)config;
+}
+
+extern "C" int Java_org_linphone_core_LinphoneCoreImpl_addProxyConfig( JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc
+               ,jlong pc) {
+       return linphone_core_add_proxy_config((LinphoneCore*)lc,(LinphoneProxyConfig*)pc);
+}
+
+extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_clearAuthInfos(JNIEnv* env, jobject thiz,jlong lc) {
+       linphone_core_clear_all_auth_info((LinphoneCore*)lc);
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_addAuthInfo(   JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc
+               ,jlong pc) {
+       linphone_core_add_auth_info((LinphoneCore*)lc,(LinphoneAuthInfo*)pc);
+}
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_iterate(       JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc) {
+       linphone_core_iterate((LinphoneCore*)lc);
+}
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_invite(        JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc
+               ,jstring juri) {
+       const char* uri = env->GetStringUTFChars(juri, NULL);
+       linphone_core_invite((LinphoneCore*)lc,uri);
+       env->ReleaseStringUTFChars(juri, uri);
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_terminateCall( JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc) {
+       linphone_core_terminate_call((LinphoneCore*)lc,NULL);
+}
+extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_getRemoteAddress(     JNIEnv*  env
+               ,jobject  thiz
+               ,jlong lc) {
+       return (jlong)linphone_core_get_remote_uri((LinphoneCore*)lc);
+}
+
+
+
+//ProxyConfig
+
+extern "C" jlong Java_org_linphone_core_LinphoneProxyConfigImpl_newLinphoneProxyConfig(JNIEnv*  env,jobject  thiz) {
+       return  (jlong) linphone_proxy_config_new();
+}
+
+extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_delete(JNIEnv*  env,jobject  thiz,jlong ptr) {
+       linphone_proxy_config_destroy((LinphoneProxyConfig*)ptr);
+}
+extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_setIdentity(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jidentity) {
+       const char* identity = env->GetStringUTFChars(jidentity, NULL);
+       linphone_proxy_config_set_identity((LinphoneProxyConfig*)proxyCfg,identity);
+       env->ReleaseStringUTFChars(jidentity, identity);
+}
+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" 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" void Java_org_linphone_core_LinphoneProxyConfigImpl_edit(JNIEnv* env,jobject thiz,jlong proxyCfg) {
+       linphone_proxy_config_edit((LinphoneProxyConfig*)proxyCfg);
+}
+extern "C" void Java_org_linphone_core_LinphoneProxyConfigImpl_done(JNIEnv* env,jobject thiz,jlong proxyCfg) {
+       linphone_proxy_config_done((LinphoneProxyConfig*)proxyCfg);
+}
+extern "C" jstring Java_org_linphone_core_LinphoneProxyConfigImpl_normalizePhoneNumber(JNIEnv* env,jobject thiz,jlong proxyCfg,jstring jnumber) {
+       const char* number = env->GetStringUTFChars(jnumber, NULL);
+       int len = env->GetStringLength(jnumber);
+       char targetBuff[len];
+       linphone_proxy_config_normalize_number((LinphoneProxyConfig*)proxyCfg,number,targetBuff,sizeof(targetBuff));
+       jstring normalizedNumber = env->NewStringUTF(targetBuff);
+       env->ReleaseStringUTFChars(jnumber, number);
+       return normalizedNumber;
+}
+//Auth Info
+
+extern "C" jlong Java_org_linphone_core_LinphoneAuthInfoImpl_newLinphoneAuthInfo(JNIEnv* env
+               , jobject thiz
+               , jstring jusername
+               , jstring juserid
+               , jstring jpassword
+               , jstring jha1
+               , jstring jrealm) {
+
+       const char* username = env->GetStringUTFChars(jusername, NULL);
+       const char* password = env->GetStringUTFChars(jpassword, NULL);
+       jlong auth = (jlong)linphone_auth_info_new(username,NULL,password,NULL,NULL);
+
+       env->ReleaseStringUTFChars(jusername, username);
+       env->ReleaseStringUTFChars(jpassword, password);
+       return auth;
+
+}
+extern "C" void Java_org_linphone_core_LinphoneAuthInfoImpl_delete(JNIEnv* env
+               , jobject thiz
+               , jlong ptr) {
+       linphone_auth_info_destroy((LinphoneAuthInfo*)ptr);
+}
+
+//LinphoneAddress
+
+extern "C" jlong Java_org_linphone_core_LinphoneAddressImpl_newLinphoneAddressImpl(JNIEnv*  env
+                                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                                       ,jstring juri
+                                                                                                                                                                       ,jstring jdisplayName) {
+       const char* uri = env->GetStringUTFChars(juri, NULL);
+       LinphoneAddress* address = linphone_address_new(uri);
+       if (jdisplayName) {
+               const char* displayName = env->GetStringUTFChars(jdisplayName, NULL);
+               linphone_address_set_display_name(address,displayName);
+               env->ReleaseStringUTFChars(jdisplayName, displayName);
+       }
+       env->ReleaseStringUTFChars(juri, uri);
+
+       return  (jlong) address;
+}
+extern "C" void Java_org_linphone_core_LinphoneAddressImpl_delete(JNIEnv*  env
+                                                                                                                                               ,jobject  thiz
+                                                                                                                                               ,jlong ptr) {
+       linphone_address_destroy((LinphoneAddress*)ptr);
+}
+
+extern "C" jstring Java_org_linphone_core_LinphoneAddressImpl_getDisplayName(JNIEnv*  env
+                                                                                                                                               ,jobject  thiz
+                                                                                                                                               ,jlong ptr) {
+       const char* displayName = linphone_address_get_display_name((LinphoneAddress*)ptr);
+       if (displayName) {
+               return env->NewStringUTF(displayName);
+       } else {
+               return 0;
+       }
+}
+extern "C" jstring Java_org_linphone_core_LinphoneAddressImpl_getUserName(JNIEnv*  env
+                                                                                                                                               ,jobject  thiz
+                                                                                                                                               ,jlong ptr) {
+       const char* userName = linphone_address_get_username((LinphoneAddress*)ptr);
+       if (userName) {
+               return env->NewStringUTF(userName);
+       } else {
+               return 0;
+       }
+}
+extern "C" jstring Java_org_linphone_core_LinphoneAddressImpl_getDomain(JNIEnv*  env
+                                                                                                                                               ,jobject  thiz
+                                                                                                                                               ,jlong ptr) {
+       const char* domain = linphone_address_get_domain((LinphoneAddress*)ptr);
+       if (domain) {
+               return env->NewStringUTF(domain);
+       } else {
+               return 0;
+       }
+}
index ae7dfdcaea6d5fe6d4f44a6247b4ca506799e379..6373022261b4a529400a0c0e1661b4d3e5ebc7c5 160000 (submodule)
@@ -1 +1 @@
-Subproject commit ae7dfdcaea6d5fe6d4f44a6247b4ca506799e379
+Subproject commit 6373022261b4a529400a0c0e1661b4d3e5ebc7c5
diff --git a/oRTP b/oRTP
index 36773054c1e9a47029432a2e8540161dad426293..f17c378577cb00bced683e3588d115fc41003070 160000 (submodule)
--- a/oRTP
+++ b/oRTP
@@ -1 +1 @@
-Subproject commit 36773054c1e9a47029432a2e8540161dad426293
+Subproject commit f17c378577cb00bced683e3588d115fc41003070