/** Open the raw1394 device and get a handle. * * \param port A 0-based number indicating which host adapter to use. * \return a raw1394 handle. */ raw1394handle_t raw1394_open( int port ) { int n_ports; struct raw1394_portinfo pinf[ 16 ]; raw1394handle_t handle; /* get a raw1394 handle */ #ifdef RAW1394_V_0_8 handle = raw1394_get_handle(); #else handle = raw1394_new_handle(); #endif if ( !handle ) { fprintf( stderr, "raw1394 - failed to get handle: %s.\n", strerror( errno ) ); exit( EXIT_FAILURE ); } if ( ( n_ports = raw1394_get_port_info( handle, pinf, 16 ) ) < 0 ) { fprintf( stderr, "raw1394 - failed to get port info: %s.\n", strerror( errno ) ); raw1394_destroy_handle( handle ); exit( EXIT_FAILURE ); } /* tell raw1394 which host adapter to use */ if ( raw1394_set_port( handle, port ) < 0 ) { fprintf( stderr, "raw1394 - failed to set set port: %s.\n", strerror( errno ) ); exit( EXIT_FAILURE ); } raw1394_set_userdata( handle, ( void* ) port ); return handle; }
void AVC1394Control::initialize() { int i; current_command = COMMAND_NONE; device = -1; device_lock = new Mutex("AVC1394Control::device_lock"); #ifdef RAW1394_V_0_8 handle = raw1394_get_handle(); #else handle = raw1394_new_handle(); #endif //printf("AVC1394Control::initialize(): 1\n"); if(!handle) { //printf("AVC1394Control::initialize(): 2\n"); if(!errno) { //printf("AVC1394Control::initialize(): 3\n"); fprintf(stderr, "AVC1394Control::initialize(): Not Compatable!\n"); } else { //printf("AVC1394Control::initialize(): 4\n"); fprintf(stderr, "AVC1394Control::initialize(): couldn't get handle\n"); } return; } if(raw1394_set_port(handle, 0) < 0) { //printf("AVC1394Control::initialize(): 5\n"); perror("AVC1394Control::initialize(): couldn't set port"); // raw1394_destroy_handle(handle); return; } for(i = 0; i < raw1394_get_nodecount(handle); i++) { if(rom1394_get_directory(handle, i, &rom_dir) < 0) { //printf("AVC1394Control::initialize(): 6\n"); fprintf(stderr, "AVC1394Control::initialize(): node %d\n", i); // raw1394_destroy_handle(handle); return; } if((rom1394_get_node_type(&rom_dir) == ROM1394_NODE_TYPE_AVC) && avc1394_check_subunit_type(handle, i, AVC1394_SUBUNIT_TYPE_VCR)) { //printf("AVC1394Control::initialize(): 7\n"); device = i; break; } } if(device == -1) { //printf("AVC1394Control::initialize(): 8\n"); fprintf(stderr, "AVC1394Control::initialize(): No AV/C Devices\n"); // raw1394_destroy_handle(handle); return; } }