Merge tag 'refs/tags/r4275.1_FP2_gms65_1.7.1' into fp2-sibon-staging-16.09.0rc1
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5240dbe..a18fabe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           package="com.fairphone.updater"
-    android:versionCode="33"
-    android:versionName="33" >
+    android:versionCode="35"
+    android:versionName="35" >
 
     <uses-sdk
         android:minSdkVersion="17"
@@ -94,4 +94,4 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/app/src/main/java/com/fairphone/updater/BetaEnabler.java b/app/src/main/java/com/fairphone/updater/BetaEnabler.java
index 806f60a..988c15b 100644
--- a/app/src/main/java/com/fairphone/updater/BetaEnabler.java
+++ b/app/src/main/java/com/fairphone/updater/BetaEnabler.java
@@ -14,7 +14,6 @@
 
 public class BetaEnabler extends Activity {
 
-    public static final String BETA_DISABLED = "0";
     public static final String BETA_ENABLED = "1";
     
     @Override
diff --git a/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java b/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java
index 3a18116..53f7f30 100644
--- a/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java
+++ b/app/src/main/java/com/fairphone/updater/FairphoneUpdater.java
@@ -635,7 +635,7 @@
         boolean update = false;
         if (mLatestVersion != null)
         {
-	        update = BETA_MODE_ENABLED || mLatestVersion.isNewerVersionThan(mDeviceVersion);
+	        update = mLatestVersion.isNewerVersionThan(mDeviceVersion);
         }
         return update;
     }
diff --git a/app/src/main/java/com/fairphone/updater/UpdaterService.java b/app/src/main/java/com/fairphone/updater/UpdaterService.java
index 04d12fc..3ead72a 100644
--- a/app/src/main/java/com/fairphone/updater/UpdaterService.java
+++ b/app/src/main/java/com/fairphone/updater/UpdaterService.java
@@ -138,11 +138,6 @@
 
     private static void showReinstallAlert(Context context)
     {
-        if ( FairphoneUpdater.BETA_MODE_ENABLED )
-        {
-            return;
-        }
-
 	    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
         
         //Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getResources().getString(R.string.supportAppStoreUrl)));
@@ -332,9 +327,17 @@
                 if(modelWithoutSpaces.startsWith(context.getResources().getString(R.string.FP1Model))) {
                     sb.append("&b_n=").append(URLEncoder.encode(currentVersion.getBuildNumber(), defaultCharset));
                 }
-                sb.append("&ota_v_n=").append(URLEncoder.encode(String.valueOf(currentVersion.getId()), defaultCharset));
-                sb.append("&beta=").append(FairphoneUpdater.BETA_MODE_ENABLED ? BetaEnabler.BETA_ENABLED : BetaEnabler.BETA_DISABLED);
-                sb.append("&dev=").append(FairphoneUpdater.DEV_MODE_ENABLED ? "1" : "0");
+                sb.append("&ap=").append(URLEncoder.encode(String.valueOf(currentVersion.getId()), defaultCharset));
+                if(modelWithoutSpaces.equals(context.getResources().getString(R.string.FP2Model))) {
+                    sb.append("&bp=").append(URLEncoder.encode(String.valueOf(currentVersion.getBasebandVersion()), defaultCharset));
+                }
+                sb.append("&u=").append(URLEncoder.encode(String.valueOf(Utils.getVersionCode(context.getApplicationContext())), defaultCharset));
+                if(FairphoneUpdater.BETA_MODE_ENABLED) {
+                    sb.append("&beta=").append(BetaEnabler.BETA_ENABLED);
+                }
+                if(FairphoneUpdater.DEV_MODE_ENABLED) {
+                    sb.append("&dev=").append("1");
+                }
             } catch (UnsupportedEncodingException e) {
                 Log.e(TAG, "Failed to add extra info on update request: "+e.getLocalizedMessage());
             }
