Hi, thank you for providing the decoder for the WS281x protocol. As there are now not only RGB but also RGBW stripes commonly available I would propose a small improvement: Add an option to switch between 3 and 4 bytes. The change is pretty trivial and straightforward.
Hope this helps & best regards Sam Attached diff: 48,51d47 < options = ( < {'id': 'type', 'desc': 'RGB or RGBW', 'default': 'RGB', < 'values': ('RGB', 'RGBW')}, < ) 73,88c69,75 < if self.options['type'] == 'RGB': < if len(self.bits) == 24: < grb = reduce(lambda a, b: (a << 1) | b, self.bits) < rgb = (grb & 0xff0000) >> 8 | (grb & 0x00ff00) << 8 | (grb & 0x0000ff) < self.put(self.ss_packet, samplenum, self.out_ann, < [2, ['#%06x' % rgb]]) < self.bits = [] < self.ss_packet = None < else: < if len(self.bits) == 32: < grb = reduce(lambda a, b: (a << 1) | b, self.bits) < rgb = (grb & 0xff0000) >> 8 | (grb & 0x00ff00) << 8 | (grb & 0xff0000ff) < self.put(self.ss_packet, samplenum, self.out_ann, < [2, ['#%08x' % rgb]]) < self.bits = [] < self.ss_packet = None --- > if len(self.bits) == 24: > grb = reduce(lambda a, b: (a << 1) | b, self.bits) > rgb = (grb & 0xff0000) >> 8 | (grb & 0x00ff00) << 8 | (grb & 0x0000ff) > self.put(self.ss_packet, samplenum, self.out_ann, > [2, ['#%06x' % rgb]]) > self.bits = [] > self.ss_packet = None
_______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel