def set_processing_mixer_state_all(cls, fcp, subunit_id, attr, fb_id, in_fb, data): attrs = ('current', 'minimum', 'maximum', 'resolution', 'default') if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attr not in attrs: raise ValueError('Invalid argument for attribute') if fb_id > 255: raise ValueError('Invalid argument for function block ID') if in_fb > 255: raise ValueError('Invalid argument for input function block ID') for datum in data: if len(data) != 2: raise ValueError('Invalid argument for array of data array') args = bytearray() args.append(0x00) args.append(0x08 | (subunit_id & 0x07)) args.append(0xb8) args.append(0x82) # Processing function block args.append(fb_id) args.append(cls.ATTRIBUTE_VALUES[attr]) args.append(0x04) # Selector length is 4 args.append(in_fb) args.append(0xff) args.append(0xff) args.append(0x03) # Mixer control args.append(len(data)) # The length of control data for datum in data: args.extend(datum) AvcGeneral.command_control(fcp, args)
def set_feature_mute_state(cls, fcp, subunit_id, attr, fb_id, ch, mute): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attr is not 'current': raise ValueError('Invalid argument for attribute') if fb_id > 255: raise ValueError('Invalid argument for function block ID') if ch > 255: raise ValueError('Invalid argument for channel number') if mute: val = 0x70 else: val = 0x60 args = bytearray() args.append(0x00) args.append(0x08 | (subunit_id & 0x07)) args.append(0xb8) args.append(0x81) # Feature function block args.append(fb_id) args.append(cls.ATTRIBUTE_VALUES[attr]) args.append(0x02) # Selector length is 2 args.append(ch) args.append(0x01) # Mute control args.append(0x01) # Control data length is 1 args.append(val) AvcGeneral.command_control(fcp, args)
def set_processing_mixer_state(cls, fcp, subunit_id, attr, fb_id, in_fb, in_ch, out_ch, data): attrs = ('current', 'minimum', 'maximum', 'resolution', 'default') if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attr not in attrs: raise ValueError('Invalid argument for attribute') if fb_id > 255: raise ValueError('Invalid argument for function block ID') if in_fb > 255: raise ValueError('Invalid argument for input function block ID') if in_ch > 255: raise ValueError('Invalid argument for input channel number') if out_ch > 255: raise ValueError('Invalid argument for output channel number') if len(data) != 2: raise ValueError('Invalid argument for data array') args = bytearray() args.append(0x00) args.append(0x08 | (subunit_id & 0x07)) args.append(0xb8) args.append(0x82) # Processing function block args.append(fb_id) args.append(cls.ATTRIBUTE_VALUES[attr]) args.append(0x04) # Selector length is 4 args.append(in_fb) args.append(in_ch) args.append(out_ch) args.append(0x03) # Mixer control args.append(0x02) # Control data is 2 args.extend(data) # Higher and lower parts of setting AvcGeneral.command_control(fcp, args)
def set_digital_channel_status(cls, fcp, spec, name, values): if spec == 'con': attrs = cls.SUPPORTED_CON_STATUS subcmds = cls.__CON_SUBCMDS elif spec == 'pro': attrs = cls.SUPPORTED_PRO_STATUS subcmds = cls.__PRO_SUBCMDS else: raise ValueError('Invalid argument for specification name') if name not in attrs: raise ValueError('Invalid argument for attribute name') if attrs[name] != 1: if type(values) != 'list' or len(values) != attrs[name]: raise ValueError('Invalid argument for attribute value length') args = bytearray(0xff for i in range(10)) args[0] = 0x00 args[1] = 0xff args[2] = 0x00 args[3] = cls.SUPPORTED_SPEC.index(spec) args[4] = subcmds[name] args[5] = attrs[name] if attrs[name] == 1: args[6] = values else: for i in range(len(values)): args[6 + i] = values[i] AvcGeneral.command_control(fcp, args)
def set_format(cls, fcp, direction, plug, fmt): args = bytearray() args.append(0x00) # Control args.append(0xff) # Addressing to unit args.append(0xbf) # Extended stream format information command args.append(0xc0) # SINGLE subfunction args.append(cls.plug_direction.index(direction)) args.append(0x00) args.append(0x00) args.append(plug) args.append(0xff) args.append(0xff) args.extend(cls._build_format(fmt)) AvcGeneral.command_control(fcp, args)
def set_signal_source(cls, fcp, src, dst): args = bytearray() args.append(0x00) args.append(0xff) args.append(0x1a) args.append(0x0f) args.append(src[0]) args.append(src[1]) args.append(dst[0]) args.append(dst[1]) return AvcGeneral.command_control(fcp, args)
def set_selector_state(cls, fcp, subunit_id, attr, fb_id, value): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attr not in ('current', 'minimum', 'maximum', 'default'): raise ValueError('Invalid argument for attribute') if fb_id > 255: raise ValueError('Invalid argument for function block ID') if value > 255: raise ValueError('Invalid argument for selector value') args = bytearray() args.append(0x00) args.append(0x08 | (subunit_id & 0x07)) args.append(0xb8) args.append(0x80) # Selector function block args.append(fb_id) args.append(cls.ATTRIBUTE_VALUES[attr]) args.append(0x02) # Selector length is 2 args.append(value) args.append(0x01) # Selector control AvcGeneral.command_control(fcp, args)
def set_feature_lr_state(cls, fcp, subunit_id, attr, fb_id, ch, data): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attr not in cls.ATTRIBUTES: raise ValueError('Invalid argument for attribute') if fb_id > 255: raise ValueError('Invalid argument for function block ID') if ch > 255: raise ValueError('Invalid argument for channel number') if len(data) != 2: raise ValueError('Invalid argument for data array') args = bytearray() args.append(0x00) args.append(0x08 | (subunit_id & 0x07)) args.append(0xb8) args.append(0x81) # Feature function block args.append(fb_id) args.append(cls.ATTRIBUTE_VALUES[attr]) args.append(0x02) # Selector length is 2 args.append(ch) args.append(0x03) # LR control args.append(0x02) # Control data length is 2 args.extend(data) # Higher and lower parts of volume AvcGeneral.command_control(fcp, args)