diff --git a/.gitmodules b/.gitmodules
index f35db9c64..3694a9625 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -55,6 +55,9 @@
[submodule "submodules/belle-sip"]
path = submodules/belle-sip
url = gitosis@git.linphone.org:belle-sip
-[submodule "submodules/externals/libantlr3c"]
- path = submodules/externals/libantlr3c
- url = git://git.linphone.org/libantlr3c.git
+[submodule "submodules/externals/antlr3"]
+ path = submodules/externals/antlr3
+ url = git://git.linphone.org/antlr3.git
+[submodule "submodules/externals/libxml2"]
+ path = submodules/externals/libxml2
+ url = git://git.gnome.org/libxml2
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 159b3a8f7..7e794a99a 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,8 @@ PATCH_FFMPEG=$(shell cd submodules/externals/ffmpeg && git status | grep neon)
LINPHONE_VERSION=$(shell cd submodules/linphone && git describe)
LINPHONE_ANDROID_DEBUG_VERSION=$(shell git describe)
ANDROID_MOST_RECENT_TARGET=$(shell android list target -c | grep android | tail -n1)
+
+BUILD_REMOTE_PROVISIONING=1
BUILD_X264=0
BUILD_AMRNB=full # 0, light or full
BUILD_AMRWB=0
@@ -91,20 +93,20 @@ prepare-mediastreamer2:
if ! [ -e yuv2rgb.fs.h ]; then echo "yuv2rgb.fs.h creation error (do you have 'xxd' application installed ?)"; exit 1; fi
-LIBANLTR3C_SRC_DIR=$(TOPDIR)/submodules/externals/libantlr3c
-LIBANTLR3C_BUILD_DIR=$(LIBANTLR3C_SRC_DIR)
-prepare-libantlr3c: $(TOPDIR)/submodules/externals/build/libantlr3c/antlr3config.h
- cp $(TOPDIR)/submodules/externals/build/libantlr3c/antlr3config.h $(LIBANLTR3C_SRC_DIR)
+ANLTR3_SRC_DIR=$(TOPDIR)/submodules/externals/antlr3/runtime/C/include/
+ANTLR3_BUILD_DIR=$(ANTLR3_SRC_DIR)
+prepare-antlr3: $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h
+ cp $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h $(ANLTR3_SRC_DIR)
BELLESIP_SRC_DIR=$(TOPDIR)/submodules/belle-sip
BELLESIP_BUILD_DIR=$(BELLESIP_SRC_DIR)
prepare-belle-sip:
$(ANTLR) -make -fo $(BELLESIP_BUILD_DIR)/src/ $(BELLESIP_SRC_DIR)/src/belle_sip_message.g $(BELLESIP_SRC_DIR)/src/belle_sdp.g
-prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 prepare-libantlr3c prepare-belle-sip
+prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 prepare-antlr3 prepare-belle-sip
generate-libs:
- $(NDK_PATH)/ndk-build LINPHONE_VERSION=$(LINPHONE_VERSION) BUILD_X264=$(BUILD_X264) BUILD_AMRNB=$(BUILD_AMRNB) BUILD_AMRWB=$(BUILD_AMRWB) BUILD_GPLV3_ZRTP=$(BUILD_GPLV3_ZRTP) BUILD_SILK=$(BUILD_SILK) BUILD_G729=$(BUILD_G729) BUILD_TUNNEL=$(BUILD_TUNNEL) BUILD_WEBRTC_AECM=$(BUILD_WEBRTC_AECM) BUILD_FOR_X86=$(BUILD_FOR_X86) USE_JAVAH=$(USE_JAVAH) -j$(NUMCPUS)
+ $(NDK_PATH)/ndk-build LINPHONE_VERSION=$(LINPHONE_VERSION) BUILD_REMOTE_PROVISIONING=$(BUILD_REMOTE_PROVISIONING) BUILD_X264=$(BUILD_X264) BUILD_AMRNB=$(BUILD_AMRNB) BUILD_AMRWB=$(BUILD_AMRWB) BUILD_GPLV3_ZRTP=$(BUILD_GPLV3_ZRTP) BUILD_SILK=$(BUILD_SILK) BUILD_G729=$(BUILD_G729) BUILD_TUNNEL=$(BUILD_TUNNEL) BUILD_WEBRTC_AECM=$(BUILD_WEBRTC_AECM) BUILD_FOR_X86=$(BUILD_FOR_X86) USE_JAVAH=$(USE_JAVAH) -j$(NUMCPUS)
update-project:
$(SDK_PATH)/android update project --path . --target $(ANDROID_MOST_RECENT_TARGET)
diff --git a/check_tools.sh b/check_tools.sh
index 0a163e8e9..c0a553400 100755
--- a/check_tools.sh
+++ b/check_tools.sh
@@ -11,22 +11,7 @@ if [ -z ${JAVA} ]; then
fi
# Check antlr
-antlr_java_prefixes="/usr/share/java /usr/local/share/java /usr/share/java /opt/local/share/java"
-antlr_jar="no"
-for antlr_java_prefix in ${antlr_java_prefixes}
-do
- antlr_jar=${antlr_java_prefix}/antlr.jar
- if [ ! -f ${antlr_jar} ]; then
- antlr_jar="no"
- else
- break;
- fi
-done
-if test ${antlr_jar} = "no" ; then
- echo "Could not find antlr.jar. Please install antlr3";
- exit -1;
-fi
-ANTLR="${JAVA} -jar \"${antlr_jar}\"";
+ANTLR="${JAVA} -jar \"submodules/externals/antlr3/antlr-3.4-complete.jar\"";
# Check NDK
NDK=$(which ndk-build)
diff --git a/custom_rules.xml b/custom_rules.xml
index 20abc8648..cda9d1e46 100644
--- a/custom_rules.xml
+++ b/custom_rules.xml
@@ -6,6 +6,9 @@
+
@@ -35,6 +38,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/default.properties b/default.properties
deleted file mode 100644
index e69de29bb..000000000
diff --git a/jni/Android.mk b/jni/Android.mk
index c787daade..e6f2000dc 100755
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -36,6 +36,10 @@ SRTP_C_INCLUDE= \
endif
#endif
+#libxml2
+ifeq ($(BUILD_REMOTE_PROVISIONING),1)
+include $(linphone-root-dir)/submodules/externals/build/libxml2/Android.mk
+endif
# Speex
ifeq ($(wildcard $(linphone-root-dir)/submodules/externals/prebuilts/speex.mk),)
@@ -52,7 +56,7 @@ include $(linphone-root-dir)/submodules/externals/prebuilts/gsm.mk
endif
-include $(linphone-root-dir)/submodules/externals/build/libantlr3c/Android.mk
+include $(linphone-root-dir)/submodules/externals/build/antlr3/Android.mk
include $(linphone-root-dir)/submodules/belle-sip/build/android/Android.mk
# Openssl
diff --git a/jni/Application.mk b/jni/Application.mk
index a0cd63919..233eb64df 100644
--- a/jni/Application.mk
+++ b/jni/Application.mk
@@ -1,7 +1,12 @@
APP_PROJECT_PATH := $(call my-dir)/../
-APP_MODULES :=libspeex libgsm libortp libantlr3c libbellesip libmediastreamer2 liblinphone liblinphonenoneon libneon
+APP_MODULES :=libspeex libgsm libortp antlr3 libbellesip libmediastreamer2 liblinphone liblinphonenoneon libneon
APP_STL := stlport_static
+#remote provisioning
+ifeq ($(BUILD_REMOTE_PROVISIONING),1)
+APP_MODULES += libxml2 libxml2lpc liblpc2xml
+endif
+
#default values
ifeq ($(BUILD_AMRNB),)
BUILD_AMRNB=light
diff --git a/project.properties b/project.properties
index 6eb97abcb..019cc5583 100644
--- a/project.properties
+++ b/project.properties
@@ -11,5 +11,5 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
-target=android-16
+target=android-17
android.library=false
diff --git a/res/layout/main.xml b/res/layout/main.xml
index 42f657cea..5d2482705 100644
--- a/res/layout/main.xml
+++ b/res/layout/main.xml
@@ -109,7 +109,7 @@
android:layout_alignParentTop="true"
android:background="@drawable/missed_calls_bg"
android:gravity="center"
- android:textSize="20dp"
+ android:textSize="20sp"
android:visibility="gone" />
@@ -143,7 +143,7 @@
android:layout_alignParentTop="true"
android:background="@drawable/missed_calls_bg"
android:gravity="center"
- android:textSize="20dp"
+ android:textSize="20sp"
android:visibility="gone" />
diff --git a/res/layout/status.xml b/res/layout/status.xml
index 356aa4c41..fab32ec51 100644
--- a/res/layout/status.xml
+++ b/res/layout/status.xml
@@ -216,19 +216,6 @@
android:adjustViewBounds="true"
android:visibility="gone"
android:layout_alignParentRight="true" />
-
-
diff --git a/res/values-FR/strings.xml b/res/values-FR/strings.xml
index 592f64ae7..172868bc6 100644
--- a/res/values-FR/strings.xml
+++ b/res/values-FR/strings.xml
@@ -372,4 +372,6 @@
Manqué
Émis
Reçu
+
+ Actif en arrière plan
diff --git a/res/values-RU/strings.xml b/res/values-RU/strings.xml
index afc5572aa..8e399dde9 100755
--- a/res/values-RU/strings.xml
+++ b/res/values-RU/strings.xml
@@ -64,8 +64,8 @@
Положить трубку
Объединить
Перевести
-
Видео
+
Клавиатура
Конференция
@@ -259,7 +259,7 @@
В процессе регистрации
Ошибка регистрации
- Номер адреса
+ Номер или Адрес
Конференция
Входящий звонок
Черновик
@@ -321,8 +321,8 @@
Помощник Настройки учётной записи
Этот помощник поможет Вам настроить учётную запись SIP для звонков.
Создать учётную запись на linphone.org
- У меня уже есть учётная запись на linphone.org
- У меня уже есть учётная запись SIP
+ Уже есть учётная запись на linphone.org
+ Уже есть учётная запись SIP
Введите имя пользователя и пароль учётной записи linphone.org
Введите имя пользователя, пароль и сервер учётной записи SIP
Применить
@@ -411,7 +411,14 @@
Пользователь не найден
Несовместимые параметры потока
У ваш собеседника низкая скорость подключения, видео не может быть использовано
+ Сеть недоступна
Сегодня
Вчера
+
+ Пропущенный
+ Исходящий
+ Входящий
+
+ Фоновый режим
diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml
index ca264ee07..96e14b649 100644
--- a/res/values/non_localizable_custom.xml
+++ b/res/values/non_localizable_custom.xml
@@ -32,7 +32,7 @@
false
true
- true
+ false
true
true
true
diff --git a/res/values/non_localizable_defaults.xml b/res/values/non_localizable_defaults.xml
index c74e03e9b..5af444e96 100644
--- a/res/values/non_localizable_defaults.xml
+++ b/res/values/non_localizable_defaults.xml
@@ -51,6 +51,7 @@
false
30
https://www.linphone.org:444/upload.php
+
0
3600
Linphone Android
@@ -61,4 +62,5 @@
false
true
+ true
\ No newline at end of file
diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml
index 78ed6a0bc..cf20690e0 100644
--- a/res/values/non_localizable_strings.xml
+++ b/res/values/non_localizable_strings.xml
@@ -92,6 +92,7 @@
none
srtp
zrtp
+ pref_background_mode_key
push_reg_id_key
push_sender_id_key
@@ -99,6 +100,7 @@
pref_auto_accept_friends_key
pref_image_sharing_server_key
+ pref_remote_provisioning_key
pref_video_port_key
pref_audio_port_key
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7a16ad8eb..26560350a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -392,6 +392,7 @@
wants to share it\'s presence status with you and be aware of yours.
Echo canceller calibration in progress
Sharing server
+ Remote provisioning
Delete contact
SIP address
@@ -419,4 +420,6 @@
Missed
Outgoing
Incoming
+
+ Background mode
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index e75359ed2..16c231ede 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -283,6 +283,11 @@
android:title="@string/pref_debug"
android:defaultValue="@bool/pref_debug_default"/>
+
+
+
+
diff --git a/src/org/linphone/InCallActivity.java b/src/org/linphone/InCallActivity.java
index 994262ebb..5c56d344c 100644
--- a/src/org/linphone/InCallActivity.java
+++ b/src/org/linphone/InCallActivity.java
@@ -323,7 +323,7 @@ public class InCallActivity extends FragmentActivity implements
if (id == R.id.video) {
isVideoEnabled = !isVideoEnabled;
- switchVideo(isVideoEnabled);
+ switchVideo(isVideoEnabled, true);
}
else if (id == R.id.micro) {
toggleMicro();
@@ -386,7 +386,7 @@ public class InCallActivity extends FragmentActivity implements
});
}
- private void switchVideo(final boolean displayVideo) {
+ private void switchVideo(final boolean displayVideo, final boolean isInitiator) {
final LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
if (call == null) {
return;
@@ -396,10 +396,11 @@ public class InCallActivity extends FragmentActivity implements
@Override
public void run() {
if (!displayVideo) {
- LinphoneCallParams params = call.getCurrentParamsCopy();
- params.setVideoEnabled(false);
- LinphoneManager.getLc().updateCall(call, params);
-
+ if (isInitiator) {
+ LinphoneCallParams params = call.getCurrentParamsCopy();
+ params.setVideoEnabled(false);
+ LinphoneManager.getLc().updateCall(call, params);
+ }
showAudioView();
} else {
if (!call.getRemoteParams().isLowBandwidthEnabled()) {
@@ -965,7 +966,7 @@ public class InCallActivity extends FragmentActivity implements
boolean isVideoEnabledInCall = call.getCurrentParamsCopy().getVideoEnabled();
if (isVideoEnabledInCall != isVideoEnabled) {
isVideoEnabled = isVideoEnabledInCall;
- switchVideo(isVideoEnabled);
+ switchVideo(isVideoEnabled, false);
}
// The following should not be needed except some devices need it (e.g. Galaxy S).
diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java
index 0f7bcfbd1..ffae79063 100644
--- a/src/org/linphone/LinphoneActivity.java
+++ b/src/org/linphone/LinphoneActivity.java
@@ -1242,6 +1242,10 @@ public class LinphoneActivity extends FragmentActivity implements
@Override
protected void onResume() {
super.onResume();
+
+ if (!LinphoneService.isReady()) {
+ startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class));
+ }
// Remove to avoid duplication of the listeners
LinphoneManager.removeListener(this);
@@ -1255,6 +1259,7 @@ public class LinphoneActivity extends FragmentActivity implements
chatStorage = new ChatStorage(this);
updateMissedChatCount();
+
displayMissedCalls(LinphoneManager.getLc().getMissedCallsCount());
if (LinphoneManager.getLc().getCalls().length > 0) {
@@ -1360,7 +1365,11 @@ public class LinphoneActivity extends FragmentActivity implements
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (currentFragment == FragmentsAvailable.DIALER) {
- if (LinphoneUtils.onKeyBackGoHome(this, keyCode, event)) {
+ boolean isBackgroundModeActive = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(getString(R.string.pref_background_mode_key), getResources().getBoolean(R.bool.pref_background_mode_default));
+ if (!isBackgroundModeActive) {
+ stopService(new Intent(Intent.ACTION_MAIN).setClass(this, LinphoneService.class));
+ finish();
+ } else if (LinphoneUtils.onKeyBackGoHome(this, keyCode, event)) {
return true;
}
} else if (!isTablet()) {
diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java
index e158e332e..4eed24eb2 100644
--- a/src/org/linphone/LinphoneManager.java
+++ b/src/org/linphone/LinphoneManager.java
@@ -139,7 +139,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
private String lastLcStatusMessage;
private String basePath;
private static boolean sExited;
- private boolean videoInitiator = false;
private WakeLock mIncallWakeLock;
@@ -152,21 +151,13 @@ public final class LinphoneManager implements LinphoneCoreListener {
public static void removeListener(LinphoneSimpleListener listener) {
simpleListeners.remove(listener);
}
-
- public boolean isVideoInitiator() {
- return videoInitiator;
- }
-
- public void setVideoInitiator(boolean b) {
- videoInitiator = b;
- }
-
private LinphoneManager(final Context c, LinphoneServiceListener listener) {
sExited=false;
mServiceContext = c;
mListenerDispatcher = new ListenerDispatcher(listener);
basePath = c.getFilesDir().getAbsolutePath();
+ mLPConfigXsd = basePath + "/lpconfig.xsd";
mLinphoneInitialConfigFile = basePath + "/linphonerc";
mLinphoneConfigFile = basePath + "/.linphonerc";
mLinphoneRootCaFile = basePath + "/rootca.pem";
@@ -186,6 +177,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
private static final int LINPHONE_VOLUME_STREAM = STREAM_VOICE_CALL;
private static final int dbStep = 4;
/** Called when the activity is first created. */
+ private final String mLPConfigXsd;
private final String mLinphoneInitialConfigFile;
private final String mLinphoneRootCaFile;
private final String mLinphoneConfigFile;
@@ -255,6 +247,10 @@ public final class LinphoneManager implements LinphoneCoreListener {
public static synchronized final LinphoneCore getLc() {
return getInstance().mLc;
}
+
+ public String getLPConfigXsdPath() {
+ return mLPConfigXsd;
+ }
public void newOutgoingCall(AddressType address) {
String to = address.getText().toString();
@@ -417,9 +413,15 @@ public final class LinphoneManager implements LinphoneCoreListener {
copyAssetsFromPackage();
//traces alway start with traces enable to not missed first initialization
- boolean isDebugLogEnabled = !(mR.getBoolean(R.bool.disable_every_log)) && getPrefBoolean(R.string.pref_debug_key, mR.getBoolean(R.bool.pref_debug_default));
+ boolean isDebugLogEnabled = true;//!(mR.getBoolean(R.bool.disable_every_log)) && getPrefBoolean(R.string.pref_debug_key, mR.getBoolean(R.bool.pref_debug_default));
LinphoneCoreFactory.instance().setDebugMode(isDebugLogEnabled, getString(R.string.app_name));
+ // Try to get remote provisioning
+ String remote_provisioning = (getPrefString(R.string.pref_remote_provisioning_key, mR.getString(R.string.pref_remote_provisioning_default)));
+ if(remote_provisioning != null && remote_provisioning.length() > 0 && RemoteProvisioning.isAvailable()) {
+ RemoteProvisioning.download(remote_provisioning, mLinphoneConfigFile);
+ }
+
mLc = LinphoneCoreFactory.instance().createLinphoneCore(this, mLinphoneConfigFile, mLinphoneInitialConfigFile, null);
mLc.getConfig().setInt("sip", "store_auth_info", 0);
mLc.setContext(c);
@@ -472,6 +474,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
copyIfNotExist(R.raw.ringback,mRingbackSoundFile);
copyIfNotExist(R.raw.toy_mono,mPauseSoundFile);
copyFromPackage(R.raw.linphonerc, new File(mLinphoneInitialConfigFile).getName());
+ copyIfNotExist(R.raw.lpconfig, new File(mLPConfigXsd).getName());
copyIfNotExist(R.raw.rootca, new File(mLinphoneRootCaFile).getName());
}
private void copyIfNotExist(int ressourceId,String target) throws IOException {
@@ -1255,7 +1258,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
public boolean addVideo() {
LinphoneCall call = mLc.getCurrentCall();
enableCamera(call, true);
- setVideoInitiator(true);
return reinviteWithVideo();
}
@@ -1416,7 +1418,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
public void onCallStateChanged(LinphoneCall call, State state, String message) {
if (state == State.OutgoingInit || state == State.IncomingReceived) {
- setVideoInitiator(state == State.OutgoingInit);
boolean sendCamera = mLc.getConferenceSize() == 0;
enableCamera(call, sendCamera);
}
diff --git a/src/org/linphone/LinphoneUtils.java b/src/org/linphone/LinphoneUtils.java
index ed4b7911e..822a3fbe7 100644
--- a/src/org/linphone/LinphoneUtils.java
+++ b/src/org/linphone/LinphoneUtils.java
@@ -262,7 +262,7 @@ public final class LinphoneUtils {
LinphoneCall.State state = call.getState();
return state == LinphoneCall.State.Connected ||
- state == LinphoneCall.State.CallUpdated ||
+ state == LinphoneCall.State.CallUpdating ||
state == LinphoneCall.State.CallUpdatedByRemote ||
state == LinphoneCall.State.StreamsRunning ||
state == LinphoneCall.State.Resuming;
diff --git a/src/org/linphone/RemoteProvisioning.java b/src/org/linphone/RemoteProvisioning.java
new file mode 100644
index 000000000..44cc2f48e
--- /dev/null
+++ b/src/org/linphone/RemoteProvisioning.java
@@ -0,0 +1,112 @@
+package org.linphone;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.linphone.core.LinphoneCoreFactory;
+import org.linphone.core.LpConfig;
+import org.linphone.mediastream.Log;
+import org.linphone.tools.Xml2Lpc;
+
+
+
+public class RemoteProvisioning {
+ static private class RemoteProvisioningThread extends Thread {
+ String mRPAddress;
+ String mSchema;
+ String mLocalLP;
+
+ public RemoteProvisioningThread(final String RPAddress, final String LocalLP, final String schema) {
+ this.mRPAddress = RPAddress;
+ this.mLocalLP = LocalLP;
+ this.mSchema = schema;
+ }
+
+ public void run() {
+ try {
+ Log.i("Download remote provisioning file from " + mRPAddress);
+ URL url = new URL(mRPAddress);
+ URLConnection ucon = url.openConnection();
+ InputStream is = ucon.getInputStream();
+ BufferedInputStream bis = new BufferedInputStream(is);
+ byte[] contents = new byte[1024];
+
+ int bytesRead = 0;
+ String strFileContents = "";
+ while( (bytesRead = bis.read(contents)) != -1){
+ strFileContents = new String(contents, 0, bytesRead);
+ }
+ Log.i("Download Success");
+
+ // Initialize converter
+ LpConfig lp = LinphoneCoreFactory.instance().createLpConfig(mLocalLP);
+ Xml2Lpc x2l = new Xml2Lpc();
+ if(x2l.setXmlString(strFileContents) != 0) {
+ Log.e("Error during remote provisioning file parsing");
+ return;
+ }
+
+ // Check if needed
+ if(mSchema != null) {
+ if(x2l.setXsdFile(mSchema) != 0) {
+ Log.e("Error during schema file parsing");
+ }
+ if(x2l.validate() != 0) {
+ Log.e("Can't validate the schema of remote provisioning file");
+ return;
+ }
+ }
+
+ // Convert
+ if(x2l.convert(lp) != 0) {
+ Log.e("Can't convert remote provisioning file to LinphoneConfig");
+ return;
+ }
+ Log.i("Remote provisioning ok");
+ } catch (MalformedURLException e) {
+ Log.e("Invalid remote provisioning url: " + e.getLocalizedMessage());
+ } catch (IOException e) {
+ Log.e(e);
+ } finally {
+ synchronized(this) {
+ this.notify();
+ }
+ }
+ }
+ };
+
+ static void download(String address, String lpfile, boolean check) {
+ try {
+ String schema = null;
+ if(check) {
+ schema = LinphoneManager.getInstance().getLPConfigXsdPath();
+ }
+ RemoteProvisioningThread thread = new RemoteProvisioningThread(address, lpfile, schema);
+ synchronized(thread) {
+ thread.start();
+ thread.wait();
+ }
+ } catch (InterruptedException e) {
+ Log.e(e);
+ }
+ }
+
+ static void download(String address, String lpfile) {
+ download(address, lpfile, true);
+ }
+
+ static boolean isAvailable() {
+ if(Xml2Lpc.isAvailable()) {
+ Log.i("RemoteProvisioning is available");
+ return true;
+ } else {
+ Log.i("RemoteProvisioning is NOT available");
+ return false;
+ }
+ }
+
+}
diff --git a/src/org/linphone/StatusFragment.java b/src/org/linphone/StatusFragment.java
index 77a4dc801..8f27c5e3b 100644
--- a/src/org/linphone/StatusFragment.java
+++ b/src/org/linphone/StatusFragment.java
@@ -43,7 +43,6 @@ import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
-import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
@@ -61,7 +60,7 @@ import android.widget.Toast;
public class StatusFragment extends Fragment {
private Handler mHandler = new Handler();
private Handler refreshHandler = new Handler();
- private TextView statusText, exit;
+ private TextView statusText;
private ImageView statusLed, callQuality, encryption, background;
private ListView sliderContentAccounts;
private TableLayout callStats;
@@ -98,17 +97,6 @@ public class StatusFragment extends Fragment {
});
sliderContentAccounts = (ListView) view.findViewById(R.id.accounts);
-
- exit = (TextView) view.findViewById(R.id.exit);
- exit.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (LinphoneActivity.isInstanciated()) {
- LinphoneActivity.instance().exit();
- }
- return true;
- }
- });
// We create it once to not delay the first display
populateSliderContent();
@@ -330,7 +318,6 @@ public class StatusFragment extends Fragment {
refreshStatusItems(call, call.getCurrentParamsCopy().getVideoEnabled());
}
- exit.setVisibility(View.GONE);
statusText.setVisibility(View.GONE);
encryption.setVisibility(View.VISIBLE);
@@ -338,7 +325,6 @@ public class StatusFragment extends Fragment {
statusLed.setImageResource(R.drawable.led_connected);
statusText.setText(getString(R.string.status_connected));
} else {
- exit.setVisibility(View.VISIBLE);
statusText.setVisibility(View.VISIBLE);
background.setVisibility(View.VISIBLE);
encryption.setVisibility(View.GONE);
@@ -554,8 +540,30 @@ public class StatusFragment extends Fragment {
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()) {
SharedPreferences.Editor editor = prefs.edit();
- int selectedPosition = (Integer) checkBox.getTag();
- editor.putInt(getString(R.string.pref_default_account_key), selectedPosition);
+ String tag = (String) checkBox.getTag();
+ String sipAddress = tag.split(":")[0];
+ int accountPosition = Integer.parseInt(tag.split(":")[1]);
+
+ int nbAccounts = prefs.getInt(getString(R.string.pref_extra_accounts), 0);
+ int accountIndex = 0;
+ for (int i = 0; i < nbAccounts; i++)
+ {
+ String keyUsername = getString(R.string.pref_username_key);
+ String keyDomain = getString(R.string.pref_domain_key);
+ if (i > 0) {
+ keyUsername += i + "";
+ keyDomain += i + "";
+ }
+ String username = prefs.getString(keyUsername, "");
+ String domain = prefs.getString(keyDomain, "");
+ String identity = username + "@" + domain;
+ if (identity.equals(sipAddress)) {
+ accountIndex = i;
+ break;
+ }
+ }
+
+ editor.putInt(getString(R.string.pref_default_account_key), accountIndex);
editor.commit();
for (CheckBox cb : checkboxes) {
@@ -566,7 +574,7 @@ public class StatusFragment extends Fragment {
checkBox.setEnabled(false);
LinphoneCore lc = LinphoneManager.getLc();
- lc.setDefaultProxyConfig((LinphoneProxyConfig) getItem(selectedPosition));
+ lc.setDefaultProxyConfig((LinphoneProxyConfig) getItem(accountPosition));
if (lc.isNetworkReachable()) {
lc.refreshRegisters();
}
@@ -616,17 +624,40 @@ public class StatusFragment extends Fragment {
CheckBox isDefault = (CheckBox) view.findViewById(R.id.Default);
checkboxes.add(isDefault);
- isDefault.setTag(position);
+ isDefault.setTag(sipAddress + ":" + position);
isDefault.setChecked(false);
isDefault.setEnabled(true);
- if (prefs != null && prefs.getInt(getString(R.string.pref_default_account_key), 0) == position) {
- isDefault.setChecked(true);
- isDefault.setEnabled(false);
- status.setImageResource(getStatusIconResource(lpc.getState(), true));
+ if (prefs != null) {
+ int nbAccounts = prefs.getInt(getString(R.string.pref_extra_accounts), 0);
+ int accountIndex = 0;
+ for (int i = 0; i < nbAccounts; i++)
+ {
+ String keyUsername = getString(R.string.pref_username_key);
+ String keyDomain = getString(R.string.pref_domain_key);
+ if (i > 0) {
+ keyUsername += i + "";
+ keyDomain += i + "";
+ }
+ String username = prefs.getString(keyUsername, "");
+ String domain = prefs.getString(keyDomain, "");
+ String id = username + "@" + domain;
+ if (id.equals(sipAddress)) {
+ accountIndex = i;
+ break;
+ }
+ }
+ if (prefs.getInt(getString(R.string.pref_default_account_key), 0) == accountIndex) {
+ isDefault.setChecked(true);
+ isDefault.setEnabled(false);
+ status.setImageResource(getStatusIconResource(lpc.getState(), true));
+ } else {
+ status.setImageResource(getStatusIconResource(lpc.getState(), false));
+ }
} else {
status.setImageResource(getStatusIconResource(lpc.getState(), false));
}
+
isDefault.setOnClickListener(defaultListener);
return view;
diff --git a/submodules/belle-sip b/submodules/belle-sip
index 75eaecd44..2a172e581 160000
--- a/submodules/belle-sip
+++ b/submodules/belle-sip
@@ -1 +1 @@
-Subproject commit 75eaecd44d4f4d3c2e42b0d4c350052452112ceb
+Subproject commit 2a172e5811851ffa4c3cc17648b9d0423b296bb6
diff --git a/submodules/externals/antlr3 b/submodules/externals/antlr3
new file mode 160000
index 000000000..9ea1af70b
--- /dev/null
+++ b/submodules/externals/antlr3
@@ -0,0 +1 @@
+Subproject commit 9ea1af70be642604d53e0e1f6096b9ca1ddae8a5
diff --git a/submodules/externals/build/libantlr3c/Android.mk b/submodules/externals/build/antlr3/Android.mk
similarity index 73%
rename from submodules/externals/build/libantlr3c/Android.mk
rename to submodules/externals/build/antlr3/Android.mk
index 21cd8269c..73f0e2594 100644
--- a/submodules/externals/build/libantlr3c/Android.mk
+++ b/submodules/externals/build/antlr3/Android.mk
@@ -1,13 +1,12 @@
-LOCAL_PATH:= $(call my-dir)/../../libantlr3c/src
+LOCAL_PATH:= $(call my-dir)/../../antlr3/runtime/C/src
include $(CLEAR_VARS)
-LOCAL_MODULE:= libantlr3c
+LOCAL_MODULE:= antlr3
LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/../../../externals/libantlr3c/ \
- $(LOCAL_PATH)/../../../externals/libantlr3c/include \
-
+ $(LOCAL_PATH)/../../../../externals/antlr3 \
+ $(LOCAL_PATH)/../include
LOCAL_SRC_FILES := \
antlr3baserecognizer.c \
antlr3basetree.c \
@@ -30,10 +29,8 @@ LOCAL_SRC_FILES := \
antlr3parser.c \
antlr3rewritestreams.c \
antlr3string.c \
- antlr3stringstream.c \
antlr3tokenstream.c \
antlr3treeparser.c \
- antlr3ucs2inputstream.c
include $(BUILD_STATIC_LIBRARY)
diff --git a/submodules/externals/build/libantlr3c/antlr3config.h b/submodules/externals/build/antlr3/antlr3config.h
similarity index 98%
rename from submodules/externals/build/libantlr3c/antlr3config.h
rename to submodules/externals/build/antlr3/antlr3config.h
index 4b63a803c..4b39e1ca5 100644
--- a/submodules/externals/build/libantlr3c/antlr3config.h
+++ b/submodules/externals/build/antlr3/antlr3config.h
@@ -98,19 +98,19 @@
#define PACKAGE_NAME "libantlr3c"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libantlr3c 3.2"
+#define PACKAGE_STRING "libantlr3c 3.4-beta3"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libantlr3c"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "3.2"
+#define PACKAGE_VERSION "3.4-beta3"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
-#define VERSION "3.2"
+#define VERSION "3.4-beta3"
/* Define for Solaris 2.5.1 so the uint32_t typedef from ,
, or is not used. If the typedef were allowed, the
diff --git a/submodules/externals/build/libxml2/Android.mk b/submodules/externals/build/libxml2/Android.mk
new file mode 100644
index 000000000..98ea6d108
--- /dev/null
+++ b/submodules/externals/build/libxml2/Android.mk
@@ -0,0 +1,68 @@
+LOCAL_PATH:= $(call my-dir)/../../libxml2
+
+# We need to build this for both the device (as a shared library)
+# and the host (as a static library for tools to use).
+
+common_SRC_FILES := \
+ SAX.c \
+ entities.c \
+ encoding.c \
+ error.c \
+ parserInternals.c \
+ parser.c \
+ tree.c \
+ hash.c \
+ list.c \
+ xmlIO.c \
+ xmlmemory.c \
+ uri.c \
+ valid.c \
+ xlink.c \
+ HTMLparser.c \
+ HTMLtree.c \
+ debugXML.c \
+ xpath.c \
+ xpointer.c \
+ xinclude.c \
+ nanohttp.c \
+ nanoftp.c \
+ DOCBparser.c \
+ catalog.c \
+ globals.c \
+ threads.c \
+ c14n.c \
+ xmlstring.c \
+ xmlregexp.c \
+ xmlschemas.c \
+ xmlschemastypes.c \
+ xmlunicode.c \
+ xmlreader.c \
+ relaxng.c \
+ dict.c \
+ SAX2.c \
+ legacy.c \
+ chvalid.c \
+ pattern.c \
+ xmlsave.c \
+ xmlmodule.c \
+ xmlwriter.c \
+ schematron.c
+
+common_C_INCLUDES += \
+ $(LOCAL_PATH)/include \
+ $(LOCAL_PATH)/../build/libxml2 \
+
+# For the device
+# =====================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(common_SRC_FILES)
+LOCAL_C_INCLUDES += $(common_C_INCLUDES)
+LOCAL_SHARED_LIBRARIES += $(common_SHARED_LIBRARIES)
+#LOCAL_CFLAGS += -fvisibility=hidden
+
+LOCAL_MODULE:= libxml2
+
+include $(BUILD_SHARED_LIBRARY)
+
diff --git a/submodules/externals/build/libxml2/config.h b/submodules/externals/build/libxml2/config.h
new file mode 100644
index 000000000..c70d020ac
--- /dev/null
+++ b/submodules/externals/build/libxml2/config.h
@@ -0,0 +1,311 @@
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_ANSIDECL_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Whether struct sockaddr::__ss_family exists */
+/* #undef HAVE_BROKEN_SS_FAMILY */
+
+/* Define to 1 if you have the `class' function. */
+/* #undef HAVE_CLASS */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DLFCN_H 1
+
+/* Have dlopen based dso */
+#define HAVE_DLOPEN /**/
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_DL_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `finite' function. */
+#define HAVE_FINITE 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `fpclass' function. */
+/* #undef HAVE_FPCLASS */
+
+/* Define to 1 if you have the `fprintf' function. */
+#define HAVE_FPRINTF 1
+
+/* Define to 1 if you have the `fp_class' function. */
+/* #undef HAVE_FP_CLASS */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_FP_CLASS_H */
+
+/* Define to 1 if you have the `ftime' function. */
+#define HAVE_FTIME 1
+
+/* Define if getaddrinfo is there */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_IEEEFP_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_INTTYPES_H_H */
+
+/* Define if isinf is there */
+#define HAVE_ISINF /**/
+
+/* Define if isnan is there */
+#define HAVE_ISNAN /**/
+
+/* Define to 1 if you have the `isnand' function. */
+/* #undef HAVE_ISNAND */
+
+/* Define if history library is there (-lhistory) */
+/* #undef HAVE_LIBHISTORY */
+
+/* Have compression library */
+/* #undef HAVE_LIBLZMA */
+
+/* Define if pthread library is there (-lpthread) */
+/* #undef HAVE_LIBPTHREAD */
+
+/* Define if readline library is there (-lreadline) */
+/* #undef HAVE_LIBREADLINE */
+
+/* Have compression library */
+/* #undef HAVE_LIBZ */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_LZMA_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_MALLOC_H 1 Already defined in AndroidConfig.h */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_MATH_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_NAN_H */
+
+/* Define to 1 if you have the header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_POLL_H 1
+
+/* Define to 1 if you have the `printf' function. */
+#define HAVE_PRINTF 1
+
+/* Define if is there */
+/* #undef HAVE_PTHREAD_H */
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_RESOLV_H 1
+
+/* Have shl_load based dso */
+/* #undef HAVE_SHLLOAD */
+
+/* Define to 1 if you have the `signal' function. */
+#define HAVE_SIGNAL 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `sprintf' function. */
+#define HAVE_SPRINTF 1
+
+/* Define to 1 if you have the `srand' function. */
+#define HAVE_SRAND 1
+
+/* Define to 1 if you have the `sscanf' function. */
+#define HAVE_SSCANF 1
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strndup' function. */
+#define HAVE_STRNDUP 1
+
+/* Define to 1 if you have the header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the header file, and it defines `DIR'.
+ */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIMEB_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* Whether va_copy() is available */
+#define HAVE_VA_COPY 1
+
+/* Define to 1 if you have the `vfprintf' function. */
+#define HAVE_VFPRINTF 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if you have the `vsprintf' function. */
+#define HAVE_VSPRINTF 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_ZLIB_H */
+
+/* Define to 1 if you have the `_stat' function. */
+/* #undef HAVE__STAT */
+
+/* Whether __va_copy() is available */
+/* #undef HAVE___VA_COPY */
+
+/* Define as const if the declaration of iconv() needs const. */
+/* #undef ICONV_CONST */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+#define PACKAGE "libxml2"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* Define to 1 if the C compiler supports function prototypes. */
+#define PROTOTYPES 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Support for IPv6 */
+/* #undef SUPPORT_IP6 */
+
+/* Version number of package */
+#define VERSION "2.7.8"
+
+/* Determine what socket length (socklen_t) data type is */
+#define XML_SOCKLEN_T socklen_t
+
+/* Using the Win32 Socket implementation */
+/* #undef _WINSOCKAPI_ */
+
+/* Define like PROTOTYPES; this can be used by system headers. */
+#define __PROTOTYPES 1
+
+/* Win32 Std C name mangling work-around */
+/* #undef snprintf */
+
+/* ss_family is not defined here, use __ss_family instead */
+/* #undef ss_family */
+
+/* Win32 Std C name mangling work-around */
+/* #undef vsnprintf */
diff --git a/submodules/externals/build/libxml2/libxml/xmlversion.h b/submodules/externals/build/libxml2/libxml/xmlversion.h
new file mode 100644
index 000000000..c44433755
--- /dev/null
+++ b/submodules/externals/build/libxml2/libxml/xmlversion.h
@@ -0,0 +1,476 @@
+/*
+ * Summary: compile-time version informations
+ * Description: compile-time version informations for the XML library
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Daniel Veillard
+ */
+
+#ifndef __XML_VERSION_H__
+#define __XML_VERSION_H__
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * use those to be sure nothing nasty will happen if
+ * your library and includes mismatch
+ */
+#ifndef LIBXML2_COMPILING_MSCCDEF
+XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
+#endif /* LIBXML2_COMPILING_MSCCDEF */
+
+/**
+ * LIBXML_DOTTED_VERSION:
+ *
+ * the version string like "1.2.3"
+ */
+#define LIBXML_DOTTED_VERSION "2.8.0"
+
+/**
+ * LIBXML_VERSION:
+ *
+ * the version number: 1.2.3 value is 10203
+ */
+#define LIBXML_VERSION 20800
+
+/**
+ * LIBXML_VERSION_STRING:
+ *
+ * the version number string, 1.2.3 value is "10203"
+ */
+#define LIBXML_VERSION_STRING "20800"
+
+/**
+ * LIBXML_VERSION_EXTRA:
+ *
+ * extra version information, used to show a CVS compilation
+ */
+#define LIBXML_VERSION_EXTRA "-GITv2.8.0"
+
+/**
+ * LIBXML_TEST_VERSION:
+ *
+ * Macro to check that the libxml version in use is compatible with
+ * the version the software has been compiled against
+ */
+#define LIBXML_TEST_VERSION xmlCheckVersion(20800);
+
+#ifndef VMS
+#if 0
+/**
+ * WITH_TRIO:
+ *
+ * defined if the trio support need to be configured in
+ */
+#define WITH_TRIO
+#else
+/**
+ * WITHOUT_TRIO:
+ *
+ * defined if the trio support should not be configured in
+ */
+#define WITHOUT_TRIO
+#endif
+#else /* VMS */
+/**
+ * WITH_TRIO:
+ *
+ * defined if the trio support need to be configured in
+ */
+#define WITH_TRIO 1
+#endif /* VMS */
+
+/**
+ * LIBXML_THREAD_ENABLED:
+ *
+ * Whether the thread support is configured in
+ */
+#if 1
+#if defined(_REENTRANT) || defined(__MT__) || \
+ (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L))
+#define LIBXML_THREAD_ENABLED
+#endif
+#endif
+
+/**
+ * LIBXML_TREE_ENABLED:
+ *
+ * Whether the DOM like tree manipulation API support is configured in
+ */
+#if 1
+#define LIBXML_TREE_ENABLED
+#endif
+
+/**
+ * LIBXML_OUTPUT_ENABLED:
+ *
+ * Whether the serialization/saving support is configured in
+ */
+#if 1
+#define LIBXML_OUTPUT_ENABLED
+#endif
+
+/**
+ * LIBXML_PUSH_ENABLED:
+ *
+ * Whether the push parsing interfaces are configured in
+ */
+#if 1
+#define LIBXML_PUSH_ENABLED
+#endif
+
+/**
+ * LIBXML_READER_ENABLED:
+ *
+ * Whether the xmlReader parsing interface is configured in
+ */
+#if 1
+#define LIBXML_READER_ENABLED
+#endif
+
+/**
+ * LIBXML_PATTERN_ENABLED:
+ *
+ * Whether the xmlPattern node selection interface is configured in
+ */
+#if 1
+#define LIBXML_PATTERN_ENABLED
+#endif
+
+/**
+ * LIBXML_WRITER_ENABLED:
+ *
+ * Whether the xmlWriter saving interface is configured in
+ */
+#if 1
+#define LIBXML_WRITER_ENABLED
+#endif
+
+/**
+ * LIBXML_SAX1_ENABLED:
+ *
+ * Whether the older SAX1 interface is configured in
+ */
+#if 1
+#define LIBXML_SAX1_ENABLED
+#endif
+
+/**
+ * LIBXML_FTP_ENABLED:
+ *
+ * Whether the FTP support is configured in
+ */
+#if 1
+#define LIBXML_FTP_ENABLED
+#endif
+
+/**
+ * LIBXML_HTTP_ENABLED:
+ *
+ * Whether the HTTP support is configured in
+ */
+#if 1
+#define LIBXML_HTTP_ENABLED
+#endif
+
+/**
+ * LIBXML_VALID_ENABLED:
+ *
+ * Whether the DTD validation support is configured in
+ */
+#if 1
+#define LIBXML_VALID_ENABLED
+#endif
+
+/**
+ * LIBXML_HTML_ENABLED:
+ *
+ * Whether the HTML support is configured in
+ */
+#if 1
+#define LIBXML_HTML_ENABLED
+#endif
+
+/**
+ * LIBXML_LEGACY_ENABLED:
+ *
+ * Whether the deprecated APIs are compiled in for compatibility
+ */
+#if 1
+#define LIBXML_LEGACY_ENABLED
+#endif
+
+/**
+ * LIBXML_C14N_ENABLED:
+ *
+ * Whether the Canonicalization support is configured in
+ */
+#if 1
+#define LIBXML_C14N_ENABLED
+#endif
+
+/**
+ * LIBXML_CATALOG_ENABLED:
+ *
+ * Whether the Catalog support is configured in
+ */
+#if 1
+#define LIBXML_CATALOG_ENABLED
+#endif
+
+/**
+ * LIBXML_DOCB_ENABLED:
+ *
+ * Whether the SGML Docbook support is configured in
+ */
+#if 1
+#define LIBXML_DOCB_ENABLED
+#endif
+
+/**
+ * LIBXML_XPATH_ENABLED:
+ *
+ * Whether XPath is configured in
+ */
+#if 1
+#define LIBXML_XPATH_ENABLED
+#endif
+
+/**
+ * LIBXML_XPTR_ENABLED:
+ *
+ * Whether XPointer is configured in
+ */
+#if 1
+#define LIBXML_XPTR_ENABLED
+#endif
+
+/**
+ * LIBXML_XINCLUDE_ENABLED:
+ *
+ * Whether XInclude is configured in
+ */
+#if 1
+#define LIBXML_XINCLUDE_ENABLED
+#endif
+
+/**
+ * LIBXML_ICONV_ENABLED:
+ *
+ * Whether iconv support is available
+ */
+#if 0
+#define LIBXML_ICONV_ENABLED
+#endif
+
+/**
+ * LIBXML_ICU_ENABLED:
+ *
+ * Whether icu support is available
+ */
+#if 0
+#define LIBXML_ICU_ENABLED
+#endif
+
+/**
+ * LIBXML_ISO8859X_ENABLED:
+ *
+ * Whether ISO-8859-* support is made available in case iconv is not
+ */
+#if 1
+#define LIBXML_ISO8859X_ENABLED
+#endif
+
+/**
+ * LIBXML_DEBUG_ENABLED:
+ *
+ * Whether Debugging module is configured in
+ */
+#if 1
+#define LIBXML_DEBUG_ENABLED
+#endif
+
+/**
+ * DEBUG_MEMORY_LOCATION:
+ *
+ * Whether the memory debugging is configured in
+ */
+#if 0
+#define DEBUG_MEMORY_LOCATION
+#endif
+
+/**
+ * LIBXML_DEBUG_RUNTIME:
+ *
+ * Whether the runtime debugging is configured in
+ */
+#if 0
+#define LIBXML_DEBUG_RUNTIME
+#endif
+
+/**
+ * LIBXML_UNICODE_ENABLED:
+ *
+ * Whether the Unicode related interfaces are compiled in
+ */
+#if 1
+#define LIBXML_UNICODE_ENABLED
+#endif
+
+/**
+ * LIBXML_REGEXP_ENABLED:
+ *
+ * Whether the regular expressions interfaces are compiled in
+ */
+#if 1
+#define LIBXML_REGEXP_ENABLED
+#endif
+
+/**
+ * LIBXML_AUTOMATA_ENABLED:
+ *
+ * Whether the automata interfaces are compiled in
+ */
+#if 1
+#define LIBXML_AUTOMATA_ENABLED
+#endif
+
+/**
+ * LIBXML_EXPR_ENABLED:
+ *
+ * Whether the formal expressions interfaces are compiled in
+ */
+#if 1
+#define LIBXML_EXPR_ENABLED
+#endif
+
+/**
+ * LIBXML_SCHEMAS_ENABLED:
+ *
+ * Whether the Schemas validation interfaces are compiled in
+ */
+#if 1
+#define LIBXML_SCHEMAS_ENABLED
+#endif
+
+/**
+ * LIBXML_SCHEMATRON_ENABLED:
+ *
+ * Whether the Schematron validation interfaces are compiled in
+ */
+#if 1
+#define LIBXML_SCHEMATRON_ENABLED
+#endif
+
+/**
+ * LIBXML_MODULES_ENABLED:
+ *
+ * Whether the module interfaces are compiled in
+ */
+#if 1
+#define LIBXML_MODULES_ENABLED
+/**
+ * LIBXML_MODULE_EXTENSION:
+ *
+ * the string suffix used by dynamic modules (usually shared libraries)
+ */
+#define LIBXML_MODULE_EXTENSION ".so"
+#endif
+
+/**
+ * LIBXML_ZLIB_ENABLED:
+ *
+ * Whether the Zlib support is compiled in
+ */
+#if 1
+#define LIBXML_ZLIB_ENABLED
+#endif
+
+/**
+ * LIBXML_LZMA_ENABLED:
+ *
+ * Whether the Lzma support is compiled in
+ */
+#if 0
+#define LIBXML_LZMA_ENABLED
+#endif
+
+#ifdef __GNUC__
+#ifdef HAVE_ANSIDECL_H
+#include
+#endif
+
+/**
+ * ATTRIBUTE_UNUSED:
+ *
+ * Macro used to signal to GCC unused function parameters
+ */
+
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED __attribute__((unused))
+#endif
+
+/**
+ * LIBXML_ATTR_ALLOC_SIZE:
+ *
+ * Macro used to indicate to GCC this is an allocator function
+ */
+
+#ifndef LIBXML_ATTR_ALLOC_SIZE
+# if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+# define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x)))
+# else
+# define LIBXML_ATTR_ALLOC_SIZE(x)
+# endif
+#else
+# define LIBXML_ATTR_ALLOC_SIZE(x)
+#endif
+
+/**
+ * LIBXML_ATTR_FORMAT:
+ *
+ * Macro used to indicate to GCC the parameter are printf like
+ */
+
+#ifndef LIBXML_ATTR_FORMAT
+# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args)))
+# else
+# define LIBXML_ATTR_FORMAT(fmt,args)
+# endif
+#else
+# define LIBXML_ATTR_FORMAT(fmt,args)
+#endif
+
+#else /* ! __GNUC__ */
+/**
+ * ATTRIBUTE_UNUSED:
+ *
+ * Macro used to signal to GCC unused function parameters
+ */
+#define ATTRIBUTE_UNUSED
+/**
+ * LIBXML_ATTR_ALLOC_SIZE:
+ *
+ * Macro used to indicate to GCC this is an allocator function
+ */
+#define LIBXML_ATTR_ALLOC_SIZE(x)
+/**
+ * LIBXML_ATTR_FORMAT:
+ *
+ * Macro used to indicate to GCC the parameter are printf like
+ */
+#define LIBXML_ATTR_FORMAT(fmt,args)
+#endif /* __GNUC__ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif
+
+
diff --git a/submodules/externals/libantlr3c b/submodules/externals/libantlr3c
deleted file mode 160000
index eb738fb40..000000000
--- a/submodules/externals/libantlr3c
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit eb738fb406d2b75e7e94457da800c38d8bfc3c71
diff --git a/submodules/externals/libxml2 b/submodules/externals/libxml2
new file mode 160000
index 000000000..c943f708f
--- /dev/null
+++ b/submodules/externals/libxml2
@@ -0,0 +1 @@
+Subproject commit c943f708f1853de4eb15e5a94cf0b35d108da87a
diff --git a/submodules/linphone b/submodules/linphone
index 5ac4b44a7..e9398144e 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 5ac4b44a7f44ea52ce2720ed21fc2fceaad7f6c1
+Subproject commit e9398144e97f7423ef107f9c7fda0e695e0412fd