struct network_operator_data *opd = netreg->current_operator;
const char *plmn;
static char name[1024];
+ static char mccmnc[OFONO_MAX_MCC_LENGTH + OFONO_MAX_MNC_LENGTH + 1];
int len = sizeof(name);
int home_or_spdi;
}
plmn = opd->name;
+
+ /*
+ * This is a fallback on some really broken hardware which do not
+ * report the COPS name
+ */
+ if (plmn[0] == '\0') {
+ snprintf(mccmnc, sizeof(mccmnc), "%s%s", opd->mcc, opd->mnc);
+ plmn = mccmnc;
+ }
+
if (opd->eons_info && opd->eons_info->longname)
plmn = opd->eons_info->longname;
const char *path;
const char *operator;
+ if (name[0] == '\0')
+ return;
+
if (!strncmp(opd->name, name, OFONO_MAX_OPERATOR_NAME_LENGTH))
return;
DBusMessage *reply;
DBusMessageIter iter;
DBusMessageIter dict;
+ char mccmnc[OFONO_MAX_MCC_LENGTH + OFONO_MAX_MNC_LENGTH + 1];
const char *name = opd->name;
const char *status =
OFONO_PROPERTIES_ARRAY_SIGNATURE,
&dict);
+ if (name[0] == '\0') {
+ snprintf(mccmnc, sizeof(mccmnc), "%s%s", opd->mcc, opd->mnc);
+ name = mccmnc;
+ }
+
ofono_dbus_dict_append(&dict, "Name", DBUS_TYPE_STRING, &name);
ofono_dbus_dict_append(&dict, "Status", DBUS_TYPE_STRING, &status);