@@ -343,12 +346,6 @@
 
     private static void setNotification(Context currentContext)
     {
-
-        if ( FairphoneUpdater.BETA_MODE_ENABLED )
-        {
-            return;
-        }
-        
         Context context = currentContext.getApplicationContext();
 
         NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
diff --git a/app/src/main/java/com/fairphone/updater/data/Version.java b/app/src/main/java/com/fairphone/updater/data/Version.java
index 2a206a0..1eab656 100644
--- a/app/src/main/java/com/fairphone/updater/data/Version.java
+++ b/app/src/main/java/com/fairphone/updater/data/Version.java
@@ -45,6 +45,8 @@
 
     private final List<Integer> mDependencies;
 
+    private String mBasebandVersion;
+
     public Version()
     {
         super();
@@ -52,6 +54,7 @@
         mAndroidVersion = "";
         mImageType = IMAGE_TYPE_FAIRPHONE;
         mErasePartitionsWarning = false;
+        mBasebandVersion = "";
     }
 
     public Version(Version other)
@@ -61,6 +64,7 @@
         mAndroidVersion = other.mAndroidVersion;
         mImageType = other.mImageType;
         mErasePartitionsWarning = other.hasEraseAllPartitionWarning();
+        mBasebandVersion = other.mBasebandVersion;
     }
 
     public void setEraseAllPartitionWarning()
@@ -110,6 +114,14 @@
         return description;
     }
 
+    public String getBasebandVersion() {
+        return mBasebandVersion;
+    }
+
+    public void setBasebandVersion(String basebandVersion) {
+        this.mBasebandVersion = basebandVersion;
+    }
+
 // --Commented out by Inspection START (06/02/2015 12:25):
 //    public String getAndroidVersion(Resources resources)
 //    {
diff --git a/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java b/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java
index 5334b7f..0511763 100644
--- a/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java
+++ b/app/src/main/java/com/fairphone/updater/data/VersionParserHelper.java
@@ -27,7 +27,7 @@
     private static final String CURRENT_VERSION_BUILD_NUMBER = "fairphone.ota.build_number";
     private static final String CURRENT_VERSION_IMAGE_TYPE = "fairphone.ota.image_type";
     private static final String CURRENT_VERSION_ID = "ro.build.version.incremental";                // for FP2
-
+    private static final String CURRENT_VERSION_BASEBAND_VERSION = "gsm.version.baseband";
 
     private static Version version;
     public static Version getDeviceVersion(Context context)
@@ -52,6 +52,7 @@
                 }
                 versionBuilder.setName(versionBuilder.getCurrentImageType());
                 versionBuilder.setBuildNumber(versionBuilder.getBuildNumberFromId());
