Changeset 1742

Show
Ignore:
Timestamp:
12/01/09 14:54:27 (11 years ago)
Author:
arnonym
Message:

Extend the interface of the MatrixMixer?:

  • Have booleans indicating if names and/or connections are supported. These functions are pure virtual.
  • Allow names and connections to be read and written, the default implementations of these (not anymore pure) virtual functions do nothing and return false or nothing.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/bebob/focusrite/focusrite_generic.h

    r1630 r1742  
    180180    virtual void show(); 
    181181 
    182     virtual std::string getRowName( const int ); 
    183     virtual std::string getColName( const int ); 
     182    virtual int getRowCount( ); 
     183    virtual int getColCount( ); 
     184 
    184185    virtual int canWrite( const int, const int ); 
    185186    virtual double setValue( const int, const int, const double ); 
    186187    virtual double getValue( const int, const int ); 
    187     virtual int getRowCount( ); 
    188     virtual int getColCount( ); 
    189188 
    190189    // full map updates are unsupported 
    191190    virtual bool getCoefficientMap(int &) {return false;}; 
    192191    virtual bool storeCoefficientMap(int &) {return false;}; 
     192 
     193    bool hasNames() const { return true; } 
     194    virtual std::string getRowName( const int ); 
     195    virtual std::string getColName( const int ); 
     196 
     197    bool canConnect() const { return false; } 
    193198 
    194199protected: 
  • trunk/libffado/src/dice/dice_avdevice.h

    r1733 r1742  
    243243            bool storeCoefficients(); 
    244244 
    245             virtual std::string getRowName( const int ); 
    246             virtual std::string getColName( const int ); 
     245            virtual int getRowCount( ); 
     246            virtual int getColCount( ); 
     247 
    247248            virtual int canWrite( const int, const int ); 
    248249            virtual double setValue( const int, const int, const double ); 
    249250            virtual double getValue( const int, const int ); 
    250             virtual int getRowCount( ); 
    251             virtual int getColCount( ); 
    252          
     251 
     252            bool hasNames() const { return false; } 
     253 
     254            // TODO: implement connections. 
     255            bool canConnect() const { return false; } 
     256 
    253257            // full map updates are unsupported 
    254258            virtual bool getCoefficientMap(int &); 
  • trunk/libffado/src/dice/dice_eap.cpp

    r1725 r1742  
    926926} 
    927927 
    928 // The control interface to the mixer 
    929 std::string 
    930 Device::EAP::Mixer::getRowName( const int row ) 
    931 { 
    932     return "FIXME"; 
    933 } 
    934  
    935 std::string 
    936 Device::EAP::Mixer::getColName( const int col ) 
    937 { 
    938     return "FIXME"; 
    939 } 
    940  
    941928int 
    942929Device::EAP::Mixer::canWrite( const int row, const int col) 
  • trunk/libffado/src/fireworks/fireworks_control.h

    r1630 r1742  
    6161    virtual void show(); 
    6262 
     63    bool hasNames() const { return true; } 
    6364    virtual std::string getRowName( const int ); 
    6465    virtual std::string getColName( const int ); 
     
    6869    virtual int getRowCount( ); 
    6970    virtual int getColCount( ); 
     71 
     72    bool canConnect() const { return false; } 
    7073 
    7174    // full map updates are unsupported 
  • trunk/libffado/src/libcontrol/MatrixMixer.cpp

    r1158 r1742  
    2525 
    2626namespace Control { 
    27 // no implementation 
     27 
     28    std::string MatrixMixer::getRowName(const int) { 
     29        return ""; 
     30    } 
     31    std::string MatrixMixer::getColName(const int) { 
     32        return ""; 
     33    } 
     34    bool MatrixMixer::setRowName(const int, const std::string&) { 
     35        return false; 
     36    } 
     37    bool MatrixMixer::setColName(const int, const std::string&) { 
     38        return false; 
     39    } 
     40 
     41    std::vector<std::string> MatrixMixer::availableConnectionsForRow(const int) { 
     42        return std::vector<std::string>(); 
     43    } 
     44    std::vector<std::string> MatrixMixer::availableConnectionsForCol(const int) { 
     45        return std::vector<std::string>(); 
     46    } 
     47    bool MatrixMixer::connectRowTo(const int, const std::string&) { 
     48        return false; 
     49    } 
     50    bool MatrixMixer::connectColTo(const int, const std::string&) { 
     51        return false; 
     52    } 
     53 
    2854} // namespace Control 
  • trunk/libffado/src/libcontrol/MatrixMixer.h

    r1630 r1742  
    4747    virtual void show() = 0; 
    4848 
    49     // per-coefficient access 
    50     virtual std::string getRowName(const int) = 0; 
    51     virtual std::string getColName(const int) = 0; 
     49    /*! 
     50      @{ 
     51      @brief general dimensions 
     52      */ 
     53    virtual int getRowCount() = 0; 
     54    virtual int getColCount() = 0; 
     55    // @} 
     56 
     57    /*! 
     58      @{ 
     59      @brief per-coefficient access 
     60      */ 
    5261    virtual int canWrite(const int, const int) = 0; 
    5362    virtual double setValue(const int, const int, const double) = 0; 
    5463    virtual double getValue(const int, const int) = 0; 
    55     virtual int getRowCount() = 0; 
    56     virtual int getColCount() = 0; 
     64    // @} 
    5765 
    58     // functions to access the entire coefficient map at once 
     66    /*! 
     67      @{ 
     68      @brief functions to access the entire coefficient map at once 
     69      */ 
    5970    virtual bool getCoefficientMap(int &) = 0; 
    6071    virtual bool storeCoefficientMap(int &) = 0; 
     72    // @} 
     73 
     74    /*! 
     75      @{ 
     76      @brief names for the channels 
     77 
     78      If named channels are not supported, just implement hasNames() to return false 
     79 
     80      The default implementations do nothing 
     81      */ 
     82    virtual bool hasNames() const = 0; 
     83    virtual std::string getRowName(const int); 
     84    virtual std::string getColName(const int); 
     85    virtual bool setRowName(const int row, const std::string& name); 
     86    virtual bool setColName(const int col, const std::string& name); 
     87    // @} 
     88 
     89    /*! 
     90      @{ 
     91      @brief connections for channels 
     92 
     93      If connections are not supported, implement canConnect() to return false. 
     94 
     95      The default implementations do nothing. 
     96      */ 
     97    virtual bool canConnect() const = 0; 
     98    virtual std::vector<std::string> availableConnectionsForRow(const int); 
     99    virtual std::vector<std::string> availableConnectionsForCol(const int); 
     100    virtual bool connectRowTo(const int row, const std::string& target); 
     101    virtual bool connectColTo(const int col, const std::string& target); 
     102    // @} 
    61103 
    62104protected: 
  • trunk/libffado/src/motu/motu_controls.h

    r1630 r1742  
    184184    virtual void show(); 
    185185 
     186    bool hasNames() const { return true; } 
     187    bool canConnect() const { return false; } 
     188 
    186189    virtual std::string getRowName(const int row); 
    187190    virtual std::string getColName(const int col); 
  • trunk/libffado/src/rme/fireface_settings_ctrls.h

    r1630 r1742  
    9090    virtual void show(); 
    9191 
     92    bool hasNames() const { return true; } 
     93    bool canConnect() const { return false; } 
     94 
    9295    virtual std::string getRowName(const int row); 
    9396    virtual std::string getColName(const int col); 
  • trunk/libffado/support/dbus/control-interface.xml

    r1724 r1742  
    189189          <arg type="i" name="value" direction="out"/> 
    190190      </method> 
    191       <method name="getRowName"> 
    192           <arg type="i" name="row" direction="in"/> 
    193           <arg type="s" name="rowname" direction="out"/> 
    194       </method> 
    195       <method name="getColName"> 
    196           <arg type="i" name="col" direction="in"/> 
    197           <arg type="s" name="colname" direction="out"/> 
    198       </method> 
    199191      <method name="getRowCount"> 
    200192          <arg type="i" name="nbrows" direction="out"/> 
     
    202194      <method name="getColCount"> 
    203195          <arg type="i" name="nbrows" direction="out"/> 
     196      </method> 
     197      <method name="hasNames"> 
     198          <arg type="b" name="value" direction="out"/> 
     199      </method> 
     200      <method name="getRowName"> 
     201          <arg type="i" name="row" direction="in"/> 
     202          <arg type="s" name="rowname" direction="out"/> 
     203      </method> 
     204      <method name="getColName"> 
     205          <arg type="i" name="col" direction="in"/> 
     206          <arg type="s" name="colname" direction="out"/> 
     207      </method> 
     208      <method name="setRowName"> 
     209          <arg type="i" name="row" direction="in"/> 
     210          <arg type="s" name="rowname" direction="in"/> 
     211          <arg type="b" name="value" direction="out"/> 
     212      </method> 
     213      <method name="setColName"> 
     214          <arg type="i" name="col" direction="in"/> 
     215          <arg type="s" name="colname" direction="in"/> 
     216          <arg type="b" name="value" direction="out"/> 
     217      </method> 
     218      <method name="canConnect"> 
     219          <arg type="b" name="value" direction="out"/> 
     220      </method> 
     221      <method name="availableConnectionsForRow"> 
     222          <arg type="i" name="row" direction="in"/> 
     223          <arg type="as" name="value" direction="out"/> 
     224      </method> 
     225      <method name="availableConnectionsForCol"> 
     226          <arg type="i" name="col" direction="in"/> 
     227          <arg type="as" name="value" direction="out"/> 
     228      </method> 
     229      <method name="connectRowTo"> 
     230          <arg type="i" name="row" direction="in"/> 
     231          <arg type="s" name="target" direction="in"/> 
     232          <arg type="b" name="value" direction="out"/> 
     233      </method> 
     234      <method name="connectColTo"> 
     235          <arg type="i" name="col" direction="in"/> 
     236          <arg type="s" name="target" direction="in"/> 
     237          <arg type="b" name="value" direction="out"/> 
    204238      </method> 
    205239  </interface> 
  • trunk/libffado/support/dbus/controlserver.cpp

    r1724 r1742  
    791791} 
    792792 
    793 DBus::String 
    794 MatrixMixer::getRowName( const DBus::Int32& row) { 
    795     return m_Slave.getRowName(row); 
    796 } 
    797  
    798 DBus::String 
    799 MatrixMixer::getColName( const DBus::Int32& col) { 
    800     return m_Slave.getColName(col); 
     793DBus::Int32 
     794MatrixMixer::getRowCount( ) { 
     795    return m_Slave.getRowCount(); 
     796} 
     797 
     798DBus::Int32 
     799MatrixMixer::getColCount( ) { 
     800    return m_Slave.getColCount(); 
    801801} 
    802802 
     
    816816} 
    817817 
    818 DBus::Int32 
    819 MatrixMixer::getRowCount( ) { 
    820     return m_Slave.getRowCount(); 
    821 
    822  
    823 DBus::Int32 
    824 MatrixMixer::getColCount( ) { 
    825     return m_Slave.getColCount(); 
     818DBus::Bool 
     819MatrixMixer::hasNames() { 
     820    return m_Slave.hasNames(); 
     821
     822DBus::String 
     823MatrixMixer::getRowName( const DBus::Int32& row) { 
     824    return m_Slave.getRowName(row); 
     825
     826DBus::String 
     827MatrixMixer::getColName( const DBus::Int32& col) { 
     828    return m_Slave.getColName(col); 
     829
     830DBus::Bool 
     831MatrixMixer::setRowName( const DBus::Int32& row, const DBus::String& name) { 
     832    return m_Slave.setRowName(row, name); 
     833
     834DBus::Bool 
     835MatrixMixer::setColName( const DBus::Int32& col, const DBus::String& name) { 
     836    return m_Slave.setColName(col, name); 
     837
     838 
     839DBus::Bool 
     840MatrixMixer::canConnect() { 
     841    return m_Slave.canConnect(); 
     842
     843std::vector<DBus::String> 
     844MatrixMixer::availableConnectionsForRow( const DBus::Int32& row) { 
     845    return m_Slave.availableConnectionsForRow(row); 
     846
     847std::vector<DBus::String> 
     848MatrixMixer::availableConnectionsForCol( const DBus::Int32& col) { 
     849    return m_Slave.availableConnectionsForCol(col); 
     850
     851DBus::Bool 
     852MatrixMixer::connectRowTo( const DBus::Int32& row, const DBus::String& target) { 
     853    return m_Slave.connectRowTo(row, target); 
     854
     855DBus::Bool 
     856MatrixMixer::connectColTo( const DBus::Int32& col, const DBus::String& target) { 
     857    return m_Slave.connectColTo(col, target); 
    826858} 
    827859 
  • trunk/libffado/support/dbus/controlserver.h

    r1724 r1742  
    307307                  Control::MatrixMixer &slave ); 
    308308 
    309     DBus::String getRowName( const DBus::Int32& ); 
    310     DBus::String getColName( const DBus::Int32& ); 
     309    DBus::Int32 getRowCount( ); 
     310    DBus::Int32 getColCount( ); 
     311 
    311312    DBus::Int32 canWrite( const DBus::Int32&, const DBus::Int32& ); 
    312313    DBus::Double setValue( const DBus::Int32&, const DBus::Int32&, const DBus::Double& ); 
    313314    DBus::Double getValue( const DBus::Int32&, const DBus::Int32& ); 
    314     DBus::Int32 getRowCount( ); 
    315     DBus::Int32 getColCount( ); 
     315 
     316    DBus::Bool hasNames(); 
     317    DBus::String getRowName( const DBus::Int32& ); 
     318    DBus::String getColName( const DBus::Int32& ); 
     319    DBus::Bool setRowName( const DBus::Int32&, const DBus::String& ); 
     320    DBus::Bool setColName( const DBus::Int32&, const DBus::String& ); 
     321 
     322    DBus::Bool canConnect(); 
     323    std::vector<DBus::String> availableConnectionsForRow( const DBus::Int32& ); 
     324    std::vector<DBus::String> availableConnectionsForCol( const DBus::Int32& ); 
     325    DBus::Bool connectRowTo( const DBus::Int32&, const DBus::String& ); 
     326    DBus::Bool connectColTo( const DBus::Int32&, const DBus::String& ); 
    316327 
    317328private: