usim: Add EF.ePDGSelection + EF.ePDGSelectionEm support

Change-Id: I760a394ae1eac5f1175dc9b86c11b4a60671582e
diff --git a/pySim/ts_31_102.py b/pySim/ts_31_102.py
index d1f0f36..4ae74ec 100644
--- a/pySim/ts_31_102.py
+++ b/pySim/ts_31_102.py
@@ -884,6 +884,17 @@
         super().__init__(fid, sfid=sfid, name=name, desc=desc, **kwargs)
         self._tlv = EF_ePDGId.ePDGId
 
+# TS 31.102 Section 4.2.104
+class EF_ePDGSelection(TransparentEF):
+    class ePDGSelection(BER_TLV_IE, tag=0x80, nested=[]):
+        _construct = GreedyRange(Struct('plmn'/BcdAdapter(Bytes(3)),
+                                        'epdg_priority'/Int16ub,
+                                        'epdg_fqdn_format'/Enum(Int8ub, operator_identified=0, location_based=1)))
+
+    def __init__(self, fid='6ff4', sfid=None, name='EF.ePDGSelection', desc='ePDG Selection Information', **kwargs):
+        super().__init__(fid, sfid=sfid, name=name, desc=desc, **kwargs)
+        self._tlv = EF_ePDGSelection.ePDGSelection
+
 # TS 31.102 Section 4.2.106
 class EF_FromPreferred(TransparentEF):
     def __init__(self, fid='6ff7', sfid=None, name='EF.FromPreferred', size=(1, 1),
@@ -1478,8 +1489,10 @@
             # EF_IWL (IMEI(SV) White List)
             EF_IPS(),
             EF_ePDGId(service=(106, 107)),
-            # FIXME: from EF_ePDGSelection onwards
+            EF_ePDGSelection(service=(106, 107)),
             EF_ePDGId('6ff5', None, 'EF.ePDGIdEm', desc='Emergency ePDG Identifier', service=(110, 111)),
+            EF_ePDGSelection('6ff6', None, 'EF.ePDGSelectionEm',
+                             desc='ePDG Selection Information for Emergency Services', service=(110, 111)),
             EF_FromPreferred(service=114),
             EF_eAKA(),
             # FIXME: DF_SoLSA service=23