[layer23] Re-structured the VTY commands for SIM insert/remove
authorAndreas.Eversberg <jolly@eversberg.eu>
Thu, 22 Jul 2010 16:11:28 +0000 (16:11 +0000)
committerAndreas.Eversberg <jolly@eversberg.eu>
Thu, 22 Jul 2010 16:11:28 +0000 (16:11 +0000)
Now the commands are "sim testcard <ms> [<mcc> <mnc>] " or "sim remove <ms>"

src/host/layer23/include/osmocom/subscriber.h
src/host/layer23/src/app_mobile.c
src/host/layer23/src/subscriber.c
src/host/layer23/src/vty_interface.c

index 09eab23..34f4528 100644 (file)
@@ -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,
index eb50e50..41bba19 100644 (file)
@@ -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)
index 34b7582..8245cdc 100644 (file)
@@ -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)
index c085c89..d627d31 100644 (file)
@@ -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);