Changeset 1239
- Timestamp:
- 06/01/08 04:35:14 (16 years ago)
- Files:
-
- trunk/libffado/config.h.in (modified) (1 diff)
- trunk/libffado/README (modified) (1 diff)
- trunk/libffado/SConstruct (modified) (3 diffs)
- trunk/libffado/src/bebob/bebob_avdevice.cpp (modified) (2 diffs)
- trunk/libffado/src/bebob/bebob_avdevice.h (modified) (1 diff)
- trunk/libffado/src/bounce/bounce_avdevice.cpp (modified) (1 diff)
- trunk/libffado/src/bounce/bounce_avdevice.h (modified) (1 diff)
- trunk/libffado/src/devicemanager.cpp (modified) (9 diffs)
- trunk/libffado/src/devicemanager.h (modified) (1 diff)
- trunk/libffado/src/dice/dice_avdevice.cpp (modified) (1 diff)
- trunk/libffado/src/dice/dice_avdevice.h (modified) (1 diff)
- trunk/libffado/src/fireworks/fireworks_device.cpp (modified) (2 diffs)
- trunk/libffado/src/fireworks/fireworks_device.h (modified) (1 diff)
- trunk/libffado/src/genericavc/avc_avdevice.cpp (modified) (3 diffs)
- trunk/libffado/src/genericavc/avc_avdevice.h (modified) (1 diff)
- trunk/libffado/src/libavc/ccm/avc_signal_source.h (modified) (1 diff)
- trunk/libffado/src/libavc/general/avc_plug.cpp (modified) (16 diffs)
- trunk/libffado/src/libavc/general/avc_plug.h (modified) (4 diffs)
- trunk/libffado/src/libavc/general/avc_unit.cpp (modified) (5 diffs)
- trunk/libffado/src/libavc/general/avc_unit.h (modified) (1 diff)
- trunk/libffado/src/maudio/maudio_avdevice.cpp (modified) (1 diff)
- trunk/libffado/src/maudio/maudio_avdevice.h (modified) (1 diff)
- trunk/libffado/src/metrichalo/mh_avdevice.cpp (modified) (4 diffs)
- trunk/libffado/src/metrichalo/mh_avdevice.h (modified) (1 diff)
- trunk/libffado/src/motu/motu_avdevice.cpp (modified) (1 diff)
- trunk/libffado/src/motu/motu_avdevice.h (modified) (1 diff)
- trunk/libffado/src/rme/rme_avdevice.cpp (modified) (1 diff)
- trunk/libffado/src/rme/rme_avdevice.h (modified) (1 diff)
- trunk/libffado/support/dbus/ffado-dbus-server.cpp (modified) (1 diff)
- trunk/libffado/support/mixer/ffadomixer.in (modified) (1 diff)
- trunk/libffado/support/mixer/mixer_phase24.py (modified) (6 diffs)
- trunk/libffado/support/mixer/mixer_phase24.ui (modified) (14 diffs)
- trunk/libffado/support/mixer/mixer_saffire.py (modified) (1 diff)
- trunk/libffado/support/mixer/SConscript (modified) (1 diff)
- trunk/libffado/tests/test-ffado.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/config.h.in
r1212 r1239 84 84 85 85 // discovery 86 #define ENABLE_DISCOVERY_CACHE 086 #define ENABLE_DISCOVERY_CACHE 1 87 87 88 88 // watchdog trunk/libffado/README
r1230 r1239 117 117 dbus-python (>= 0.82.0), http://dbus.freedesktop.org/releases/dbus-python/ 118 118 119 The version of PyQt must be chosen to match the version of Qt in use. For Qt120 4.x use PyQt 4.x, while PyQt 3.x is applicable for all other Qt versions119 The version of PyQt must be chosen to match the version of Qt in use. For 120 Qt 4.x use PyQt 4.x, while PyQt 3.x is applicable for all other Qt versions 121 121 from 1.43. 122 122 trunk/libffado/SConstruct
r1233 r1239 25 25 26 26 FFADO_API_VERSION="8" 27 FFADO_VERSION=" 1.999.27"27 FFADO_VERSION="2.0.900" 28 28 29 29 import os … … 68 68 BoolOption( "ENABLE_METRIC_HALO", "Enable/Disable the Metric Halo part.", False ), 69 69 BoolOption( "ENABLE_RME", "Enable/Disable the RME part.", False ), 70 BoolOption( "ENABLE_BOUNCE", "Enable/Disable the BOUNCE part.", False ),70 #BoolOption( "ENABLE_BOUNCE", "Enable/Disable the BOUNCE part.", False ), 71 71 BoolOption( "ENABLE_GENERICAVC", """\ 72 72 Enable/Disable the the generic avc part (mainly used by apple). … … 335 335 env['ENABLE_BOUNCE'] = True 336 336 337 # HACK: when the bounce device gets fixed, remove this 338 env['ENABLE_BOUNCE'] = False 339 337 340 if env['ENABLE_BEBOB'] or env['ENABLE_DICE'] or env['ENABLE_BOUNCE'] or env['ENABLE_FIREWORKS']: 338 341 env['ENABLE_GENERICAVC'] = True trunk/libffado/src/bebob/bebob_avdevice.cpp
r1234 r1239 82 82 83 83 bool 84 AvDevice::probe( ConfigRom& configRom ) 85 { 86 unsigned int vendorId = configRom.getNodeVendorId(); 87 unsigned int modelId = configRom.getModelId(); 88 89 GenericAVC::VendorModel vendorModel( SHAREDIR "/ffado_driver_bebob.txt" ); 90 if ( vendorModel.parse() ) { 91 return vendorModel.isPresent( vendorId, modelId ); 92 } 93 94 return false; 84 AvDevice::probe( ConfigRom& configRom, bool generic ) 85 { 86 if(generic) { 87 return false; 88 // try a bebob-specific command to check for the firmware 89 ExtendedPlugInfoCmd extPlugInfoCmd( configRom.get1394Service() ); 90 UnitPlugAddress unitPlugAddress( UnitPlugAddress::ePT_PCR, 91 configRom.getNodeId() ); 92 extPlugInfoCmd.setPlugAddress( PlugAddress( PlugAddress::ePD_Input, 93 PlugAddress::ePAM_Unit, 94 unitPlugAddress ) ); 95 extPlugInfoCmd.setNodeId( configRom.getNodeId() ); 96 extPlugInfoCmd.setCommandType( AVCCommand::eCT_Status ); 97 extPlugInfoCmd.setVerbose( configRom.getVerboseLevel() ); 98 ExtendedPlugInfoInfoType extendedPlugInfoInfoType( 99 ExtendedPlugInfoInfoType::eIT_NoOfChannels ); 100 extendedPlugInfoInfoType.initialize(); 101 extPlugInfoCmd.setInfoType( extendedPlugInfoInfoType ); 102 103 if ( !extPlugInfoCmd.fire() ) { 104 debugError( "Number of channels command failed\n" ); 105 return false; 106 } 107 108 ExtendedPlugInfoInfoType* infoType = extPlugInfoCmd.getInfoType(); 109 if ( infoType 110 && infoType->m_plugNrOfChns ) 111 { 112 return true; 113 } 114 return false; 115 } else { 116 // check if device is in supported devices list 117 unsigned int vendorId = configRom.getNodeVendorId(); 118 unsigned int modelId = configRom.getModelId(); 119 120 GenericAVC::VendorModel vendorModel( SHAREDIR "/ffado_driver_bebob.txt" ); 121 if ( vendorModel.parse() ) { 122 return vendorModel.isPresent( vendorId, modelId ); 123 } 124 return false; 125 } 95 126 } 96 127 … … 158 189 m_model.vendor_name.c_str(), 159 190 m_model.model_name.c_str()); 160 } else return false; 191 } else { 192 debugWarning("Using generic BeBoB support for unsupported device '%s %s'\n", 193 getConfigRom().getVendorName().c_str(), getConfigRom().getModelName().c_str()); 194 } 161 195 162 196 if ( !Unit::discover() ) { trunk/libffado/src/bebob/bebob_avdevice.h
r1175 r1239 63 63 virtual ~AvDevice(); 64 64 65 static bool probe( ConfigRom& configRom );65 static bool probe( ConfigRom& configRom, bool generic = false ); 66 66 virtual bool loadFromCache(); 67 67 virtual bool saveCache(); trunk/libffado/src/bounce/bounce_avdevice.cpp
r1135 r1239 70 70 71 71 bool 72 BounceDevice::probe( ConfigRom& configRom )72 BounceDevice::probe( ConfigRom& configRom, bool generic ) 73 73 { 74 if (generic) return false; 74 75 75 76 debugOutput( DEBUG_LEVEL_VERBOSE, "probing BounceDevice\n"); trunk/libffado/src/bounce/bounce_avdevice.h
r864 r1239 74 74 virtual ~BounceDevice(); 75 75 76 static bool probe( ConfigRom& configRom );76 static bool probe( ConfigRom& configRom, bool generic = false ); 77 77 static FFADODevice * createDevice( Ieee1394Service& ieee1394Service, 78 78 std::auto_ptr<ConfigRom>( configRom )); trunk/libffado/src/devicemanager.cpp
r1212 r1239 454 454 } 455 455 456 std::auto_ptr<ConfigRom> configRom = 457 std::auto_ptr<ConfigRom>( new ConfigRom( *portService, nodeId ) ); 456 ConfigRom *configRom = new ConfigRom( *portService, nodeId ); 458 457 if ( !configRom->initialize() ) { 459 458 // \todo If a PHY on the bus is in power safe mode then … … 496 495 // supported devices. 497 496 if(m_deviceStringParser->countDeviceStrings() && 498 !m_deviceStringParser->match(*configRom .get())) {497 !m_deviceStringParser->match(*configRom)) { 499 498 debugOutput(DEBUG_LEVEL_VERBOSE, "Device doesn't match any of the spec strings. skipping...\n"); 500 499 continue; … … 546 545 547 546 debugOutput( DEBUG_LEVEL_NORMAL, "discovery of node %d on port %d done...\n", nodeId, portService->getPort() ); 547 } else { 548 // we didn't get a device, hence we have to delete the configrom ptr manually 549 delete configRom; 548 550 } 549 551 } … … 817 819 818 820 FFADODevice* 819 DeviceManager::getDriverForDevice ( std::auto_ptr<ConfigRom>( configRom ),820 int id )821 DeviceManager::getDriverForDeviceDo( ConfigRom *configRom, 822 int id, bool generic ) 821 823 { 822 824 #ifdef ENABLE_BEBOB 823 825 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying BeBoB...\n" ); 824 if ( BeBoB::AvDevice::probe( *configRom.get() ) ) { 825 return BeBoB::AvDevice::createDevice( *this, configRom ); 826 } 827 #endif 828 826 if ( BeBoB::AvDevice::probe( *configRom, generic ) ) { 827 return BeBoB::AvDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 828 } 829 #endif 830 831 #ifdef ENABLE_FIREWORKS 832 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying ECHO Audio FireWorks...\n" ); 833 if ( FireWorks::Device::probe( *configRom, generic ) ) { 834 return FireWorks::Device::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 835 } 836 #endif 837 838 // we want to try the non-generic AV/C platforms before trying the generic ones 829 839 #ifdef ENABLE_GENERICAVC 830 840 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying Generic AV/C...\n" ); 831 if ( GenericAVC::AvDevice::probe( *configRom.get() ) ) { 832 return GenericAVC::AvDevice::createDevice( *this, configRom ); 833 } 834 #endif 835 836 #ifdef ENABLE_FIREWORKS 837 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying ECHO Audio FireWorks...\n" ); 838 if ( FireWorks::Device::probe( *configRom.get() ) ) { 839 return FireWorks::Device::createDevice( *this, configRom ); 840 } 841 #endif 842 843 #ifdef ENABLE_BEBOB 844 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying M-Audio...\n" ); 845 if ( MAudio::AvDevice::probe( *configRom.get() ) ) { 846 return MAudio::AvDevice::createDevice( *this, configRom ); 841 if ( GenericAVC::AvDevice::probe( *configRom, generic ) ) { 842 return GenericAVC::AvDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 847 843 } 848 844 #endif … … 850 846 #ifdef ENABLE_MOTU 851 847 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying Motu...\n" ); 852 if ( Motu::MotuDevice::probe( *configRom .get()) ) {853 return Motu::MotuDevice::createDevice( *this, configRom);848 if ( Motu::MotuDevice::probe( *configRom, generic ) ) { 849 return Motu::MotuDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 854 850 } 855 851 #endif … … 857 853 #ifdef ENABLE_DICE 858 854 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying Dice...\n" ); 859 if ( Dice::DiceAvDevice::probe( *configRom .get()) ) {860 return Dice::DiceAvDevice::createDevice( *this, configRom);855 if ( Dice::DiceAvDevice::probe( *configRom, generic ) ) { 856 return Dice::DiceAvDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 861 857 } 862 858 #endif … … 864 860 #ifdef ENABLE_METRIC_HALO 865 861 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying Metric Halo...\n" ); 866 if ( MetricHalo::MHAvDevice::probe( *configRom .get()) ) {867 return MetricHalo::MHAvDevice::createDevice( *this, configRom);862 if ( MetricHalo::MHAvDevice::probe( *configRom, generic ) ) { 863 return MetricHalo::MHAvDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 868 864 } 869 865 #endif … … 871 867 #ifdef ENABLE_RME 872 868 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying RME...\n" ); 873 if ( Rme::RmeDevice::probe( *configRom .get()) ) {874 return Rme::RmeDevice::createDevice( *this, configRom);869 if ( Rme::RmeDevice::probe( *configRom, generic ) ) { 870 return Rme::RmeDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 875 871 } 876 872 #endif … … 878 874 #ifdef ENABLE_BOUNCE 879 875 debugOutput( DEBUG_LEVEL_VERBOSE, "Trying Bounce...\n" ); 880 if ( Bounce::BounceDevice::probe( *configRom.get() ) ) { 881 return Bounce::BounceDevice::createDevice( *this, configRom ); 882 } 883 #endif 884 876 if ( Bounce::BounceDevice::probe( *configRom, generic ) ) { 877 return Bounce::BounceDevice::createDevice( *this, std::auto_ptr<ConfigRom>( configRom ) ); 878 } 879 #endif 880 881 return NULL; 882 } 883 884 FFADODevice* 885 DeviceManager::getDriverForDevice( ConfigRom *configRom, 886 int id ) 887 { 888 debugOutput( DEBUG_LEVEL_VERBOSE, "Probing for supported device...\n" ); 889 FFADODevice* dev = getDriverForDeviceDo(configRom, id, false); 890 if(dev) { 891 debugOutput( DEBUG_LEVEL_VERBOSE, " found supported device...\n" ); 892 return dev; 893 } 894 895 debugOutput( DEBUG_LEVEL_VERBOSE, " no supported device found, trying generic support...\n" ); 896 dev = getDriverForDeviceDo(configRom, id, true); 897 if(dev) { 898 debugOutput( DEBUG_LEVEL_VERBOSE, " found generic support for device...\n" ); 899 return dev; 900 } 901 debugOutput( DEBUG_LEVEL_VERBOSE, " device not supported...\n" ); 885 902 return 0; 886 903 } trunk/libffado/src/devicemanager.h
r1163 r1239 131 131 132 132 protected: 133 FFADODevice* getDriverForDevice( std::auto_ptr<ConfigRom>( configRom ), 133 FFADODevice* getDriverForDeviceDo( ConfigRom *configRom, 134 int id, bool generic ); 135 FFADODevice* getDriverForDevice( ConfigRom *configRom, 134 136 int id ); 135 137 FFADODevice* getSlaveDriver( std::auto_ptr<ConfigRom>( configRom ) ); trunk/libffado/src/dice/dice_avdevice.cpp
r1234 r1239 101 101 102 102 bool 103 DiceAvDevice::probe( ConfigRom& configRom )103 DiceAvDevice::probe( ConfigRom& configRom, bool generic ) 104 104 { 105 if (generic) return false; 105 106 unsigned int vendorId = configRom.getNodeVendorId(); 106 107 unsigned int modelId = configRom.getModelId(); trunk/libffado/src/dice/dice_avdevice.h
r1207 r1239 60 60 ~DiceAvDevice(); 61 61 62 static bool probe( ConfigRom& configRom );62 static bool probe( ConfigRom& configRom, bool generic = false ); 63 63 static FFADODevice * createDevice( DeviceManager& d, std::auto_ptr<ConfigRom>( configRom )); 64 64 virtual bool discover(); trunk/libffado/src/fireworks/fireworks_device.cpp
r1158 r1239 75 75 76 76 bool 77 Device::probe( ConfigRom& configRom ) 78 { 79 unsigned int vendorId = configRom.getNodeVendorId(); 80 unsigned int modelId = configRom.getModelId(); 81 82 GenericAVC::VendorModel vendorModel( SHAREDIR "/ffado_driver_fireworks.txt" ); 83 if ( vendorModel.parse() ) { 84 return vendorModel.isPresent( vendorId, modelId ); 85 } 86 return false; 77 Device::probe( ConfigRom& configRom, bool generic ) 78 { 79 if(generic) { 80 // try an EFC command 81 EfcOverAVCCmd cmd( configRom.get1394Service() ); 82 cmd.setCommandType( AVC::AVCCommand::eCT_Control ); 83 cmd.setNodeId( configRom.getNodeId() ); 84 cmd.setSubunitType( AVC::eST_Unit ); 85 cmd.setSubunitId( 0xff ); 86 cmd.setVerbose( configRom.getVerboseLevel() ); 87 88 EfcHardwareInfoCmd hwInfo; 89 hwInfo.setVerboseLevel(configRom.getVerboseLevel()); 90 cmd.m_cmd = &hwInfo; 91 92 if ( !cmd.fire()) { 93 return false; 94 } 95 96 if ( cmd.getResponse() != AVC::AVCCommand::eR_Accepted) { 97 return false; 98 } 99 if ( hwInfo.m_header.retval != EfcCmd::eERV_Ok 100 && hwInfo.m_header.retval != EfcCmd::eERV_FlashBusy) { 101 debugError( "EFC command failed\n" ); 102 return false; 103 } 104 return true; 105 } else { 106 unsigned int vendorId = configRom.getNodeVendorId(); 107 unsigned int modelId = configRom.getModelId(); 108 109 GenericAVC::VendorModel vendorModel( SHAREDIR "/ffado_driver_fireworks.txt" ); 110 if ( vendorModel.parse() ) { 111 return vendorModel.isPresent( vendorId, modelId ); 112 } 113 return false; 114 } 87 115 } 88 116 … … 99 127 100 128 if (!GenericAVC::VendorModel::isValid(m_model)) { 101 return false; 102 } 103 debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 104 m_model.vendor_name.c_str(), m_model.model_name.c_str()); 129 debugWarning("Using generic ECHO Audio FireWorks support for unsupported device '%s %s'\n", 130 getConfigRom().getVendorName().c_str(), getConfigRom().getModelName().c_str()); 131 } else { 132 debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 133 m_model.vendor_name.c_str(), m_model.model_name.c_str()); 134 } 105 135 106 136 // get the info from the EFC trunk/libffado/src/fireworks/fireworks_device.h
r1133 r1239 46 46 virtual ~Device(); 47 47 48 static bool probe( ConfigRom& configRom );48 static bool probe( ConfigRom& configRom, bool generic = false ); 49 49 static FFADODevice * createDevice( DeviceManager& d, std::auto_ptr<ConfigRom>( configRom )); 50 50 virtual bool discover(); trunk/libffado/src/genericavc/avc_avdevice.cpp
r1211 r1239 31 31 #include "libavc/general/avc_plug_info.h" 32 32 #include "libavc/general/avc_extended_plug_info.h" 33 #include "libavc/general/avc_subunit_info.h" 33 34 34 35 #include "debugmodule/debugmodule.h" … … 76 77 77 78 bool 78 AvDevice::probe( ConfigRom& configRom ) 79 { 80 unsigned int vendorId = configRom.getNodeVendorId(); 81 unsigned int modelId = configRom.getModelId(); 82 83 GenericAVC::VendorModel vendorModel( SHAREDIR "/ffado_driver_genericavc.txt" ); 84 if ( vendorModel.parse() ) { 85 return vendorModel.isPresent( vendorId, modelId ); 86 } 87 88 return false; 79 AvDevice::probe( ConfigRom& configRom, bool generic ) 80 { 81 if(generic) { 82 // check if we have a music subunit 83 SubUnitInfoCmd subUnitInfoCmd( configRom.get1394Service() ); 84 subUnitInfoCmd.setCommandType( AVCCommand::eCT_Status ); 85 subUnitInfoCmd.m_page = 0; 86 subUnitInfoCmd.setNodeId( configRom.getNodeId() ); 87 subUnitInfoCmd.setVerbose( configRom.getVerboseLevel() ); 88 if ( !subUnitInfoCmd.fire() ) { 89 debugError( "Subunit info command failed\n" ); 90 return false; 91 } 92 for ( int i = 0; i < subUnitInfoCmd.getNrOfValidEntries(); ++i ) { 93 subunit_type_t subunit_type 94 = subUnitInfoCmd.m_table[i].m_subunit_type; 95 if (subunit_type == eST_Music) return true; 96 } 97 98 return false; 99 } else { 100 // check if device is in supported devices list 101 unsigned int vendorId = configRom.getNodeVendorId(); 102 unsigned int modelId = configRom.getModelId(); 103 104 GenericAVC::VendorModel vendorModel( SHAREDIR "/ffado_driver_genericavc.txt" ); 105 if ( vendorModel.parse() ) { 106 return vendorModel.isPresent( vendorId, modelId ); 107 } 108 return false; 109 } 89 110 } 90 111 … … 111 132 112 133 if (!GenericAVC::VendorModel::isValid(m_model)) { 113 return false; 114 } 115 debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 116 m_model.vendor_name.c_str(), m_model.model_name.c_str()); 134 debugWarning("Using generic AV/C support for unsupported device '%s %s'\n", 135 getConfigRom().getVendorName().c_str(), getConfigRom().getModelName().c_str()); 136 } else { 137 debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 138 m_model.vendor_name.c_str(), m_model.model_name.c_str()); 139 } 117 140 } 118 141 trunk/libffado/src/genericavc/avc_avdevice.h
r1154 r1239 51 51 virtual ~AvDevice(); 52 52 53 static bool probe( ConfigRom& configRom );53 static bool probe( ConfigRom& configRom, bool generic = false ); 54 54 virtual bool discover(); 55 55 static FFADODevice * createDevice( DeviceManager& d, std::auto_ptr<ConfigRom>( configRom )); trunk/libffado/src/libavc/ccm/avc_signal_source.h
r864 r1239 72 72 { 73 73 public: 74 enum eOutputStatus { 75 eOS_Effective = 0, 76 eOS_NotEffective = 1, 77 eOS_InsufficientResource = 2, 78 eOS_Ready = 3, 79 eOS_Output = 4, 80 }; 81 public: 74 82 SignalSourceCmd( Ieee1394Service& ieee1394service ); 75 83 virtual ~SignalSourceCmd(); trunk/libffado/src/libavc/general/avc_plug.cpp
r1160 r1239 38 38 namespace AVC { 39 39 40 int Plug::m_globalIdCounter = 0;41 42 40 IMPL_DEBUG_MODULE( Plug, Plug, DEBUG_LEVEL_NORMAL ); 43 41 IMPL_DEBUG_MODULE( PlugManager, PlugManager, DEBUG_LEVEL_NORMAL ); … … 59 57 , m_infoPlugType( eAPT_Unknown ) 60 58 , m_nrOfChannels( 0 ) 61 , m_globalId( m_globalIdCounter++)59 , m_globalId( unit->getPlugManager().requestNewGlobalId() ) 62 60 { 63 61 debugOutput( DEBUG_LEVEL_VERBOSE, … … 76 74 } 77 75 76 Plug::Plug( Unit* unit, 77 Subunit* subunit, 78 function_block_type_t functionBlockType, 79 function_block_id_t functionBlockId, 80 EPlugAddressType plugAddressType, 81 EPlugDirection plugDirection, 82 plug_id_t plugId, 83 int globalId ) 84 : m_unit( unit ) 85 , m_subunit( subunit ) 86 , m_functionBlockType( functionBlockType ) 87 , m_functionBlockId( functionBlockId ) 88 , m_addressType( plugAddressType ) 89 , m_direction( plugDirection ) 90 , m_id( plugId ) 91 , m_infoPlugType( eAPT_Unknown ) 92 , m_nrOfChannels( 0 ) 93 { 94 if(globalId < 0) { 95 m_globalId = unit->getPlugManager().requestNewGlobalId(); 96 } else { 97 m_globalId = globalId; 98 } 99 debugOutput( DEBUG_LEVEL_VERBOSE, 100 "nodeId = %d, subunitType = %d, " 101 "subunitId = %d, functionBlockType = %d, " 102 "functionBlockId = %d, addressType = %d, " 103 "direction = %d, id = %d\n", 104 m_unit->getConfigRom().getNodeId(), 105 getSubunitType(), 106 getSubunitId(), 107 m_functionBlockType, 108 m_functionBlockId, 109 m_addressType, 110 m_direction, 111 m_id ); 112 } 113 78 114 Plug::Plug( const Plug& rhs ) 79 115 : m_unit ( rhs.m_unit ) 80 116 , m_subunit ( rhs.m_subunit ) 117 , m_subunitType ( rhs.m_subunitType ) 118 , m_subunitId ( rhs.m_subunitId ) 81 119 , m_functionBlockType( rhs.m_functionBlockType ) 82 120 , m_functionBlockId( rhs.m_functionBlockId ) … … 89 127 , m_clusterInfos( rhs.m_clusterInfos ) 90 128 , m_formatInfos( rhs.m_formatInfos ) 129 // FIXME: how about the global id? 91 130 { 92 131 if ( getDebugLevel() ) { … … 574 613 (getPlugAddressType() == eAPA_ExternalPlug)) { 575 614 if (getPlugDirection() != eAPD_Output) { 576 debugOutput(DEBUG_LEVEL_ NORMAL, "Signal Source command not valid for non-output unit plugs...\n");615 debugOutput(DEBUG_LEVEL_VERBOSE, "Signal Source command not valid for non-output unit plugs...\n"); 577 616 return -1; 578 617 } … … 581 620 if(getPlugAddressType() == eAPA_SubunitPlug) { 582 621 if (getPlugDirection() != eAPD_Input) { 583 debugOutput(DEBUG_LEVEL_ NORMAL, "Signal Source command not valid for non-input subunit plugs...\n");622 debugOutput(DEBUG_LEVEL_VERBOSE, "Signal Source command not valid for non-input subunit plugs...\n"); 584 623 return -1; 585 624 } … … 614 653 if(dynamic_cast<SignalUnitAddress *>(src)) { 615 654 SignalUnitAddress *usrc=dynamic_cast<SignalUnitAddress *>(src); 616 if (usrc->m_plugId & 0x80) { 655 if(usrc->m_plugId == 0xFE) { 656 debugOutput(DEBUG_LEVEL_VERBOSE, "No/Invalid connection...\n"); 657 return -1; 658 } else if (usrc->m_plugId & 0x80) { 617 659 p=m_unit->getPlugManager().getPlug( eST_Unit, 0xFF, 618 660 0xFF, 0xFF, eAPA_ExternalPlug, eAPD_Input, … … 625 667 } else if (dynamic_cast<SignalSubunitAddress *>(src)) { 626 668 SignalSubunitAddress *susrc=dynamic_cast<SignalSubunitAddress *>(src); 627 p=m_unit->getPlugManager().getPlug( byteToSubunitType(susrc->m_subunitType), 628 susrc->m_subunitId, 0xFF, 0xFF, eAPA_SubunitPlug, 629 eAPD_Output, susrc->m_plugId); 669 if(susrc->m_plugId == 0xFE) { 670 debugOutput(DEBUG_LEVEL_VERBOSE, "No/Invalid connection...\n"); 671 return -1; 672 } else { 673 p=m_unit->getPlugManager().getPlug( byteToSubunitType(susrc->m_subunitType), 674 susrc->m_subunitId, 0xFF, 0xFF, eAPA_SubunitPlug, 675 eAPD_Output, susrc->m_plugId); 676 } 630 677 } else return -1; 631 678 632 679 if (p==NULL) { 633 debugError("reported signal source plug not found\n"); 680 debugError("reported signal source plug not found for '%s'\n", 681 getName()); 634 682 return -1; 635 683 } … … 1631 1679 result &= serializePlugVector( basePath + "m_outputConnections", ser, m_outputConnections ); 1632 1680 result &= ser.write( basePath + "m_globalId", m_globalId); 1633 result &= ser.write( basePath + "m_globalIdCounter", m_globalIdCounter );1634 1681 1635 1682 return result; … … 1649 1696 EPlugDirection direction; 1650 1697 plug_id_t id; 1698 int globalId; 1651 1699 1652 1700 if ( !deser.isExisting( basePath + "m_subunitType" ) ) { … … 1665 1713 result &= deser.read( basePath + "m_direction", direction ); 1666 1714 result &= deser.read( basePath + "m_id", id ); 1715 result &= deser.read( basePath + "m_globalId", globalId ); 1667 1716 1668 1717 Plug* pPlug = unit.createPlug( &unit, subunit, functionBlockType, 1669 functionBlockId, addressType, direction, id); 1718 functionBlockId, addressType, direction, 1719 id, globalId); 1670 1720 if ( !pPlug ) { 1671 1721 return 0; 1672 1722 } 1723 1724 // this is needed to allow for the update of the subunit pointer later on 1725 // in the deserializeUpdateSubunit. 1726 pPlug->m_subunitType = subunitType; 1727 pPlug->m_subunitId = subunitId; 1673 1728 1674 1729 result &= deser.read( basePath + "m_infoPlugType", pPlug->m_infoPlugType ); … … 1680 1735 // input and output connections can't be processed here because not all plugs might 1681 1736 // deserialized at this point. so we do that in deserializeUpdate. 1682 result &= deser.read( basePath + "m_globalId", pPlug->m_globalId );1683 result &= deser.read( basePath + "m_globalIdCounter", pPlug->m_globalIdCounter );1684 1737 1685 1738 if ( !result ) { … … 1776 1829 1777 1830 PlugManager::PlugManager( ) 1831 : m_globalIdCounter( 0 ) 1778 1832 { 1779 1833 … … 1781 1835 1782 1836 PlugManager::PlugManager( const PlugManager& rhs ) 1837 : m_globalIdCounter( rhs.m_globalIdCounter ) 1783 1838 { 1784 1839 setDebugLevel( rhs.getDebugLevel() ); … … 2165 2220 i++; 2166 2221 } 2222 result &= ser.write( basePath + "m_globalIdCounter", m_globalIdCounter ); 2167 2223 2168 2224 return result; … … 2179 2235 if ( !pMgr ) { 2180 2236 return 0; 2237 } 2238 2239 if(!deser.read( basePath + "m_globalIdCounter", pMgr->m_globalIdCounter )) { 2240 pMgr->m_globalIdCounter = 0; 2181 2241 } 2182 2242 trunk/libffado/src/libavc/general/avc_plug.h
r1154 r1239 92 92 EPlugDirection plugDirection, 93 93 plug_id_t plugId ); 94 Plug( Unit* unit, 95 Subunit* subunit, 96 function_block_type_t functionBlockType, 97 function_block_type_t functionBlockId, 98 EPlugAddressType plugAddressType, 99 EPlugDirection plugDirection, 100 plug_id_t plugId, 101 int globalId ); 94 102 Plug( const Plug& rhs ); 95 103 virtual ~Plug(); … … 294 302 PlugVector m_outputConnections; 295 303 int m_globalId; 296 static int m_globalIdCounter;297 304 298 305 DECLARE_DEBUG_MODULE; … … 317 324 int getPlugCount() 318 325 { return m_plugs.size(); }; 326 327 int requestNewGlobalId() 328 { return m_globalIdCounter++; }; 319 329 320 330 Plug* getPlug( ESubunitType subunitType, … … 347 357 348 358 private: 359 int m_globalIdCounter; 349 360 350 361 PlugVector m_plugs; trunk/libffado/src/libavc/general/avc_unit.cpp
r1211 r1239 66 66 Plug::EPlugAddressType plugAddressType, 67 67 Plug::EPlugDirection plugDirection, 68 plug_id_t plugId ) 68 plug_id_t plugId, 69 int globalId ) 69 70 { 70 71 … … 75 76 plugAddressType, 76 77 plugDirection, 77 plugId ); 78 plugId, 79 globalId ); 78 80 if (p) p->setVerboseLevel(getDebugLevel()); 79 81 return p; … … 787 789 } 788 790 } 789 debugOutput( DEBUG_LEVEL_NORMAL, 790 "Active Sync Connection: %s, '%s' -> '%s'\n", 791 m_activeSyncInfo->m_description.c_str(), 792 plug->getName(), 793 msuPlug->getName() ); 791 if(m_activeSyncInfo) { 792 debugOutput( DEBUG_LEVEL_NORMAL, 793 "Active Sync Connection: %s, '%s' -> '%s'\n", 794 m_activeSyncInfo->m_description.c_str(), 795 plug->getName(), 796 msuPlug->getName() ); 797 } 794 798 } 795 799 } … … 827 831 bool Unit::setActiveSync(const SyncInfo& syncInfo) 828 832 { 829 bool result = syncInfo.m_source->setConnection( *syncInfo.m_destination ); 833 bool result = true; 834 835 if(!syncInfo.m_source->setConnection( *syncInfo.m_destination )) { 836 debugWarning("Could not set sync source connection.\n"); 837 } 838 830 839 result &= updateActiveSyncInfo(); 831 840 return result; … … 1022 1031 result &= deserializePlugVector( basePath + "ExternalPlug", deser, 1023 1032 getPlugManager(), m_externalPlugs ); 1024 result &= deserializeVector<PlugConnection>( basePath + "PlugConn nection", deser,1033 result &= deserializeVector<PlugConnection>( basePath + "PlugConnection", deser, 1025 1034 *this, m_plugConnections ); 1026 1035 result &= deserializeVector<Subunit>( basePath + "Subunit", deser, *this, m_subunits ); trunk/libffado/src/libavc/general/avc_unit.h
r1159 r1239 114 114 AVC::Plug::EPlugAddressType plugAddressType, 115 115 AVC::Plug::EPlugDirection plugDirection, 116 AVC::plug_id_t plugId ); 116 AVC::plug_id_t plugId, 117 int globalId = -1 ); 117 118 118 119 protected: trunk/libffado/src/maudio/maudio_avdevice.cpp
r1177 r1239 59 59 60 60 bool 61 AvDevice::probe( ConfigRom& configRom )61 AvDevice::probe( ConfigRom& configRom, bool generic ) 62 62 { 63 if (generic) return false; 64 63 65 unsigned int iVendorId = configRom.getNodeVendorId(); 64 66 unsigned int iModelId = configRom.getModelId(); trunk/libffado/src/maudio/maudio_avdevice.h
r1177 r1239 57 57 virtual ~AvDevice(); 58 58 59 static bool probe( ConfigRom& configRom );59 static bool probe( ConfigRom& configRom, bool generic = false ); 60 60 static FFADODevice * createDevice( DeviceManager& d, std::auto_ptr<ConfigRom>( configRom )); 61 61 virtual bool discover(); trunk/libffado/src/metrichalo/mh_avdevice.cpp
r1135 r1239 50 50 }; 51 51 52 MHAvDevice::MHAvDevice( Ieee1394Service& ieee1394Service,52 MHAvDevice::MHAvDevice( DeviceManager& d, 53 53 std::auto_ptr<ConfigRom>( configRom )) 54 : FFADODevice( ieee1394Service, configRom )54 : FFADODevice( d, configRom ) 55 55 , m_model( NULL ) 56 56 … … 66 66 67 67 bool 68 MHAvDevice::probe( ConfigRom& configRom ) 69 { 68 MHAvDevice::probe( ConfigRom& configRom, bool generic ) 69 { 70 if (generic) return false; 70 71 unsigned int vendorId = configRom.getNodeVendorId(); 71 72 unsigned int modelId = configRom.getModelId(); … … 87 88 88 89 FFADODevice * 89 MHAvDevice::createDevice( Ieee1394Service& ieee1394Service,90 MHAvDevice::createDevice( DeviceManager& d, 90 91 std::auto_ptr<ConfigRom>( configRom )) 91 92 { 92 return new MHAvDevice( ieee1394Service, configRom );93 return new MHAvDevice(d, configRom ); 93 94 } 94 95 … … 96 97 MHAvDevice::discover() 97 98 { 98 unsigned int vendorId = m_pConfigRom->getNodeVendorId();99 unsigned int modelId = m_pConfigRom->getModelId();99 unsigned int vendorId = getConfigRom().getNodeVendorId(); 100 unsigned int modelId = getConfigRom().getModelId(); 100 101 101 102 for ( unsigned int i = 0; trunk/libffado/src/metrichalo/mh_avdevice.h
r864 r1239 47 47 class MHAvDevice : public FFADODevice { 48 48 public: 49 MHAvDevice( Ieee1394Service& ieee1394Service,49 MHAvDevice( DeviceManager& d, 50 50 std::auto_ptr<ConfigRom>( configRom )); 51 51 virtual ~MHAvDevice(); 52 52 53 static bool probe( ConfigRom& configRom );54 static FFADODevice * createDevice( Ieee1394Service& ieee1394Service,55 53 static bool probe( ConfigRom& configRom, bool generic = false ); 54 static FFADODevice * createDevice( DeviceManager& d, 55 std::auto_ptr<ConfigRom>( configRom )); 56 56 static int getConfigurationId(); 57 57 virtual bool discover(); trunk/libffado/src/motu/motu_avdevice.cpp
r1234 r1239 588 588 589 589 bool 590 MotuDevice::probe( ConfigRom& configRom ) 591 { 590 MotuDevice::probe( ConfigRom& configRom, bool generic) 591 { 592 if(generic) return false; 593 592 594 unsigned int vendorId = configRom.getNodeVendorId(); 593 595 unsigned int unitVersion = configRom.getUnitVersion(); trunk/libffado/src/motu/motu_avdevice.h
r1128 r1239 151 151 virtual bool destroyMixer(); 152 152 153 static bool probe( ConfigRom& configRom );153 static bool probe( ConfigRom& configRom, bool generic = false ); 154 154 static FFADODevice * createDevice( DeviceManager& d, std::auto_ptr<ConfigRom>( configRom )); 155 155 static int getConfigurationId( ); trunk/libffado/src/rme/rme_avdevice.cpp
r1136 r1239 68 68 69 69 bool 70 RmeDevice::probe( ConfigRom& configRom ) 71 { 70 RmeDevice::probe( ConfigRom& configRom, bool generic ) 71 { 72 if (generic) return false; 72 73 unsigned int vendorId = configRom.getNodeVendorId(); 73 74 unsigned int unitVersion = configRom.getUnitVersion(); trunk/libffado/src/rme/rme_avdevice.h
r981 r1239 66 66 virtual ~RmeDevice(); 67 67 68 static bool probe( ConfigRom& configRom );68 static bool probe( ConfigRom& configRom, bool generic = false ); 69 69 static FFADODevice * createDevice( DeviceManager& d, 70 70 std::auto_ptr<ConfigRom>( configRom )); trunk/libffado/support/dbus/ffado-dbus-server.cpp
r1211 r1239 104 104 105 105 {"verbose", 'v', "level", 0, "Produce verbose output" }, 106 {"cache", 'c', "enable", 0, "Use AVC model cache (default=enable)" }, 107 106 #if ENABLE_DISCOVERY_CACHE 107 {"cache", 'c', "enable", 0, "Use AVC model cache" }, 108 #endif 108 109 109 110 {"node", 'n', "id", 0, "Only expose mixer of a device on a specific node" }, trunk/libffado/support/mixer/ffadomixer.in
r1217 r1239 63 63 SupportedDevices=[ 64 64 [(0x000aac, 0x00000003),'Phase88Control'], 65 [(0x000aac, 0x00000004),'Phase X24Control'],66 [(0x000aac, 0x00000007),'Phase X24Control'],65 [(0x000aac, 0x00000004),'Phase24Control'], 66 [(0x000aac, 0x00000007),'Phase24Control'], 67 67 [(0x00130e, 0x00000003),'SaffireProMixer'], 68 68 [(0x00130e, 0x00000006),'SaffireProMixer'], trunk/libffado/support/mixer/mixer_phase24.py
r1106 r1239 24 24 from mixer_phase24ui import * 25 25 26 class Phase X24Control(PhaseX24ControlUI):26 class Phase24Control(Phase24ControlUI): 27 27 def __init__(self,parent = None,name = None,fl = 0): 28 Phase X24ControlUI.__init__(self,parent,name,fl)28 Phase24ControlUI.__init__(self,parent,name,fl) 29 29 self.init() 30 30 … … 51 51 # public slot 52 52 def setVolumeMaster(self,a0): 53 if self.isPhaseX24: 54 return 53 55 self.setVolume('master', a0) 54 56 … … 60 62 # public slot 61 63 def setFrontLevel(self,a0): 64 if self.isPhaseX24: 65 return 62 66 if(a0 == 0): 63 67 print "setting front level to %d" % (0) … … 100 104 101 105 self.VolumeControls={ 102 'master': ['/Mixer/Feature_1', self.sldMaster],103 106 'analogin' : ['/Mixer/Feature_6', self.sldLineIn], 104 107 'spdifin' : ['/Mixer/Feature_7', self.sldSPDIFIn], … … 116 119 117 120 def initValues(self): 121 self.modelId = self.configrom.getModelId() 122 if self.modelId == 0x00000007: 123 self.isPhaseX24 = True 124 else: 125 self.isPhaseX24 = False 126 127 if self.isPhaseX24: 128 self.setCaption("Terratec Phase X24 Control") 129 self.cmbFrontLevel.setEnabled(False) 130 self.sldMaster.setEnabled(False) 131 else: 132 self.setCaption("Terratec Phase 24 Control") 133 134 self.VolumeControls['master'] = ['/Mixer/Feature_1', self.sldMaster] 135 self.sldMaster.setEnabled(True) 136 137 self.cmbFrontLevel.setEnabled(True) 138 val=self.hw.getContignuous('/Mixer/Feature_8') 139 if val>0: 140 self.cmbFrontLevel.setCurrentItem(1) 141 else: 142 self.cmbFrontLevel.setCurrentItem(0) 143 118 144 for name, ctrl in self.VolumeControls.iteritems(): 119 145 vol = self.hw.getContignuous(ctrl[0]) … … 128 154 val=self.hw.getContignuous('/Mixer/Feature_2')/-768 129 155 if val>4: 130 self.cmb FrontLevel.setCurrentItem(4)156 self.cmbLineLevel.setCurrentItem(4) 131 157 else: 132 self.cmbFrontLevel.setCurrentItem(val) 133 134 val=self.hw.getContignuous('/Mixer/Feature_8') 135 if val>0: 136 self.cmbFrontLevel.setCurrentItem(1) 137 else: 138 self.cmbFrontLevel.setCurrentItem(0) 158 self.cmbLineLevel.setCurrentItem(val) trunk/libffado/support/mixer/mixer_phase24.ui
r1127 r1239 1 1 <!DOCTYPE UI><UI version="3.3" stdsetdef="1"> 2 <class>Phase X24ControlUI</class>2 <class>Phase24ControlUI</class> 3 3 <comment>Copyright (C) 2005-2008 by Pieter Palmers 4 4 … … 20 20 <widget class="QWidget"> 21 21 <property name="name"> 22 <cstring>Phase X24ControlUI</cstring>22 <cstring>Phase24ControlUI</cstring> 23 23 </property> 24 24 <property name="geometry"> … … 625 625 <sender>sldInput12</sender> 626 626 <signal>valueChanged(int)</signal> 627 <receiver>Phase X24ControlUI</receiver>627 <receiver>Phase24ControlUI</receiver> 628 628 <slot>setVolume12(int)</slot> 629 629 </connection> … … 631 631 <sender>sldInput34</sender> 632 632 <signal>valueChanged(int)</signal> 633 <receiver>Phase X24ControlUI</receiver>633 <receiver>Phase24ControlUI</receiver> 634 634 <slot>setVolume34(int)</slot> 635 635 </connection> … … 637 637 <sender>sldLineIn</sender> 638 638 <signal>valueChanged(int)</signal> 639 <receiver>Phase X24ControlUI</receiver>639 <receiver>Phase24ControlUI</receiver> 640 640 <slot>setVolumeLineIn(int)</slot> 641 641 </connection> … … 643 643 <sender>sldSPDIFOut</sender> 644 644 <signal>valueChanged(int)</signal> 645 <receiver>Phase X24ControlUI</receiver>645 <receiver>Phase24ControlUI</receiver> 646 646 <slot>setVolumeSPDIFOut(int)</slot> 647 647 </connection> … … 649 649 <sender>sldSPDIFIn</sender> 650 650 <signal>valueChanged(int)</signal> 651 <receiver>Phase X24ControlUI</receiver>651 <receiver>Phase24ControlUI</receiver> 652 652 <slot>setVolumeSPDIFIn(int)</slot> 653 653 </connection> … … 655 655 <sender>sldMaster</sender> 656 656 <signal>valueChanged(int)</signal> 657 <receiver>Phase X24ControlUI</receiver>657 <receiver>Phase24ControlUI</receiver> 658 658 <slot>setVolumeMaster(int)</slot> 659 659 </connection> … … 661 661 <sender>cmbFrontLevel</sender> 662 662 <signal>activated(int)</signal> 663 <receiver>Phase X24ControlUI</receiver>663 <receiver>Phase24ControlUI</receiver> 664 664 <slot>setFrontLevel(int)</slot> 665 665 </connection> … … 667 667 <sender>cmbSetSyncSource</sender> 668 668 <signal>activated(int)</signal> 669 <receiver>Phase X24ControlUI</receiver>669 <receiver>Phase24ControlUI</receiver> 670 670 <slot>setSyncSource(int)</slot> 671 671 </connection> … … 673 673 <sender>cmbOutSourceSPDIF</sender> 674 674 <signal>activated(int)</signal> 675 <receiver>Phase X24ControlUI</receiver>675 <receiver>Phase24ControlUI</receiver> 676 676 <slot>setOutSourceSPDIF(int)</slot> 677 677 </connection> … … 679 679 <sender>cmbOutSource12</sender> 680 680 <signal>activated(int)</signal> 681 <receiver>Phase X24ControlUI</receiver>681 <receiver>Phase24ControlUI</receiver> 682 682 <slot>setOutSource12(int)</slot> 683 683 </connection> … … 685 685 <sender>cmbOutSource34</sender> 686 686 <signal>activated(int)</signal> 687 <receiver>Phase X24ControlUI</receiver>687 <receiver>Phase24ControlUI</receiver> 688 688 <slot>setOutSource34(int)</slot> 689 689 </connection> … … 691 691 <sender>cmbLineLevel</sender> 692 692 <signal>activated(int)</signal> 693 <receiver>Phase X24ControlUI</receiver>693 <receiver>Phase24ControlUI</receiver> 694 694 <slot>setLineLevel(int)</slot> 695 695 </connection> trunk/libffado/support/mixer/mixer_saffire.py
r1217 r1239 125 125 } 126 126 127 def updateMatrixVolume(self,a0): 128 SaffireMixerBase.updateMatrixVolume(self,a0) 129 def updateLowResVolume(self,a0): 130 SaffireMixerBase.updateLowResVolume(self,a0) 131 def updateSelector(self,a0): 132 SaffireMixerBase.updateSelector(self,a0) 133 def triggerButton(self): 134 SaffireMixerBase.triggerButton(self) 135 def saveText(self): 136 SaffireMixerBase.saveText(self) 137 def initCombo(self, combo): 138 SaffireMixerBase.initCombo(self,combo) 139 def selectCombo(self, mode): 140 SaffireMixerBase.selectCombo(self,mode) 141 142 def updateValues(self): 143 SaffireMixerBase.updateValues(self) trunk/libffado/support/mixer/SConscript
r1225 r1239 47 47 ] 48 48 e['OTHERGUIS'] = ['ffado_regdialog'] 49 e['OTHERAPPS'] = ['ffado_regdialog' ]49 e['OTHERAPPS'] = ['ffado_regdialog', 'mixer_saffire_base'] 50 50 51 51 # trunk/libffado/tests/test-ffado.cpp
r1184 r1239 90 90 91 91 {"verbose", 'v', "level", 0, "Produce verbose output" }, 92 {"cache", 'c', "enable", 0, "Use AVC model cache (default=enabled)" }, 93 92 #if ENABLE_DISCOVERY_CACHE 93 {"cache", 'c', "enable", 0, "Use AVC model cache" }, 94 #endif 94 95 95 96 {"node", 'n', "id", 0, "Node to use" }, … … 131 132 } 132 133 } 133 break; 134 break; 134 135 case 'p': 135 136 if (arg) {