X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fnunchuk.py;h=8bf0228e03b5b722970cd5c207422e1cd8b063ba;hp=635a7143a4159b33542b3013c94ef83630e066a6;hb=9a12a6e7af3d7091d8e35dd1c731402cb80a01b0;hpb=bffd9bc09c76aa2189f89e76fd4a0aa314418193 diff --git a/decoders/nunchuk.py b/decoders/nunchuk.py index 635a714..8bf0228 100644 --- a/decoders/nunchuk.py +++ b/decoders/nunchuk.py @@ -30,7 +30,7 @@ # https://www.sparkfun.com/products/9281 # -import sigrok +import sigrokdecode as srd # States IDLE = 0 @@ -62,18 +62,7 @@ example_packets = [ {'type': 'P', 'range': (32, 33), 'data': None, 'ann': ''}, ] -class Sample(): - def __init__(self, data): - self.data = data - def probe(self, probe): - s = ord(self.data[probe / 8]) & (1 << (probe % 8)) - return True if s else False - -def sampleiter(data, unitsize): - for i in range(0, len(data), unitsize): - yield(Sample(data[i:i+unitsize])) - -class Decoder(sigrok.Decoder): +class Decoder(srd.Decoder): id = 'nunchuk' name = 'Nunchuk' longname = 'Nintendo Wii Nunchuk decoder' @@ -84,15 +73,11 @@ class Decoder(sigrok.Decoder): license = 'gplv2+' inputs = ['i2c'] outputs = ['nunchuck'] - probes = {} + probes = [] # TODO options = {} + annotations = [] def __init__(self, **kwargs): - self.probes = Decoder.probes.copy() - - # TODO: Don't hardcode the number of channels. - self.channels = 8 - self.state = IDLE # TODO: Can we assume a certain initial state? self.sx = self.sy = self.ax = self.ay = self.az = self.bz = self.bc = 0 @@ -100,20 +85,18 @@ class Decoder(sigrok.Decoder): self.databytecount = 0 def start(self, metadata): - self.unitsize = metadata['unitsize'] + # self.out_proto = self.add(srd.OUTPUT_PROTO, 'nunchuk') + self.out_ann = self.add(srd.OUTPUT_ANN, 'nunchuk') def report(self): pass - def decode(self, data): - """Nintendo Wii Nunchuk decoder""" - + def decode(self, timeoffset, duration, data): out = [] o = {} # We should accept a list of samples and iterate... - # for sample in sampleiter(data['data'], self.unitsize): - for p in example_packets: + for p in example_packets: # TODO # TODO: Eliminate the need for ord(). # s = ord(sample.data) @@ -186,5 +169,7 @@ class Decoder(sigrok.Decoder): self.state = INITIALIZED self.databytecount = 0 - self.put(out) + if out != []: + # self.put(0, 0, self.out_proto, out_proto) + self.put(0, 0, self.out_ann, out)