diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-12-29 04:10:35 +0100 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2019-12-23 18:03:08 +0100 |
commit | ef7eaaad9a167cb18fb722d4c3494fd2333723a5 (patch) | |
tree | 9ace9ca28f5cee423d70d8cd9cb55ec015ca25b9 | |
parent | d0105c298eaa0a6888ecc2135195a6bfe815c1f6 (diff) |
for ussd_get_ran, show current RAT
Change-Id: I81adb1785c1a46e9153a6914ef2c699e9c90b731
-rw-r--r-- | src/db_hlr.c | 2 | ||||
-rw-r--r-- | src/hlr_ussd.c | 25 |
2 files changed, 16 insertions, 11 deletions
diff --git a/src/db_hlr.c b/src/db_hlr.c index f797f2e..4f89916 100644 --- a/src/db_hlr.c +++ b/src/db_hlr.c @@ -813,7 +813,7 @@ int db_subscr_lu(struct db_context *dbc, int64_t subscr_id, for (i = 0; i < rat_types_len; i++) { char *pos = rat_types_str + strnlen(rat_types_str, sizeof(rat_types_str)); - int len = pos - rat_types_str; + int len = sizeof(rat_types_str) - (pos - rat_types_str); rc = snprintf(pos, len, "%s%s", pos == rat_types_str ? "" : ",", osmo_rat_type_name(rat_types[i])); if (rc > len) { osmo_strlcpy(rat_types_str + sizeof(rat_types_str) - 4, "...", 4); diff --git a/src/hlr_ussd.c b/src/hlr_ussd.c index 9cd2bce..7861634 100644 --- a/src/hlr_ussd.c +++ b/src/hlr_ussd.c @@ -378,22 +378,27 @@ static int handle_ussd_get_ran(struct ss_session *ss, const struct ss_request *req) { struct hlr_subscriber subscr; - const char *response; + char response[512]; int rc; - -#define RAN_TYPE_DESC "Available RAN types: " + 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)"; - else if (subscr.rat_types[OSMO_RAT_GERAN_A]) - response = RAN_TYPE_DESC "GERAN-A (2G)"; - else if (subscr.rat_types[OSMO_RAT_UTRAN_IU]) - response = RAN_TYPE_DESC "UTRAN-Iu (3G)"; + if (!*subscr.last_lu_rat_cs) + rat = "nothing, you don't exist"; + else if (!strcmp(subscr.last_lu_rat_cs, "GERAN-A")) + rat = "2G"; + else if (!strcmp(subscr.last_lu_rat_cs, "UTRAN-Iu")) + rat = "3G"; else - response = "No RAN types available"; + rat = subscr.last_lu_rat_cs; + + snprintf(response, sizeof(response), + "Now on %s. Available:%s%s.", + rat, + subscr.rat_types[OSMO_RAT_GERAN_A]? " 2G" : "", + subscr.rat_types[OSMO_RAT_UTRAN_IU]? " 3G" : ""); rc = ss_tx_to_ms_ussd_7bit(ss, true, req->invoke_id, response); break; |