contrib: rpc_examples: python: fix memory retrieval 87/4487/2
authorPaul Fertser <fercerpav@gmail.com>
Mon, 9 Apr 2018 20:00:10 +0000 (23:00 +0300)
committerPaul Fertser <fercerpav@gmail.com>
Thu, 4 Apr 2019 20:26:40 +0000 (21:26 +0100)
mem2array returns a Tcl (associative) array and so the order of elements
is not guaranteed. Treat it as such.

Change-Id: Ie4d1219faac1e60247ca13bc2eedf22041a9a9e9
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/4487
Tested-by: jenkins
Reviewed-by: Christopher Head <chead@zaber.com>
contrib/rpc_examples/ocd_rpc_example.py

index 6c8529c..b585aaa 100755 (executable)
@@ -92,9 +92,10 @@ class OpenOcd:
         self.send("array unset output") # better to clear the array before
         self.send("mem2array output %d 0x%x %d" % (wordLen, address, n))
 
-        output = self.send("ocd_echo $output").split(" ")
+        output = [*map(int, self.send("ocd_echo $output").split(" "))]
+        d = dict([tuple(output[i:i + 2]) for i in range(0, len(output), 2)])
 
-        return [int(output[2*i+1]) for i in range(len(output)//2)]
+        return [d[k] for k in sorted(d.keys())]
 
     def writeVariable(self, address, value):
         assert value is not None