def set_processing_mixer_state(unit, subunit_id, attr, fb_id, in_fb, in_ch, out_ch, setting): attrs = ('current', 'minimum', 'maximum', 'resolution', 'default') if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attrs.count(attr) == 0: 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') 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(AvcAudio.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.append(setting >> 8) # Higher part of setting args.append(setting & 0xff) # Lower part of setting AvcGeneral.command_control(unit, args)
def set_processing_mixer_state(unit, subunit_id, attr, fb_id, in_fb, in_ch, out_ch, setting): attrs = ('current', 'minimum', 'maximum', 'resolution', 'default') if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attrs.count(attr) == 0: 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') 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(AvcAudio.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.append(setting >> 8) # Higher part of setting args.append(setting & 0xff) # Lower part of setting AvcGeneral.command_control(unit, args)
def set_digital_channel_status(unit, spec, name, values): if spec is 'con': attrs = BcoVendorDependent.supported_con_status subcmds = BcoVendorDependent._con_subcmds elif spec is 'pro': attrs = BcoVendorDependent.supported_pro_status subcmds = BcoVendorDependent._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) is not '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] = BcoVendorDependent.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(unit, args)
def set_digital_channel_status(cls, fcp, spec, name, values): if spec is 'con': attrs = BcoVendorDependent.supported_con_status subcmds = BcoVendorDependent._con_subcmds elif spec is 'pro': attrs = BcoVendorDependent.supported_pro_status subcmds = BcoVendorDependent._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) is not '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] = BcoVendorDependent.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_processing_mixer_state_all(unit, subunit_id, attr, fb_id, in_fb, states): attrs = ('current', 'minimum', 'maximum', 'resolution', 'default') if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attrs.count(attr) == 0: 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') data_count = len(states) // 2 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(AvcAudio.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(data_count) # The length of control data for i in range(data_count): args.append((states[i * 2] << 8) | states[i * 2 + 1]) AvcGeneral.command_control(unit, args)
def set_feature_mute_state(unit, 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: mute = 0x70 else: mute = 0x80 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(AvcAudio.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(mute) AvcGeneral.command_control(unit, args)
def set_feature_mute_state(unit, 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: mute = 0x70 else: mute = 0x80 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(AvcAudio.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(mute) AvcGeneral.command_control(unit, args)
def set_processing_mixer_state_all(unit, subunit_id, attr, fb_id, in_fb, states): attrs = ('current', 'minimum', 'maximum', 'resolution', 'default') if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if attrs.count(attr) == 0: 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') data_count = len(states) // 2 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(AvcAudio.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(data_count) # The length of control data for i in range(data_count): args.append((states[i * 2] << 8) | states[i * 2 + 1]) AvcGeneral.command_control(unit, 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_souarce(unit, src, dst): args = bytearray() args.append(0x01) 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(unit, args)
def set_selector_state(unit, subunit_id, attr, fb_id, value): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if ('current', 'minimum', 'maximum', 'default').count(attr) == 0: 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(AvcAudio.attribute_values[attribute]) args.append(0x02) # Selector length is 2 args.append(value) args.append(0x01) # Selector control AvcGeneral.command_control(unit, 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(unit, subunit_id, attr, fb_id, value): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if ('current', 'minimum', 'maximum', 'default').count(attr) == 0: 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(AvcAudio.attribute_values[attribute]) args.append(0x02) # Selector length is 2 args.append(value) args.append(0x01) # Selector control AvcGeneral.command_control(unit, args)
def set_signal_souarce(unit, src, dst): args = bytearray() args.append(0x01) 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(unit, args)
def set_feature_volume_state(cls, fcp, subunit_id, attr, fb_id, ch, vol): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if cls.attributes.count(attr) == 0: 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') 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(0x02) # Volume control args.append(0x02) # Control data length is 2 args.append(vol >> 8) # Higher part of volume args.append(vol & 0xff) # Lower part of volume AvcGeneral.command_control(fcp, args)
def set_feature_lr_state(unit, subunit_id, attr, fb_id, ch, balance): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if AvcAudio.attributes.count(attr) == 0: 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') 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(AvcAudio.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.append(balance >> 8) # Higher part of balance args.append(balance & 0xff) # Lower part of balance AvcGeneral.command_control(unit, args)
def set_feature_lr_state(unit, subunit_id, attr, fb_id, ch, balance): if subunit_id > 0x07: raise ValueError('Invalid argument for subunit ID') if AvcAudio.attributes.count(attr) == 0: 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') 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(AvcAudio.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.append(balance >> 8) # Higher part of balance args.append(balance & 0xff) # Lower part of balance AvcGeneral.command_control(unit, args)