ts_102221: Add "resume_uicc" command

We've had a "suspend_uicc" command since commit
ec95053249bc7f9308ca1f659d8ef6ac97a6e393 in 2021, but didn't yet
have the corresponding "resume" pair.

Note that you cannot really execute this in a reasonable way from
within pySim, as it is required to power-cycle the card
between SUSPEND and RESUME, see TS 102 221 Section 11.1.22.3.2

Change-Id: I3322fde74f680e77954e1d3e18a32ef5662759f2
diff --git a/pySim/ts_102_221.py b/pySim/ts_102_221.py
index bade9cf..b6c003b 100644
--- a/pySim/ts_102_221.py
+++ b/pySim/ts_102_221.py
@@ -864,12 +864,22 @@
         # not ISO7816-4 but TS 102 221
         @cmd2.with_argparser(suspend_uicc_parser)
         def do_suspend_uicc(self, opts):
-            """Perform the SUSPEND UICC command. Only supported on some UICC."""
+            """Perform the SUSPEND UICC command. Only supported on some UICC (check EF.UMPC)."""
             (duration, token, sw) = self._cmd.card._scc.suspend_uicc(min_len_secs=opts.min_duration_secs,
                                                                      max_len_secs=opts.max_duration_secs)
             self._cmd.poutput(
                 'Negotiated Duration: %u secs, Token: %s, SW: %s' % (duration, token, sw))
 
+        resume_uicc_parser = argparse.ArgumentParser()
+        resume_uicc_parser.add_argument('token', type=str, help='Token provided during SUSPEND')
+
+        @cmd2.with_argparser(resume_uicc_parser)
+        def do_resume_uicc(self, opts):
+            """Perform the REUSME UICC operation. Only supported on some UICC. Also: A power-cycle
+            of the card is required between SUSPEND and RESUME, and only very few non-RESUME
+            commands are permitted between SUSPEND and RESUME.  See TS 102 221 Section 11.1.22."""
+            self._cmd.card._scc.resume_uicc(opts.token)
+
 
 class CardProfileUICCSIM(CardProfileUICC):
     """Same as above, but including 2G SIM support"""