# uncompyle6 version 3.9.3 # Python bytecode version base 2.6 (62161) # Decompiled from: Python 3.9.25 (main, Oct 31 2025, 23:16:49) # [GCC 14.2.0] # Embedded file name: user_config_display.pyc # Compiled at: 2025-03-06 16:11:21 import wx, os, data_model, traceback, one_unit, ConfigParser, protocol, sys, select_keys, select_units, d_protocol, mytime from definitions import * from user_config_helpers import * primaryDisplayTypes = {0: 'None', 1: 'D2', 2: 'D3', 3: 'D4', 5: 'PLP', 6: 'XM', 7: 'Reserved', 8: 'CP88'} secondaryDisplayTypes = {0: 'None', 4: 'IO2', 6: 'XM'} displayNavigationStyles = {0: 'No Menu', 1: '2 Buttons and one Rotary Encoder (e.g. D2)', 2: '6 Buttons and one Rotary Encoder (e.g. PLP)'} lclkTypes = {0: 'Default', 1: 'LCLK 1', 2: 'LCLK 2', 3: 'LCLK 3'} displayLineInfoChoices = {0: 'Default', 1: 'Unit Name', 2: 'Preset Name', 3: 'IP Address', 4: 'MAC Address', 5: 'Temperature', 6: 'Nothing', 7: 'Sample rate', 8: 'AVB Listener State', 9: 'DSP Model Name', 10: 'DSP Assembly Model Name', 11: 'Amplifier Assembly Model Name', 12: 'End Product Model Name', 13: 'DSP Version String', 14: 'DSP Assembly Version String', 15: 'Amplifier Assembly Version String', 16: 'End Product Version String', 30: 'Skip (do not overwrite)', 31: '"Initializing..."'} displayInputSignalChoices = {0: 'GPI 2', 1: 'GPI 1', 2: 'D_MISO', 3: 'GPI 0'} def getString(str): return one_unit.getString(str) class displayConfiguration(wx.Panel): def __init__(self, parent, frame, uiNumber, panelName): self.frame = frame self.name = panelName self.uiNumber = uiNumber self.parent = parent self.lines = {} wx.Panel.__init__(self, parent, size=(964, 600)) self.lines = {0: (self.createLine(0))} self.initFinished = False self.Show(True) return def initMe(self, force=False): if self.IsShown() == False and force == False: return if self.initFinished == True: return 0 print mytime.displayTime(), 'ucd.initMe configDisplay', self.name self.checkBoxes = {} frame = self.frame uiNumber = self.uiNumber self.uiKeys = getKeys(frame, uiNumber) try: for uiIndex in self.uiKeys: (key, val) = self.uiKeys[uiIndex] if key.channel == 1 and key.num == 128: continue if val[1] == 5: p = self.lines[0] p.key = key p.checkBox.SetValue(1) p.primaryDisplayChoice.SetStringSelection(primaryDisplayTypes[val[2] & 15]) p.displayInBitChoice.SetStringSelection(displayInputSignalChoices[val[2] >> 4 & 3]) p.secondaryDisplayChoice.SetStringSelection(secondaryDisplayTypes[val[3] & 15]) p.displayNavigationChoice.SetStringSelection(displayNavigationStyles[val[4] & 3]) flags = val[5] if flags & 1: p.precede8Bits.SetValue(1) if flags & 2: p.showKeys.SetValue(1) if flags & 4 == 0: p.blinkAllForWink.SetValue(1) if flags & 8 == 0: p.lclkDuplicateIO2.SetValue(1) if flags & 16: p.enableSecondaryVUClock.SetValue(1) if flags & 32: p.enableSecondaryLCDClock.SetValue(1) if flags & 64: p.forceSerial.SetValue(1) if flags & 128: p.turnOffLedsDuringMute.SetValue(1) keyBytes = val[6] & 3 p.keyBytesChoice.SetStringSelection(str(keyBytes + 1)) ledShift = (val[6] & 124) >> 2 p.ledShiftChoice.SetStringSelection(str(ledShift)) p.displayLineInfoChoice1.SetStringSelection(displayLineInfoChoices[val[4] >> 2 & 31]) p.displayLineInfoChoice2.SetStringSelection(displayLineInfoChoices[val[7] & 31]) line3Choice = val[4] >> 3 & 16 | val[3] >> 4 & 15 p.displayLineInfoChoice3.SetStringSelection(displayLineInfoChoices[line3Choice]) line4Choice = val[7] >> 3 & 28 | val[2] >> 6 & 3 p.displayLineInfoChoice4.SetStringSelection(displayLineInfoChoices[line4Choice]) self.enable(p) break except: traceback.print_exc(file=sys.stdout) self.initFinished = True self.Show(True) return def createLine(self, lineNumber): p = wx.Panel(self, size=(950, 400)) p.checkBox = wx.CheckBox(p, 0, ' Select Display', pos=(13, 10), size=(180, 20)) p.checkBox.SetValue(False) p.primaryDisplayLabel = wx.StaticText(p, -1, 'Primary Display Type', pos=(40, 40)) p.primaryDisplayChoice = wx.Choice(p, 30, choices=sorted(primaryDisplayTypes.values()), style=wx.BORDER_NONE, pos=(350, 38), size=(300, 26)) p.primaryDisplayConfigureButton = wx.Button(p, 1, 'Auto Configure', pos=(670, 40), size=(130, 20)) self.Bind(wx.EVT_BUTTON, self.OnConfigurePrimary, id=1) p.secondaryDisplayLabel = wx.StaticText(p, -1, 'Secondary Display Type', pos=(40, 68)) p.secondaryDisplayChoice = wx.Choice(p, 40, choices=sorted(secondaryDisplayTypes.values()), style=wx.BORDER_NONE, pos=(350, 66), size=(300, 26)) p.secondaryDisplayConfigureButton = wx.Button(p, 2, 'Auto Configure', pos=(570, 68), size=(130, 20)) self.Bind(wx.EVT_BUTTON, self.OnConfigureSecondary, id=2) p.secondaryDisplayConfigureButton.Show(False) p.displayNavigationLabel = wx.StaticText(p, -1, 'Display Navigation Style', pos=(40, 96)) p.displayNavigationChoice = wx.Choice(p, 50, choices=sorted(displayNavigationStyles.values()), style=wx.BORDER_NONE, pos=(350, 94), size=(300, 26)) p.keyBytesLabel = wx.StaticText(p, -1, 'Number Of Key Registers & Secondary Key Offset', pos=(40, 124)) p.keyBytesChoice = wx.Choice(p, 70, choices=('1', '2', '3', '4'), style=wx.BORDER_NONE, pos=(350, 122), size=(300, 26)) p.ledShiftLabel = wx.StaticText(p, -1, 'Secondary Display LED offset', pos=(40, 152)) p.ledShiftChoice = wx.Choice(p, 70, choices=[_[1] for i in range(32)], style=wx.BORDER_NONE, pos=(350, 150), size=(300, 26)) p.precede8Bits = wx.CheckBox(p, 60, ' Shift LCD register by 8 bits', pos=(40, 180)) p.showKeys = wx.CheckBox(p, 61, ' Show key UI code', pos=(40, 208)) p.blinkAllForWink = wx.CheckBox(p, 61, ' Blink all front panel LEDs for Wink / Locate', pos=(40, 236)) p.lclkDuplicateIO2 = wx.CheckBox(p, 62, ' IO2 Display connected to LCLK (P02293)', pos=(40, 264)) p.enableSecondaryVUClock = wx.CheckBox(p, 63, ' Enable secondary VU clock', pos=(348, 180)) p.enableSecondaryLCDClock = wx.CheckBox(p, 63, ' Enable secondary LCD clock', pos=(348, 208)) p.forceSerial = wx.CheckBox(p, 63, ' Force serial key interface', pos=(348, 236)) p.turnOffLedsDuringMute = wx.CheckBox(p, 64, ' Turn off VU when muted', pos=(348, 264)) p.displayLineInfoLabelmain = wx.StaticText(p, -1, 'Normal Operation', pos=(350, 290)) p.displayLineInfoLabelstart = wx.StaticText(p, -1, 'During Startup', pos=(670, 290)) p.displayLineInfoLabel1 = wx.StaticText(p, -1, 'Display Information Line 1', pos=(40, 310)) p.displayLineInfoChoice1 = wx.Choice(p, 50, choices=[_[2] for i in sorted(displayLineInfoChoices.keys())], style=wx.BORDER_NONE, pos=(350, 310), size=(300, 26)) p.displayLineInfoLabel2 = wx.StaticText(p, -1, 'Display Information Line 2', pos=(40, 336)) p.displayLineInfoChoice2 = wx.Choice(p, 50, choices=[_[3] for i in sorted(displayLineInfoChoices.keys())], style=wx.BORDER_NONE, pos=(350, 334), size=(300, 26)) p.displayLineInfoChoice3 = wx.Choice(p, 50, choices=[_[4] for i in sorted(displayLineInfoChoices.keys())], style=wx.BORDER_NONE, pos=(670, 310), size=(250, 26)) p.displayLineInfoChoice4 = wx.Choice(p, 50, choices=[_[5] for i in sorted(displayLineInfoChoices.keys())], style=wx.BORDER_NONE, pos=(670, 334), size=(250, 26)) p.displayInBitLabel = wx.StaticText(p, -1, 'Display Input Signal', pos=(40, 360)) p.displayInBitChoice = wx.Choice(p, 50, choices=sorted(displayInputSignalChoices.values()), style=wx.BORDER_NONE, pos=(350, 360), size=(300, 26)) self.enable(p) p.key = None self.Bind(wx.EVT_CHECKBOX, self.OnEnabled, id=lineNumber) p.lineNumber = lineNumber return p def OnConfigurePrimary(self, e): self.frame.frame.executeOK() line = self.lines[0] pDC = line.primaryDisplayChoice.GetStringSelection() pDCval = 0 for s in primaryDisplayTypes.keys(): if primaryDisplayTypes[s] == pDC: pDCval = s print mytime.displayTime(), 'ucd.OCP', pDCval, pDC dlgMessage = getString('ocp') dlgTitle = getString('acd') self.frame.Show(False) if isMAC(): style = wx.OK | wx.CANCEL | wx.STAY_ON_TOP else: style = wx.OK | wx.CANCEL res = wx.MessageBox(dlgMessage, dlgTitle, style) if res != wx.OK: self.frame.Show(True) return self.frame.frame.executeOK() keyBytes = int(line.keyBytesChoice.GetStringSelection()) ledShift = int(line.ledShiftChoice.GetStringSelection()) cfgName = 'configurations/DP' + pDC + '.cfg' cfg = ConfigParser.ConfigParser() cfg.read(cfgName) print mytime.displayTime(), 'ucd.OCP.reading config', cfgName try: keyBytes = (len(eval(cfg.get('DEFAULT', 'user_config_front_panel_keys'))) + 7) / 8 print mytime.displayTime(), 'ucd.OCP.keyBytes:', keyBytes line.keyBytesChoice.SetStringSelection(str(keyBytes)) except: traceback.print_exc(file=sys.stdout) try: ledShift = len(eval(cfg.get('DEFAULT', 'user_config_front_panel_leds'))) print mytime.displayTime(), 'ucd.OCP.ledShift:', ledShift line.ledShiftChoice.SetStringSelection(str(ledShift)) except: traceback.print_exc(file=sys.stdout) try: menuType = int(cfg.get('DEFAULT', 'menuType')) line.displayNavigationChoice.SetStringSelection(displayNavigationStyles[menuType]) except: traceback.print_exc(file=sys.stdout) for keyNumber in range(keyBytes * 8): self.frame.frame.clear(self.frame, keyNumber + 32) for ledNumber in range(ledShift): self.frame.frame.clear(self.frame, 184, memberID=ledNumber) self.frame.frame.clear(self.frame, 88) self.frame.frame.clear(self.frame, 187) self.frame.frame.clear(self.frame, 188) configurationFileName = 'configurations/DP' + pDC + '.csv' f = open(configurationFileName, 'rb') data = f.readlines() f.close() for csvLine in data: try: uiNumber = int(csvLine.split('|')[4]) structID = int(csvLine.split('|')[5]) except: continue if uiNumber == 189 and structID == 5: self.frame.frame.clear(self.frame, uiNumber, structID=5) self.frame.frame.parent.waitForSync(msg='ucd.autoconf.Syncing erased keys') self.frame.frame.load(configurationFileName) self.frame.frame.refreshAll() return def OnConfigureSecondary(self, e): line = self.lines[0] sDC = line.secondaryDisplayChoice.GetStringSelection() sDCval = 0 for s in secondaryDisplayTypes.keys(): if secondaryDisplayTypes[s] == sDC: sDCval = s print mytime.displayTime(), 'ucd.OCS', sDCval, sDC dlgMessage = getString('ocs') dlgTitle = getString('acd') res = wx.MessageBox(dlgMessage, dlgTitle, wx.OK | wx.CANCEL) if res != wx.OK: return return def OnEnabled(self, e): self.enable(self.lines[0]) return def enable(self, line): val = line.checkBox.GetValue() line.primaryDisplayChoice.Enable(val) line.secondaryDisplayChoice.Enable(val) line.displayNavigationChoice.Enable(val) line.precede8Bits.Enable(val) line.showKeys.Enable(val) line.keyBytesChoice.Enable(val) line.blinkAllForWink.Enable(val) line.ledShiftChoice.Enable(val) return def evaluateLine(self, line): if self.lines[0].checkBox.GetValue() == False: return else: pDC = line.primaryDisplayChoice.GetStringSelection() pDCval = 0 for s in primaryDisplayTypes.keys(): if primaryDisplayTypes[s] == pDC: pDCval = s sDC = line.secondaryDisplayChoice.GetStringSelection() sDCval = 0 for s in secondaryDisplayTypes.keys(): if secondaryDisplayTypes[s] == sDC: sDCval = s dNC = line.displayNavigationChoice.GetStringSelection() dNCval = 0 for s in displayNavigationStyles.keys(): if displayNavigationStyles[s] == dNC: dNCval = s line1Choice = line.displayLineInfoChoice1.GetStringSelection() for i in displayLineInfoChoices.keys(): if displayLineInfoChoices[i] == line1Choice: line1Choice = i break line2Choice = line.displayLineInfoChoice2.GetStringSelection() for i in displayLineInfoChoices.keys(): if displayLineInfoChoices[i] == line2Choice: line2Choice = i break line3Choice = line.displayLineInfoChoice3.GetStringSelection() for i in displayLineInfoChoices.keys(): if displayLineInfoChoices[i] == line3Choice: line3Choice = i break line4Choice = line.displayLineInfoChoice4.GetStringSelection() for i in displayLineInfoChoices.keys(): if displayLineInfoChoices[i] == line4Choice: line4Choice = i break flags = 0 if line.precede8Bits.GetValue(): flags += 1 if line.showKeys.GetValue(): flags += 2 if line.blinkAllForWink.GetValue() == 0: flags += 4 if line.lclkDuplicateIO2.GetValue() == 0: flags += 8 if line.enableSecondaryVUClock.GetValue() == 1: flags += 16 if line.enableSecondaryLCDClock.GetValue() == 1: flags += 32 if line.forceSerial.GetValue() == 1: flags += 64 if line.turnOffLedsDuringMute.GetValue() == 1: flags += 128 keyBytes = int(line.keyBytesChoice.GetStringSelection()) - 1 ledShift = int(line.ledShiftChoice.GetStringSelection()) bit = line.displayInBitChoice.GetStringSelection() for i in range(len(displayInputSignalChoices)): if displayInputSignalChoices[i] == bit: bit = i break try: sendString = '' + chr(self.uiNumber) sendString += chr(5) sendString += chr(pDCval | bit << 4 | (line4Choice & 3) << 6) sendString += chr(sDCval | (line3Choice & 15) << 4) sendString += chr(dNCval | line1Choice << 2 | (line3Choice & 16) << 3) sendString += chr(flags) sendString += chr(keyBytes | ledShift << 2) sendString += chr(line2Choice | (line4Choice & 28) << 3) mys = 'ucd.eL.String: ' for c in sendString: mys += hex(ord(c)) + ':' print mys, line.lineNumber self.settingsVerified = True return sendString except: print mytime.displayTime(), 'ucd.ec.eL.failed to build string' traceback.print_exc(file=sys.stdout) return return # okay decompiling pycode/user_config_display.pyc