Index: /trunk/libffado/src/rme/rme_avdevice.h =================================================================== --- /trunk/libffado/src/rme/rme_avdevice.h (revision 1599) +++ /trunk/libffado/src/rme/rme_avdevice.h (revision 1600) @@ -92,4 +92,7 @@ signed int setPhantom(unsigned int channel, unsigned int status); + /* General information functions */ + signed int getRmeModel(void) { return m_rme_model; } + protected: enum ERmeModel m_rme_model; Index: /trunk/libffado/src/rme/fireface_settings_ctrls.h =================================================================== --- /trunk/libffado/src/rme/fireface_settings_ctrls.h (revision 1598) +++ /trunk/libffado/src/rme/fireface_settings_ctrls.h (revision 1600) @@ -29,4 +29,23 @@ namespace Rme { +#define RME_CTRL_NONE 0x0000 +#define RME_CTRL_PHANTOM_SW 0x0001 +#define RME_CTRL_SPDIF_INPUT_MODE 0x0002 +#define RME_CTRL_SPDIF_OUTPUT_OPTIONS 0x0003 +#define RME_CTRL_CLOCK_MODE 0x0004 +#define RME_CTRL_SYNC_REF 0x0005 +#define RME_CTRL_DEV_OPTIONS 0x0006 +#define RME_CTRL_LIMIT_BANDWIDTH 0x0007 +#define RME_CTRL_INPUT_LEVEL 0x0008 +#define RME_CTRL_OUTPUT_LEVEL 0x0009 +#define RME_CTRL_INSTRUMENT_OPTIONS 0x000a +#define RME_CTRL_WCLK_SINGLE_SPEED 0x000b +#define RME_CTRL_PHONES_LEVEL 0x000c +#define RME_CTRL_INPUT0_OPTIONS 0x000d +#define RME_CTRL_INPUT1_OPTIONS 0x000e +#define RME_CTRL_INPUT2_OPTIONS 0x000f + +#define RME_CTRL_INFO_MODEL 0x0100 + class Device; Index: /trunk/libffado/src/rme/fireface_settings_ctrls.cpp =================================================================== --- /trunk/libffado/src/rme/fireface_settings_ctrls.cpp (revision 1599) +++ /trunk/libffado/src/rme/fireface_settings_ctrls.cpp (revision 1600) @@ -26,20 +26,4 @@ namespace Rme { - -#define RME_CTRL_PHANTOM_SW 0x00 -#define RME_CTRL_SPDIF_INPUT_MODE 0x01 -#define RME_CTRL_SPDIF_OUTPUT_OPTIONS 0x02 -#define RME_CTRL_CLOCK_MODE 0x03 -#define RME_CTRL_SYNC_REF 0x04 -#define RME_CTRL_DEV_OPTIONS 0x05 -#define RME_CTRL_LIMIT_BANDWIDTH 0x06 -#define RME_CTRL_INPUT_LEVEL 0x07 -#define RME_CTRL_OUTPUT_LEVEL 0x08 -#define RME_CTRL_INSTRUMENT_OPTIONS 0x09 -#define RME_CTRL_WCLK_SINGLE_SPEED 0x0a -#define RME_CTRL_PHONES_LEVEL 0x0b -#define RME_CTRL_INPUT0_OPTIONS 0x0c -#define RME_CTRL_INPUT1_OPTIONS 0x0d -#define RME_CTRL_INPUT2_OPTIONS 0x0e RmeSettingsCtrl::RmeSettingsCtrl(Device &parent, unsigned int type, @@ -74,4 +58,8 @@ switch (m_type) { + case RME_CTRL_NONE: + debugOutput(DEBUG_LEVEL_ERROR, "control has no type set\n"); + err = 1; + break; case RME_CTRL_PHANTOM_SW: // Lowest 16 bits are phantom status bits (max 16 channels). @@ -101,4 +89,15 @@ } break; + + // All RME_CTRL_INFO_* controls are read-only. Warn on attempts to + // set these. + case RME_CTRL_INFO_MODEL: + debugOutput(DEBUG_LEVEL_ERROR, "Attempt to set readonly info control 0x%08x\n", m_type); + err = 1; + break; + + default: + debugOutput(DEBUG_LEVEL_ERROR, "Unknown control type 0x%08x\n", m_type); + err = 1; } @@ -110,8 +109,20 @@ switch (m_type) { + case RME_CTRL_NONE: + debugOutput(DEBUG_LEVEL_ERROR, "control has no type set\n"); + break; + case RME_CTRL_PHANTOM_SW: return m_value; break; + + case RME_CTRL_INFO_MODEL: + return m_parent.getRmeModel(); + break; + + default: + debugOutput(DEBUG_LEVEL_ERROR, "Unknown control type 0x%08x\n", m_type); } + return 0; }