]> sigrok.org Git - libsigrokdecode.git/commitdiff
srd: nunchuk: Add verbose summary annotation.
authorUwe Hermann <redacted>
Mon, 28 May 2012 12:17:55 +0000 (14:17 +0200)
committerUwe Hermann <redacted>
Wed, 30 May 2012 22:55:38 +0000 (00:55 +0200)
decoders/nunchuk/nunchuk.py

index 8472a3d335806cadeed9f282ce190a9100307f15..a3fdf779d7b83d51e4d4d55c4193db19c5f32e24 100644 (file)
@@ -110,18 +110,26 @@ class Decoder(srd.Decoder):
         self.putx([1, ['AZ[1:0]: 0x%x' % az_rest]])
 
     def output_full_block_if_possible(self):
-
         # For now, only output summary annotation if all values are available.
         t = (self.sx, self.sy, self.ax, self.ay, self.az, self.bz, self.bc)
         if -1 in t:
             return
 
-        # Note: Only works if host reads _all_ regs (0x00 - 0x05).
-        d = 'SX = 0x%02x, SY = 0x%02x, AX = 0x%02x, AY = 0x%02x, ' \
+        s = 'Analog stick X position: 0x%02x\n' % self.sx
+        s += 'Analog stick Y position: 0x%02x\n' % self.sy
+        s += 'Z button: %spressed\n' % ('' if (self.bz == 0) else 'not ')
+        s += 'C button: %spressed\n' % ('' if (self.bc == 0) else 'not ')
+        s += 'Accelerometer X value: 0x%03x\n' % self.ax
+        s += 'Accelerometer Y value: 0x%03x\n' % self.ay
+        s += 'Accelerometer Z value: 0x%03x\n' % self.az
+        self.put(self.block_start_sample, self.block_end_sample,
+                 self.out_ann, [0, [s]])
+
+        s = 'SX = 0x%02x, SY = 0x%02x, AX = 0x%02x, AY = 0x%02x, ' \
             'AZ = 0x%02x, BZ = 0x%02x, BC = 0x%02x' % (self.sx, \
             self.sy, self.ax, self.ay, self.az, self.bz, self.bc)
         self.put(self.block_start_sample, self.block_end_sample,
-                 self.out_ann, [0, [d]])
+                 self.out_ann, [1, [s]])
 
     def decode(self, ss, es, data):
         cmd, databyte = data
@@ -148,12 +156,9 @@ class Decoder(srd.Decoder):
                 self.reg += 1
             elif cmd == 'STOP':
                 self.block_end_sample = es
-
                 self.output_full_block_if_possible()
-
                 self.sx = self.sy = self.ax = self.ay = self.az = -1
                 self.bz = self.bc = -1
-
                 self.state = 'IDLE'
             else:
                 # self.putx([0, ['Ignoring: %s (data=%s)' % (cmd, databyte)]])