Changeset 622

Show
Ignore:
Timestamp:
09/07/07 08:04:47 (17 years ago)
Author:
ppalmers
Message:

improve samplerate setting for the focusrite

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/bebob/focusrite/focusrite_device.cpp

    r619 r622  
    230230     
    231231    cmd.setVerbose( getDebugLevel() ); 
    232 //         cmd.setVerbose( DEBUG_LEVEL_VERY_VERBOSE ); 
     232        cmd.setVerbose( DEBUG_LEVEL_VERY_VERBOSE ); 
    233233     
    234234    cmd.m_id=id; 
     
    240240    } 
    241241     
    242     uint32_t verify; 
    243     if ( !getSpecificValue(id, &verify) ) { 
    244         debugError( "getSpecificValue command failed\n" ); 
    245         return false; 
    246     } 
    247      
    248     // check wether the command was successful. 
    249     return verify==v; 
     242    return true; 
    250243} 
    251244 
     
    261254     
    262255    cmd.setVerbose( getDebugLevel() ); 
    263 //         cmd.setVerbose( DEBUG_LEVEL_VERY_VERBOSE ); 
     256        cmd.setVerbose( DEBUG_LEVEL_VERY_VERBOSE ); 
    264257     
    265258    cmd.m_id=id; 
     
    296289        default: return 0; 
    297290    } 
     291} 
     292 
     293bool 
     294SaffireProDevice::setSamplingFrequencyDo( int s ) 
     295{ 
     296    uint32_t value; 
     297    switch(s) { 
     298        case 44100:  value=FOCUSRITE_CMD_SAMPLERATE_44K1;break; 
     299        case 48000:  value=FOCUSRITE_CMD_SAMPLERATE_48K;break; 
     300        case 88200:  value=FOCUSRITE_CMD_SAMPLERATE_88K2;break; 
     301        case 96000:  value=FOCUSRITE_CMD_SAMPLERATE_96K;break; 
     302        case 176400: value=FOCUSRITE_CMD_SAMPLERATE_176K4;break; 
     303        case 192000: value=FOCUSRITE_CMD_SAMPLERATE_192K;break; 
     304        default: 
     305            debugWarning("Unsupported samplerate: %d\n", s); 
     306            return false; 
     307    } 
     308 
     309 
     310    if ( !setSpecificValue(FOCUSRITE_CMD_ID_SAMPLERATE, value) ) { 
     311        debugError( "setSpecificValue failed\n" ); 
     312        return false; 
     313    } 
     314    return true; 
    298315} 
    299316 
     
    316333    } else { 
    317334 
    318         uint32_t value; 
    319         switch(s) { 
    320             case 44100:  value=FOCUSRITE_CMD_SAMPLERATE_44K1;break; 
    321             case 48000:  value=FOCUSRITE_CMD_SAMPLERATE_48K;break; 
    322             case 88200:  value=FOCUSRITE_CMD_SAMPLERATE_88K2;break; 
    323             case 96000:  value=FOCUSRITE_CMD_SAMPLERATE_96K;break; 
    324             case 176400: value=FOCUSRITE_CMD_SAMPLERATE_176K4;break; 
    325             case 192000: value=FOCUSRITE_CMD_SAMPLERATE_192K;break; 
    326             default: 
    327                 debugWarning("Unsupported samplerate: %d\n", s); 
    328                 return false; 
     335        if(!setSamplingFrequencyDo( s )) { 
     336            debugWarning("setSamplingFrequencyDo failed\n"); 
    329337        } 
    330  
    331      
    332         if ( !setSpecificValue(FOCUSRITE_CMD_ID_SAMPLERATE, value) ) { 
    333             debugError( "setSpecificValue failed\n" ); 
    334             return false; 
     338         
     339        // wait for a while 
     340        usleep(100 * 1000); 
     341        int verify=getSamplingFrequency(); 
     342         
     343        debugOutput( DEBUG_LEVEL_NORMAL, 
     344                     "setSampleRate: requested samplerate %d, device now has %d\n", s, verify ); 
     345                      
     346        if (s != verify) { 
     347            debugWarning("setting samplerate failed. trying again...\n"); 
     348            if(!setSamplingFrequencyDo( s )) { 
     349                debugWarning("setSamplingFrequencyDo failed\n"); 
     350            } 
     351             
     352            // wait for a while 
     353            usleep(100 * 1000); 
     354            verify=getSamplingFrequency(); 
     355            debugOutput( DEBUG_LEVEL_NORMAL, 
     356                        "setSampleRate (2): requested samplerate %d, device now has %d\n", s, verify ); 
     357            return (s==verify); 
    335358        } 
    336  
    337         debugOutput( DEBUG_LEVEL_NORMAL, 
    338                      "setSampleRate: Set sample rate to %d\n", s ); 
    339359        return true; 
    340360    } 
  • trunk/libffado/src/bebob/focusrite/focusrite_device.h

    r619 r622  
    8686 
    8787private: 
     88    virtual bool setSamplingFrequencyDo( int ); 
     89     
    8890    BinaryControl * m_Phantom1; 
    8991    BinaryControl * m_Phantom2;