MCPcopy Create free account
hub / github.com/DreamSourceLab/DSView / handle_bits

Method handle_bits

libsigrokdecode4DSL/decoders/dali/pd.py:84–197  ·  view source on GitHub ↗
(self, length)

Source from the content-addressed store, hash-verified

82 self.put(ss, es, self.out_ann, data)
83
84 def handle_bits(self, length):
85 a, c, f, g, b = 0, 0, 0, 0, self.bits
86 # Individual raw bits.
87 for i in range(length):
88 if i == 0:
89 ss = max(0, self.bits[0][0])
90 else:
91 ss = self.ss_es_bits[i - 1][1]
92 es = self.bits[i][0] + (self.halfbit * 2)
93 self.ss_es_bits.append([ss, es])
94 self.putb(i, i, [0, ['%d' % self.bits[i][1]]])
95 # Bits[0:0]: Startbit
96 s = ['Startbit: %d' % b[0][1], 'ST: %d' % b[0][1], 'ST', 'S', 'S']
97 self.putb(0, 0, [1, s])
98 self.putb(0, 0, [7, s])
99 # Bits[1:8]
100 for i in range(8):
101 f |= (b[1 + i][1] << (7 - i))
102 if length == 9: # BACKWARD Frame
103 s = ['Reply: %02X' % f, 'Rply: %02X' % f,
104 'Rep: %02X' % f, 'R: %02X' % f, 'R']
105 self.putb(1, 8, [7, s])
106 s = ['Reply: %d' % f, 'Rply: %d' % f,
107 'Rep: %d' % f, 'R: %d' % f, 'R']
108 self.putb(1, 8, [6, s])
109 return
110
111 # FORWARD FRAME
112 # Bits[9:16]: Command/data (MSB-first)
113 for i in range(8):
114 c |= (b[9 + i][1] << (7 - i))
115 # Raw output
116 s = ['Raw data: %02X' % f, 'Raw: %02X' % f,
117 'Raw: %02X' % f, 'R: %02X' % f, 'R']
118 self.putb(1, 8, [7, s])
119 s = ['Raw data: %02X' % c, 'Raw: %02X' % c,
120 'Raw: %02X' % c, 'R: %02X' % c, 'R']
121 self.putb(9, 16, [7, s])
122
123 # Bits[8:8]: Select bit
124 # s = ['Selectbit: %d' % b[8][1], 'SEL: %d' % b[8][1], 'SEL', 'SE', 'S']
125 if b[8][1] == 1:
126 s = ['Command', 'Comd', 'COM', 'CO', 'C']
127 else:
128 s = ['Arc Power Level', 'Arc Pwr', 'ARC', 'AC', 'A']
129 self.putb(8, 8, [1, s])
130
131 # f &= 254 # Clear the select bit.
132 if f >= 254: # BROADCAST
133 s = ['BROADCAST', 'Brdcast', 'BC', 'B', 'B']
134 self.putb(1, 7, [5, s])
135 elif f >= 160: # Extended command 0b10100000
136 if f == 0xC1: # DALI_ENABLE_DEVICE_TYPE_X
137 self.dev_type = -1
138 x = extended_commands.get(f, ['Unknown', 'Unk'])
139 s = ['Extended Command: %02X (%s)' % (f, x[0]),
140 'XC: %02X (%s)' % (f, x[1]),
141 'XC: %02X' % f, 'X: %02X' % f, 'X']

Callers 1

decodeMethod · 0.95

Calls 2

putbMethod · 0.95
getMethod · 0.80

Tested by

no test coverage detected