+                versionBuilder.setBasebandVersion(getSystemData(context, CURRENT_VERSION_BASEBAND_VERSION, knownFPDevice));
             } else {
                 // FP1(U)
                 try
@@ -96,6 +97,9 @@
             case CURRENT_VERSION_ID:
                 result = Utils.getprop(CURRENT_VERSION_ID, useDefaults ? "" : ""); // TODO: define default value for fingerprint
                 break;
+            case CURRENT_VERSION_BASEBAND_VERSION:
+                result = Utils.getprop(CURRENT_VERSION_BASEBAND_VERSION, useDefaults ? "" : ""); // TODO: define default value for baseband version
+                break;
             default:
                 result = "";
                 break;
diff --git a/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java b/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
index f5eab9b..7fcfd91 100644
--- a/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
+++ b/app/src/main/java/com/fairphone/updater/fragments/ConfirmationPopupDialog.java
@@ -33,10 +33,9 @@
     private final DetailLayoutType mLayoutType;
     private Button mOkButton;
 	private final boolean mIsOSChange;
-    private final boolean mIsOlderVersion;
     private final boolean mHasEraseAllDataWarning;
 
-    public ConfirmationPopupDialog(String version, boolean isOSChange, boolean isOlderVersion, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
+    public ConfirmationPopupDialog(String version, boolean isOSChange, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
             ConfirmationPopupDialogListener callback)
     {
         // Empty constructor required for DialogFragment
@@ -46,7 +45,6 @@
         mCallback = callback;
         mLayoutType = layoutType;
         mIsOSChange = isOSChange;
-        mIsOlderVersion = isOlderVersion;
         mHasEraseAllDataWarning = hasEraseAllDataWarning;
     }
 
@@ -81,10 +79,6 @@
         {
             versionTypeText.setText(R.string.a_different_os_from_the_current);
         }
-        else if (mIsOlderVersion)
-        {
-            versionTypeText.setText(R.string.an_older_version_of_os);
-        }
 
         TextView eraseAllDataWarning = (TextView) view.findViewById(R.id.erase_all_data_warning_text);
 
diff --git a/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java b/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java
index 1dcfb0a..2761fe8 100644
--- a/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java
+++ b/app/src/main/java/com/fairphone/updater/fragments/VersionDetailFragment.java
@@ -57,7 +57,6 @@
     private DownloadManager mDownloadManager;
     private DetailLayoutType mDetailLayoutType;
     private boolean mIsOSChange;
-    private boolean mIsOlderVersion;
     private Store mSelectedStore;
     private final boolean mIsVersion;
 
@@ -240,35 +239,28 @@
                 mHeaderText = resources.getString(R.string.install_update);
                 mVersionDetailsTitle = resources.getString(R.string.update_version);
                 mIsOSChange = false;
-                mIsOlderVersion = false;
                 break;
 
             case ANDROID:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
                 mVersionDetailsTitle = resources.getString(R.string.new_os);
                 mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_FAIRPHONE);
-                mIsOlderVersion =
-                        (deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP) && deviceVersion.isNewerVersionThan(mSelectedVersion));
                 break;
             case APP_STORE:
                 mHeaderText = FairphoneUpdater.getStoreName(mSelectedStore);
                 mVersionDetailsTitle = resources.getString(R.string.install);
                 mIsOSChange = false;
-                mIsOlderVersion = false;
                 break;
             case LATEST_FAIRPHONE:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
                 mVersionDetailsTitle = resources.getString(R.string.latest_version);
                 mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP);
-                mIsOlderVersion = false;
                 break;
             case FAIRPHONE:
             default:
                 mHeaderText = mSelectedVersion.getHumanReadableName();
-                mVersionDetailsTitle = resources.getString(R.string.older_version);
+                mVersionDetailsTitle = resources.getString(R.string.additional_download);
                 mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP);
-                mIsOlderVersion =
-                        (deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_FAIRPHONE) && deviceVersion.isNewerVersionThan(mSelectedVersion));
                 break;
         }
     }
@@ -406,7 +398,7 @@
     {
         FragmentManager fm = getActivity().getSupportFragmentManager();
         ConfirmationPopupDialog popupDialog =
-                new ConfirmationPopupDialog(version, mIsOSChange, mIsOlderVersion, hasEraseAllDataWarning, mDetailLayoutType, listener);
+                new ConfirmationPopupDialog(version, mIsOSChange, hasEraseAllDataWarning, mDetailLayoutType, listener);
         popupDialog.show(fm, version);
     }
 
