Changeset 750 for trunk/libffado/src/libieee1394/ieee1394service.cpp
- Timestamp:
- 11/30/07 14:18:26 (16 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/src/libieee1394/ieee1394service.cpp
r748 r750 26 26 #include "ARMHandler.h" 27 27 #include "cycletimer.h" 28 #include "IsoHandlerManager.h" 28 29 29 30 #include <libavc1394/avc1394.h> … … 39 40 #include <iomanip> 40 41 41 #define FFADO_MAX_FIREWIRE_PORTS 842 #define FFADO_MAX_FIREWIRE_PORTS 16 42 43 43 44 IMPL_DEBUG_MODULE( Ieee1394Service, Ieee1394Service, DEBUG_LEVEL_NORMAL ); … … 47 48 , m_port( -1 ) 48 49 , m_threadRunning( false ) 50 , m_isoManager( new IsoHandlerManager( *this ) ) 49 51 { 50 52 pthread_mutex_init( &m_mutex, 0 ); … … 63 65 Ieee1394Service::~Ieee1394Service() 64 66 { 67 delete m_isoManager; 65 68 stopRHThread(); 66 69 for ( arm_handler_vec_t::iterator it = m_armHandlers.begin(); … … 79 82 raw1394_destroy_handle( m_handle ); 80 83 } 81 82 84 if ( m_resetHandle ) { 83 85 raw1394_destroy_handle( m_resetHandle ); … … 148 150 } 149 151 152 // test the cycle timer read function 153 int err; 154 uint32_t cycle_timer; 155 uint64_t local_time; 156 err=raw1394_read_cycle_timer(m_handle, &cycle_timer, &local_time); 157 if(err) { 158 debugError("raw1394_read_cycle_timer failed.\n"); 159 debugError(" Error: %s\n", strerror(err)); 160 debugError(" Your system doesn't seem to support the raw1394_read_cycle_timer call\n"); 161 return false; 162 } 163 150 164 m_port = port; 151 165 152 166 // obtain port name 167 raw1394handle_t tmp_handle = raw1394_new_handle(); 168 if ( tmp_handle == NULL ) { 169 debugError("Could not get temporaty libraw1394 handle.\n"); 170 return false; 171 } 153 172 struct raw1394_portinfo pinf[FFADO_MAX_FIREWIRE_PORTS]; 154 int nb_detected_ports = raw1394_get_port_info(m_handle, pinf, FFADO_MAX_FIREWIRE_PORTS); 173 int nb_detected_ports = raw1394_get_port_info(tmp_handle, pinf, FFADO_MAX_FIREWIRE_PORTS); 174 raw1394_destroy_handle(tmp_handle); 175 176 if (nb_detected_ports < 0) { 177 debugError("Failed to detect number of ports\n"); 178 return false; 179 } 155 180 156 181 if(nb_detected_ports && port < FFADO_MAX_FIREWIRE_PORTS) { … … 165 190 raw1394_set_userdata( m_handle, this ); 166 191 raw1394_set_userdata( m_resetHandle, this ); 192 raw1394_set_userdata( m_rtHandle, this ); 167 193 raw1394_set_bus_reset_handler( m_resetHandle, 168 194 this->resetHandlerLowLevel ); … … 171 197 this->armHandlerLowLevel ); 172 198 199 if(!m_isoManager) { 200 debugFatal("No IsoHandlerManager available, bad!\n"); 201 return false; 202 } 203 m_isoManager->setVerboseLevel(getDebugLevel()); 204 if(!m_isoManager->init()) { 205 debugFatal("Could not initialize IsoHandlerManager\n"); 206 return false; 207 } 208 173 209 startRHThread(); 174 175 210 return true; 211 } 212 213 bool 214 Ieee1394Service::setThreadParameters(bool rt, int priority) { 215 if (m_isoManager) { 216 return m_isoManager->setThreadParameters(rt, priority); 217 } else { 218 return true; 219 } 176 220 } 177 221 … … 930 974 Ieee1394Service::setVerboseLevel(int l) 931 975 { 976 if (m_isoManager) m_isoManager->setVerboseLevel(l); 977 setDebugLevel(l); 932 978 debugOutput( DEBUG_LEVEL_VERBOSE, "Setting verbose level to %d...\n", l ); 933 setDebugLevel(l);934 979 } 935 980 … … 939 984 debugOutput( DEBUG_LEVEL_VERBOSE, "Port: %d\n", getPort() ); 940 985 debugOutput( DEBUG_LEVEL_VERBOSE, " Name: %s\n", getPortName().c_str() ); 941 } 986 debugOutputShort( DEBUG_LEVEL_NORMAL, "Iso handler info:\n"); 987 if (m_isoManager) m_isoManager->dumpInfo(); 988 }