laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/16944 
)

Change subject: Fix MCC and MCC representation in the output of pySim-read
......................................................................

Fix MCC and MCC representation in the output of pySim-read

Change-Id: Ie699c0a38d5ae90e4d6109e4574ce860e4044096
---
M pySim/utils.py
M pysim-testdata/Fairwaves-SIM.ok
M pysim-testdata/Wavemobile-SIM.ok
M pysim-testdata/sysmoISIM-SJA2.ok
M pysim-testdata/sysmoUSIM-SJS1.ok
5 files changed, 48 insertions(+), 23 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved



diff --git a/pySim/utils.py b/pySim/utils.py
index e8dd531..af4a491 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -124,10 +124,7 @@
        digit3 = ia[1] & 0x0F           # 2nd byte, LSB
        if digit3 == 0xF and digit2 == 0xF and digit1 == 0xF:
                return 0xFFF # 4095
-       mcc = digit1 * 100
-       mcc += digit2 * 10
-       mcc += digit3
-       return mcc
+       return derive_mcc(digit1, digit2, digit3)

 def dec_mnc_from_plmn(plmn):
        ia = h2i(plmn)
@@ -136,16 +133,7 @@
        digit3 = (ia[1] & 0xF0) >> 4    # 2nd byte, MSB
        if digit3 == 0xF and digit2 == 0xF and digit1 == 0xF:
                return 0xFFF # 4095
-       mnc = 0
-       # signifies two digit MNC
-       if digit3 == 0xF:
-               mnc += digit1 * 10
-               mnc += digit2
-       else:
-               mnc += digit1 * 100
-               mnc += digit2 * 10
-               mnc += digit3
-       return mnc
+       return derive_mnc(digit1, digit2, digit3)
 
 def dec_act(twohexbytes):
        act_list = [
@@ -182,7 +170,7 @@
                if rec_info['mcc'] == 0xFFF and rec_info['mnc'] == 0xFFF:
                        rec_str = "unused"
                else:
-                       rec_str = "MCC: %3s MNC: %3s AcT: %s" % 
(rec_info['mcc'], rec_info['mnc'], ", ".join(rec_info['act']))
+                       rec_str = "MCC: %03d MNC: %03d AcT: %s" % 
(rec_info['mcc'], rec_info['mnc'], ", ".join(rec_info['act']))
                s += "\t%s # %s\n" % (rec_data, rec_str)
        return s
 
@@ -233,3 +221,40 @@
                        return imsi[3:5]
        else:
                return None
+
+def derive_mcc(digit1, digit2, digit3):
+       """
+       Derive decimal representation of the MCC (Mobile Country Code)
+       from three given digits.
+       """
+
+       mcc = 0
+
+       if digit1 != 0x0f:
+               mcc += digit1 * 100
+       if digit2 != 0x0f:
+               mcc += digit2 * 10
+       if digit3 != 0x0f:
+               mcc += digit3
+
+       return mcc
+
+def derive_mnc(digit1, digit2, digit3=0x0f):
+       """
+       Derive decimal representation of the MNC (Mobile Network Code)
+       from two or (optionally) three given digits.
+       """
+
+       mnc = 0
+
+       # 3-rd digit is optional for the MNC. If present
+       # the algorythm is the same as for the MCC.
+       if digit3 != 0x0f:
+               return derive_mcc(digit1, digit2, digit3)
+
+       if digit1 != 0x0f:
+               mnc += digit1 * 10
+       if digit2 != 0x0f:
+               mnc += digit2
+
+       return mnc
diff --git a/pysim-testdata/Fairwaves-SIM.ok b/pysim-testdata/Fairwaves-SIM.ok
index 94df376..cd6e33b 100644
--- a/pysim-testdata/Fairwaves-SIM.ok
+++ b/pysim-testdata/Fairwaves-SIM.ok
@@ -28,7 +28,7 @@
        ffffff0000 # unused

 HPLMNAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
diff --git a/pysim-testdata/Wavemobile-SIM.ok b/pysim-testdata/Wavemobile-SIM.ok
index 8b14a30..30aeed8 100644
--- a/pysim-testdata/Wavemobile-SIM.ok
+++ b/pysim-testdata/Wavemobile-SIM.ok
@@ -8,7 +8,7 @@
 Display OPLMN: False
 PLMNsel: 
fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 PLMNwAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
@@ -26,7 +26,7 @@
        ffffff0000 # unused

 OPLMNwAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
diff --git a/pysim-testdata/sysmoISIM-SJA2.ok b/pysim-testdata/sysmoISIM-SJA2.ok
index 77c4878..a64aa8b 100644
--- a/pysim-testdata/sysmoISIM-SJA2.ok
+++ b/pysim-testdata/sysmoISIM-SJA2.ok
@@ -8,7 +8,7 @@
 Display OPLMN: False
 PLMNsel: 
fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 PLMNwAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
@@ -22,7 +22,7 @@
        ffffff0000 # unused

 OPLMNwAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
diff --git a/pysim-testdata/sysmoUSIM-SJS1.ok b/pysim-testdata/sysmoUSIM-SJS1.ok
index d0523f8..8def4e3 100644
--- a/pysim-testdata/sysmoUSIM-SJS1.ok
+++ b/pysim-testdata/sysmoUSIM-SJS1.ok
@@ -8,7 +8,7 @@
 Display OPLMN: True
 PLMNsel: 
fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 PLMNwAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
@@ -22,7 +22,7 @@
        ffffff0000 # unused

 OPLMNwAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused
@@ -36,7 +36,7 @@
        ffffff0000 # unused

 HPLMNAcT:
-       fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
+       fff11fffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, 
cdma2000 HRPD, cdma2000 1xRTT
        ffffff0000 # unused
        ffffff0000 # unused
        ffffff0000 # unused

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/16944
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ie699c0a38d5ae90e4d6109e4574ce860e4044096
Gerrit-Change-Number: 16944
Gerrit-PatchSet: 9
Gerrit-Owner: herlesupreeth <herlesupre...@gmail.com>
Gerrit-Assignee: dexter <pma...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pma...@sysmocom.de>
Gerrit-Reviewer: fixeria <axilira...@gmail.com>
Gerrit-Reviewer: herlesupreeth <herlesupre...@gmail.com>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-MessageType: merged

Reply via email to