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

Change subject: GlobalPlatform ADF.SD: Add command line reference + error 
message
......................................................................

GlobalPlatform ADF.SD: Add command line reference + error message

The get_data shell command didn't have any interactive help / syntax,
and no meaningful error message in case an unknown data object name
was specified by the user.  Let's fix that.

Change-Id: I09faaf5d45118635cf832c8c513033aede1427e5
---
M docs/shell.rst
M pySim/global_platform.py
2 files changed, 30 insertions(+), 4 deletions(-)

Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved




diff --git a/docs/shell.rst b/docs/shell.rst
index ef08fcf..73b988a 100644
--- a/docs/shell.rst
+++ b/docs/shell.rst
@@ -795,8 +795,9 @@

 get_data
 ~~~~~~~~
-Performs the GET DATA command as specified by GlobalPlatform.
-
+.. argparse::
+   :module: pySim.global_platform
+   :func: ADF_SD.AddlShellCommands.get_data_parser

 cmd2 settable parameters
 ------------------------
diff --git a/pySim/global_platform.py b/pySim/global_platform.py
index baae234..ea8b70d 100644
--- a/pySim/global_platform.py
+++ b/pySim/global_platform.py
@@ -223,9 +223,21 @@
         def __init__(self):
             super().__init__()

+        get_data_parser = argparse.ArgumentParser()
+        get_data_parser.add_argument('data_object_name', type=str,
+            help='Name of the data object to be retrieved from the card')
+
+        @cmd2.with_argparser(get_data_parser)
         def do_get_data(self, opts):
-            tlv_cls_name = opts.arg_list[0]
-            tlv_cls = DataCollection().members_by_name[tlv_cls_name]
+            """Perform the GlobalPlatform GET DATA command in order to obtain 
some card-specific data."""
+            tlv_cls_name = opts.data_object_name
+            try:
+                tlv_cls = DataCollection().members_by_name[tlv_cls_name]
+            except KeyError:
+                do_names = [camel_to_snake(str(x.__name__)) for x in 
DataCollection.possible_nested]
+                self._cmd.poutput('Unknown data object "%s", available 
options: %s' % (tlv_cls_name,
+                                                                               
        do_names))
+                return
             (data, sw) = self._cmd.card._scc.get_data(cla=0x80, 
tag=tlv_cls.tag)
             ie = tlv_cls()
             ie.from_tlv(h2b(data))

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

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I09faaf5d45118635cf832c8c513033aede1427e5
Gerrit-Change-Number: 33670
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <[email protected]>
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-MessageType: merged

Reply via email to