diff --git a/pn.py b/pn.py new file mode 100644 index 0000000..d7de7f0 --- /dev/null +++ b/pn.py @@ -0,0 +1,165 @@ +def setinv(modnumlist, onoctype): + retimer1_inv = "0000000000000000" + retimer2_inv = "0000000000000000" + retimer3_inv = "0000000000000000" + retimer4_inv = "0000000000000000" + + for i in modnumlist: + writemodpassword(i) + + if (onoctype == "oneta"): + retimer1_inv = "0010000000000000" + retimer2_inv = "0000000000010000" + retimer3_inv = "0101000011110000" + retimer4_inv = "1010000011110000" + setonoc(modnumlist, "oneta") + elif (onoctype == "onetb"): + retimer1_inv = "0010000000000000" + retimer2_inv = "0000000000010000" + retimer3_inv = "0101000011110000" + retimer4_inv = "1010000011110000" + setonoc(modnumlist, "onetb") + elif (onoctype == "87654321"): + retimer1_inv = "0000000000000000" + retimer2_inv = "0000000000110000" + retimer3_inv = "1110000010010000" + retimer4_inv = "1100000001000000" + setonoc(modnumlist, "87654321") + elif (onoctype == "43218765"): + retimer1_inv = "0000000000100000" + retimer2_inv = "0000000000010000" + retimer3_inv = "0101000011110000" + retimer4_inv = "0111000000100000" + setonoc(modnumlist, "43218765") + elif (onoctype == "21436587"): + retimer1_inv = "1000000010000000" + retimer2_inv = "1110000000100000" + retimer3_inv = "1111000001110000" + retimer4_inv = "0100000011000000" + setonoc(modnumlist, "21436587") + elif (onoctype == "34127856"): + retimer1_inv = "1000000010000000" + retimer2_inv = "0011000011110000" + retimer3_inv = "1101000001010000" + retimer4_inv = "0100000011000000" + setonoc(modnumlist, "34127856") + elif (onoctype == "65872143"): + retimer1_inv = "1110000000110000" + retimer2_inv = "1000000010010000" + retimer3_inv = "1101000001110000" + retimer4_inv = "0110000011000000" + setonoc(modnumlist, "65872143") + elif (onoctype == "78563412"): + retimer1_inv = "0011000011100000" + retimer2_inv = "1000000010010000" + retimer3_inv = "1101000001110000" + retimer4_inv = "0100000011100000" + setonoc(modnumlist, "78563412") + elif (onoctype == "56781234"): + retimer1_inv = "0000000000000000" + retimer2_inv = "0010000000010000" + retimer3_inv = "0011000001000000" + retimer4_inv = "1100000001000000" + setonoc(modnumlist, "56781234") + + + + print(retimer1_inv, retimer2_inv, retimer3_inv, retimer4_inv) + + retimer1_inv = list(retimer1_inv) + retimer2_inv = list(retimer2_inv) + retimer3_inv = list(retimer3_inv) + retimer4_inv = list(retimer4_inv) + + for modnum in modnumlist: + + inv_flag = (bin(int(readmod(modnum, 0xba, 0xdc, 1), 16))[2:]).zfill(8) + print("Inv flag:", modnum, inv_flag) + if (onoctype == "43218765"): + inv_flag = inv_flag[3] + inv_flag[2] + inv_flag[1] + inv_flag[0] + \ + inv_flag[7] + inv_flag[6] + inv_flag[5] + inv_flag[4] + print("Inv flag change:", modnum, inv_flag) + elif (onoctype == "87654321"): + inv_flag = inv_flag[7] + inv_flag[6] + inv_flag[5] + inv_flag[4] + \ + inv_flag[3] + inv_flag[2] + inv_flag[1] + inv_flag[0] + print("Inv flag change:", modnum, inv_flag) + elif (onoctype == "21436587"): + inv_flag = inv_flag[1] + inv_flag[0] + inv_flag[3] + inv_flag[2] + \ + inv_flag[5] + inv_flag[4] + inv_flag[7] + inv_flag[6] + print("Inv flag change:", modnum, inv_flag) + elif (onoctype == "78563412"): + inv_flag = inv_flag[6] + inv_flag[7] + inv_flag[4] + inv_flag[5] + \ + inv_flag[2] + inv_flag[3] + inv_flag[0] + inv_flag[1] + print("Inv flag change:", modnum, inv_flag) + elif (onoctype == "34127856"): + inv_flag = inv_flag[2] + inv_flag[3] + inv_flag[0] + inv_flag[1] + \ + inv_flag[6] + inv_flag[7] + inv_flag[4] + inv_flag[5] + print("Inv flag change:", modnum, inv_flag) + elif (onoctype == "65872143"): + inv_flag = inv_flag[5] + inv_flag[4] + inv_flag[7] + inv_flag[6] + \ + inv_flag[1] + inv_flag[0] + inv_flag[3] + inv_flag[2] + print("Inv flag change:", modnum, inv_flag) + elif (onoctype == "56781234"): + inv_flag = inv_flag[4] + inv_flag[5] + inv_flag[6] + inv_flag[7] + \ + inv_flag[0] + inv_flag[1] + inv_flag[2] + inv_flag[3] + print("Inv flag change:", modnum, inv_flag) + + # CH1 ->retimer2-L + if inv_flag[7] == '1': + if retimer2_inv[15 - (modnum - 1)] == '0': + retimer2_inv[15 - (modnum - 1)] = '1' + elif retimer2_inv[15 - (modnum - 1)] == '1': + retimer2_inv[15 - (modnum - 1)] = '0' + + # CH2 ->retimer4-L + if (inv_flag[6] == '1'): + if retimer4_inv[15 - (modnum - 1)] == '0': + retimer4_inv[15 - (modnum - 1)] = '1' + elif retimer4_inv[15 - (modnum - 1)] == '1': + retimer4_inv[15 - (modnum - 1)] = '0' + # CH3 ->retimer4-H + if (inv_flag[5] == '1'): + if retimer4_inv[15 - (modnum + 7)] == '0': + retimer4_inv[15 - (modnum + 7)] = '1' + elif retimer4_inv[15 - (modnum + 7)] == '1': + retimer4_inv[15 - (modnum + 7)] = '0' + # CH4 ->retimer2-H + if (inv_flag[4] == '1'): + if retimer2_inv[15 - (modnum + 7)] == '0': + retimer2_inv[15 - (modnum + 7)] = '1' + elif retimer2_inv[15 - (modnum + 7)] == '1': + retimer2_inv[15 - (modnum + 7)] = '0' + # CH5 ->retimer1-L + if (inv_flag[3] == '1'): + if retimer1_inv[15 - (modnum - 1)] == '0': + retimer1_inv[15 - (modnum - 1)] = '1' + elif retimer1_inv[15 - (modnum - 1)] == '1': + retimer1_inv[15 - (modnum - 1)] = '0' + # CH6 ->retimer3-L + if (inv_flag[2] == '1'): + if retimer3_inv[15 - (modnum - 1)] == '0': + retimer3_inv[15 - (modnum - 1)] = '1' + elif retimer3_inv[15 - (modnum - 1)] == '1': + retimer3_inv[15 - (modnum - 1)] = '0' + # CH7 ->retimer3-H + if (inv_flag[1] == '1'): + if retimer3_inv[15 - (modnum + 7)] == '0': + retimer3_inv[15 - (modnum + 7)] = '1' + elif retimer3_inv[15 - (modnum + 7)] == '1': + retimer3_inv[15 - (modnum + 7)] = '0' + # CH8 ->retimer1-H + if (inv_flag[0] == '1'): + if retimer1_inv[15 - (modnum + 7)] == '0': + retimer1_inv[15 - (modnum + 7)] = '1' + elif retimer1_inv[15 - (modnum + 7)] == '1': + retimer1_inv[15 - (modnum + 7)] = '0' + + retimer1_inv = ''.join(retimer1_inv) + retimer2_inv = ''.join(retimer2_inv) + retimer3_inv = ''.join(retimer3_inv) + retimer4_inv = ''.join(retimer4_inv) + + print(retimer1_inv, retimer2_inv, retimer3_inv, retimer4_inv) + + return [str(hex(int(retimer1_inv, 2))), str(hex(int(retimer2_inv, 2))), str(hex(int(retimer3_inv, 2))), + str(hex(int(retimer4_inv, 2)))]