Changeset 1849

Show
Ignore:
Timestamp:
06/12/10 06:30:33 (10 years ago)
Author:
jwoithe
Message:

IsoHandlerManager?: some interfaces (eg: RME) do not send placeholder iso packets when there is no data to send. For such interfaces IsoHandler? wrongly interprets this as a dropped packet. Therefore provide a mechanism to disable the dropped packet check. The default state is unchanged from the original code: a missing packet is regarded as a dropped packet.

Files:

Legend:

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

    r1765 r1849  
    466466   , m_IsoThreadReceive ( NULL ) 
    467467   , m_IsoTaskReceive ( NULL ) 
     468   , m_MissedCyclesOK ( false ) 
    468469{ 
    469470} 
     
    14541455    // keep track of dropped cycles 
    14551456    int dropped_cycles = 0; 
    1456     if (m_last_cycle != (int)cycle && m_last_cycle != -1) { 
     1457    if (m_last_cycle != (int)cycle && m_last_cycle != -1 && m_manager.m_MissedCyclesOK == false) { 
    14571458        dropped_cycles = diffCycles(cycle, m_last_cycle) - 1; 
    14581459        #ifdef DEBUG 
  • trunk/libffado/src/libieee1394/IsoHandlerManager.h

    r1765 r1849  
    358358         */ 
    359359        int getPacketLatencyForStream(Streaming::StreamProcessor *); 
     360 
     361        /** 
     362         * Enables the isohandler manager to ignore missed packets.  This 
     363         * behaviour is needed by some interfaces which don't send empty 
     364         * placeholder packets when no data needs to be sent. 
     365         */ 
     366        void setMissedCyclesOK(bool ok) { m_MissedCyclesOK = ok; }; 
     367 
    360368    private: 
    361369        IsoHandler * getHandlerForStream(Streaming::StreamProcessor *stream); 
     
    409417        IsoTask *       m_IsoTaskReceive; 
    410418 
     419        bool            m_MissedCyclesOK; 
     420 
    411421        // debug stuff 
    412422        DECLARE_DEBUG_MODULE;