Show
Ignore:
Timestamp:
11/30/07 14:18:26 (15 years ago)
Author:
ppalmers
Message:

Code refactoring. Tries to simplify things and tries to put all code where it belongs.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/libieee1394/IsoHandler.h

    r748 r750  
    2626 
    2727#include "debugmodule/debugmodule.h" 
    28  
    29 #include <libraw1394/raw1394.h> 
    30  
     28#include "IsoHandlerManager.h" 
    3129 
    3230enum raw1394_iso_disposition ; 
    33 namespace Streaming 
    34 
    35  
    36 class StreamProcessor; 
     31 
     32namespace Streaming { 
     33    class StreamProcessor; 
     34
     35 
    3736/*! 
    3837\brief The Base Class for ISO Handlers 
    3938 
    4039 These classes perform the actual ISO communication through libraw1394. 
    41  They are different from StreamProcessors because one handler can provide multiple 
     40 They are different from Streaming::StreamProcessors because one handler can provide multiple 
    4241 streams with packets in case of ISO multichannel receive. 
    4342 
     
    4645class IsoHandler 
    4746{ 
    48     protected: 
    49  
    50     public: 
    51  
    52         enum EHandlerType { 
    53                 EHT_Receive, 
    54                 EHT_Transmit 
    55         }; 
    56  
    57         IsoHandler(int port); 
    58  
    59         IsoHandler(int port, unsigned int buf_packets, unsigned int max_packet_size, int irq); 
    60  
    61         virtual ~IsoHandler(); 
    62  
    63         virtual bool init(); 
    64         virtual bool prepare(); 
    65         virtual bool start(int cycle); 
    66         virtual bool stop(); 
    67  
    68         bool iterate(); 
    69  
    70         void setVerboseLevel(int l); 
    71  
    72         // no setter functions, because those would require a re-init 
    73         unsigned int getMaxPacketSize() { return m_max_packet_size;}; 
    74         unsigned int getNbBuffers() { return m_buf_packets;}; 
    75         int getWakeupInterval() { return m_irq_interval;}; 
    76  
    77         int getPacketCount() {return m_packetcount;}; 
    78         void resetPacketCount() {m_packetcount=0;}; 
    79  
    80         int getDroppedCount() {return m_dropped;}; 
    81         void resetDroppedCount() {m_dropped=0;}; 
    82  
    83         virtual enum EHandlerType getType() = 0; 
    84  
    85         int getFileDescriptor() { return raw1394_get_fd(m_handle);}; 
    86  
    87         void dumpInfo(); 
    88  
    89         bool inUse() {return (m_Client != 0) ;}; 
    90         virtual bool isStreamRegistered(StreamProcessor *s) {return (m_Client == s);}; 
    91  
    92         virtual bool registerStream(StreamProcessor *); 
    93         virtual bool unregisterStream(StreamProcessor *); 
    94  
    95         int getLocalNodeId() {return raw1394_get_local_id( m_handle );}; 
    96         int getPort() {return m_port;}; 
    97  
    98     protected: 
     47public: 
     48    enum EHandlerType { 
     49            EHT_Receive, 
     50            EHT_Transmit 
     51    }; 
     52    IsoHandler(IsoHandlerManager& manager); 
     53    IsoHandler(IsoHandlerManager& manager, unsigned int buf_packets, unsigned int max_packet_size, int irq); 
     54 
     55    virtual ~IsoHandler(); 
     56 
     57    virtual bool init(); 
     58    virtual bool prepare(); 
     59 
     60    bool iterate(); 
     61    void setVerboseLevel(int l); 
     62 
     63    virtual bool enable() {return enable(-1);}; 
     64    virtual bool enable(int cycle); 
     65    virtual bool disable(); 
     66 
     67    virtual void flush() = 0; 
     68 
     69    bool isEnabled() 
     70        {return m_State == E_Running;}; 
     71 
     72    // no setter functions, because those would require a re-init 
     73    unsigned int getMaxPacketSize() { return m_max_packet_size;}; 
     74    unsigned int getNbBuffers() { return m_buf_packets;}; 
     75    int getPacketLatency() { return m_irq_interval;}; 
     76 
     77    int getPacketCount() {return m_packetcount;}; 
     78    void resetPacketCount() {m_packetcount=0;}; 
     79 
     80    int getDroppedCount() {return m_dropped;}; 
     81    void resetDroppedCount() {m_dropped=0;}; 
     82 
     83    virtual enum EHandlerType getType() = 0; 
     84 
     85    int getFileDescriptor() { return raw1394_get_fd(m_handle);}; 
     86 
     87    virtual void dumpInfo(); 
     88 
     89    bool inUse() {return (m_Client != 0) ;}; 
     90    virtual bool isStreamRegistered(Streaming::StreamProcessor *s) {return (m_Client == s);}; 
     91 
     92    virtual bool registerStream(Streaming::StreamProcessor *); 
     93    virtual bool unregisterStream(Streaming::StreamProcessor *); 
     94 
     95    protected: 
     96        IsoHandlerManager& m_manager; 
    9997        raw1394handle_t m_handle; 
    100         raw1394handle_t m_handle_util; 
    101         int             m_port; 
    10298        unsigned int    m_buf_packets; 
    10399        unsigned int    m_max_packet_size; 
     
    106102        int m_packetcount; 
    107103        int m_dropped; 
    108  
    109         StreamProcessor *m_Client; 
     104        Streaming::StreamProcessor *m_Client; 
    110105 
    111106        virtual int handleBusReset(unsigned int generation); 
    112  
    113  
    114107        DECLARE_DEBUG_MODULE; 
    115  
    116108    private: 
    117109        static int busreset_handler(raw1394handle_t handle, unsigned int generation); 
    118110 
    119111    // the state machine 
    120     private
     112    protected
    121113        enum EHandlerStates { 
    122114            E_Created, 
     
    126118            E_Error 
    127119        }; 
    128  
    129120        enum EHandlerStates m_State; 
    130  
    131121}; 
    132122 
     
    139129 
    140130    public: 
    141         IsoRecvHandler(int port); 
    142         IsoRecvHandler(int port, unsigned int buf_packets, unsigned int max_packet_size, int irq); 
     131        IsoRecvHandler(IsoHandlerManager& manager); 
     132        IsoRecvHandler(IsoHandlerManager& manager, unsigned int buf_packets, unsigned int max_packet_size, int irq); 
    143133        virtual ~IsoRecvHandler(); 
    144134 
    145135        bool init(); 
    146  
    147136        enum EHandlerType getType() { return EHT_Receive;}; 
    148  
    149         bool start(int cycle); 
    150  
    151         bool prepare(); 
     137        bool enable(int cycle); 
     138        virtual bool prepare(); 
     139        virtual void flush(); 
    152140 
    153141    protected: 
    154142        int handleBusReset(unsigned int generation); 
    155  
    156143    private: 
    157144        static enum raw1394_iso_disposition 
     
    165152                          unsigned char channel, unsigned char tag, unsigned char sy, 
    166153                          unsigned int cycle, unsigned int dropped); 
    167  
    168154}; 
    169155 
     
    175161{ 
    176162    public: 
    177         IsoXmitHandler(int port); 
    178         IsoXmitHandler(int port, unsigned int buf_packets, 
     163        IsoXmitHandler(IsoHandlerManager& manager); 
     164        IsoXmitHandler(IsoHandlerManager& manager, unsigned int buf_packets, 
    179165                        unsigned int max_packet_size, int irq); 
    180         IsoXmitHandler(int port, unsigned int buf_packets, 
     166        IsoXmitHandler(IsoHandlerManager& manager, unsigned int buf_packets, 
    181167                        unsigned int max_packet_size, int irq, 
    182168                        enum raw1394_iso_speed speed); 
     
    184170 
    185171        bool init(); 
    186  
    187172        enum EHandlerType getType() { return EHT_Transmit;}; 
    188  
    189173        unsigned int getPreBuffers() {return m_prebuffers;}; 
    190174        void setPreBuffers(unsigned int n) {m_prebuffers=n;}; 
    191  
    192         bool start(int cycle); 
    193  
    194         bool prepare(); 
    195  
     175        virtual bool enable(int cycle); 
     176        virtual bool prepare(); 
     177        virtual void flush() {}; 
     178 
     179        void dumpInfo(); 
    196180    protected: 
    197181        int handleBusReset(unsigned int generation); 
     
    208192 
    209193        enum raw1394_iso_speed m_speed; 
    210  
    211194        unsigned int m_prebuffers; 
    212  
    213195}; 
    214196 
    215 } 
    216  
    217197#endif /* __FFADO_ISOHANDLER__  */ 
    218198