@@ -105,21 +105,21 @@ def decode(self, row_num, row):
105
105
debug_print ("SKIPPING:" , "\t Row number:" , row_num , "row:" , row )
106
106
return
107
107
108
- rw = row ["rw" ]
108
+ is_write = row ["rw" ] == "WRITE"
109
109
110
110
# TODO: Add support for an arbitrary number of bytes
111
111
# check for a first byte
112
112
b0 = int (row ["byte0" ], 16 )
113
113
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 )):
115
115
debug_print (
116
116
"\n \t \t BAD KEY:" ,
117
117
b0 ,
118
118
"(%s)" % self ._h (b0 ),
119
119
"self.current_bank:" ,
120
120
self .current_bank ,
121
121
"RW:" ,
122
- rw ,
122
+ is_write ,
123
123
"Row number:" ,
124
124
adjusted_row_num ,
125
125
)
@@ -130,7 +130,7 @@ def decode(self, row_num, row):
130
130
verbose_print ("\t Row number:" , row_num , "row:" , row )
131
131
132
132
########### Decode #################
133
- print (self .decode_bytes (rw , b0 , b1 ))
133
+ print (self .decode_bytes (is_write , b0 , b1 ))
134
134
135
135
def decode_transaction (self , reg_txn ):
136
136
# OK! Here we should know READ/WRITE, Register, and Data
@@ -200,8 +200,6 @@ def default_txn_summary(self, register_address, byte, is_write):
200
200
# self.current_bank = value_byte >> 4
201
201
# return
202
202
# TODO: Blank txns
203
- # TODO: Take bool, for rw
204
- # TODO: Take a bytearray
205
203
def process_register_transaction (self , register_address , data , is_write ):
206
204
"""Update register state cache and return the transaction summary for the current register state"""
207
205
@@ -224,21 +222,21 @@ def process_single_byte(self, register_address, byte, is_write):
224
222
225
223
return self .bitfield_changes_str (old_value , byte , bitfields )
226
224
227
- def decode_bytes (self , rw , b0 = None , b1 = None ):
225
+ def decode_bytes (self , is_write , b0 = None , b1 = None ):
228
226
229
227
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 :
232
230
if b0 not in self .register_map [self .current_bank ]:
233
231
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 )
235
233
else :
236
234
raise RuntimeError ("Multi-byte reads not supported" )
237
235
return
238
236
239
- def single_byte_decode (self , rw , b0 ):
237
+ def single_byte_decode (self , is_write , b0 ):
240
238
241
- if rw == "WRITE" :
239
+ if is_write :
242
240
current_register = self .register_map [self .current_bank ][b0 ]
243
241
#bitfields = self.load_bitfields(current_register)
244
242
self .prev_single_byte_write = b0
@@ -254,7 +252,7 @@ def single_byte_decode(self, rw, b0):
254
252
# isn't this going to do nothing because it's a local?
255
253
self .prev_single_byte_write = None # shouldn't be needed
256
254
257
- def decode_set_value (self , rw , reg_addr , value_byte ):
255
+ def decode_set_value (self , is_write , reg_addr , value_byte ):
258
256
259
257
current_register = self .register_map [self .current_bank ][reg_addr ]
260
258
bitfields = self .load_bitfields (current_register )
@@ -267,11 +265,10 @@ def decode_set_value(self, rw, reg_addr, value_byte):
267
265
268
266
# ****IDENTIFIED WRITE TO REG W/ NEW VALUE ***
269
267
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' ]
271
268
272
- return self .decode_by_bitfield (current_register , value_byte )
269
+ return self .decode_by_bitfield (current_register , value_byte , is_write )
273
270
274
- def decode_by_bitfield (self , current_register , new_value ):
271
+ def decode_by_bitfield (self , current_register , new_value , is_write ):
275
272
# old value could be last written value
276
273
old_value = current_register ['last_read_value' ]
277
274
bitfields = self .load_bitfields (current_register )
@@ -327,7 +324,6 @@ def load_bitfields(self, current_register):
327
324
current_register ['bitfields' ] = bitfields
328
325
return current_register ['bitfields' ]
329
326
330
-
331
327
def bitfield_def_to_bitfield (self , bitfield_def , shift ):
332
328
match = re .fullmatch (BITFIELD_REGEX , bitfield_def )
333
329
if match : #
@@ -353,6 +349,7 @@ def bf_range_to_mask_width(self, bf_start, bf_end):
353
349
# a_minus_b = a & ~b
354
350
def bitwise_diff (self , old_value , new_value ):
355
351
if old_value is None :
352
+ print ("old value defaulting to 0" )
356
353
old_value = 0
357
354
set_bitmask = (new_value & (~ old_value ))
358
355
unset_bitmask = (old_value & (~ new_value ))
0 commit comments