frame.add(text_view)
vbox.pack_start(frame)
- hbox1 = gtk.HBox(False, 0)
- if node.sdi_select != None:
+ if not node.sdi_select is None:
+ hbox1 = gtk.HBox(False, 0)
frame = gtk.Frame('SDI Select')
adj = gtk.Adjustment(node.sdi_select, 0.0, 16.0, 1.0, 1.0, 1.0)
scale = gtk.HScale(adj)
return vbox
+ def __build_device(self, device):
+ vbox = gtk.VBox(False, 0)
+ frame = gtk.Frame('Device')
+ frame.set_border_width(4)
+ hbox = gtk.HBox(False, 0)
+ s = 'name=' + str(device.name) + ', type=' + \
+ str(device.type) + ', device=' + str(device.device)
+ label = gtk.Label(s)
+ hbox.pack_start(label, False, False)
+ frame.add(hbox)
+ vbox.pack_start(frame)
+ return vbox
+
+ def __build_controls(self, ctrls):
+ vbox = gtk.VBox(False, 0)
+ frame = gtk.Frame('Controls')
+ frame.set_border_width(4)
+ vbox1 = gtk.VBox(False, 0)
+ for ctrl in ctrls:
+ hbox1 = gtk.HBox(False, 0)
+ vbox1.pack_start(hbox1, False, False)
+ s = 'name=' + str(ctrl.name) + ', index=' + str(ctrl.index) + \
+ ', device=' + str(ctrl.device)
+ label = gtk.Label(s)
+ hbox1.pack_start(label, False, False)
+ if ctrl.amp_chs:
+ hbox1 = gtk.HBox(False, 0)
+ vbox1.pack_start(hbox1, False, False)
+ s = ' chs=' + str(ctrl.amp_chs) + ', dir=' + str(ctrl.amp_dir) + \
+ ', idx=' + str(ctrl.amp_idx) + ', ofs=' + str(ctrl.amp_ofs)
+ label = gtk.Label(s)
+ hbox1.pack_start(label, False, False)
+ frame.add(vbox1)
+ vbox.pack_start(frame)
+ return vbox
+
def __build_node(self, node):
w = self.node_window
mframe.set_border_width(4)
vbox = gtk.VBox(False, 0)
+ dev = node.get_device()
+ if not dev is None:
+ vbox.pack_start(self.__build_device(dev), False, False)
+ ctrls = node.get_controls()
+ if ctrls:
+ vbox.pack_start(self.__build_controls(ctrls), False, False)
hbox = gtk.HBox(False, 0)
hbox.pack_start(self.__build_node_caps(node))
hbox.pack_start(self.__build_connection_list(node))
self.codec.rw(self.nid, VERBS['SET_DIGI_CONVERT_2'], (self.origin_digi1 >> 8) & 0xff)
self.reread()
+ def get_device(self):
+ return self.codec.get_device(self.nid)
+
+ def get_controls(self):
+ return self.codec.get_controls(self.nid)
+
class HDAGPIO:
def __init__(self, codec, nid):
self.version = struct.unpack('I', res)
if self.version < 0x00010000: # 1.0.0
raise IOError, "unknown HDA hwdep version"
+ self.parse_proc()
def __del__(self):
if not self.fd is None:
return HDARootNode(self, "Audio Root Node")
return self.nodes[nid]
+ def parse_proc(self):
+ from hda_proc import HDACodecProc, DecodeProcFile
+ file = "/proc/asound/card%i/codec#%i" % (self.card, self.device)
+ if os.path.exists(file):
+ file = DecodeProcFile(file)
+ self.proc_codec = HDACodecProc(self.card, self.device, file)
+ else:
+ self.proc_codec = None
+ print "Unable to find proc file '%s'" % file
+
def analyze(self):
self.afg = None
self.mfg = None
+ self.nodes = {}
self.vendor_id = self.param_read(AC_NODE_ROOT, PARAMS['VENDOR_ID'])
self.subsystem_id = self.param_read(AC_NODE_ROOT, PARAMS['SUBSYSTEM_ID'])
self.revision_id = self.param_read(AC_NODE_ROOT, PARAMS['REV_ID'])
nodes_count, nid = self.get_sub_nodes(self.afg)
self.base_nid = nid
- self.nodes = {}
for i in range(nodes_count):
self.nodes[nid] = HDANode(self, nid)
nid += 1
def dump_node_extra(self, node):
return ''
+ def get_device(self, nid):
+ if self.proc_codec:
+ return self.proc_codec.get_device(nid)
+ return None
+
+ def get_controls(self, nid):
+ if self.proc_codec:
+ return self.proc_codec.get_controls(nid)
+ return None
+
def HDA_card_list():
from dircache import listdir
result = []
self.wrongfile('more than one PCM device?')
self.device = HDApcmDevice(name, type, device)
+ def get_device(self):
+ return self.device
+
def add_converter(self, line):
line, stream = self.decodeintw(line, 'stream=')
line, channel = self.decodeintw(line, 'channel=')
line, ctl.amp_ofs = self.decodeintw(line, 'ofs=')
ctl.amp_dir = ctl.amp_dir == 'In' and HDA_INPUT or HDA_OUTPUT
+ def get_controls(self):
+ return self.controls
+
def add_ampcaps(self, line, dir):
line = line.strip()
par = PARAMS[dir == HDA_INPUT and 'AMP_IN_CAP' or 'AMP_OUT_CAP']
def __init__(self, card, device, proc_file):
self.hwaccess = False
+ self.proc_codec = None
self.card = card
self.device = device
self.mcard = HDACardProc(card)
node = self.proc_nids[node.nid]
return node.dump_extra()
+ def get_device(self, nid):
+ node = self.proc_nids[nid]
+ return node.get_device()
+
+ def get_controls(self, nid):
+ node = self.proc_nids[nid]
+ return node.get_controls()
+
#
# test section
#