X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fnunchuk.py;h=8bf0228e03b5b722970cd5c207422e1cd8b063ba;hp=cc1252ccfeb80c0d221a537e66893f92e6408611;hb=9a12a6e7af3d7091d8e35dd1c731402cb80a01b0;hpb=fb53ee5e242be7781b0d34a7d006c630095bcb72 diff --git a/decoders/nunchuk.py b/decoders/nunchuk.py index cc1252c..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 = self.data[int(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,17 +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() - self.output_protocol = None - self.output_annotation = None - - # 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 @@ -102,22 +85,18 @@ class Decoder(sigrok.Decoder): self.databytecount = 0 def start(self, metadata): - self.unitsize = metadata['unitsize'] - # self.output_protocol = self.output_new(2) - self.output_annotation = self.output_new(1) + # 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, timeoffset, duration, data): - """Nintendo Wii Nunchuk decoder""" - 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) @@ -191,6 +170,6 @@ class Decoder(sigrok.Decoder): self.databytecount = 0 if out != []: - # self.put(self.output_protocol, 0, 0, out_proto) - self.put(self.output_annotation, 0, 0, out) + # self.put(0, 0, self.out_proto, out_proto) + self.put(0, 0, self.out_ann, out)