Changeset 57
- Timestamp:
- 01/23/05 09:09:19 (18 years ago)
- Files:
-
- trunk/freebob/src/avdescriptor.cpp (modified) (7 diffs)
- trunk/freebob/src/avdevice.cpp (modified) (13 diffs)
- trunk/freebob/src/avdevice.h (modified) (1 diff)
- trunk/freebob/src/avdevicemusicsubunit.cpp (modified) (4 diffs)
- trunk/freebob/src/avdevicesubunit.cpp (modified) (6 diffs)
- trunk/freebob/src/ieee1394service.cpp (modified) (2 diffs)
- trunk/freebob/src/ieee1394service.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/freebob/src/avdescriptor.cpp
r43 r57 73 73 //fprintf(stderr, "Opening descriptor\n"); 74 74 75 response = cParent->avcExecuteTransaction(request, 2, 2);75 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 2); 76 76 77 77 if ((response[0]&0xFF000000)==AVC1394_RESPONSE_ACCEPTED) { … … 101 101 //fprintf(stderr, "Opening descriptor\n"); 102 102 103 response = cParent->avcExecuteTransaction(request, 2, 2);103 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 2); 104 104 105 105 if ((response[0]&0xFF000000)==AVC1394_RESPONSE_ACCEPTED) { … … 131 131 //fprintf(stderr, "Opening descriptor\n"); 132 132 133 response = cParent->avcExecuteTransaction(request, 2, 2);133 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 2); 134 134 135 135 if ((response[0]&0xFF000000)==AVC1394_RESPONSE_ACCEPTED) { // should always be accepted according to spec … … 160 160 request[1] = 0xFFFF0000 | (0x02); 161 161 request[2] = (((0)&0xFFFF) << 16) |0x0000FFFF; 162 response = cParent->avcExecuteTransaction(request, 3, 3);162 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 3, 3); 163 163 164 164 iLength=response[2] & 0xFFFF; … … 192 192 request[2] = ((0) << 16) |0x0000FFFF; 193 193 194 response = cParent->avcExecuteTransaction(request, 3, 3);194 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 3, 3); 195 195 data_length_read=(response[1]&0xFFFF); 196 196 read_result_status=((response[1]>>24)&0xFF); … … 217 217 request[2] = (((bytes_read)&0xFFFF) << 16) |0x0000FFFF; 218 218 219 response = cParent->avcExecuteTransaction(request, 3, 3);219 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 3, 3); 220 220 data_length_read=(response[1]&0xFFFF); 221 221 read_result_status=((response[1]>>24)&0xFF); … … 245 245 request[0] = AVC1394_CTYPE_STATUS | qTarget | AVC1394_COMMAND_OPEN_DESCRIPTOR | (iType & 0xFF); 246 246 request[1] = 0xFFFFFFFF; 247 response = cParent->avcExecuteTransaction(request, 2, 2);247 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 2); 248 248 249 249 if (((response[0] & 0xFF000000)==AVC1394_RESPONSE_NOT_IMPLEMENTED) || ((response[1] & 0xFF000000)==0x04)) { trunk/freebob/src/avdevice.cpp
r56 r57 160 160 AvDeviceSubunit *tmpAvDeviceSubunit=NULL; 161 161 162 Ieee1394Service* p1394Service = Ieee1394Service::instance(); 163 162 164 // check the number of I/O plugs 163 165 request[0] = AVC1394_CTYPE_STATUS … … 167 169 | 0x0000; 168 170 request[1] = 0xFFFFFFFF; 169 response = avcExecuteTransaction(request, 2, 2 );171 response = p1394Service->avcExecuteTransaction( m_iNodeId, request, 2, 2 ); 170 172 request[1] = 0x02020606; 171 173 response = request; … … 187 189 | 0x01; 188 190 request[1] = 0xFFFFFFFF; 189 response = avcExecuteTransaction(request, 2, 2 );191 response = p1394Service->avcExecuteTransaction( m_iNodeId, request, 2, 2 ); 190 192 if ( response != NULL ) { 191 193 m_iNbAsyncDestinationPlugs … … 221 223 | ((i<<4) & 0xF0) | 0x07; 222 224 request[1] = 0xFFFFFFFF; 223 response = avcExecuteTransaction(request, 6, 2 );225 response = p1394Service->avcExecuteTransaction( m_iNodeId, request, 6, 2 ); 224 226 225 227 table_entries=response[1]; /// XXX buggy code! response could be 0! … … 315 317 } 316 318 317 /* Function to execute an AVC transaction, i.e. send command/status318 * and get response main purpose is wrapping the avc1394 function call319 * to output some debugging comments.320 */321 quadlet_t*322 AvDevice::avcExecuteTransaction( quadlet_t* request,323 unsigned int request_len,324 unsigned int response_len )325 {326 quadlet_t* response;327 unsigned char* request_pos;328 unsigned int i;329 330 response = avc1394_transaction_block( m_handle,331 m_iNodeId,332 request,333 request_len,334 2 );335 if ( request ) {336 debugPrint( DEBUG_LEVEL_TRANSFERS,337 "------- TRANSACTION START -------\n" );338 debugPrint( DEBUG_LEVEL_TRANSFERS," REQUEST: " );339 /* request is in machine byte order. this function is for340 * intel architecure */341 for ( i = 0; i < request_len; i++ ) {342 request_pos = (unsigned char *)(request+i);343 debugPrintShort( DEBUG_LEVEL_TRANSFERS,344 "0x%02X%02X%02X%02X ",345 *(request_pos),346 *(request_pos+1),347 *(request_pos+2),348 *(request_pos+3));349 }350 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "\n" );351 debugPrint( DEBUG_LEVEL_TRANSFERS, " => " );352 debugPrintShort( DEBUG_LEVEL_TRANSFERS, " " );353 354 request_pos = (unsigned char *)(request);355 356 debugPrintShort( DEBUG_LEVEL_TRANSFERS,357 "subunit_type=%02X subunit_id=%02X opcode=%02X",358 ((*(request_pos+1))>>3)&0x1F,359 (*(request_pos+1))&0x07,360 (*(request_pos+2))&0xFF );361 debugPrintShort (DEBUG_LEVEL_TRANSFERS,"\n");362 }363 364 if ( response ) {365 /* response is in order of receiving, i.e. msb first */366 debugPrint(DEBUG_LEVEL_TRANSFERS, " -> RESPONSE: " );367 for ( i = 0; i < response_len; i++ ) {368 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "0x%08X ", response[i] );369 }370 371 debugPrintShort( DEBUG_LEVEL_TRANSFERS,"\n" );372 debugPrint( DEBUG_LEVEL_TRANSFERS," => " );373 switch (response[0]&0xFF000000) {374 case AVC1394_RESPONSE_NOT_IMPLEMENTED:375 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Not Implemented " );376 break;377 case AVC1394_RESPONSE_ACCEPTED:378 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Accepted " );379 break;380 case AVC1394_RESPONSE_REJECTED:381 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Rejected " );382 break;383 case AVC1394_RESPONSE_IN_TRANSITION:384 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "In Transition " );385 break;386 case AVC1394_RESPONSE_IMPLEMENTED:387 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Implemented / Stable " );388 break;389 case AVC1394_RESPONSE_CHANGED:390 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Changed " );391 break;392 case AVC1394_RESPONSE_INTERIM:393 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Interim " );394 break;395 default:396 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Unknown response " );397 break;398 }399 debugPrintShort( DEBUG_LEVEL_TRANSFERS,400 "subunit_type=%02X subunit_id=%02X opcode=%02X",401 (response[0]>>19)&0x1F,402 (response[0]>>16)&0x07,403 (response[0]>>8)&0xFF );404 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "\n" );405 }406 debugPrint( DEBUG_LEVEL_TRANSFERS, "------- TRANSACTION END -------\n" );407 return response;408 }409 319 410 320 FBReturnCodes AvDevice::setInputPlugSignalFormat(unsigned char plug, unsigned char fmt, quadlet_t fdf) { … … 415 325 | AVC1394_COMMAND_INPUT_PLUG_SIGNAL_FORMAT | plug; 416 326 request[1] = (0x80000000) | ((fmt & 0x3F)<<24) | (fdf & 0x00FFFFFF); 417 response = avcExecuteTransaction(request, 2, 2);327 response = Ieee1394Service::instance()->avcExecuteTransaction( m_iNodeId, request, 2, 2); 418 328 if (response != NULL) { 419 329 … … 429 339 | AVC1394_COMMAND_INPUT_PLUG_SIGNAL_FORMAT | plug; 430 340 request[1] = 0xFFFFFFFF; 431 response = avcExecuteTransaction(request, 2, 2);341 response = Ieee1394Service::instance()->avcExecuteTransaction( m_iNodeId, request, 2, 2); 432 342 if (response != NULL) { 433 343 *fmt=((response[1] >> 24) & 0x3F); … … 444 354 | AVC1394_COMMAND_OUTPUT_PLUG_SIGNAL_FORMAT | plug; 445 355 request[1] = (0x80000000) | ((fmt & 0x3F)<<24) | (fdf & 0x00FFFFFF); 446 response = avcExecuteTransaction(request, 2, 2);356 response = Ieee1394Service::instance()->avcExecuteTransaction(m_iNodeId, request, 2, 2); 447 357 if (response != NULL) { 448 358 … … 458 368 | AVC1394_COMMAND_OUTPUT_PLUG_SIGNAL_FORMAT | plug; 459 369 request[1] = 0xFFFFFFFF; 460 response = avcExecuteTransaction(request, 2, 2);370 response = Ieee1394Service::instance()->avcExecuteTransaction(m_iNodeId, request, 2, 2); 461 371 if (response != NULL) { 462 372 *fmt=((response[1] >> 24) & 0x3F); … … 493 403 request[1]=0xFFFEFF00 | ((i & 0xFF)); 494 404 495 response = avcExecuteTransaction(request, 2, 2);405 response = Ieee1394Service::instance()->avcExecuteTransaction(m_iNodeId, request, 2, 2); 496 406 497 407 if ( response ) { … … 526 436 request[1]=0xFFFEFF00 | ((i & 0xFF)|0x80); 527 437 528 response = avcExecuteTransaction(request, 2, 2);438 response = Ieee1394Service::instance()->avcExecuteTransaction(m_iNodeId, request, 2, 2); 529 439 530 440 if ( response ) { … … 559 469 request[1] = 0xFFFEFF00 | ((i & 0xFF)); 560 470 561 response = avcExecuteTransaction(request, 2, 2);471 response = Ieee1394Service::instance()->avcExecuteTransaction(m_iNodeId, request, 2, 2); 562 472 563 473 if ( response ) { … … 593 503 request[1]=0xFFFEFF00 | ((i & 0xFF)|0x80); 594 504 595 response = avcExecuteTransaction(request, 2, 2);505 response = Ieee1394Service::instance()->avcExecuteTransaction(m_iNodeId, request, 2, 2); 596 506 597 507 if ( response ) { trunk/freebob/src/avdevice.h
r55 r57 52 52 53 53 void execute( EStates state ); 54 55 quadlet_t * avcExecuteTransaction( quadlet_t *request,56 unsigned int request_len,57 unsigned int response_len );58 54 59 55 FBReturnCodes initialize(); trunk/freebob/src/avdevicemusicsubunit.cpp
r43 r57 45 45 request[1]=0xFFFFFFFF; 46 46 request[2]= (ipcr<<24)| 0xFFFEFF; 47 response = cParent->avcExecuteTransaction(request, 3, 4);47 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 3, 4); 48 48 49 49 if ((response != NULL) && ((response[0]&0xFF000000)==0x0C000000)) { … … 76 76 request[2] = 0x0000FFFF; 77 77 request[3] = 0xFFFFFFFF; 78 response = cParent->avcExecuteTransaction(request, 1, 4);78 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 1, 4); 79 79 if (response != NULL) { 80 80 … … 106 106 request[2] = 0x0000FFFF; 107 107 request[3] = 0xFFFFFFFF; 108 response = cParent->avcExecuteTransaction(request, 1, 4);108 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 1, 4); 109 109 if (response != NULL) { 110 110 … … 140 140 request[0] = AVC1394_CTYPE_STATUS | ((iTarget & 0x1F) << 19) | ((iId & 0x07) << 16) 141 141 | (0xC0 << 8) | 0xFF; 142 response = cParent->avcExecuteTransaction(request, 1, 4);142 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 1, 4); 143 143 144 144 if (response != NULL) { trunk/freebob/src/avdevicesubunit.cpp
r43 r57 44 44 //request[1] = ((iTarget & 0x1F) << 27) | ((iId & 0x07) << 24) | 0x00FF7F; 45 45 request[1]=0xFFFEFF00 | opcr; 46 response = cParent->avcExecuteTransaction(request, 2, 4);46 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 4); 47 47 if ((response != NULL) && ((response[0]&0xFF000000)==0x0C000000)) { 48 48 unsigned char output_status=(response[0]&0xE0) >> 5; … … 61 61 //request[1] = ((iTarget & 0x1F) << 27) | ((iId & 0x07) << 24) | 0x00FF7F; 62 62 request[1]=0xFFFEFF00 | opcr; 63 response = cParent->avcExecuteTransaction(request, 2, 4);63 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 4); 64 64 if ((response != NULL) && ((response[0]&0xFF000000)==0x0C000000)) { 65 65 unsigned char output_status=(response[0]&0xE0) >> 5; … … 110 110 | AVC1394_COMMAND_PLUG_INFO | 0x00; 111 111 request[1] = 0xFFFFFFFF; 112 response = cParent->avcExecuteTransaction(request, 2, 2);112 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 2, 2); 113 113 if (response != NULL) { 114 114 iNbDestinationPlugs= (unsigned char) ((response[1]>>24) & 0xff); … … 154 154 request[2] = 0xFFFFFFFF; 155 155 request[3] = 0xFFFFFFFF; 156 response = cParent->avcExecuteTransaction(request, 4, 4);156 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 4, 4); 157 157 if (response != NULL) { 158 158 if((AVC1394_MASK_RESPONSE(response[0]) == AVC1394_RESPONSE_ACCEPTED) || (AVC1394_MASK_RESPONSE(response[0]) == AVC1394_RESPONSE_IMPLEMENTED)) { … … 183 183 request[2] = 0xFFFFFFFF; 184 184 request[3] = 0xFFFFFFFF; 185 response = cParent->avcExecuteTransaction(request, 4, 4);185 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 4, 4); 186 186 if (response != NULL) { 187 187 if((AVC1394_MASK_RESPONSE(response[0]) == AVC1394_RESPONSE_ACCEPTED) || (AVC1394_MASK_RESPONSE(response[0]) == AVC1394_RESPONSE_IMPLEMENTED)) { … … 214 214 request[2] = 0xFFFFFFFF; 215 215 request[3] = 0xFFFFFFFF; 216 response = cParent->avcExecuteTransaction(request, 4, 4);216 response = Ieee1394Service::instance()->avcExecuteTransaction(cParent->getNodeId(), request, 4, 4); 217 217 if (response != NULL) { 218 218 if((AVC1394_MASK_RESPONSE(response[0]) == AVC1394_RESPONSE_ACCEPTED) || (AVC1394_MASK_RESPONSE(response[0]) == AVC1394_RESPONSE_IMPLEMENTED)) { trunk/freebob/src/ieee1394service.cpp
r55 r57 317 317 printf( "bus id = 0x%08x\n", iBusId ); 318 318 printf( "bus options:\n" ); 319 printf( " 320 printf (" 321 printf (" 322 printf (" 323 printf (" 324 printf( " 319 printf( " isochronous resource manager capable: %d\n", busOptions.irmc ); 320 printf (" cycle master capable : %d\n", busOptions.cmc ); 321 printf (" isochronous capable : %d\n", busOptions.isc ); 322 printf (" bus manager capable : %d\n", busOptions.bmc ); 323 printf (" cycle master clock accuracy : %d ppm\n", busOptions.cyc_clk_acc ); 324 printf( " maximum asynchronous record size : %d bytes\n", busOptions.max_rec ); 325 325 printf("GUID: 0x%08x%08x\n", (quadlet_t) (oGuid>>32), 326 326 (quadlet_t) (oGuid & 0xffffffff) ); 327 327 printf( "directory:\n"); 328 printf( " 329 printf( " 330 printf( " 331 printf( " 332 printf( " 333 printf( " 328 printf( " node capabilities : 0x%08x\n", pRomDir->node_capabilities ); 329 printf( " vendor id : 0x%08x\n", pRomDir->vendor_id ); 330 printf( " unit spec id : 0x%08x\n", pRomDir->unit_spec_id ); 331 printf( " unit software version: 0x%08x\n", pRomDir->unit_sw_version ); 332 printf( " model id : 0x%08x\n", pRomDir->model_id ); 333 printf( " textual leaves : %s\n", pRomDir->label ); 334 334 } 335 335 … … 405 405 return m_iGenerationCount; 406 406 } 407 408 /* Function to execute an AVC transaction, i.e. send command/status 409 * and get response main purpose is wrapping the avc1394 function call 410 * to output some debugging comments. 411 */ 412 quadlet_t* 413 Ieee1394Service::avcExecuteTransaction( int node_id, 414 quadlet_t* request, 415 unsigned int request_len, 416 unsigned int response_len ) 417 { 418 quadlet_t* response; 419 unsigned char* request_pos; 420 unsigned int i; 421 422 response = avc1394_transaction_block( m_handle, 423 node_id, 424 request, 425 request_len, 426 2 ); 427 if ( request ) { 428 debugPrint( DEBUG_LEVEL_TRANSFERS, 429 "------- TRANSACTION START -------\n" ); 430 debugPrint( DEBUG_LEVEL_TRANSFERS," REQUEST: " ); 431 /* request is in machine byte order. this function is for 432 * intel architecure */ 433 for ( i = 0; i < request_len; i++ ) { 434 request_pos = (unsigned char *)(request+i); 435 debugPrintShort( DEBUG_LEVEL_TRANSFERS, 436 "0x%02X%02X%02X%02X ", 437 *(request_pos), 438 *(request_pos+1), 439 *(request_pos+2), 440 *(request_pos+3)); 441 } 442 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "\n" ); 443 debugPrint( DEBUG_LEVEL_TRANSFERS, " => " ); 444 debugPrintShort( DEBUG_LEVEL_TRANSFERS, " " ); 445 446 request_pos = (unsigned char *)(request); 447 448 debugPrintShort( DEBUG_LEVEL_TRANSFERS, 449 "subunit_type=%02X subunit_id=%02X opcode=%02X", 450 ((*(request_pos+1))>>3)&0x1F, 451 (*(request_pos+1))&0x07, 452 (*(request_pos+2))&0xFF ); 453 debugPrintShort (DEBUG_LEVEL_TRANSFERS,"\n"); 454 } 455 456 if ( response ) { 457 /* response is in order of receiving, i.e. msb first */ 458 debugPrint(DEBUG_LEVEL_TRANSFERS, " -> RESPONSE: " ); 459 for ( i = 0; i < response_len; i++ ) { 460 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "0x%08X ", response[i] ); 461 } 462 463 debugPrintShort( DEBUG_LEVEL_TRANSFERS,"\n" ); 464 debugPrint( DEBUG_LEVEL_TRANSFERS," => " ); 465 switch (response[0]&0xFF000000) { 466 case AVC1394_RESPONSE_NOT_IMPLEMENTED: 467 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Not Implemented " ); 468 break; 469 case AVC1394_RESPONSE_ACCEPTED: 470 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Accepted " ); 471 break; 472 case AVC1394_RESPONSE_REJECTED: 473 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Rejected " ); 474 break; 475 case AVC1394_RESPONSE_IN_TRANSITION: 476 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "In Transition " ); 477 break; 478 case AVC1394_RESPONSE_IMPLEMENTED: 479 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Implemented / Stable " ); 480 break; 481 case AVC1394_RESPONSE_CHANGED: 482 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Changed " ); 483 break; 484 case AVC1394_RESPONSE_INTERIM: 485 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Interim " ); 486 break; 487 default: 488 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "Unknown response " ); 489 break; 490 } 491 debugPrintShort( DEBUG_LEVEL_TRANSFERS, 492 "subunit_type=%02X subunit_id=%02X opcode=%02X", 493 (response[0]>>19)&0x1F, 494 (response[0]>>16)&0x07, 495 (response[0]>>8)&0xFF ); 496 debugPrintShort( DEBUG_LEVEL_TRANSFERS, "\n" ); 497 } 498 debugPrint( DEBUG_LEVEL_TRANSFERS, "------- TRANSACTION END -------\n" ); 499 return response; 500 } trunk/freebob/src/ieee1394service.h
r44 r57 62 62 unsigned int getGenerationCount(); 63 63 64 quadlet_t * avcExecuteTransaction( int node_id, 65 quadlet_t *request, 66 unsigned int request_len, 67 unsigned int response_len ); 68 64 69 protected: 65 70 static int resetHandler( raw1394handle_t handle,