X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fnunchuk.py;h=86ec17111750dcf6ed2483317f6237f54abfa1a1;hp=d33074740eb50b4fb1fdea8137e89cbb3cffd947;hb=d0e93c76e381eff58ca23949301f781b24ba4a8b;hpb=71071bcfd36bed13b110931a6cc8189a1493dd2a diff --git a/decoders/nunchuk.py b/decoders/nunchuk.py index d330747..86ec171 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,10 @@ class Decoder(sigrok.Decoder): license = 'gplv2+' inputs = ['i2c'] outputs = ['nunchuck'] - probes = {} + probes = [] # TODO options = {} 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,9 +84,8 @@ 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.SRD_OUTPUT_PROTO, 'nunchuk') + self.out_ann = self.add(srd.SRD_OUTPUT_ANN, 'nunchuk') def report(self): pass @@ -114,8 +95,7 @@ class Decoder(sigrok.Decoder): 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) @@ -189,6 +169,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)