indicator-network should show a "4G+" or "LTE+" when the phone connected with a LTE Advanced network

Bug #1585659 reported by Pat McGowan
20
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Confirmed
High
Alejandro J. Cura
Ubuntu UX
New
Undecided
Unassigned
indicator-network (Ubuntu)
Confirmed
Wishlist
Unassigned
libqofono (Ubuntu)
Confirmed
Undecided
Unassigned
ofono (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

The operators are promoting "Carrier Aggregation"[1] as the latest network capability. The capability should be visible when the user is connected to the LTE-Advanced network.

1) ril interface from mtk supports the extended radio type

 // Same as the value in TelephonyManager.java
 enum NetworkType {
  NETWORK_TYPE_UNKNOWN = 0,
  NETWORK_TYPE_GPRS = 1,
  NETWORK_TYPE_EDGE = 2,
  NETWORK_TYPE_UMTS = 3,
  NETWORK_TYPE_CDMA = 4,
  NETWORK_TYPE_EVDO_0 = 5,
  NETWORK_TYPE_EVDO_A = 6,
  NETWORK_TYPE_1xRTT = 7,
  NETWORK_TYPE_HSDPA = 8,
  NETWORK_TYPE_HSUPA = 9,
  NETWORK_TYPE_HSPA = 10,
  NETWORK_TYPE_IDEN = 11,
  NETWORK_TYPE_EVDO_B = 12,
  NETWORK_TYPE_LTE = 13,
  NETWORK_TYPE_EHRPD = 14,
  NETWORK_TYPE_HSPAP = 15,
  NETWORK_TYPE_GSM = 16,
 };

 // MTK extend radio tech see ServiceState.java
 enum RadioTechExt {
  RIL_RADIO_TECHNOLOGY_MTK = 128,
  RIL_RADIO_TECHNOLOGY_HSDPAP, //129
  RIL_RADIO_TECHNOLOGY_HSDPAP_UPA, //130
  RIL_RADIO_TECHNOLOGY_HSUPAP, //131
  RIL_RADIO_TECHNOLOGY_HSUPAP_DPA, //132
  RIL_RADIO_TECHNOLOGY_DC_DPA, //133
  RIL_RADIO_TECHNOLOGY_DC_UPA, //134
  RIL_RADIO_TECHNOLOGY_DC_HSDPAP, //135
  RIL_RADIO_TECHNOLOGY_DC_HSDPAP_UPA, //136
  RIL_RADIO_TECHNOLOGY_DC_HSDPAP_DPA, //137
  RIL_RADIO_TECHNOLOGY_DC_HSPAP, //138
  RIL_RADIO_TECHNOLOGY_LTEA //139
 };

ref
m95_ubuntu/frameworks/base/telephony/java/android/telephony/ServiceState.java
m95_ubuntu/vendor/mediatek/proprietary/hardware/ril/rilproxy/mtk-rilproxy/telephony/agps/RpAgpsNSlotController.h

2) ofono should support a new radio bearer type

(ofono trunk)
+const char *packet_bearer_to_string(int bearer)
+{
+ switch (bearer) {
+ case PACKET_BEARER_NONE:
+ return "none";
+ case PACKET_BEARER_GPRS:
+ return "gprs";
+ case PACKET_BEARER_EGPRS:
+ return "edge";
+ case PACKET_BEARER_UMTS:
+ return "umts";
+ case PACKET_BEARER_HSUPA:
+ return "hsupa";
+ case PACKET_BEARER_HSDPA:
+ return "hsdpa";
+ case PACKET_BEARER_HSUPA_HSDPA:
+ return "hspa";
+ case PACKET_BEARER_EPS:
+ return "lte";
+ }
+ return "";
+}

3) indicator-network should add LTEA support with a new icon

(0.7.1+15.04.20160304-0ubuntu1 )
static Modem::Bearer str2technology(const QString& str)
{
 if (str.isEmpty() || str == "none")
  return Modem::Bearer::notAvailable;
 if (str == "gprs")
  return Modem::Bearer::gprs;
 if (str == "edge")
  return Modem::Bearer::edge;
 if (str == "umts")
  return Modem::Bearer::umts;
 if (str == "hspa" || str == "hsupa" || str == "hsdpa")
  return Modem::Bearer::hspa;
 if (str == "hspap")
  return Modem::Bearer::hspa_plus;
 if (str == "lte")
  return Modem::Bearer::lte;

 qWarning() << PRETTY_FUNCTION << ": Unknown techonology" << str;
 return Modem::Bearer::notAvailable;
}

[1] https://www.qualcomm.com/invention/technologies/lte/lte-carrier-aggregation

Revision history for this message
Pete Woods (pete-woods) wrote :

Sounds good. Tell me what string to expect from libqofono here:

static Modem::Bearer str2technology(const QString& str)
{
    if (str.isEmpty() || str == "none")
        return Modem::Bearer::notAvailable;
    if (str == "gprs")
        return Modem::Bearer::gprs;
    if (str == "edge")
        return Modem::Bearer::edge;
    if (str == "umts")
        return Modem::Bearer::umts;
    if (str == "hspa" || str == "hsupa" || str == "hsdpa")
        return Modem::Bearer::hspa;
    if (str == "hspap")
        return Modem::Bearer::hspa_plus;
    if (str == "lte")
        return Modem::Bearer::lte;
    if (str == "??????")
        return Modem::Bearer::lte_a;

    qWarning() << __PRETTY_FUNCTION__ << ": Unknown technology" << str;
    return Modem::Bearer::notAvailable;
}

and the name of the icon to use here:

QString Icons::bearerIcon(wwan::Modem::Bearer bearer)
{
    switch (bearer)
    {
    case wwan::Modem::Bearer::notAvailable:
        return "";
    case wwan::Modem::Bearer::gprs:
        return "network-cellular-pre-edge";
    case wwan::Modem::Bearer::edge:
        return "network-cellular-edge";
    case wwan::Modem::Bearer::umts:
        return "network-cellular-3g";
    case wwan::Modem::Bearer::hspa:
        return "network-cellular-hspa";
    case wwan::Modem::Bearer::hspa_plus:
        return "network-cellular-hspa-plus";
    case wwan::Modem::Bearer::lte:
        return "network-cellular-lte";
    case wwan::Modem::Bearer::lte_a:
        return "network-cellular-????????";
    }
    // shouldn't be reached
    return QString();
}

and I'm all good!

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in indicator-network (Ubuntu):
status: New → Confirmed
Changed in libqofono (Ubuntu):
status: New → Confirmed
Changed in ofono (Ubuntu):
status: New → Confirmed
Revision history for this message
Pete Woods (pete-woods) wrote :

I edited the description so that the indicator-network and ofono code snippets were the right place. It seems quite a shame that ofono and indicator-network convert enums to and from strings.

description: updated
Changed in canonical-devices-system-image:
milestone: 12 → 13
Changed in canonical-devices-system-image:
milestone: 13 → backlog
dobey (dobey)
Changed in indicator-network (Ubuntu):
importance: Undecided → Wishlist
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.