int signal_index; /* If strength is reported via CIND */
int signal_min; /* min strength reported via CIND */
int signal_max; /* max strength reported via CIND */
+ int tech;
unsigned int vendor;
};
return;
}
+ if ((status == 1 || status == 5) && (tech == -1))
+ tech = nd->tech;
+
cb(&error, status, lac, ci, tech, cbd->data);
}
static void mbm_erinfo_notify(GAtResult *result, gpointer user_data)
{
+ struct ofono_netreg *netreg = user_data;
+ struct netreg_data *nd = ofono_netreg_get_data(netreg);
GAtResultIter iter;
int mode, gsm, umts;
}
ofono_info("network capability: GSM %d UMTS %d", gsm, umts);
+
+ /* Convert to tech values from 27.007 */
+ switch (gsm) {
+ case 1: /* GSM */
+ nd->tech = 0;
+ break;
+ case 2: /* EDGE */
+ nd->tech = 3;
+ break;
+ default:
+ nd->tech = -1;
+ }
+
+ switch (umts) {
+ case 1: /* UMTS */
+ nd->tech = 2;
+ break;
+ case 2: /* UMTS + HSDPA */
+ nd->tech = 4;
+ break;
+ default:
+ break;
+ }
}
static void creg_notify(GAtResult *result, gpointer user_data)
&lac, &ci, &tech, nd->vendor) == FALSE)
return;
+ if ((status == 1 || status == 5) && (tech == -1))
+ tech = nd->tech;
+
ofono_netreg_status_notify(netreg, status, lac, ci, tech);
}
nd->chat = chat;
nd->vendor = vendor;
+ nd->tech = -1;
ofono_netreg_set_data(netreg, nd);
g_at_chat_send(chat, "AT+CREG=?", creg_prefix,