diff --git a/libsigrokdecode4DSL/decoders/rgb_led_ws281x/pd.py b/libsigrokdecode4DSL/decoders/rgb_led_ws281x/pd.py index aa23cace..17ccf047 100644 --- a/libsigrokdecode4DSL/decoders/rgb_led_ws281x/pd.py +++ b/libsigrokdecode4DSL/decoders/rgb_led_ws281x/pd.py @@ -2,7 +2,7 @@ ## This file is part of the libsigrokdecode project. ## ## Copyright (C) 2016 Vladimir Ermakov -## Copyright (C) 2019 DreamSourceLab +## Copyright (C) 2023 DreamSourceLab ## Copyright (C) 2021 Michael Miller ## ## This program is free software; you can redistribute it and/or modify @@ -82,48 +82,72 @@ class Decoder(srd.Decoder): if self.colorsize == 24: if self.options['colors'] == 'GRB': rgb = (elems & 0xff0000) >> 8 | (elems & 0x00ff00) << 8 | (elems & 0x0000ff) + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['GRB#%06x' % rgb]]) elif self.options['colors'] == 'RGB': rgb = elems + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['RGB#%06x' % rgb]]) elif self.options['colors'] == 'BRG': - rgb = (elems & 0xff0000) >> 16 | (elems & 0x00ffff) << 8 + rgb = (elems & 0xffff00) >> 8 | (elems & 0x0000ff) << 16 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['BRG#%06x' % rgb]]) elif self.options['colors'] == 'RBG': rgb = (elems & 0xff0000) | (elems & 0x00ff00) >> 8 | (elems & 0x0000ff) << 8 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['RBG#%06x' % rgb]]) elif self.options['colors'] == 'BGR': rgb = (elems & 0xff0000) >> 16 | (elems & 0x00ff00) | (elems & 0x0000ff) << 16 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['BGR#%06x' % rgb]]) - self.put(self.ss_packet, samplenum, self.out_ann, - [2, ['RGB#%06x' % rgb]]) else: if self.options['colors'] == 'GRBW': rgb = (elems & 0xff000000) >> 16 | (elems & 0x00ff0000) | (elems & 0x0000ff00) >> 8 w = (elems & 0x000000ff) + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['GRB#%06x W#%02x' % (rgb, w)]]) elif self.options['colors'] == 'RGBW': rgb = (elems & 0xffffff00) >> 8 w = (elems & 0x000000ff) + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['RGB#%06x W#%02x' % (rgb, w)]]) elif self.options['colors'] == 'WRGB': - rgb = (elems & 0x00ffffff) - w = (elems & 0xff000000) >> 32 + rgb = (elems & 0xffffff00) >> 8 + w = (elems & 0x000000ff) + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['W#%02x RGB#%06x ' % (w, rgb)]]) elif self.options['colors'] == 'LBGR': rgb = (elems & 0x0000ff00) | (elems & 0x00ff0000) >> 16 | (elems & 0x000000ff) << 16 - w = (elems & 0xff000000) >> 32 + w = (elems & 0xff000000) >> 24 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['L#%02x BGR#%06x ' % (w, rgb)]]) elif self.options['colors'] == 'LGRB': rgb = (elems & 0x000000ff) | (elems & 0x00ff0000) >> 8 | (elems & 0x0000ff00) << 8 - w = (elems & 0xff000000) >> 32 + w = (elems & 0xff000000) >> 24 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['L#%02x GRB#%06x ' % (w, rgb)]]) elif self.options['colors'] == 'LRGB': rgb = (elems & 0x00ffffff) - w = (elems & 0xff000000) >> 32 + w = (elems & 0xff000000) >> 24 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['L#%02x RGB#%06x ' % (w, rgb)]]) elif self.options['colors'] == 'LRBG': rgb = (elems & 0x00ff0000) | (elems & 0x0000ff00) >> 8 | (elems & 0x000000ff) << 8 - w = (elems & 0xff000000) >> 32 + w = (elems & 0xff000000) >> 24 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['L#%02x RBG#%06x ' % (w, rgb)]]) elif self.options['colors'] == 'LGBR': - rgb = (elems & 0x00ffff00) >> 8 | (elems & 0x000000ff) << 16 - w = (elems & 0xff000000) >> 32 - elif self.options['colors'] == 'LBRG': rgb = (elems & 0x00ff0000) >> 16 | (elems & 0x0000ffff) << 8 - w = (elems & 0xff000000) >> 32 - - self.put(self.ss_packet, samplenum, self.out_ann, - [2, ['RGB#%06x #%02x' % (rgb, w)]]) + w = (elems & 0xff000000) >> 24 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['L#%02x GRB#%06x ' % (w, rgb)]]) + elif self.options['colors'] == 'LBRG': + rgb = (elems & 0x00ffff00) >> 8 | (elems & 0x000000ff) << 16 + w = (elems & 0xff000000) >> 24 + self.put(self.ss_packet, samplenum, self.out_ann, + [2, ['L#%02x BRG#%06x ' % (w, rgb)]]) + self.bits = [] self.ss_packet = samplenum