@@ -414,7 +406,7 @@
     {
         if (mIsVersion && mSelectedVersion != null)
         {
-            if (mIsOSChange || mIsOlderVersion)
+            if (mIsOSChange)
             {
                 showPopupDialog(mSelectedVersion.getHumanReadableName(), mSelectedVersion.hasEraseAllPartitionWarning(),
                         new ConfirmationPopupDialogListener()
diff --git a/app/src/main/java/com/fairphone/updater/tools/Utils.java b/app/src/main/java/com/fairphone/updater/tools/Utils.java
index c8b3930..cd757dc 100644
--- a/app/src/main/java/com/fairphone/updater/tools/Utils.java
+++ b/app/src/main/java/com/fairphone/updater/tools/Utils.java
@@ -24,6 +24,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.ConnectivityManager;
@@ -692,4 +693,19 @@
         mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
         System.exit(0);
     }
+
+    public static int getVersionCode(Context context) {
+        PackageManager packageManager = context.getPackageManager();
+        String packageName = context.getPackageName();
+
+        int versionCode = 0;
+
+        try {
+            versionCode = packageManager.getPackageInfo(packageName, 0).versionCode;
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, "App versionCode cannot be retrieved", e);
+        }
+
+        return versionCode;
+    }
 }
diff --git a/app/src/main/res/layout/fragment_other_os_options_android_list.xml b/app/src/main/res/layout/fragment_other_os_options_android_list.xml
index 4ff987e..e4343b3 100644
--- a/app/src/main/res/layout/fragment_other_os_options_android_list.xml
+++ b/app/src/main/res/layout/fragment_other_os_options_android_list.xml
@@ -48,7 +48,7 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="@dimen/main_padding_small"
             android:layout_marginTop="@dimen/main_padding"
-            android:text="@string/older_versions"/>
+            android:text="@string/additional_downloads"/>
 
         <ScrollView
             android:id="@+id/version_list_scroll"
diff --git a/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml b/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml
index ef265ab..a840fb6 100644
--- a/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml
+++ b/app/src/main/res/layout/fragment_other_os_options_fairphone_list.xml
@@ -49,7 +49,7 @@
             android:layout_height="wrap_content"
             android:layout_marginBottom="@dimen/main_padding_small"
             android:layout_marginTop="@dimen/main_padding"
-            android:text="@string/older_versions"/>
+            android:text="@string/additional_downloads"/>
 
         <ScrollView
             android:id="@+id/version_list_scroll"
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 1fd8f00..6a4c82c 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Neues Betriebssystem</string>
     <string name="no_space_available_cache_message">Kein Platz verfügbar im Cache</string>
     <string name="no_space_available_sd_card_message">Kein Platz verfügbar auf der SD Karte</string>
-    <string name="older_version">ältere Version</string>
+    <string name="additional_download">Weiterer Download</string>
     <string name="older_version_os_install_confirmation">Bist du sicher, dass du weitermachen willst?</string>
     <string name="older_version_os_install_confirmation_checkbox">Ich kenne und verstehe alle Konsequenzen dieser Installation</string>
-    <string name="older_versions">Ältere Versionen</string>
+    <string name="additional_downloads">Weitere Downloads</string>
     <string name="os_update_has_started_message">Das Update hat begonnen. Dies kann ein wenig dauern, abhängig von der Gechwindigkeit deiner Internet Verbindung.</string>
     <string name="other_os_options">Betrete den fortgeschrittenen Modus</string>
     <string name="please_be_patient">Bitte gedulde dich noch ein wenig&#8230;</string>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 6add2c8..9ea37b7 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Nuevo sistema operativo</string>
     <string name="no_space_available_cache_message">No hay espacio disponible en /cache.</string>
     <string name="no_space_available_sd_card_message">No hay espacio disponible en la tarjeta SD.</string>
-    <string name="older_version">Versión Anterior</string>
+    <string name="additional_download">Descarga adicional</string>
     <string name="older_version_os_install_confirmation">¿Seguro que deseas continuar?</string>
     <string name="older_version_os_install_confirmation_checkbox">Comprendo y acepto las consecuencias de esta instalación.</string>
-    <string name="older_versions">Versiones anteriores</string>
+    <string name="additional_downloads">Descarga(s) adicionales</string>
     <string name="os_update_has_started_message">Actualización en proceso. Puede tardar unos minutos dependiendo de la velocidad de tu red.</string>
     <string name="other_os_options">Accede al modo avanzado</string>
     <string name="please_be_patient">Un momento, por favor&#8230;</string>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 855b5ec..e606a55 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Nouveau système d’exploitation</string>
     <string name="no_space_available_cache_message">Pas d\'espace disponible dans le cache (/cache).</string>
     <string name="no_space_available_sd_card_message">Pas d\'espace disponible sur la carte SD.</string>
-    <string name="older_version">Version dépassée</string>
+    <string name="additional_download">Autre téléchargement</string>
     <string name="older_version_os_install_confirmation">Êtes-vous certain de vouloir continuer ?</string>
     <string name="older_version_os_install_confirmation_checkbox">Je comprends et j\'accepte toutes les implications de cette installation.</string>
-    <string name="older_versions">Anciennes versions</string>
+    <string name="additional_downloads">Autre(s) téléchargement(s)</string>
     <string name="os_update_has_started_message">La mise à jour a démarré. Selon la vitesse de votre connexion réseau, cette opération peut prendre un certain temps.</string>
     <string name="other_os_options">Passer en mode avancé</string>
     <string name="please_be_patient">Veuillez patienter&#8230;</string>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 6abe6e6..4be3687 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -38,10 +38,10 @@
     <string name="new_os">Nieuw besturingssysteem</string>
     <string name="no_space_available_cache_message">Geen ruimte beschikbaar in /cache</string>
     <string name="no_space_available_sd_card_message">Geen ruimte beschikbaar op de SD kaart</string>
-    <string name="older_version">Oudere versie</string>
+    <string name="additional_download">Overige download</string>
     <string name="older_version_os_install_confirmation">Weet je zeker dat je wilt doorgaan?</string>
     <string name="older_version_os_install_confirmation_checkbox">Ik ken en begrijp alle implicaties van het uitvoeren van deze installatie</string>
-    <string name="older_versions">Oudere versies</string>
+    <string name="additional_downloads">Overige download(s)</string>
     <string name="os_update_has_started_message">De update is gestart. Dit kan enige tijd duren, afhankelijk van de snelheid van je netwerkverbinding.</string>
     <string name="other_os_options">Open de geavanceerde modus</string>
     <string name="please_be_patient">Een ogenblik geduld&#8230;</string>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 277c222..b3de181 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -36,12 +36,12 @@
     <string name="invalid_signature_download_message">Ficheiro inválido descarregado: Assinatura errada</string>
     <string name="latest_version">Versão mais recente</string>
     <string name="new_os">Novo Sistema Operativo</string>
-    <string name="no_space_available_cache_message">Sem espaço disponível em /cache. A abortar&#8230;</string>
-    <string name="no_space_available_sd_card_message">Sem espaço disponível na memória. A abortar&#8230;</string>
-    <string name="older_version">Versão anterior</string>
+    <string name="no_space_available_cache_message">Sem espaço disponível em /cache. A abortar…</string>
+    <string name="no_space_available_sd_card_message">Sem espaço disponível na memória. A abortar…</string>
+    <string name="additional_download">Download adicional</string>
     <string name="older_version_os_install_confirmation">Tem a certeza de que quer prosseguir?</string>
     <string name="older_version_os_install_confirmation_checkbox">Tomei conhecimento das implicações desta instalação</string>
-    <string name="older_versions">Versões anteriores</string>
+    <string name="additional_downloads">Downloads adicionais</string>
     <string name="os_update_has_started_message">A actualização foi iniciada. Isto pode levar algum tempo, dependendo da velocidade da sua ligação.</string>
     <string name="other_os_options">Entrar no modo avançado</string>
     <string name="please_be_patient">Por favor aguarde&#8230;</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7a34978..9a949b2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -39,10 +39,10 @@
     <string name="new_os">New operating system</string>
     <string name="no_space_available_cache_message">No space available on /cache.</string>
     <string name="no_space_available_sd_card_message">No space available on SD card.</string>
-    <string name="older_version">Older version</string>
+    <string name="additional_download">Additional download</string>
     <string name="older_version_os_install_confirmation">Are you sure you want to continue?</string>
     <string name="older_version_os_install_confirmation_checkbox">I know and understand all implications of performing this installation</string>
-    <string name="older_versions">Older versions</string>
+    <string name="additional_downloads">Additional download(s)</string>
     <string name="os_update_has_started_message">The update has started. This may take some time depending on your network connection speed.</string>
     <string name="other_os_options">Enter advanced mode</string>
     <string name="please_be_patient">Just a moment&#8230;</string>