for ussd_get_ran, show current RAT
Change-Id: I81adb1785c1a46e9153a6914ef2c699e9c90b731
diff --git a/src/hlr_ussd.c b/src/hlr_ussd.c
index 727a6ce..7ef72a4 100644
--- a/src/hlr_ussd.c
+++ b/src/hlr_ussd.c
@@ -325,23 +325,27 @@
const struct ss_request *req)
{
struct hlr_subscriber subscr;
- const char *response;
+ char response[512];
int rc;
-
-#define RAN_TYPE_DESC "Available RAN types: "
-#define RAN_TYPE_HINT " (experimental 3G: to enable dial *#301# -- to disable dial *#300#)"
+ const char *rat;
rc = db_subscr_get_by_imsi(g_hlr->dbc, ss->imsi, &subscr);
switch (rc) {
case 0:
- if (subscr.rat_types[OSMO_RAT_GERAN_A] && subscr.rat_types[OSMO_RAT_UTRAN_IU])
- response = RAN_TYPE_DESC "GERAN-A (2G) & UTRAN-Iu (3G)" RAN_TYPE_HINT;
- else if (subscr.rat_types[OSMO_RAT_GERAN_A])
- response = RAN_TYPE_DESC "GERAN-A (2G)" RAN_TYPE_HINT;
- else if (subscr.rat_types[OSMO_RAT_UTRAN_IU])
- response = RAN_TYPE_DESC "UTRAN-Iu (3G)" RAN_TYPE_HINT;
+ if (!*subscr.last_lu_rat)
+ rat = "nothing, you don't exist";
+ else if (!strcmp(subscr.last_lu_rat, "GERAN-A"))
+ rat = "2G";
+ else if (!strcmp(subscr.last_lu_rat, "UTRAN-Iu"))
+ rat = "3G";
else
- response = "No RAN types available";
+ rat = subscr.last_lu_rat;
+
+ snprintf(response, sizeof(response),
+ "Now on %s. Available:%s%s."
+ " (enable 3G: *#301# disable 3G: *#300#)", rat,
+ subscr.rat_types[OSMO_RAT_GERAN_A]? " 2G" : "",
+ subscr.rat_types[OSMO_RAT_UTRAN_IU]? " 3G" : "");
rc = ss_tx_ussd_7bit(ss, true, req->invoke_id, response);
break;