Changeset 644
- Timestamp:
- 10/14/07 10:19:22 (15 years ago)
- Files:
-
- trunk/libffado/src/bebob/bebob_mixer.cpp (modified) (9 diffs)
- trunk/libffado/src/ffadodevice.cpp (modified) (1 diff)
- trunk/libffado/src/libavc/general/avc_generic.h (modified) (1 diff)
- trunk/libffado/src/libieee1394/configrom.cpp (modified) (3 diffs)
- trunk/libffado/src/libieee1394/configrom.h (modified) (4 diffs)
- trunk/libffado/support/mixer/mixer_phase88.py (modified) (1 diff)
- trunk/libffado/support/mixer/mixer_phase88.ui (modified) (2 diffs)
- trunk/libffado/support/mixer/mixer_phase88.ui.h (modified) (1 diff)
- trunk/libffado/tests/control-interface.xml (modified) (1 diff)
- trunk/libffado/tests/controlserver.cpp (modified) (5 diffs)
- trunk/libffado/tests/controlserver.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/src/bebob/bebob_mixer.cpp
r628 r644 219 219 fbCmd.m_pFBFeature->m_controlSelector=FunctionBlockFeature::eCSE_Feature_Volume; 220 220 fbCmd.m_pFBFeature->m_pVolume->m_volume=volume; 221 fbCmd.setVerboseLevel( DEBUG_LEVEL_VERY_VERBOSE ); 221 222 222 223 if ( !fbCmd.fire() ) { … … 225 226 } 226 227 227 if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) {228 Util::CoutSerializer se;229 fbCmd.serialize( se );230 }228 // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { 229 // Util::CoutSerializer se; 230 // fbCmd.serialize( se ); 231 // } 231 232 232 233 if((fbCmd.getResponse() != AVCCommand::eR_Accepted)) { … … 253 254 fbCmd.m_pFBFeature->m_controlSelector=FunctionBlockFeature::eCSE_Feature_Volume; // FIXME 254 255 fbCmd.m_pFBFeature->m_pVolume->m_volume=0; 256 fbCmd.setVerboseLevel( DEBUG_LEVEL_VERY_VERBOSE ); 255 257 256 258 if ( !fbCmd.fire() ) { … … 259 261 } 260 262 261 if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) {262 Util::CoutSerializer se;263 fbCmd.serialize( se );264 }263 // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { 264 // Util::CoutSerializer se; 265 // fbCmd.serialize( se ); 266 // } 265 267 266 268 if((fbCmd.getResponse() != AVCCommand::eR_Implemented)) { … … 268 270 } 269 271 270 int volume=(int)(fbCmd.m_pFBFeature->m_pVolume->m_volume);272 int16_t volume=(int16_t)(fbCmd.m_pFBFeature->m_pVolume->m_volume); 271 273 272 274 return volume; … … 308 310 fbCmd.setCommandType( AVCCommand::eCT_Control ); 309 311 fbCmd.m_pFBSelector->m_inputFbPlugNumber=(v & 0xFF); 312 fbCmd.setVerboseLevel( DEBUG_LEVEL_VERY_VERBOSE ); 310 313 311 314 if ( !fbCmd.fire() ) { … … 314 317 } 315 318 316 if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) {317 Util::CoutSerializer se;318 fbCmd.serialize( se );319 }320 319 // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { 320 // Util::CoutSerializer se; 321 // fbCmd.serialize( se ); 322 // } 323 // 321 324 if((fbCmd.getResponse() != AVCCommand::eR_Accepted)) { 322 325 debugWarning("fbCmd.getResponse() != AVCCommand::eR_Accepted\n"); … … 340 343 fbCmd.setCommandType( AVCCommand::eCT_Status ); 341 344 fbCmd.m_pFBSelector->m_inputFbPlugNumber=0; 345 fbCmd.setVerboseLevel( DEBUG_LEVEL_VERY_VERBOSE ); 342 346 343 347 if ( !fbCmd.fire() ) { … … 346 350 } 347 351 348 if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) {349 Util::CoutSerializer se;350 fbCmd.serialize( se );351 }352 // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { 353 // Util::CoutSerializer se; 354 // fbCmd.serialize( se ); 355 // } 352 356 353 357 if((fbCmd.getResponse() != AVCCommand::eR_Implemented)) { trunk/libffado/src/ffadodevice.cpp
r639 r644 45 45 std::ostringstream nodestr; 46 46 nodestr << "node" << getConfigRom().getNodeId(); 47 48 // setOscBase(nodestr.str()); 49 // ConfigRom& c = getConfigRom();50 // addChildOscNode(&c); 47 48 if (!addElement(&getConfigRom())) { 49 debugWarning("failed to add ConfigRom to Control::Container\n"); 50 } 51 51 } 52 52 trunk/libffado/src/libavc/general/avc_generic.h
r626 r644 103 103 104 104 bool setVerbose( int verboseLevel ); 105 bool setVerboseLevel( int verboseLevel ) 106 { return setVerbose(verboseLevel);}; 107 105 108 int getVerboseLevel(); 106 109 trunk/libffado/src/libieee1394/configrom.cpp
r560 r644 61 61 62 62 ConfigRom::ConfigRom( Ieee1394Service& ieee1394service, fb_nodeid_t nodeId ) 63 : OscNode("ConfigRom")63 : Control::Element("ConfigRom") 64 64 , m_1394Service( &ieee1394service ) 65 65 , m_nodeId( nodeId ) … … 88 88 89 89 ConfigRom::ConfigRom() 90 : OscNode("ConfigRom")90 : Control::Element("ConfigRom") 91 91 , m_1394Service( 0 ) 92 92 , m_nodeId( -1 ) … … 596 596 return true; 597 597 } 598 599 OSC::OscResponse600 ConfigRom::processOscMessage(OSC::OscMessage *m) {601 OSC::OscResponse r=OSC::OscResponse(OSC::OscResponse::eUnhandled);602 603 unsigned int nbArgs=m->nbArguments();604 if (nbArgs>=1) {605 OSC::OscArgument arg0=m->getArgument(0);606 if(arg0.isString()) { // commands607 string cmd=arg0.getString();608 609 debugOutput( DEBUG_LEVEL_VERBOSE, "(%p) CMD? %s\n", this, cmd.c_str());610 if(cmd == "params") {611 debugOutput( DEBUG_LEVEL_VERBOSE, "Listing node params...\n");612 OSC::OscMessage& rm=r.getMessage();613 rm.addArgument("GUID");614 rm.addArgument("VendorName");615 rm.addArgument("ModelName");616 r.setType(OSC::OscResponse::eMessage);617 }618 if(cmd == "get") {619 if(nbArgs != 2) {620 debugError("Erronous get command received, wrong nb of arguments\n");621 m->print();622 } else {623 OSC::OscArgument arg1=m->getArgument(1);624 if(arg1.isString()) { // commands625 string target=arg1.getString();626 OSC::OscMessage& rm=r.getMessage();627 if(target == "GUID") {628 // FIXME: this will only return the lower 32 bits629 rm.addArgument((int64_t)getGuid());630 } else if(target == "VendorName") {631 rm.addArgument(getVendorName());632 } else if(target == "ModelName") {633 rm.addArgument(getModelName());634 } else {635 debugError("Erronous get command received, non-existant target\n");636 m->print();637 }638 r.setType(OSC::OscResponse::eMessage);639 } else {640 debugError("Erronous get command received, wrong argument type\n");641 m->print();642 }643 }644 }645 }646 }647 648 return r;649 650 }trunk/libffado/src/libieee1394/configrom.h
r560 r644 33 33 #include "debugmodule/debugmodule.h" 34 34 35 #include "lib osc/OscNode.h"35 #include "libcontrol/Element.h" 36 36 37 37 #include <string> … … 40 40 41 41 class ConfigRom 42 : public OSC::OscNode42 : public Control::Element 43 43 { 44 44 public: … … 57 57 58 58 const unsigned int getModelId() const; 59 // FIXME: isn't this the same as getNodeVendorId? 59 60 const unsigned int getVendorId() const; 60 61 const unsigned int getUnitSpecifierId() const; … … 136 137 struct csr1212_csr* m_csr; 137 138 138 protected: // OSC handling139 OSC::OscResponse processOscMessage(OSC::OscMessage *m);140 141 139 private: 142 140 ConfigRom( const ConfigRom& ); // do not allow copy ctor trunk/libffado/support/mixer/mixer_phase88.py
r459 r644 5 5 from mixer_phase88ui import * 6 6 import sys 7 8 SupportedDevices=[ 9 [(0x000aac, 0x00000003),'Phase88Control'], 10 ] 11 12 class ControlInterface: 13 def __init__(self, servername, basepath): 14 self.basepath=basepath 15 self.servername=servername 16 self.bus=dbus.SessionBus() 17 18 def setContignuous(self, subpath, v): 19 path = self.basepath + subpath 20 dev = self.bus.get_object(self.servername, path) 21 dev_cont = dbus.Interface(dev, dbus_interface='org.ffado.Control.Element.Continuous') 22 dev_cont.setValue(v) 23 24 def getContignuous(self, subpath): 25 path = self.basepath + subpath 26 dev = self.bus.get_object(self.servername, path) 27 dev_cont = dbus.Interface(dev, dbus_interface='org.ffado.Control.Element.Continuous') 28 return dev_cont.getValue() 29 30 def setDiscrete(self, subpath, v): 31 path = self.basepath + subpath 32 dev = self.bus.get_object(self.servername, path) 33 dev_cont = dbus.Interface(dev, dbus_interface='org.ffado.Control.Element.Discrete') 34 dev_cont.setValue(v) 35 36 def getDiscrete(self, subpath): 37 path = self.basepath + subpath 38 dev = self.bus.get_object(self.servername, path) 39 dev_cont = dbus.Interface(dev, dbus_interface='org.ffado.Control.Element.Discrete') 40 return dev_cont.getValue() 41 42 class DeviceManagerInterface: 43 def __init__(self, servername, basepath): 44 self.basepath=basepath + '/DeviceManager' 45 self.servername=servername 46 self.bus=dbus.SessionBus() 47 self.dev = self.bus.get_object(self.servername, self.basepath) 48 self.iface = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.Container') 49 50 def getNbDevices(self): 51 return self.iface.getNbElements() 52 def getDeviceName(self, idx): 53 return self.iface.getElementName(idx) 54 55 class ConfigRomInterface: 56 def __init__(self, servername, devicepath): 57 self.basepath=devicepath + '/ConfigRom' 58 self.servername=servername 59 self.bus=dbus.SessionBus() 60 self.dev = self.bus.get_object(self.servername, self.basepath) 61 self.iface = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.ConfigRomX') 62 def getGUID(self): 63 return self.iface.getGUID() 64 def getVendorName(self): 65 return self.iface.getVendorName() 66 def getModelName(self): 67 return self.iface.getModelName() 68 def getVendorId(self): 69 return self.iface.getVendorId() 70 def getModelId(self): 71 return self.iface.getModelId() 72 73 7 74 if __name__ == "__main__": 75 76 server='org.ffado.Control' 77 basepath='/org/ffado/Control' 78 8 79 app = QApplication(sys.argv) 9 f = Phase88Control() 10 f.show() 80 81 devmgr=DeviceManagerInterface(server, basepath) 82 nbDevices=devmgr.getNbDevices() 83 84 for idx in range(nbDevices): 85 path=devmgr.getDeviceName(idx) 86 print "Found device %d: %s" % (idx, path) 87 88 cfgrom=ConfigRomInterface(server, basepath+'/DeviceManager/'+path) 89 vendorId=cfgrom.getVendorId() 90 modelId=cfgrom.getModelId() 91 92 print "Found (%X, %X) %s %s" % (vendorId, modelId, cfgrom.getVendorName() , cfgrom.getModelName()) 93 94 thisdev=(vendorId, modelId); 95 96 for dev in SupportedDevices: 97 if dev[0]==thisdev: 98 print dev[1] 99 exec('f='+dev[1]+'()') 100 f.hw=ControlInterface(server, basepath+'/DeviceManager/'+path) 101 f.initValues() 102 f.show() 103 11 104 app.setMainWidget(f) 12 105 app.exec_loop() trunk/libffado/support/mixer/mixer_phase88.ui
r460 r644 2 2 <class>Phase88Control</class> 3 3 <comment>Python: 4 Python:# Import the OSCmodule5 Python:import osc4 Python:# Import the DBUS module 5 Python:import dbus 6 6 </comment> 7 7 <widget class="QDialog"> … … 707 707 <slot>setVolumeWavePlay( int )</slot> 708 708 <slot>setVolumeMaster( int )</slot> 709 <slot>setVolume( QString, int )</slot> 710 <slot>init()</slot> 711 <slot>initValues()</slot> 712 <slot>setSelector(QString, int)</slot> 709 713 </slots> 710 714 <layoutdefaults spacing="6" margin="11"/> trunk/libffado/support/mixer/mixer_phase88.ui.h
r462 r644 11 11 *****************************************************************************/ 12 12 13 14 13 void Phase88Control::switchFrontState( int ) 15 14 { 16 17 if a0 == 0: 18 state=0 19 else : 20 state=1 21 22 print "switching front/back state to %d" % state 23 24 osc.Message("/devicemanager/dev0/GenericMixer/Selector/10", ["set", "value", state]).sendlocal(17820) 15 self.setSelector('frontback', a0) 25 16 } 26 17 27 18 void Phase88Control::switchOutAssign( int ) 28 19 { 29 print "switching out assign to %d" % a0 30 osc.Message("/devicemanager/dev0/GenericMixer/Selector/6", ["set", "value", a0]).sendlocal(17820) 20 self.setSelector('outassign', a0) 31 21 } 32 22 33 23 void Phase88Control::switchWaveInAssign( int ) 34 24 { 35 print "switching input assign to %d" % a0 36 osc.Message("/devicemanager/dev0/GenericMixer/Selector/7", ["set", "value", a0]).sendlocal(17820) 25 self.setSelector('inassign', a0) 37 26 } 38 27 39 28 void Phase88Control::switchSyncSource( int ) 40 29 { 41 print "switching sync source to %d" % a0 42 osc.Message("/devicemanager/dev0/GenericMixer/Selector/9", ["set", "value", a0]).sendlocal(17820) 30 self.setSelector('syncsource', a0) 43 31 } 44 32 45 33 void Phase88Control::switchExtSyncSource( int ) 46 34 { 47 print "switching external sync source to %d" % a0 48 osc.Message("/devicemanager/dev0/GenericMixer/Selector/8", ["set", "value", a0]).sendlocal(17820) 35 self.setSelector('externalsync', a0) 49 36 } 50 37 51 38 void Phase88Control::setVolume12( int ) 52 39 { 53 vol = -a0 54 print "setting volume for 1/2 to %d" % vol 55 osc.Message("/devicemanager/dev0/GenericMixer/Feature/2", ["set", "volume", 0, vol]).sendlocal(17820) 40 self.setVolume('line12', a0) 56 41 } 57 42 58 43 void Phase88Control::setVolume34( int ) 59 44 { 60 vol = -a0 61 print "setting volume for 3/4 to %d" % vol 62 osc.Message("/devicemanager/dev0/GenericMixer/Feature/3", ["set", "volume", 0, vol]).sendlocal(17820) 45 self.setVolume('line34', a0) 63 46 } 64 47 65 48 void Phase88Control::setVolume56( int ) 66 49 { 67 vol = -a0 68 print "setting volume for 5/6 to %d" % vol 69 osc.Message("/devicemanager/dev0/GenericMixer/Feature/4", ["set", "volume", 0, vol]).sendlocal(17820) 50 self.setVolume('line56', a0) 70 51 } 71 52 72 53 void Phase88Control::setVolume78( int ) 73 54 { 74 vol = -a0 75 print "setting volume for 7/8 to %d" % vol 76 osc.Message("/devicemanager/dev0/GenericMixer/Feature/5", ["set", "volume", 0, vol]).sendlocal(17820) 55 self.setVolume('line78', a0) 77 56 } 78 57 79 58 void Phase88Control::setVolumeSPDIF( int ) 80 59 { 81 vol = -a0 82 print "setting volume for S/PDIF to %d" % vol 83 osc.Message("/devicemanager/dev0/GenericMixer/Feature/6", ["set", "volume", 0, vol]).sendlocal(17820) 60 self.setVolume('spdif', a0) 84 61 } 85 62 86 63 void Phase88Control::setVolumeWavePlay( int ) 87 64 { 88 vol = -a0 89 print "setting volume for WavePlay to %d" % vol 90 osc.Message("/devicemanager/dev0/GenericMixer/Feature/7", ["set", "volume", 0, vol]).sendlocal(17820) 65 self.setVolume('waveplay', a0) 91 66 } 92 67 93 68 void Phase88Control::setVolumeMaster( int ) 94 69 { 95 vol = -a0 96 print "setting master volume to %d" % vol 97 osc.Message("/devicemanager/dev0/GenericMixer/Feature/1", ["set", "volume", 0, vol]).sendlocal(17820) 70 self.setVolume('master', a0) 98 71 } 72 73 void Phase88Control::setVolume( QString, int ) 74 { 75 name=a0 76 vol = -a1 77 78 print "setting %s volume to %d" % (name, vol) 79 self.hw.setContignuous(self.VolumeControls[name][0], vol) 80 } 81 82 void Phase88Control::setSelector( QString, int ) 83 { 84 name=a0 85 state = a1 86 87 print "setting %s state to %d" % (name, state) 88 self.hw.setDiscrete(self.SelectorControls[name][0], state) 89 } 90 91 void Phase88Control::init() 92 { 93 print "Init Phase88 mixer window" 94 95 self.VolumeControls={ 96 'master': ['/Mixer/Feature_1', self.sldInputMaster], 97 'line12' : ['/Mixer/Feature_2', self.sldInput12], 98 'line34' : ['/Mixer/Feature_3', self.sldInput34], 99 'line56' : ['/Mixer/Feature_4', self.sldInput56], 100 'line78' : ['/Mixer/Feature_5', self.sldInput78], 101 'spdif' : ['/Mixer/Feature_6', self.sldInputSPDIF], 102 'waveplay' : ['/Mixer/Feature_7', self.sldInputWavePlay], 103 } 104 105 self.SelectorControls={ 106 'outassign': ['/Mixer/Selector_6', self.comboOutAssign], 107 'inassign': ['/Mixer/Selector_7', self.comboInAssign], 108 'externalsync': ['/Mixer/Selector_8', self.comboExtSync], 109 'syncsource': ['/Mixer/Selector_9', self.comboSyncSource], 110 'frontback': ['/Mixer/Selector_10', self.comboFrontBack], 111 } 112 } 113 114 void Phase88Control::initValues() 115 { 116 for name, ctrl in self.VolumeControls.iteritems(): 117 vol = self.hw.getContignuous(ctrl[0]) 118 print "%s volume is %d" % (name , vol) 119 ctrl[1].setValue(-vol) 120 121 for name, ctrl in self.SelectorControls.iteritems(): 122 state = self.hw.getDiscrete(ctrl[0]) 123 print "%s state is %d" % (name , state) 124 ctrl[1].setCurrentItem(state) 125 } trunk/libffado/tests/control-interface.xml
r586 r644 16 16 </method> 17 17 </interface> 18 18 19 19 <interface name="org.ffado.Control.Element.Container"> 20 <method name="getNbElements"> 21 <arg type="i" name="count" direction="out"/> 22 </method> 23 <method name="getElementName"> 24 <arg type="i" name="id" direction="in"/> 25 <arg type="s" name="name" direction="out"/> 26 </method> 20 27 </interface> 21 28 29 <interface name="org.ffado.Control.Element.ConfigRomX"> 30 <method name="getGUID"> 31 <arg type="s" name="guid" direction="out"/> 32 </method> 33 <method name="getVendorName"> 34 <arg type="s" name="vendorname" direction="out"/> 35 </method> 36 <method name="getModelName"> 37 <arg type="s" name="modelname" direction="out"/> 38 </method> 39 <method name="getVendorId"> 40 <arg type="i" name="vendorid" direction="out"/> 41 </method> 42 <method name="getModelId"> 43 <arg type="i" name="modelid" direction="out"/> 44 </method> 45 </interface> 46 22 47 <interface name="org.ffado.Control.Element.Continuous"> 23 48 <method name="setValue"> trunk/libffado/tests/controlserver.cpp
r582 r644 96 96 } 97 97 98 DBus::Int32 99 Container::getNbElements( ) { 100 return m_Slave.countElements(); 101 } 102 103 DBus::String 104 Container::getElementName( const DBus::Int32& i ) { 105 int nbElements=m_Slave.countElements(); 106 if (i<nbElements) { 107 return m_Slave.getElements().at(i)->getName(); 108 } else return ""; 109 } 110 111 98 112 /** 99 113 * \brief create a correct DBusControl counterpart for a given Control::Element … … 125 139 } 126 140 141 if (dynamic_cast<ConfigRom *>(&e) != NULL) { 142 debugOutput( DEBUG_LEVEL_VERBOSE, "Source is a ConfigRom\n"); 143 144 return new ConfigRomX(conn(), std::string(path()+"/"+e.getName()), 145 *dynamic_cast<ConfigRom *>(&e)); 146 } 147 127 148 debugOutput( DEBUG_LEVEL_VERBOSE, "Source is a Control::Element\n"); 128 149 return new Element(conn(), std::string(path()+"/"+e.getName()), e); … … 143 164 { 144 165 m_Slave.setValue(value); 166 /* 167 usleep(1000*500); 168 145 169 debugOutput( DEBUG_LEVEL_VERBOSE, "setValue(%lf) => %lf\n", value, m_Slave.getValue() ); 146 170 147 return m_Slave.getValue(); 171 return m_Slave.getValue();*/ 172 return value; 148 173 } 149 174 … … 169 194 { 170 195 m_Slave.setValue(value); 196 197 /* usleep(1000*500); 171 198 debugOutput( DEBUG_LEVEL_VERBOSE, "setValue(%d) => %d\n", value, m_Slave.getValue() ); 172 199 173 return m_Slave.getValue(); 200 return m_Slave.getValue();*/ 201 return value; 174 202 } 175 203 … … 181 209 } 182 210 211 // --- ConfigRom 212 213 ConfigRomX::ConfigRomX( DBus::Connection& connection, std::string p, ConfigRom &slave) 214 : Element(connection, p, slave) 215 , m_Slave(slave) 216 { 217 debugOutput( DEBUG_LEVEL_VERBOSE, "Created ConfigRomX on '%s'\n", 218 path().c_str() ); 219 } 220 221 DBus::String 222 ConfigRomX::getGUID( ) 223 { 224 return m_Slave.getGuidString(); 225 } 226 227 DBus::String 228 ConfigRomX::getVendorName( ) 229 { 230 return m_Slave.getVendorName(); 231 } 232 233 DBus::String 234 ConfigRomX::getModelName( ) 235 { 236 return m_Slave.getModelName(); 237 } 238 239 DBus::Int32 240 ConfigRomX::getVendorId( ) 241 { 242 return m_Slave.getNodeVendorId(); 243 } 244 245 DBus::Int32 246 ConfigRomX::getModelId( ) 247 { 248 return m_Slave.getModelId(); 249 } 250 183 251 } // end of namespace Control trunk/libffado/tests/controlserver.h
r582 r644 33 33 34 34 #include "libcontrol/BasicElements.h" 35 #include "libieee1394/configrom.h" 35 36 36 37 namespace DBusControl { … … 73 74 74 75 Element *createHandler(Control::Element& e); 76 77 DBus::Int32 getNbElements( ); 78 DBus::String getElementName( const DBus::Int32& ); 79 75 80 private: 76 81 Control::Container &m_Slave; … … 110 115 }; 111 116 117 // FIXME: to change this to a normal ConfigRom class name we have to 118 // put the 1394 config rom class into a separate namespace. 119 class ConfigRomX 120 : public org::ffado::Control::Element::ConfigRomX 121 , public Element 122 { 123 public: 124 ConfigRomX( DBus::Connection& connection, 125 std::string p, 126 ConfigRom &slave ); 127 128 DBus::String getGUID( ); 129 DBus::String getVendorName( ); 130 DBus::String getModelName( ); 131 DBus::Int32 getVendorId( ); 132 DBus::Int32 getModelId( ); 133 134 private: 135 ConfigRom &m_Slave; 136 }; 137 112 138 113 139 }