Show
Ignore:
Timestamp:
11/01/07 09:04:57 (15 years ago)
Author:
ppalmers
Message:

Introduce bus reset handling

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/devicemanager.cpp

    r661 r674  
    165165    } 
    166166 
     167    // add the bus reset handler 
     168    m_busreset_functor = new MemberFunctor0< DeviceManager*, 
     169                void (DeviceManager::*)() > 
     170                ( this, &DeviceManager::busresetHandler, false ); 
     171    m_1394Service->addBusResetHandler( m_busreset_functor ); 
     172 
    167173    setVerboseLevel(getDebugLevel()); 
    168174    return true; 
     175} 
     176 
     177void 
     178DeviceManager::busresetHandler() 
     179{ 
     180    debugOutput( DEBUG_LEVEL_VERBOSE, "Bus reset...\n" ); 
     181 
     182    // propagate the bus reset to all avDevices 
     183    for ( FFADODeviceVectorIterator it = m_avDevices.begin(); 
     184          it != m_avDevices.end(); 
     185          ++it ) 
     186    { 
     187        (*it)->handleBusReset(); 
     188    } 
    169189} 
    170190 
  • trunk/libffado/src/devicemanager.h

    r581 r674  
    8585    FFADODevice* getSlaveDriver( std::auto_ptr<ConfigRom>( configRom ) ); 
    8686 
     87    void busresetHandler(); 
     88 
    8789protected: 
    88     Ieee1394Service* m_1394Service; 
     90    Ieee1394Service*   m_1394Service; 
    8991    FFADODeviceVector  m_avDevices; 
    90  
    91 //     OSC::OscServer*  m_oscServer; 
     92    Functor*           m_busreset_functor; 
    9293 
    9394// debug stuff 
  • trunk/libffado/src/ffadodevice.cpp

    r661 r674  
    125125 
    126126void 
     127FFADODevice::handleBusReset() 
     128{ 
     129    debugOutput( DEBUG_LEVEL_VERBOSE, "Handle bus reset...\n"); 
     130     
     131    // update the config rom node id 
     132    sleep(1); 
     133    getConfigRom().setVerboseLevel(getDebugLevel()); 
     134    getConfigRom().updatedNodeId(); 
     135 
     136} 
     137 
     138void 
    127139FFADODevice::setVerboseLevel(int l) 
    128140{ 
    129141    debugOutput( DEBUG_LEVEL_VERBOSE, "Setting verbose level to %d...\n", l ); 
    130142    setDebugLevel(l); 
     143    getConfigRom().setVerboseLevel(l); 
    131144} 
    132145 
  • trunk/libffado/src/ffadodevice.h

    r661 r674  
    402402    int getNodeId(); 
    403403 
     404    /** 
     405     * @brief handle a bus reset 
     406     * 
     407     * Called whenever a bus reset is detected. Handle everything 
     408     * that has to be done to cope with a bus reset. 
     409     * 
     410     */ 
     411    void handleBusReset(); 
     412 
    404413    // the Control::Container functions 
    405414    virtual std::string getName();