Blame SOURCES/gnome-control-center-wwan-5g-support.patch

5c516b
From 960ebdb61c947ca9b3e3cde60c45a514b4da5113 Mon Sep 17 00:00:00 2001
5c516b
From: Dirk Su <dirk.su@canonical.com>
5c516b
Date: Mon, 1 Aug 2022 20:06:51 +0000
5c516b
Subject: [PATCH] panels: wwan: Add WWAN 5G connection support
5c516b
5c516b
---
5c516b
 panels/wwan/cc-wwan-device.c      | 151 +++++++++++++++++++++++++++---
5c516b
 panels/wwan/cc-wwan-mode-dialog.c |   5 +
5c516b
 2 files changed, 145 insertions(+), 11 deletions(-)
5c516b
5c516b
diff --git a/panels/wwan/cc-wwan-device.c b/panels/wwan/cc-wwan-device.c
5c516b
index 55a627a5a..3d5fc8b83 100644
5c516b
--- a/panels/wwan/cc-wwan-device.c
5c516b
+++ b/panels/wwan/cc-wwan-device.c
5c516b
@@ -992,19 +992,148 @@ cc_wwan_device_get_string_from_mode (CcWwanDevice *self,
5c516b
   g_return_val_if_fail (CC_IS_WWAN_DEVICE (self), NULL);
5c516b
   g_return_val_if_fail (allowed != 0, NULL);
5c516b
 
5c516b
+  if (allowed == MM_MODEM_MODE_2G)
5c516b
+    return g_strdup (_("2G Only"));
5c516b
+
5c516b
+  if (allowed == MM_MODEM_MODE_3G)
5c516b
+    return g_strdup (_("3G Only"));
5c516b
+
5c516b
+  if (allowed == MM_MODEM_MODE_4G)
5c516b
+    return g_strdup (_("4G Only"));
5c516b
+
5c516b
+  if (allowed == MM_MODEM_MODE_5G)
5c516b
+    return g_strdup (_("5G Only"));
5c516b
+
5c516b
   str = g_string_sized_new (10);
5c516b
 
5c516b
-  if (allowed & MM_MODEM_MODE_2G)
5c516b
-    APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_2G, preferred, "2G");
5c516b
-  if (allowed & MM_MODEM_MODE_3G)
5c516b
-    APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_3G, preferred, "3G");
5c516b
-  if (allowed & MM_MODEM_MODE_4G)
5c516b
-    APPEND_MODE_TO_STRING (str, MM_MODEM_MODE_4G, preferred, "4G");
5c516b
-
5c516b
-  if (allowed == MM_MODEM_MODE_2G ||
5c516b
-      allowed == MM_MODEM_MODE_3G ||
5c516b
-      allowed == MM_MODEM_MODE_4G)
5c516b
-    g_string_append (str, _(" Only"));
5c516b
+  if (allowed & MM_MODEM_MODE_2G &&
5c516b
+      allowed & MM_MODEM_MODE_3G &&
5c516b
+      allowed & MM_MODEM_MODE_4G &&
5c516b
+      allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("2G, 3G, 4G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("2G, 3G, 4G (Preferred), 5G"));
5c516b
+      else if (preferred & MM_MODEM_MODE_3G)
5c516b
+        g_string_append (str, _("2G, 3G (Preferred), 4G, 5G"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 3G, 4G, 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 3G, 4G, 5G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_2G &&
5c516b
+      allowed & MM_MODEM_MODE_3G &&
5c516b
+      allowed & MM_MODEM_MODE_4G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("2G, 3G, 4G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_3G)
5c516b
+        g_string_append (str, _("2G, 3G (Preferred), 4G"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 3G, 4G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 3G, 4G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_3G &&
5c516b
+      allowed & MM_MODEM_MODE_4G &&
5c516b
+      allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("3G, 4G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("3G, 4G (Preferred), 5G"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("3G (Preferred), 4G, 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("3G, 4G, 5G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_2G &&
5c516b
+      allowed & MM_MODEM_MODE_4G &&
5c516b
+      allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("2G, 4G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("2G, 4G (Preferred), 5G"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 4G, 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 4G, 5G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_2G &&
5c516b
+      allowed & MM_MODEM_MODE_3G &&
5c516b
+      allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("2G, 3G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_3G)
5c516b
+        g_string_append (str, _("2G, 3G (Preferred), 5G"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 3G, 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 3G, 5G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_3G &&
5c516b
+           allowed & MM_MODEM_MODE_4G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("3G, 4G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_3G)
5c516b
+        g_string_append (str, _("3G (Preferred), 4G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("3G, 4G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_2G &&
5c516b
+           allowed & MM_MODEM_MODE_4G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("2G, 4G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 4G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 4G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_2G &&
5c516b
+           allowed & MM_MODEM_MODE_3G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_3G)
5c516b
+        g_string_append (str, _("2G, 3G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 3G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 3G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_2G &&
5c516b
+           allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("2G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_2G)
5c516b
+        g_string_append (str, _("2G (Preferred), 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("2G, 5G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_3G &&
5c516b
+           allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("3G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_3G)
5c516b
+        g_string_append (str, _("3G (Preferred), 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("3G, 5G"));
5c516b
+    }
5c516b
+  else if (allowed & MM_MODEM_MODE_4G &&
5c516b
+           allowed & MM_MODEM_MODE_5G)
5c516b
+    {
5c516b
+      if (preferred & MM_MODEM_MODE_5G)
5c516b
+        g_string_append (str, _("4G, 5G (Preferred)"));
5c516b
+      else if (preferred & MM_MODEM_MODE_4G)
5c516b
+        g_string_append (str, _("4G (Preferred), 5G"));
5c516b
+      else
5c516b
+        g_string_append (str, _("4G, 5G"));
5c516b
+    }
5c516b
 
5c516b
   if (str->len == 0)
5c516b
     return g_string_free (str, TRUE);
5c516b
diff --git a/panels/wwan/cc-wwan-mode-dialog.c b/panels/wwan/cc-wwan-mode-dialog.c
5c516b
index e5917a41c..5dbdd884e 100644
5c516b
--- a/panels/wwan/cc-wwan-mode-dialog.c
5c516b
+++ b/panels/wwan/cc-wwan-mode-dialog.c
5c516b
@@ -163,12 +163,17 @@ cc_wwan_mode_dialog_update (CcWwanModeDialog *self)
5c516b
 {
5c516b
   MMModemMode allowed;
5c516b
   MMModemMode modes[][2] = {
5c516b
+    {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, MM_MODEM_MODE_5G},
5c516b
+    {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, 0},
5c516b
+    {MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, MM_MODEM_MODE_5G},
5c516b
+    {MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G, 0},
5c516b
     {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, MM_MODEM_MODE_4G},
5c516b
     {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, 0},
5c516b
     {MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, MM_MODEM_MODE_4G},
5c516b
     {MM_MODEM_MODE_3G | MM_MODEM_MODE_4G, 0},
5c516b
     {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G, MM_MODEM_MODE_3G},
5c516b
     {MM_MODEM_MODE_2G | MM_MODEM_MODE_3G, 0},
5c516b
+    {MM_MODEM_MODE_5G, 0},
5c516b
     {MM_MODEM_MODE_4G, 0},
5c516b
     {MM_MODEM_MODE_3G, 0},
5c516b
     {MM_MODEM_MODE_2G, 0},
5c516b
-- 
5c516b
2.37.1
5c516b