aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-02-24 21:30:42 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2020-02-24 21:31:43 +0100
commit0866f3a036997eb5e0d69d0881008d473dfdba9d (patch)
tree0055e7a8a7f5280652ac321def26618a1e4102c1
parentc0c95621ea52f69bdcfbb88963dc732260512a4c (diff)
add Enter IMSI dialog
-rwxr-xr-xsim-applet/src/org/osmocom/IMSIPseudo/IMSIPseudo.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/sim-applet/src/org/osmocom/IMSIPseudo/IMSIPseudo.java b/sim-applet/src/org/osmocom/IMSIPseudo/IMSIPseudo.java
index ac298a5..05a64a7 100755
--- a/sim-applet/src/org/osmocom/IMSIPseudo/IMSIPseudo.java
+++ b/sim-applet/src/org/osmocom/IMSIPseudo/IMSIPseudo.java
@@ -23,11 +23,12 @@ public class IMSIPseudo extends Applet implements ToolkitInterface, ToolkitConst
private final Object[] itemListMain = {title, showLU, showIMSI, changeIMSI};
/* Change IMSI menu */
+ private static final byte[] enterIMSI = new byte[] {'E', 'n', 't', 'e', 'r', ' ', 'I', 'M', 'S', 'I' };
private static final byte[] setDigit1 = new byte[] {'S', 'e', 't', ' ', '1', ' ', 'a', 's', ' ', 'l', 'a', 's', 't', ' ',
'd', 'i', 'g', 'i', 't'};
private static final byte[] setDigit2 = new byte[] {'S', 'e', 't', ' ', '2', ' ', 'a', 's', ' ', 'l', 'a', 's', 't', ' ',
'd', 'i', 'g', 'i', 't'};
- private final Object[] itemListChangeIMSI = {changeIMSI, setDigit1, setDigit2};
+ private final Object[] itemListChangeIMSI = {changeIMSI, enterIMSI, setDigit1, setDigit2};
private static final byte MI_IMSI = 1;
@@ -314,13 +315,32 @@ public class IMSIPseudo extends Applet implements ToolkitInterface, ToolkitConst
showIMSI();
break;
case 3: /* Change IMSI */
- showMenu(itemListChangeIMSI, (byte)3);
+ showMenu(itemListChangeIMSI, (byte)4);
handleMenuResponseChangeIMSI();
break;
}
}
private void handleMenuResponseChangeIMSI() {
- /* TODO */
+ ProactiveResponseHandler rspHdlr = ProactiveResponseHandler.getTheHandler();
+ switch (rspHdlr.getItemIdentifier()) {
+ case 1: /* enter IMSI */
+ promptIMSI();
+ break;
+ case 2: /* set last digit to 1 */
+ promptIMSI();
+ break;
+ case 3: /* set last digit to 2 */
+ promptIMSI();
+ break;
+ }
+ }
+
+ private void promptIMSI()
+ {
+ byte[] msg = {'N', 'e', 'w', ' ', 'I', 'M', 'S', 'I', '?'};
+ byte imsi[] = prompt(msg, (short)0, (short)15);
+ byte mi[] = str2mi(imsi, MI_IMSI);
+ showMsgAndWaitKey(hexdump(mi));
}
}