summaryrefslogtreecommitdiffstats
path: root/src/host/layer23
diff options
context:
space:
mode:
authorAndreas.Eversberg2010-07-22 18:11:28 +0200
committerAndreas.Eversberg2010-07-22 18:11:28 +0200
commit82fbc17d4b80f85c1781163c2560ed105f15fa15 (patch)
treeba35fc5b7d3e90eaef5e7bdabc1dbc7648f42cd1 /src/host/layer23
parentflash: corrected coding style (diff)
downloadosmocom-82fbc17d4b80f85c1781163c2560ed105f15fa15.tar.gz
osmocom-82fbc17d4b80f85c1781163c2560ed105f15fa15.tar.xz
osmocom-82fbc17d4b80f85c1781163c2560ed105f15fa15.zip
[layer23] Re-structured the VTY commands for SIM insert/remove
Now the commands are "sim testcard <ms> [<mcc> <mnc>] " or "sim remove <ms>"
Diffstat (limited to 'src/host/layer23')
-rw-r--r--src/host/layer23/include/osmocom/subscriber.h2
-rw-r--r--src/host/layer23/src/app_mobile.c7
-rw-r--r--src/host/layer23/src/subscriber.c12
-rw-r--r--src/host/layer23/src/vty_interface.c18
4 files changed, 23 insertions, 16 deletions
diff --git a/src/host/layer23/include/osmocom/subscriber.h b/src/host/layer23/include/osmocom/subscriber.h
index 09eab23..34f4528 100644
--- a/src/host/layer23/include/osmocom/subscriber.h
+++ b/src/host/layer23/include/osmocom/subscriber.h
@@ -70,7 +70,7 @@ struct gsm_subscriber {
int gsm_subscr_init(struct osmocom_ms *ms);
int gsm_subscr_exit(struct osmocom_ms *ms);
-int gsm_subscr_testcard(struct osmocom_ms *ms);
+int gsm_subscr_testcard(struct osmocom_ms *ms, uint16_t mcc, uint16_t mnc);
int gsm_subscr_remove(struct osmocom_ms *ms);
void new_sim_ustate(struct gsm_subscriber *subscr, int state);
int gsm_subscr_del_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
diff --git a/src/host/layer23/src/app_mobile.c b/src/host/layer23/src/app_mobile.c
index eb50e50..41bba19 100644
--- a/src/host/layer23/src/app_mobile.c
+++ b/src/host/layer23/src/app_mobile.c
@@ -75,6 +75,7 @@ static int signal_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct osmocom_ms *ms;
+ struct gsm_settings *set;
struct msgb *nmsg;
if (subsys != SS_L1CTL)
@@ -86,9 +87,11 @@ static int signal_cb(unsigned int subsys, unsigned int signal,
break;
started = 1;
ms = signal_data;
+ set = &ms->settings;
/* insert test card, if enabled */
- if (ms->settings.simtype == GSM_SIM_TYPE_TEST)
- gsm_subscr_testcard(ms);
+ if (set->simtype == GSM_SIM_TYPE_TEST)
+ gsm_subscr_testcard(ms, set->test_rplmn_mcc,
+ set->test_rplmn_mnc);
/* start PLMN + cell selection process */
nmsg = gsm322_msgb_alloc(GSM322_EVENT_SWITCH_ON);
if (!nmsg)
diff --git a/src/host/layer23/src/subscriber.c b/src/host/layer23/src/subscriber.c
index 34b7582..8245cdc 100644
--- a/src/host/layer23/src/subscriber.c
+++ b/src/host/layer23/src/subscriber.c
@@ -66,7 +66,7 @@ int gsm_subscr_exit(struct osmocom_ms *ms)
}
/* Attach test card, no sim must be present */
-int gsm_subscr_testcard(struct osmocom_ms *ms)
+int gsm_subscr_testcard(struct osmocom_ms *ms, uint16_t mcc, uint16_t mnc)
{
struct gsm_settings *set = &ms->settings;
struct gsm_subscriber *subscr = &ms->subscr;
@@ -96,16 +96,20 @@ int gsm_subscr_testcard(struct osmocom_ms *ms)
subscr->acc_barr = set->test_barr; /* we may access barred cell */
subscr->acc_class = 0xffff; /* we have any access class */
subscr->plmn_valid = set->test_rplmn_valid;
- subscr->plmn_mcc = set->test_rplmn_mcc;
- subscr->plmn_mnc = set->test_rplmn_mnc;
+ subscr->plmn_mcc = mcc;
+ subscr->plmn_mnc = mnc;
subscr->always_search_hplmn = set->test_always;
subscr->t6m_hplmn = 1; /* try to find home network every 6 min */
strcpy(subscr->imsi, set->test_imsi);
- LOGP(DMM, LOGL_INFO, "(ms %s) Inserting test card (IMSI=%s %s,%s)\n",
+ LOGP(DMM, LOGL_INFO, "(ms %s) Inserting test card (IMSI=%s %s, %s)\n",
ms->name, subscr->imsi, gsm_imsi_mcc(subscr->imsi),
gsm_imsi_mnc(subscr->imsi));
+ LOGP(DMM, LOGL_INFO, "-> Test card regisered to %s %s (%s, %s)\n",
+ gsm_print_mcc(mcc), gsm_print_mnc(mnc), gsm_get_mcc(mcc),
+ gsm_get_mnc(mcc, mnc));
+
/* insert card */
msg = gsm48_mmr_msgb_alloc(GSM48_MMR_REG_REQ);
if (!msg)
diff --git a/src/host/layer23/src/vty_interface.c b/src/host/layer23/src/vty_interface.c
index c085c89..d627d31 100644
--- a/src/host/layer23/src/vty_interface.c
+++ b/src/host/layer23/src/vty_interface.c
@@ -337,12 +337,12 @@ DEFUN(no_monitor_network, no_monitor_network_cmd, "no monitor network MS_NAME",
return CMD_SUCCESS;
}
-DEFUN(insert_test, insert_test_cmd, "insert testcard MS_NAME [mcc] [mnc]",
- "Insert ...\nInsert test card\nName of MS (see \"show ms\")\n"
- "Mobile Country Code\nMobile Network Code")
+DEFUN(sim_test, sim_test_cmd, "sim testcard MS_NAME [mcc] [mnc]",
+ "SIM actions\nInsert test card\nName of MS (see \"show ms\")\n"
+ "Mobile Country Code of RPLMN\nMobile Network Code of RPLMN")
{
struct osmocom_ms *ms;
- uint16_t mcc = 1, mnc = 1;
+ uint16_t mcc = 0x001, mnc = 0x01f;
ms = get_ms(argv[0], vty);
if (!ms)
@@ -367,13 +367,13 @@ DEFUN(insert_test, insert_test_cmd, "insert testcard MS_NAME [mcc] [mnc]",
}
}
- gsm_subscr_testcard(ms);
+ gsm_subscr_testcard(ms, mcc, mnc);
return CMD_SUCCESS;
}
-DEFUN(remove_sim, remove_sim_cmd, "remove sim MS_NAME",
- "Remove ...\nRemove SIM card\nName of MS (see \"show ms\")")
+DEFUN(sim_remove, sim_remove_cmd, "sim remove MS_NAME",
+ "SIM actions\nRemove SIM card\nName of MS (see \"show ms\")")
{
struct osmocom_ms *ms;
@@ -1071,8 +1071,8 @@ int ms_vty_init(void)
install_element_ve(&monitor_network_cmd);
install_element_ve(&no_monitor_network_cmd);
- install_element(ENABLE_NODE, &insert_test_cmd);
- install_element(ENABLE_NODE, &remove_sim_cmd);
+ install_element(ENABLE_NODE, &sim_test_cmd);
+ install_element(ENABLE_NODE, &sim_remove_cmd);
install_element(ENABLE_NODE, &network_search_cmd);
install_element(ENABLE_NODE, &network_show_cmd);
install_element(ENABLE_NODE, &network_select_cmd);