Changeset 404

Show
Ignore:
Timestamp:
02/18/07 07:09:00 (17 years ago)
Author:
pieterpalmers
Message:

- introduce support framework for DICE and Metric Halo
- change probe/discovery code to make adding devices easier
- made conditional compilation effectively work.

./configure now has the following switches:

--enable-bebob build BeBoB support (default=yes)
--enable-motu build Motu support (default=no)
--enable-dice build DICE support (default=no)
--enable-metric-halo build Metric Halo support (note: completely useless)

(default=no)

--enable-rme build RME support (note: completely useless)

(default=no)

--enable-bounce build Bounce device support (default=no)
--enable-all-devices build support for all supported devices (default=no)

these now turn on/off compilation effectively.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/streaming-rework/configure.ac

    r400 r404  
    203203dnl Conditional compilation of targets 
    204204 
    205 dnl Build BeBoB code? 
    206  
    207 build_bebob=true 
     205dnl --- Build BeBoB code? 
     206 
    208207AC_ARG_ENABLE(bebob, 
    209208    AC_HELP_STRING([--enable-bebob], 
     
    213212  no)  build_bebob=false;; 
    214213  *) AC_MSG_ERROR(bad value ${enableval} for --enable-bebob) ;; 
    215 esac],[build_bebob=false]) 
    216  
    217 dnl Build Motu code? 
    218  
    219 build_motu=false 
     214esac], 
     215[build_bebob=true]) 
     216 
     217dnl --- Build Motu code? 
     218 
    220219AC_ARG_ENABLE(motu, 
    221220    AC_HELP_STRING([--enable-motu], 
     
    225224  no)  build_motu=false;; 
    226225  *) AC_MSG_ERROR(bad value ${enableval} for --enable-motu) ;; 
    227 esac],[build_motu=false]) 
    228  
    229 dnl Build DICE code? 
    230  
    231 build_dice=false 
     226esac], 
     227[build_motu=false]) 
     228 
     229dnl --- Build DICE code? 
     230 
    232231AC_ARG_ENABLE(dice, 
    233232    AC_HELP_STRING([--enable-dice], 
     
    237236  no)  build_dice=false;; 
    238237  *) AC_MSG_ERROR(bad value ${enableval} for --enable-dice) ;; 
    239 esac],[build_dice=false]) 
    240  
    241 dnl Build Metric Halo code? 
    242  
    243 build_metric_halo=false 
     238esac], 
     239[build_dice=false]) 
     240 
     241dnl --- Build Metric Halo code? 
     242 
    244243AC_ARG_ENABLE(metric-halo, 
    245244    AC_HELP_STRING([--enable-metric-halo], 
    246                    [build Metric Halo support (default=no)]), 
     245                   [build Metric Halo support (note: completely useless) (default=no)]), 
    247246[case "${enableval}" in 
    248247  yes) build_metric_halo=true;; 
    249248  no)  build_metric_halo=false;; 
    250249  *) AC_MSG_ERROR(bad value ${enableval} for --enable-metric-halo) ;; 
    251 esac],[build_metric_halo=false]) 
     250esac], 
     251[build_metric_halo=false]) 
     252 
     253dnl --- Build Metric Halo code? 
     254 
     255AC_ARG_ENABLE(rme, 
     256    AC_HELP_STRING([--enable-rme], 
     257                   [build RME support (note: completely useless) (default=no)]), 
     258[case "${enableval}" in 
     259  yes) build_rme=true;; 
     260  no)  build_rme=false;; 
     261  *) AC_MSG_ERROR(bad value ${enableval} for --enable-rme) ;; 
     262esac], 
     263[build_rme=false]) 
     264 
     265dnl --- Build Bounce device code? 
     266 
     267AC_ARG_ENABLE(bounce, 
     268    AC_HELP_STRING([--enable-bounce], 
     269                   [build Bounce device support (default=no)]), 
     270[case "${enableval}" in 
     271  yes) build_bounce=true;; 
     272  no)  build_bounce=false;; 
     273  *) AC_MSG_ERROR(bad value ${enableval} for --enable-bounce) ;; 
     274esac], 
     275[build_bounce=false]) 
     276 
     277dnl --- Build support for all supported devices? 
     278 
     279AC_ARG_ENABLE(all-devices, 
     280    AC_HELP_STRING([--enable-all-devices], 
     281                   [build support for all supported devices (default=no)]), 
     282[case "${enableval}" in 
     283  yes) build_all=true;; 
     284  no)  build_all=false;; 
     285  *) AC_MSG_ERROR(bad value ${enableval} for --enable-all-devices) ;; 
     286esac], 
     287[build_all=false]) 
    252288 
    253289 
     
    264300 
    265301dnl Device classes 
     302if test "${build_all}" = true; then 
     303    build_bebob=true 
     304    build_motu=true 
     305    build_dice=true 
     306    build_metric_halo=true 
     307    build_bounce=true 
     308    build_rme=true 
     309fi; 
     310 
    266311if test "${build_bebob}" = true; then 
    267312   CFLAGS="$CFLAGS -DENABLE_BEBOB" 
    268313   CXXFLAGS="$CXXFLAGS -DENABLE_BEBOB"  
    269314   supported_devices="${supported_devices}BeBoB  " 
     315   BIN_PROGRAMS="$BIN_PROGRAMS freebob-downloader freebob-sync" 
    270316fi; 
    271317 
     
    274320   CXXFLAGS="$CXXFLAGS -DENABLE_MOTU"  
    275321   supported_devices="${supported_devices}Motu  " 
     322   BIN_PROGRAMS="$BIN_PROGRAMS" 
    276323fi; 
    277324 
     
    280327   CXXFLAGS="$CXXFLAGS -DENABLE_DICE"  
    281328   supported_devices="${supported_devices}DICE  " 
     329   BIN_PROGRAMS="$BIN_PROGRAMS" 
    282330fi; 
    283331 
     
    285333   CFLAGS="$CFLAGS -DENABLE_METRIC_HALO" 
    286334   CXXFLAGS="$CXXFLAGS -DENABLE_METRIC_HALO" 
    287    supported_devices="${supported_devices}Metric Halo  " 
     335   supported_devices="${supported_devices}Metric Halo (useless)  " 
     336   BIN_PROGRAMS="$BIN_PROGRAMS" 
     337fi; 
     338 
     339if test "${build_bounce}" = true; then 
     340   CFLAGS="$CFLAGS -DENABLE_BOUNCE" 
     341   CXXFLAGS="$CXXFLAGS -DENABLE_BOUNCE" 
     342   supported_devices="${supported_devices}Bounce  " 
     343   BIN_PROGRAMS="$BIN_PROGRAMS" 
     344fi; 
     345 
     346if test "${build_rme}" = true; then 
     347   CFLAGS="$CFLAGS -DENABLE_RME" 
     348   CXXFLAGS="$CXXFLAGS -DENABLE_RME"  
     349   supported_devices="${supported_devices}RME (useless)  " 
     350   BIN_PROGRAMS="$BIN_PROGRAMS" 
    288351fi; 
    289352 
     
    312375AC_SUBST([LIBXML_CFLAGS]) 
    313376 
     377AC_SUBST([BIN_PROGRAMS]) 
     378 
    314379AC_CONFIG_FILES([Makefile 
    315380                 doc/Makefile 
  • branches/streaming-rework/src/bebob/bebob_avdevice.cpp

    r396 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#include "bebob/bebob_avdevice.h" 
    2224#include "bebob/bebob_avdevice_subunit.h" 
     
    3941 
    4042IMPL_DEBUG_MODULE( AvDevice, AvDevice, DEBUG_LEVEL_NORMAL ); 
     43 
     44static VendorModelEntry supportedDeviceList[] = 
     45{ 
     46    {0x00000f, 0x00010065, "Mackie", "Onyx Firewire"}, 
     47     
     48    {0x0003db, 0x00010048, "Apogee Electronics", "Rosetta 200"}, 
     49 
     50    {0x0007f5, 0x00010048, "BridgeCo", "RD Audio1"}, 
     51 
     52    {0x000a92, 0x00010000, "PreSonus", "FIREBOX"}, 
     53    {0x000a92, 0x00010066, "PreSonus", "FirePOD"}, 
     54 
     55    {0x000aac, 0x00000003, "TerraTec Electronic GmbH", "Phase 88 FW"}, 
     56    {0x000aac, 0x00000004, "TerraTec Electronic GmbH", "Phase X24 FW (model version 4)"}, 
     57    {0x000aac, 0x00000007, "TerraTec Electronic GmbH", "Phase X24 FW (model version 7)"}, 
     58 
     59    {0x000f1b, 0x00010064, "ESI", "Quatafire 610"}, 
     60 
     61    {0x00130e, 0x00000003, "Focusrite", "Saffire Pro26IO"}, 
     62 
     63    {0x0040ab, 0x00010048, "EDIROL", "FA-101"}, 
     64    {0x0040ab, 0x00010049, "EDIROL", "FA-66"}, 
     65}; 
     66 
    4167 
    4268AvDevice::AvDevice( std::auto_ptr< ConfigRom >( configRom ), 
     
    4975    , m_pPlugManager( new AvPlugManager( verboseLevel ) ) 
    5076    , m_activeSyncInfo( 0 ) 
     77    , m_model ( NULL ) 
     78    , m_nodeId ( nodeId ) 
    5179    , m_id( 0 ) 
    5280    , m_receiveProcessor ( 0 ) 
     
    6694    , m_pPlugManager( 0 ) 
    6795    , m_activeSyncInfo( 0 ) 
     96    , m_model ( NULL ) 
     97    , m_nodeId ( -1 ) 
    6898    , m_id( 0 ) 
    6999    , m_receiveProcessor ( 0 ) 
     
    108138} 
    109139 
    110 struct VendorModelEntry { 
    111     unsigned int vendor_id; 
    112     unsigned int model_id; 
    113 }; 
    114  
    115 static VendorModelEntry supportedDeviceList[] = 
    116 { 
    117     {0x00000f, 0x00010065},  // Mackie, Onyx Firewire 
    118  
    119     {0x0003db, 0x00010048},  // Apogee Electronics, Rosetta 200 
    120  
    121     {0x0007f5, 0x00010048},  // BridgeCo, RD Audio1 
    122  
    123     {0x000a92, 0x00010000},  // PreSonus FIREBOX 
    124     {0x000a92, 0x00010066},  // PreSonus FirePOD 
    125  
    126     {0x000aac, 0x00000003},  // TerraTec Electronic GmbH, Phase 88 FW 
    127     {0x000aac, 0x00000004},  // TerraTec Electronic GmbH, Phase X24 FW (model version 4) 
    128     {0x000aac, 0x00000007},  // TerraTec Electronic GmbH, Phase X24 FW (model version 7) 
    129  
    130     {0x000f1b, 0x00010064},  // ESI, Quatafire 610 
    131  
    132     {0x00130e, 0x00000003},  // Focusrite, Pro26IO (Saffire 26) 
    133  
    134     {0x0040ab, 0x00010048},  // EDIROL, FA-101 
    135     {0x0040ab, 0x00010049},  // EDIROL, FA-66 
    136 }; 
    137  
    138140bool 
    139141AvDevice::probe( ConfigRom& configRom ) 
     
    159161AvDevice::discover() 
    160162{ 
     163    unsigned int vendorId = m_pConfigRom->getNodeVendorId(); 
     164    unsigned int modelId = m_pConfigRom->getModelId(); 
     165 
     166    for ( unsigned int i = 0; 
     167          i < ( sizeof( supportedDeviceList )/sizeof( VendorModelEntry ) ); 
     168          ++i ) 
     169    { 
     170        if ( ( supportedDeviceList[i].vendor_id == vendorId ) 
     171             && ( supportedDeviceList[i].model_id == modelId )  
     172           ) 
     173        { 
     174            m_model = &(supportedDeviceList[i]); 
     175        } 
     176    } 
     177 
     178    if (m_model != NULL) { 
     179        debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 
     180                m_model->vendor_name, m_model->model_name); 
     181    } else return false; 
     182     
    161183    if ( !enumerateSubUnits() ) { 
    162184        debugError( "Could not enumarate sub units\n" ); 
     
    871893AvDevice::showDevice() const 
    872894{ 
     895    debugOutput(DEBUG_LEVEL_VERBOSE, 
     896        "%s %s at node %d\n", m_model->vendor_name, m_model->model_name, 
     897        m_nodeId); 
     898         
    873899    m_pPlugManager->showPlugs(); 
    874900} 
     
    15811607 
    15821608} // end of namespace 
     1609 
     1610#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avdevice.h

    r379 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#ifndef BEBOB_AVDEVICE_H 
    2224#define BEBOB_AVDEVICE_H 
     
    4749 
    4850namespace BeBoB { 
     51 
     52struct VendorModelEntry { 
     53    unsigned int vendor_id; 
     54    unsigned int model_id; 
     55    char *vendor_name; 
     56    char *model_name;  
     57}; 
    4958 
    5059class AvDevice : public IAvDevice { 
     
    171180    SyncInfoVector            m_syncInfos; 
    172181    SyncInfo*                 m_activeSyncInfo; 
     182    struct VendorModelEntry*  m_model; 
     183    int                       m_nodeId; 
    173184    unsigned int              m_id; 
    174185 
     
    186197 
    187198#endif 
     199 
     200#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avdevice_subunit.cpp

    r378 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#include "bebob/bebob_functionblock.h" 
     
    586588    return true; 
    587589} 
     590 
     591#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avdevice_subunit.h

    r376 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#ifndef BEBOB_AVDEVICESUBUNIT_H 
     
    154156 
    155157#endif 
     158 
     159#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avdevice_xml.cpp

    r336 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123// AvDevice XML stuff 
     
    120122 
    121123} 
     124 
     125#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avplug.cpp

    r376 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#include "bebob/bebob_avplug.h" 
     
    22202222 
    22212223} 
     2224 
     2225#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avplug.h

    r376 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#ifndef BEBOB_AVPLUG_H 
     
    356358 
    357359#endif 
     360 
     361#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_avplug_xml.cpp

    r375 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20  
     21#ifdef ENABLE_BEBOB 
    2022 
    2123// AvPlug XML stuff 
     
    298300 
    299301} 
     302 
     303#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_dl_bcd.cpp

    r336 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#include "bebob_dl_bcd.h" 
    2224 
     
    383385} 
    384386 
     387#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_dl_bcd.h

    r336 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#ifndef BEBOB_DL_BCD_H 
     
    114116 
    115117#endif 
     118 
     119#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_dl_codes.cpp

    r336 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#include "bebob/bebob_dl_codes.h" 
    2224#include "bebob/bebob_dl_bcd.h" 
     
    344346    return result; 
    345347} 
     348 
     349#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_dl_codes.h

    r365 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#ifndef BEBOB_DL_CODES_H 
    2224#define BEBOB_DL_CODES_H 
     
    311313}; 
    312314#endif 
     315 
     316#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_dl_mgr.cpp

    r365 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#include "bebob_dl_mgr.h" 
     
    714716    return false; 
    715717} 
     718 
     719#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_dl_mgr.h

    r336 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#ifndef BEBOB_DL_MGR_H 
     
    125127 
    126128#endif 
     129 
     130#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_functionblock.cpp

    r378 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#include "bebob/bebob_functionblock.h" 
    2224#include "bebob/bebob_avdevice_subunit.h" 
     
    551553    return true; 
    552554} 
     555 
     556#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bebob/bebob_functionblock.h

    r378 r404  
    1919 */ 
    2020 
     21#ifdef ENABLE_BEBOB 
     22 
    2123#ifndef BEBOB_FUNCTION_BLOCK_H 
    2224#define BEBOB_FUNCTION_BLOCK_H 
     
    218220 
    219221#endif 
     222 
     223#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/bounce/bounce_avdevice.cpp

    r386 r404  
    2020 */ 
    2121 
     22#ifdef ENABLE_BOUNCE 
     23 
    2224#include "bounce/bounce_avdevice.h" 
    2325#include "configrom.h" 
     
    377379} 
    378380 
    379  
    380  
    381 
     381} // namespace 
     382 
     383#endif // #ifdef ENABLE_BOUNCE 
  • branches/streaming-rework/src/bounce/bounce_avdevice.h

    r336 r404  
    1919 * MA 02111-1307 USA. 
    2020 */ 
     21 
     22#ifdef ENABLE_BOUNCE 
    2123 
    2224#ifndef BOUNCEDEVICE_H 
     
    100102 
    101103#endif 
     104 
     105#endif // #ifdef ENABLE_BOUNCE 
  • branches/streaming-rework/src/devicemanager.cpp

    r384 r404  
    3232#include "rme/rme_avdevice.h" 
    3333#include "maudio/maudio_avdevice.h" 
     34#include "dice/dice_avdevice.h" 
     35#include "metrichalo/mh_avdevice.h" 
    3436 
    3537#include <iostream> 
     
    149151                                   int id,  int level ) 
    150152{ 
     153#ifdef ENABLE_BEBOB 
    151154    if ( BeBoB::AvDevice::probe( *configRom.get() ) ) { 
    152155        return new BeBoB::AvDevice( configRom, *m_1394Service, id, level ); 
    153156    } 
    154  
    155 #ifdef ENABLE_MOTU 
     157#endif 
     158 
     159#ifdef ENABLE_BEBOB 
    156160    if ( MAudio::AvDevice::probe( *configRom.get() ) ) { 
    157161        return new MAudio::AvDevice( configRom, *m_1394Service, id, level ); 
    158162    } 
    159  
    160  
     163#endif 
     164 
     165#ifdef ENABLE_MOTU 
    161166    if ( Motu::MotuDevice::probe( *configRom.get() ) ) { 
    162167        return new Motu::MotuDevice( configRom, *m_1394Service, id, level ); 
    163168    } 
    164  
     169#endif 
     170 
     171#ifdef ENABLE_DICE 
     172    if ( Dice::DiceAvDevice::probe( *configRom.get() ) ) { 
     173        return new Dice::DiceAvDevice( configRom, *m_1394Service, id, level ); 
     174    } 
     175#endif 
     176 
     177#ifdef ENABLE_METRIC_HALO 
     178    if ( MetricHalo::MHAvDevice::probe( *configRom.get() ) ) { 
     179        return new MetricHalo::MHAvDevice( configRom, *m_1394Service, id, level ); 
     180    } 
     181#endif 
     182 
     183#ifdef ENABLE_RME 
    165184    if ( Rme::RmeDevice::probe( *configRom.get() ) ) { 
    166185        return new Rme::RmeDevice( configRom, *m_1394Service, id, level ); 
    167186    } 
    168  
     187#endif 
     188 
     189#ifdef ENABLE_BOUNCE 
    169190    if ( Bounce::BounceDevice::probe( *configRom.get() ) ) { 
    170191        return new Bounce::BounceDevice( configRom, *m_1394Service, id, level ); 
     
    366387DeviceManager::saveCache( Glib::ustring fileName ) 
    367388{ 
    368     int i = 0; 
    369     for ( IAvDeviceVectorIterator it = m_avDevices.begin(); 
    370           it != m_avDevices.end(); 
    371           ++it ) 
    372     { 
    373         IAvDevice* pAvDevice = *it; 
     389    int i; 
     390    i=0; // avoids unused warning 
     391     
     392    for ( IAvDeviceVectorIterator it = m_avDevices.begin(); 
     393          it != m_avDevices.end(); 
     394          ++it ) 
     395    { 
     396        IAvDevice* pAvDevice; 
     397        pAvDevice = *it; // avoids unused warning 
     398         
     399        #ifdef ENABLE_BEBOB 
    374400        BeBoB::AvDevice* pBeBoBDevice = reinterpret_cast< BeBoB::AvDevice* >( pAvDevice ); 
    375401        if ( pBeBoBDevice ) { 
     
    390416            std::cout << "a bebob device serialized" << std::endl; 
    391417        } 
     418        #endif 
    392419    } 
    393420    return true; 
     
    397424DeviceManager::loadCache( Glib::ustring fileName ) 
    398425{ 
     426    int i; 
     427    i=0; // avoids unused warning 
    399428    Util::XMLDeserialize deser( fileName ); 
    400     BeBoB::AvDevice* pBeBoBDevice = 0; 
    401     int i = 0; 
    402429 
    403430    typedef std::vector<ConfigRom*> ConfigRomVector; 
     
    425452    } 
    426453 
     454    #ifdef ENABLE_BEBOB 
     455    BeBoB::AvDevice* pBeBoBDevice = 0; 
    427456    do { 
    428457        ostringstream strstrm; 
     
    449478        } 
    450479    } while ( pBeBoBDevice ); 
    451  
     480    #endif 
     481     
    452482    return true; 
    453483} 
  • branches/streaming-rework/src/libstreaming/AmdtpPort.cpp

    r228 r404  
    2626 * 
    2727 */ 
     28#ifdef ENABLE_BEBOB 
     29    #ifndef ENABLE_AMDTP_SP 
     30        #define ENABLE_AMDTP_SP 
     31    #endif 
     32#endif 
     33 
     34#ifdef ENABLE_DICE  
     35    #ifndef ENABLE_AMDTP_SP 
     36        #define ENABLE_AMDTP_SP 
     37    #endif 
     38#endif 
     39 
     40#ifdef ENABLE_BOUNCE 
     41    #ifndef ENABLE_AMDTP_SP 
     42        #define ENABLE_AMDTP_SP 
     43    #endif 
     44#endif 
     45 
     46#ifdef ENABLE_AMDTP_SP 
    2847 
    2948#include "AmdtpPort.h" 
     
    3352 
    3453} // end of namespace FreebobStreaming 
     54 
     55#endif // #ifdef ENABLE_AMDTP_SP 
  • branches/streaming-rework/src/libstreaming/AmdtpPort.h

    r228 r404  
    2626 * 
    2727 */ 
     28#ifdef ENABLE_BEBOB 
     29    #ifndef ENABLE_AMDTP_SP 
     30        #define ENABLE_AMDTP_SP 
     31    #endif 
     32#endif 
     33 
     34#ifdef ENABLE_DICE  
     35    #ifndef ENABLE_AMDTP_SP 
     36        #define ENABLE_AMDTP_SP 
     37    #endif 
     38#endif 
     39 
     40#ifdef ENABLE_BOUNCE 
     41    #ifndef ENABLE_AMDTP_SP 
     42        #define ENABLE_AMDTP_SP 
     43    #endif 
     44#endif 
     45 
     46#ifdef ENABLE_AMDTP_SP 
     47 
    2848#ifndef __FREEBOB_AMDTPPORT__ 
    2949#define __FREEBOB_AMDTPPORT__ 
     
    100120#endif /* __FREEBOB_AMDTPPORT__ */ 
    101121 
    102  
     122#endif // #ifdef ENABLE_AMDTP_SP 
  • branches/streaming-rework/src/libstreaming/AmdtpPortInfo.cpp

    r221 r404  
    77 *   http://freebob.sf.net 
    88 * 
    9  *   Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
     9 *   Copyright (C) 2005,2006,2007 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
    1010 * 
    1111 *   This program is free software {} you can redistribute it and/or modify 
     
    2727 */ 
    2828 
     29#ifdef ENABLE_BEBOB 
     30    #ifndef ENABLE_AMDTP_SP 
     31        #define ENABLE_AMDTP_SP 
     32    #endif 
     33#endif 
     34 
     35#ifdef ENABLE_DICE  
     36    #ifndef ENABLE_AMDTP_SP 
     37        #define ENABLE_AMDTP_SP 
     38    #endif 
     39#endif 
     40 
     41#ifdef ENABLE_BOUNCE 
     42    #ifndef ENABLE_AMDTP_SP 
     43        #define ENABLE_AMDTP_SP 
     44    #endif 
     45#endif 
     46 
     47#ifdef ENABLE_AMDTP_SP 
     48 
    2949#include "AmdtpPortInfo.h" 
    3050#include <assert.h> 
     
    3555 
    3656} // end of namespace FreebobStreaming 
     57 
     58#endif // #ifdef ENABLE_AMDTP_SP 
  • branches/streaming-rework/src/libstreaming/AmdtpPortInfo.h

    r246 r404  
    77 *   http://freebob.sf.net 
    88 * 
    9  *   Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
     9 *   Copyright (C) 2005,2006,2007 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
    1010 * 
    1111 *   This program is free software {} you can redistribute it and/or modify 
     
    2626 * 
    2727 */ 
     28  
     29#ifdef ENABLE_BEBOB 
     30    #ifndef ENABLE_AMDTP_SP 
     31        #define ENABLE_AMDTP_SP 
     32    #endif 
     33#endif 
     34 
     35#ifdef ENABLE_DICE  
     36    #ifndef ENABLE_AMDTP_SP 
     37        #define ENABLE_AMDTP_SP 
     38    #endif 
     39#endif 
     40 
     41#ifdef ENABLE_BOUNCE 
     42    #ifndef ENABLE_AMDTP_SP 
     43        #define ENABLE_AMDTP_SP 
     44    #endif 
     45#endif 
     46 
     47#ifdef ENABLE_AMDTP_SP 
     48 
    2849#ifndef __FREEBOB_AMDTPPORTINFO__ 
    2950#define __FREEBOB_AMDTPPORTINFO__ 
     
    87108#endif /* __FREEBOB_AMDTPPORTINFO__ */ 
    88109 
    89  
     110#endif // #ifdef ENABLE_AMDTP_SP 
  • branches/streaming-rework/src/libstreaming/AmdtpStreamProcessor.cpp

    r402 r404  
    77 *   http://freebob.sf.net 
    88 * 
    9  *   Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
     9 *   Copyright (C) 2005,2006,2007 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
    1010 * 
    1111 *   This program is free software {} you can redistribute it and/or modify 
     
    2626 * 
    2727 */ 
     28 
     29#ifdef ENABLE_BEBOB 
     30    #ifndef ENABLE_AMDTP_SP 
     31        #define ENABLE_AMDTP_SP 
     32    #endif 
     33#endif 
     34 
     35#ifdef ENABLE_DICE  
     36    #ifndef ENABLE_AMDTP_SP 
     37        #define ENABLE_AMDTP_SP 
     38    #endif 
     39#endif 
     40 
     41#ifdef ENABLE_BOUNCE 
     42    #ifndef ENABLE_AMDTP_SP 
     43        #define ENABLE_AMDTP_SP 
     44    #endif 
     45#endif 
     46 
     47#ifdef ENABLE_AMDTP_SP 
    2848 
    2949#include "AmdtpStreamProcessor.h" 
     
    14211441 
    14221442} // end of namespace FreebobStreaming 
     1443 
     1444#endif // #ifdef ENABLE_AMDTP_SP 
  • branches/streaming-rework/src/libstreaming/AmdtpStreamProcessor.h

    r402 r404  
    77 *   http://freebob.sf.net 
    88 * 
    9  *   Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
     9 *   Copyright (C) 2005,2006,2007 Pieter Palmers <pieterpalmers@users.sourceforge.net> 
    1010 * 
    1111 *   This program is free software {} you can redistribute it and/or modify 
     
    2626 * 
    2727 */ 
     28#ifdef ENABLE_BEBOB 
     29    #ifndef ENABLE_AMDTP_SP 
     30        #define ENABLE_AMDTP_SP 
     31    #endif 
     32#endif 
     33 
     34#ifdef ENABLE_DICE  
     35    #ifndef ENABLE_AMDTP_SP 
     36        #define ENABLE_AMDTP_SP 
     37    #endif 
     38#endif 
     39 
     40#ifdef ENABLE_BOUNCE 
     41    #ifndef ENABLE_AMDTP_SP 
     42        #define ENABLE_AMDTP_SP 
     43    #endif 
     44#endif 
     45 
     46#ifdef ENABLE_AMDTP_SP 
     47 
    2848#ifndef __FREEBOB_AMDTPSTREAMPROCESSOR__ 
    2949#define __FREEBOB_AMDTPSTREAMPROCESSOR__ 
     
    215235#endif /* __FREEBOB_AMDTPSTREAMPROCESSOR__ */ 
    216236 
    217  
     237#endif // #ifdef ENABLE_AMDTP_SP 
     238 
  • branches/streaming-rework/src/libstreaming/MotuPort.cpp

    r246 r404  
    2727 */ 
    2828 
     29#ifdef ENABLE_MOTU 
     30 
    2931#include "MotuPort.h" 
    3032#include <assert.h> 
     
    3335 
    3436} // end of namespace FreebobStreaming 
     37 
     38#endif //#ifdef ENABLE_MOTU 
  • branches/streaming-rework/src/libstreaming/MotuPort.h

    r312 r404  
    2626 * 
    2727 */ 
     28  
     29#ifdef ENABLE_MOTU 
     30 
    2831#ifndef __FREEBOB_MOTUPORT__ 
    2932#define __FREEBOB_MOTUPORT__ 
     
    118121#endif /* __FREEBOB_MOTUPORT__ */ 
    119122 
     123#endif //#ifdef ENABLE_MOTU 
    120124 
  • branches/streaming-rework/src/libstreaming/MotuPortInfo.cpp

    r246 r404  
    2626 * 
    2727 */ 
     28  
     29#ifdef ENABLE_MOTU 
    2830 
    2931#include "MotuPortInfo.h" 
    3032#include <assert.h> 
    31  
    3233 
    3334namespace FreebobStreaming { 
     
    3536 
    3637} // end of namespace FreebobStreaming 
     38 
     39#endif //#ifdef ENABLE_MOTU 
  • branches/streaming-rework/src/libstreaming/MotuPortInfo.h

    r265 r404  
    2626 * 
    2727 */ 
     28#ifdef ENABLE_MOTU 
     29 
    2830#ifndef __FREEBOB_MOTUPORTINFO__ 
    2931#define __FREEBOB_MOTUPORTINFO__ 
     
    9193#endif /* __FREEBOB_MOTUPORTINFO__ */ 
    9294 
     95#endif //#ifdef ENABLE_MOTU 
    9396 
  • branches/streaming-rework/src/Makefile.am

    r391 r404  
    3131        bebob/bebob_avdevice_subunit.h bebob/bebob_avplug.h bebob/bebob_dl_bcd.h bebob/bebob_dl_codes.h \ 
    3232        bebob/bebob_dl_mgr.h bebob/bebob_functionblock.h bounce/bounce_avdevice.h \ 
    33         maudio/maudio_avdevice.h motu/motu_avdevice.h rme/rme_avdevice.h libfreebobavc/avc_connect.h \ 
     33        maudio/maudio_avdevice.h motu/motu_avdevice.h rme/rme_avdevice.h \ 
     34        metrichalo/mh_avdevice.h dice/dice_avdevice.h \ 
     35        libfreebobavc/avc_connect.h \ 
    3436        libfreebobavc/avc_definitions.h libfreebobavc/avc_extended_cmd_generic.h \ 
    3537        libfreebobavc/avc_extended_plug_info.h libfreebobavc/avc_extended_stream_format.h \ 
     
    6567        bebob/bebob_functionblock.cpp \ 
    6668        bounce/bounce_avdevice.cpp \ 
     69        dice/dice_avdevice.cpp \ 
    6770        maudio/maudio_avdevice.cpp \ 
     71        metrichalo/mh_avdevice.cpp \ 
    6872        motu/motu_avdevice.cpp \ 
    6973        rme/rme_avdevice.cpp \ 
     
    121125############### 
    122126 
    123 bin_PROGRAMS = freebob-downloader freebob-sync 
     127bin_PROGRAMS = @BIN_PROGRAMS@ 
    124128 
     129EXTRA_PROGRAMS = freebob-downloader freebob-sync 
    125130freebob_downloader_SOURCES = freebob-downloader.cpp 
    126131freebob_downloader_LDADD = $(top_builddir)/src/libfreebob.la 
  • branches/streaming-rework/src/maudio/maudio_avdevice.cpp

    r386 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#include "maudio/maudio_avdevice.h" 
     
    546548 
    547549} 
     550 
     551#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/maudio/maudio_avdevice.h

    r336 r404  
    1818 * MA 02111-1307 USA. 
    1919 */ 
     20 
     21#ifdef ENABLE_BEBOB 
    2022 
    2123#ifndef MAUDIODEVICE_H 
     
    8789 
    8890#endif 
     91 
     92#endif //#ifdef ENABLE_BEBOB 
  • branches/streaming-rework/src/motu/motu_avdevice.cpp

    r402 r404  
    11/* motu_avdevice.cpp 
    2  * Copyright (C) 2006 by Pieter Palmers 
     2 * Copyright (C) 2006,2007 by Pieter Palmers 
    33 * Copyright (C) 2006 by Jonathan Woithe 
    44 * 
     
    4646IMPL_DEBUG_MODULE( MotuDevice, MotuDevice, DEBUG_LEVEL_NORMAL ); 
    4747 
    48 char *motufw_modelname[] = {"[unknown]","828MkII", "Traveler"};  
     48// to define the supported devices 
     49static VendorModelEntry supportedDeviceList[] = 
     50
     51//  {vendor_id, model_id, unit_version, unit_specifier_id, model, vendor_name,model_name} 
     52    {0x000001f2, 0, 0x00000003, 0x000001f2, MOTUFW_MODEL_828mkII, "MOTU", "828MkII"}, 
     53    {0x000001f2, 0, 0x00000009, 0x000001f2, MOTUFW_MODEL_TRAVELER, "MOTU", "Traveler"}, 
     54}; 
    4955 
    5056/* ======================================================================= */ 
     
    145151} 
    146152 
    147 struct VendorModelEntry { 
    148     unsigned int vendor_id; 
    149     unsigned int model_id; 
    150 }; 
    151  
    152 static VendorModelEntry supportedDeviceList[] = 
    153 { 
    154     {0x0001f2, 0x00000000},  // Motu device, model entry not used 
    155  
    156 }; 
    157  
    158153bool 
    159154MotuDevice::probe( ConfigRom& configRom ) 
    160155{ 
    161156    unsigned int vendorId = configRom.getNodeVendorId(); 
    162     unsigned int modelId = configRom.getModelId(); 
     157//     unsigned int modelId = configRom.getModelId(); 
     158    unsigned int unitVersion = configRom.getUnitVersion(); 
     159    unsigned int unitSpecifierId = configRom.getUnitSpecifierId(); 
    163160 
    164161    for ( unsigned int i = 0; 
     
    167164    { 
    168165        if ( ( supportedDeviceList[i].vendor_id == vendorId ) 
    169              //&& ( supportedDeviceList[i].model_id == modelId )  
    170              ) 
     166//              && ( supportedDeviceList[i].model_id == modelId )  
     167             && ( supportedDeviceList[i].unit_version == unitVersion )  
     168             && ( supportedDeviceList[i].unit_specifier_id == unitSpecifierId )  
     169           ) 
    171170        { 
    172             switch (configRom.getUnitVersion()) { 
    173                 case MOTUFW_UNITVER_828mkII:  
    174                     return true; 
    175                 case MOTUFW_UNITVER_TRAVELER: 
    176                     return true; 
    177             } 
     171            return true; 
    178172        } 
    179173    } 
     
    185179MotuDevice::discover() 
    186180{ 
    187         // Find out if this device is one we know about 
    188         if (m_configRom->getUnitSpecifierId() == MOTUFW_VENDOR_MOTU) { 
    189                 switch (m_configRom->getUnitVersion()) { 
    190                     case MOTUFW_UNITVER_828mkII:  
    191                         m_motu_model = MOTUFW_MODEL_828mkII;  
    192                         break; 
    193                     case MOTUFW_UNITVER_TRAVELER: 
    194                         m_motu_model = MOTUFW_MODEL_TRAVELER; 
    195                         break; 
    196                 } 
     181    unsigned int vendorId = m_configRom->getNodeVendorId(); 
     182//     unsigned int modelId = m_configRom->getModelId(); 
     183    unsigned int unitVersion = m_configRom->getUnitVersion(); 
     184    unsigned int unitSpecifierId = m_configRom->getUnitSpecifierId(); 
     185 
     186    for ( unsigned int i = 0; 
     187          i < ( sizeof( supportedDeviceList )/sizeof( VendorModelEntry ) ); 
     188          ++i ) 
     189    { 
     190        if ( ( supportedDeviceList[i].vendor_id == vendorId ) 
     191//              && ( supportedDeviceList[i].model_id == modelId )  
     192             && ( supportedDeviceList[i].unit_version == unitVersion )  
     193             && ( supportedDeviceList[i].unit_specifier_id == unitSpecifierId )  
     194           ) 
     195        { 
     196            m_model = &(supportedDeviceList[i]); 
     197            m_motu_model=supportedDeviceList[i].model; 
    197198        } 
    198  
    199         if (m_motu_model != MOTUFW_MODEL_NONE) { 
    200                 debugOutput( DEBUG_LEVEL_VERBOSE, "found MOTU %s\n", 
    201                         motufw_modelname[m_motu_model]); 
    202                 return true; 
    203         } 
    204  
    205         return false; 
     199    } 
     200 
     201    if (m_model != NULL) { 
     202        debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 
     203                m_model->vendor_name, m_model->model_name); 
     204        return true; 
     205    } 
     206 
     207    return false; 
    206208} 
    207209 
     
    364366MotuDevice::showDevice() const 
    365367{ 
    366        debugOutput(DEBUG_LEVEL_VERBOSE, 
    367                "MOTU %s at node %d\n", motufw_modelname[m_motu_model]
    368                m_nodeId); 
     368    debugOutput(DEBUG_LEVEL_VERBOSE, 
     369        "%s %s at node %d\n", m_model->vendor_name, m_model->model_name
     370        m_nodeId); 
    369371} 
    370372 
  • branches/streaming-rework/src/motu/motu_avdevice.h

    r384 r404  
    7575namespace Motu { 
    7676 
    77 class MotuDevice : public IAvDevice { 
    78 public: 
    79     enum EMotuModel { 
     77enum EMotuModel { 
    8078      MOTUFW_MODEL_NONE     = 0x0000, 
    8179      MOTUFW_MODEL_828mkII  = 0x0001, 
    8280      MOTUFW_MODEL_TRAVELER = 0x0002, 
    83     }; 
     81}; 
     82 
     83struct VendorModelEntry { 
     84    unsigned int vendor_id; 
     85    unsigned int model_id; 
     86    unsigned int unit_version; 
     87    unsigned int unit_specifier_id; 
     88    enum EMotuModel model; 
     89    char *vendor_name; 
     90    char *model_name; 
     91}; 
     92 
     93class MotuDevice : public IAvDevice { 
     94public: 
    8495 
    8596    MotuDevice( std::auto_ptr<ConfigRom>( configRom ), 
     
    123134     
    124135    signed int       m_motu_model; 
     136    struct VendorModelEntry * m_model; 
    125137    int              m_nodeId; 
    126138    int              m_verboseLevel; 
     
    144156        signed int WriteRegister(unsigned int reg, quadlet_t data); 
    145157 
    146         // IEEE1394 Vendor IDs.  One would expect only MOTU, but you never 
    147         // know if a clone might appear some day. 
    148         enum EVendorId { 
    149                 MOTUFW_VENDOR_MOTU = 0x000001f2, 
    150         }; 
    151          
    152         // IEEE1394 Unit directory version IDs for different MOTU hardware 
    153         enum EUnitVersionId { 
    154                 MOTUFW_UNITVER_828mkII  = 0x00000003, 
    155                 MOTUFW_UNITVER_TRAVELER = 0x00000009, 
    156         }; 
    157  
    158158    // debug support 
    159159    DECLARE_DEBUG_MODULE; 
  • branches/streaming-rework/src/rme/rme_avdevice.cpp

    r386 r404  
    11/* rme_avdevice.cpp 
    22 * Copyright (C) 2006 by Jonathan Woithe 
    3  * Copyright (C) 2006 by Pieter Palmers 
     3 * Copyright (C) 2006,2007 by Pieter Palmers 
    44 * 
    55 * This file is part of FreeBob. 
     
    2020 */ 
    2121 
     22#ifdef ENABLE_RME 
     23#warning RME support is currently useless (detection only) 
     24 
    2225#include "rme/rme_avdevice.h" 
    2326#include "configrom.h" 
     
    4447IMPL_DEBUG_MODULE( RmeDevice, RmeDevice, DEBUG_LEVEL_NORMAL ); 
    4548 
    46 char *rme_modelname[] = {"[unknown]","Fireface-800"};  
     49// to define the supported devices 
     50static VendorModelEntry supportedDeviceList[] = 
     51
     52    {0x00000a35, 0x0001, "RME", "Fireface-800"},  // RME Fireface-800 
     53}; 
    4754 
    4855/* ======================================================================= */ 
     
    102109    : m_configRom( configRom ) 
    103110    , m_1394Service( &ieee1394service ) 
    104     , m_rme_model( RME_MODEL_NONE
     111    , m_model( NULL
    105112    , m_nodeId( nodeId ) 
    106113    , m_verboseLevel( verboseLevel ) 
     
    144151} 
    145152 
    146 struct VendorModelEntry { 
    147     unsigned int vendor_id; 
    148     unsigned int model_id; 
    149 }; 
    150  
    151 static VendorModelEntry supportedDeviceList[] = 
    152 { 
    153     {0x00000a35, 0x0001},  // RME Fireface-800 
    154  
    155 }; 
    156  
    157153bool 
    158154RmeDevice::probe( ConfigRom& configRom ) 
     
    179175RmeDevice::discover() 
    180176{ 
    181         // Find out if this device is one we know about 
    182         if (m_configRom->getUnitSpecifierId() == RME_VENDOR_RME) { 
    183                 switch (m_configRom->getModelId()) { 
    184                     case RME_MODELID_FIREFACE800:  
    185                         m_rme_model = RME_MODEL_FIREFACE800;  
    186                         break; 
    187                 } 
     177    unsigned int vendorId = m_configRom->getNodeVendorId(); 
     178    unsigned int modelId = m_configRom->getModelId(); 
     179 
     180    for ( unsigned int i = 0; 
     181          i < ( sizeof( supportedDeviceList )/sizeof( VendorModelEntry ) ); 
     182          ++i ) 
     183    { 
     184        if ( ( supportedDeviceList[i].vendor_id == vendorId ) 
     185             && ( supportedDeviceList[i].model_id == modelId )  
     186           ) 
     187        { 
     188            m_model = &(supportedDeviceList[i]); 
    188189        } 
    189         if (m_rme_model != RME_MODEL_NONE) { 
    190                 debugOutput( DEBUG_LEVEL_VERBOSE, "found RME %s\n", 
    191                         rme_modelname[m_rme_model]); 
    192                 return true; 
    193         } 
    194  
    195         return false; 
     190    } 
     191 
     192    if (m_model != NULL) { 
     193        debugOutput( DEBUG_LEVEL_VERBOSE, "found %s %s\n", 
     194                m_model->vendor_name, m_model->model_name); 
     195        return true; 
     196    } 
     197 
     198    return false; 
    196199} 
    197200 
     
    225228{ 
    226229        debugOutput(DEBUG_LEVEL_VERBOSE, 
    227                 "RME %s at node %d\n", rme_modelname[m_rme_model]
     230                "%s %s at node %d\n", m_model->vendor_name, m_model->model_name
    228231                m_nodeId); 
    229232} 
     
    547550 
    548551} 
     552 
     553#endif //#ifdef ENABLE_RME 
  • branches/streaming-rework/src/rme/rme_avdevice.h

    r336 r404  
    11/* rme_avdevice.h 
    22 * Copyright (C) 2006 Jonathan Woithe 
    3  * Copyright (C) 2006 by Pieter Palmers 
     3 * Copyright (C) 2006,2007 by Pieter Palmers 
    44 * 
    55 * This file is part of FreeBob. 
     
    2020 */ 
    2121 
     22#ifdef ENABLE_RME 
     23 
    2224#ifndef RMEDEVICE_H 
    2325#define RMEDEVICE_H 
     
    3638namespace Rme { 
    3739 
     40// struct to define the supported devices 
     41struct VendorModelEntry { 
     42    unsigned int vendor_id; 
     43    unsigned int model_id; 
     44    char *vendor_name; 
     45    char *model_name; 
     46}; 
     47 
    3848class RmeDevice : public IAvDevice { 
    3949public: 
    40     enum ERmeModel { 
    41       RME_MODEL_NONE        = 0x0000, 
    42       RME_MODEL_FIREFACE800 = 0x0001, 
    43     }; 
    4450 
    4551    RmeDevice( std::auto_ptr<ConfigRom>( configRom ), 
     
    8086    Ieee1394Service* m_1394Service; 
    8187     
    82     signed int       m_rme_model; 
     88    struct VendorModelEntry *m_model; 
     89     
    8390    int              m_nodeId; 
    8491    int              m_verboseLevel; 
     
    102109        signed int WriteRegister(unsigned int reg, quadlet_t data); 
    103110 
    104         // IEEE1394 Vendor IDs.  One would expect only RME, but you never 
    105         // know if a clone might appear some day. 
    106         enum EVendorId { 
    107                 RME_VENDOR_RME = 0x00000a35, 
    108         }; 
    109          
    110         // IEEE1394 Model IDs for different RME hardware 
    111         enum EUnitVersionId { 
    112                 RME_MODELID_FIREFACE800 = 0x00101800, 
    113         }; 
    114  
    115111    // debug support 
    116112    DECLARE_DEBUG_MODULE; 
     
    120116 
    121117#endif 
     118 
     119#endif //#ifdef ENABLE_RME