1 changed files with 86 additions and 0 deletions
@ -0,0 +1,86 @@ |
|||||||
|
def get_retimer_inv(self, route): |
||||||
|
ocs_list = self.get_cmis() |
||||||
|
assert len(ocs_list) == 8 |
||||||
|
retimer_inv_table = { |
||||||
|
'oneta' : [ |
||||||
|
0b0010000000000000, |
||||||
|
0b0000000000010000, |
||||||
|
0b0101000011110000, |
||||||
|
0b1010000011110000], |
||||||
|
'onetb' : [ |
||||||
|
0b0010000000000000, |
||||||
|
0b0000000000010000, |
||||||
|
0b0101000011110000, |
||||||
|
0b1010000011110000], |
||||||
|
'onoc1' : [ |
||||||
|
0b1000000010000000, |
||||||
|
0b1110000000100000, |
||||||
|
0b1111000001110000, |
||||||
|
0b0100000011000000], |
||||||
|
'onoc2' : [ |
||||||
|
0b0000000000100000, |
||||||
|
0b0000000000010000, |
||||||
|
0b0101000011110000, |
||||||
|
0b0111000000100000], |
||||||
|
'onoc3' : [ |
||||||
|
0b0000000000000000, |
||||||
|
0b0000000000110000, |
||||||
|
0b1110000010010000, |
||||||
|
0b1100000001000000], |
||||||
|
'onoc4' : [ |
||||||
|
0b1000000010000000, |
||||||
|
0b0011000011110000, |
||||||
|
0b1101000001010000, |
||||||
|
0b0100000011000000], |
||||||
|
'onoc5' : [ |
||||||
|
0b1110000000110000, |
||||||
|
0b1000000010010000, |
||||||
|
0b1101000001110000, |
||||||
|
0b0110000011000000], |
||||||
|
'onoc6' : [ |
||||||
|
0b0011000011100000, |
||||||
|
0b1000000010010000, |
||||||
|
0b1101000001110000, |
||||||
|
0b0100000011100000], |
||||||
|
'onoc7' : [ |
||||||
|
0b0000000000000000, |
||||||
|
0b0010000000010000, |
||||||
|
0b0011000001000000, |
||||||
|
0b1100000001000000] |
||||||
|
} |
||||||
|
retimer_inv = retimer_inv_table[route] |
||||||
|
route_list = abc_ocs.ROUTE_TABLE[route] if 'onoc' in route else list(range(1, 9)) |
||||||
|
|
||||||
|
for ocs in ocs_list: |
||||||
|
ocs_inv_flag = bin(ocs.read_mzm_direction())[2:].zfill(8) |
||||||
|
inv_flag = '' |
||||||
|
for i in range(0, 8): |
||||||
|
inv_flag += ocs_inv_flag[route_list[i] - 1] |
||||||
|
log.inf(f'inv: {ocs}: {ocs_inv_flag}, -> rtm: {inv_flag}') |
||||||
|
|
||||||
|
if inv_flag[7] == '1': |
||||||
|
mask_ = 1 << (ocs.index_) |
||||||
|
retimer_inv[1] ^= mask_ |
||||||
|
if inv_flag[6] == '1': |
||||||
|
mask_ = 1 << (ocs.index_) |
||||||
|
retimer_inv[3] ^= mask_ |
||||||
|
if inv_flag[5] == '1': |
||||||
|
mask_ = 1 << (ocs.index_ + 8) |
||||||
|
retimer_inv[3] ^= mask_ |
||||||
|
if inv_flag[4] == '1': |
||||||
|
mask_ = 1 << (ocs.index_ + 8) |
||||||
|
retimer_inv[1] ^= mask_ |
||||||
|
if inv_flag[3] == '1': |
||||||
|
mask_ = 1 << (ocs.index_) |
||||||
|
retimer_inv[0] ^= mask_ |
||||||
|
if inv_flag[2] == '1': |
||||||
|
mask_ = 1 << (ocs.index_) |
||||||
|
retimer_inv[2] ^= mask_ |
||||||
|
if inv_flag[1] == '1': |
||||||
|
mask_ = 1 << (ocs.index_ + 8) |
||||||
|
retimer_inv[2] ^= mask_ |
||||||
|
if inv_flag[0] == '1': |
||||||
|
mask_ = 1 << (ocs.index_ + 8) |
||||||
|
retimer_inv[0] ^= mask_ |
||||||
|
|
||||||
|
return retimer_inv |
||||||
Loading…
Reference in new issue