Skip to content

Commit a6816cd

Browse files
committed
refactoring
1 parent 8d04f4c commit a6816cd

File tree

1 file changed

+14
-17
lines changed

1 file changed

+14
-17
lines changed

register_decoder.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -105,21 +105,21 @@ def decode(self, row_num, row):
105105
debug_print("SKIPPING:", "\tRow number:", row_num, "row:", row)
106106
return
107107

108-
rw = row["rw"]
108+
is_write = row["rw"] == "WRITE"
109109

110110
# TODO: Add support for an arbitrary number of bytes
111111
# check for a first byte
112112
b0 = int(row["byte0"], 16)
113113

114-
if rw == "WRITE" and (b0 != 0x7F) and (not self._reg_known(b0)):
114+
if is_write == "WRITE" and (b0 != 0x7F) and (not self._reg_known(b0)):
115115
debug_print(
116116
"\n\t\tBAD KEY:",
117117
b0,
118118
"(%s)" % self._h(b0),
119119
"self.current_bank:",
120120
self.current_bank,
121121
"RW:",
122-
rw,
122+
is_write,
123123
"Row number:",
124124
adjusted_row_num,
125125
)
@@ -130,7 +130,7 @@ def decode(self, row_num, row):
130130
verbose_print("\tRow number:", row_num, "row:", row)
131131

132132
########### Decode #################
133-
print(self.decode_bytes(rw, b0, b1))
133+
print(self.decode_bytes(is_write, b0, b1))
134134

135135
def decode_transaction(self, reg_txn):
136136
# OK! Here we should know READ/WRITE, Register, and Data
@@ -200,8 +200,6 @@ def default_txn_summary(self, register_address, byte, is_write):
200200
# self.current_bank = value_byte >> 4
201201
# return
202202
# TODO: Blank txns
203-
# TODO: Take bool, for rw
204-
# TODO: Take a bytearray
205203
def process_register_transaction(self, register_address, data, is_write):
206204
"""Update register state cache and return the transaction summary for the current register state"""
207205

@@ -224,21 +222,21 @@ def process_single_byte(self, register_address, byte, is_write):
224222

225223
return self.bitfield_changes_str(old_value, byte, bitfields)
226224

227-
def decode_bytes(self, rw, b0=None, b1=None):
225+
def decode_bytes(self, is_write, b0=None, b1=None):
228226

229227
if b1 is None: # single byte
230-
return self.single_byte_decode(rw, b0)
231-
elif rw == "WRITE":
228+
return self.single_byte_decode(is_write, b0)
229+
elif is_write:
232230
if b0 not in self.register_map[self.current_bank]:
233231
return "UNKNOWN REG: %s"%hex(b0)
234-
return self.decode_set_value(rw, b0, b1)
232+
return self.decode_set_value(is_write, b0, b1)
235233
else:
236234
raise RuntimeError("Multi-byte reads not supported")
237235
return
238236

239-
def single_byte_decode(self, rw, b0):
237+
def single_byte_decode(self, is_write, b0):
240238

241-
if rw == "WRITE":
239+
if is_write:
242240
current_register = self.register_map[self.current_bank][b0]
243241
#bitfields = self.load_bitfields(current_register)
244242
self.prev_single_byte_write = b0
@@ -254,7 +252,7 @@ def single_byte_decode(self, rw, b0):
254252
# isn't this going to do nothing because it's a local?
255253
self.prev_single_byte_write = None # shouldn't be needed
256254

257-
def decode_set_value(self, rw, reg_addr, value_byte):
255+
def decode_set_value(self, is_write, reg_addr, value_byte):
258256

259257
current_register = self.register_map[self.current_bank][reg_addr]
260258
bitfields = self.load_bitfields(current_register)
@@ -267,11 +265,10 @@ def decode_set_value(self, rw, reg_addr, value_byte):
267265

268266
# ****IDENTIFIED WRITE TO REG W/ NEW VALUE ***
269267
debug_print("SET %s to %s (%s)" % (self._reg_name(reg_addr), self._b(value_byte), self._h(value_byte)))
270-
old_value = current_register['last_read_value']
271268

272-
return self.decode_by_bitfield(current_register, value_byte)
269+
return self.decode_by_bitfield(current_register, value_byte, is_write)
273270

274-
def decode_by_bitfield(self, current_register, new_value):
271+
def decode_by_bitfield(self, current_register, new_value, is_write):
275272
# old value could be last written value
276273
old_value = current_register['last_read_value']
277274
bitfields = self.load_bitfields(current_register)
@@ -327,7 +324,6 @@ def load_bitfields(self, current_register):
327324
current_register['bitfields'] = bitfields
328325
return current_register['bitfields']
329326

330-
331327
def bitfield_def_to_bitfield(self, bitfield_def, shift):
332328
match = re.fullmatch(BITFIELD_REGEX, bitfield_def)
333329
if match: #
@@ -353,6 +349,7 @@ def bf_range_to_mask_width(self, bf_start, bf_end):
353349
# a_minus_b = a & ~b
354350
def bitwise_diff(self, old_value, new_value):
355351
if old_value is None:
352+
print("old value defaulting to 0")
356353
old_value = 0
357354
set_bitmask = (new_value & (~old_value))
358355
unset_bitmask = (old_value & (~new_value))

0 commit comments

Comments
 (0)