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

Reply via email to