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
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel