| 37 | unsigned char opcr=0; |
---|
| 38 | |
---|
| 39 | debugPrint(DEBUG_LEVEL_SUBUNIT,"AvDeviceMusicSubunit: Serial bus iso output plug connections:\n"); |
---|
| 40 | for(opcr=0;opcr<0x1E;opcr++) { |
---|
| 41 | request[0] = AVC1394_CTYPE_STATUS | ((iTarget & 0x1F) << 19) | ((iId & 0x07) << 16) |
---|
| 42 | | (0x1A << 8) | 0xFF; |
---|
| 43 | //request[1] = ((iTarget & 0x1F) << 27) | ((iId & 0x07) << 24) | 0x00FF7F; |
---|
| 44 | request[1]=0xFFFEFF00 | opcr; |
---|
| 45 | response = cParent->avcExecuteTransaction(request, 2, 4); |
---|
| 46 | if ((response != NULL) && ((response[0]&0xFF000000)==0x0C000000)) { |
---|
| 47 | unsigned char output_status=(response[0]&0xE0) >> 5; |
---|
| 48 | unsigned char conv=(response[0]&0x10) >> 4; |
---|
| 49 | unsigned char signal_status=(response[0]&0x0F); |
---|
| 50 | |
---|
| 51 | unsigned int signal_source=((response[1]>>16)&0xFFFF); |
---|
| 52 | unsigned int signal_destination=((response[1])&0xFFFF); |
---|
| 53 | debugPrint(DEBUG_LEVEL_SUBUNIT," oPCR %d: output_status=%d,conv=%d,signal_status=%d,signal_source=0x%04X,signal_destination=0x%04X\n",opcr,output_status,conv,signal_status,signal_source,signal_destination); |
---|
| 54 | } |
---|
| 55 | } |
---|
| 56 | debugPrint(DEBUG_LEVEL_SUBUNIT,"AvDeviceMusicSubunit: Serial bus external output plug connections:\n"); |
---|
| 57 | for(opcr=0x80;opcr<0x9E;opcr++) { |
---|
| 58 | request[0] = AVC1394_CTYPE_STATUS | ((iTarget & 0x1F) << 19) | ((iId & 0x07) << 16) |
---|
| 59 | | (0x1A << 8) | 0xFF; |
---|
| 60 | //request[1] = ((iTarget & 0x1F) << 27) | ((iId & 0x07) << 24) | 0x00FF7F; |
---|
| 61 | request[1]=0xFFFEFF00 | opcr; |
---|
| 62 | response = cParent->avcExecuteTransaction(request, 2, 4); |
---|
| 63 | if ((response != NULL) && ((response[0]&0xFF000000)==0x0C000000)) { |
---|
| 64 | unsigned char output_status=(response[0]&0xE0) >> 5; |
---|
| 65 | unsigned char conv=(response[0]&0x10) >> 4; |
---|
| 66 | unsigned char signal_status=(response[0]&0x0F); |
---|
| 67 | |
---|
| 68 | unsigned int signal_source=((response[1]>>16)&0xFFFF); |
---|
| 69 | unsigned int signal_destination=((response[1])&0xFFFF); |
---|
| 70 | debugPrint(DEBUG_LEVEL_SUBUNIT," oPCR %02X: output_status=%d,conv=%d,signal_status=%d,signal_source=0x%04X,signal_destination=0x%04X\n",opcr,output_status,conv,signal_status,signal_source,signal_destination); |
---|
| 71 | } |
---|
| 72 | } |
---|
| 73 | |
---|
| 74 | } |
---|
| 75 | void AvDeviceMusicSubunit::printMusicPlugConfigurations() { |
---|
| 76 | unsigned char byte; |
---|
| 77 | quadlet_t request[6]; |
---|
| 78 | quadlet_t *response; |
---|
| 79 | |
---|
| 80 | unsigned int subunit_plug_id; |
---|
| 81 | |
---|
| 82 | debugPrint(DEBUG_LEVEL_SUBUNIT,"AvDeviceMusicSubunit: Source Plug configurations:\n"); |
---|
| 83 | |
---|
| 84 | for (subunit_plug_id=0;subunit_plug_id < getNbSourcePlugs() ;subunit_plug_id++) { |
---|
| 85 | // get source plug configure status |
---|
| 86 | request[0] = AVC1394_CTYPE_STATUS | ((iTarget & 0x1F) << 19) | ((iId & 0x07) << 16) |
---|
| 87 | | (0x43 << 8) | subunit_plug_id; |
---|
| 88 | request[1] = 0xFFFFFF00; |
---|
| 89 | request[2] = 0x0000FFFF; |
---|
| 90 | request[3] = 0xFFFFFFFF; |
---|
| 91 | response = cParent->avcExecuteTransaction(request, 1, 4); |
---|
| 92 | if (response != NULL) { |
---|
| 93 | |
---|
| 94 | unsigned int start_of_music_plug_ID=CORRECT_INTEGER_ENDIANNESS(response[1]); |
---|
| 95 | unsigned int end_of_music_plug_ID=CORRECT_INTEGER_ENDIANNESS(response[1]>>16); |
---|
| 96 | |
---|
| 97 | debugPrint(DEBUG_LEVEL_SUBUNIT," Subunit source plug %d: start_of_music_plug_ID=%d, end_of_music_plug_ID=%d\n",subunit_plug_id,start_of_music_plug_ID,end_of_music_plug_ID); |
---|
| 98 | |
---|
| 99 | unsigned char *table_pointer=((unsigned char *)response)+8; |
---|
| 100 | |
---|
| 101 | for(unsigned int i=0;i<(end_of_music_plug_ID-start_of_music_plug_ID)+1;i++) { |
---|
| 102 | unsigned char music_plug_type=(*(table_pointer)) & 0xFF; |
---|
| 103 | unsigned int music_plug_ID=((*(table_pointer+1))<<8)+((*(table_pointer+2))); |
---|
| 104 | unsigned int stream_position=((*(table_pointer+3))<<8)+((*(table_pointer+4))); |
---|
| 105 | |
---|
| 106 | debugPrint(DEBUG_LEVEL_SUBUNIT," %02d: Type=0x%02X, ID=%02d, Position=0x%04X\n",i+start_of_music_plug_ID,music_plug_type,music_plug_ID,stream_position); |
---|
| 107 | |
---|
| 108 | table_pointer+=5; |
---|
| 109 | } |
---|
| 110 | } |
---|
| 111 | } |
---|
| 112 | |
---|
| 113 | debugPrint(DEBUG_LEVEL_SUBUNIT,"AvDeviceMusicSubunit: Destination Plug configurations:\n"); |
---|
| 114 | for (subunit_plug_id=0;subunit_plug_id < getNbDestinationPlugs() ;subunit_plug_id++) { |
---|
| 115 | // get source plug configure status |
---|
| 116 | request[0] = AVC1394_CTYPE_STATUS | ((iTarget & 0x1F) << 19) | ((iId & 0x07) << 16) |
---|
| 117 | | (0x42 << 8) | subunit_plug_id; |
---|
| 118 | request[1] = 0xFFFFFF00; |
---|
| 119 | request[2] = 0x0000FFFF; |
---|
| 120 | request[3] = 0xFFFFFFFF; |
---|
| 121 | response = cParent->avcExecuteTransaction(request, 1, 4); |
---|
| 122 | if (response != NULL) { |
---|
| 123 | |
---|
| 124 | unsigned int start_of_music_plug_ID=CORRECT_INTEGER_ENDIANNESS(response[1]); |
---|
| 125 | unsigned int end_of_music_plug_ID=CORRECT_INTEGER_ENDIANNESS(response[1]>>16); |
---|
| 126 | |
---|
| 127 | debugPrint(DEBUG_LEVEL_SUBUNIT," Subunit destination plug %d: start_of_music_plug_ID=%d, end_of_music_plug_ID=%d\n",subunit_plug_id,start_of_music_plug_ID,end_of_music_plug_ID); |
---|
| 128 | |
---|
| 129 | unsigned char *table_pointer=((unsigned char *)response)+8; |
---|
| 130 | |
---|
| 131 | for(unsigned int i=0;i<(end_of_music_plug_ID-start_of_music_plug_ID)+1;i++) { |
---|
| 132 | unsigned char music_plug_type=(*(table_pointer)) & 0xFF; |
---|
| 133 | unsigned int music_plug_ID=((*(table_pointer+1))<<8)+((*(table_pointer+2))); |
---|
| 134 | unsigned int stream_position=((*(table_pointer+3))<<8)+((*(table_pointer+4))); |
---|
| 135 | |
---|
| 136 | debugPrint(DEBUG_LEVEL_SUBUNIT," %02d: Type=0x%02X, ID=%02d, Position=0x%04X\n",i+start_of_music_plug_ID,music_plug_type,music_plug_ID,stream_position); |
---|
| 137 | |
---|
| 138 | table_pointer+=5; |
---|
| 139 | } |
---|
| 140 | } |
---|
| 141 | } |
---|
| 142 | |
---|
| 143 | } |
---|
| 144 | |
---|
| 145 | void AvDeviceMusicSubunit::printMusicPlugInfo() { |
---|
| 146 | unsigned char byte; |
---|
| 147 | quadlet_t request[6]; |
---|
| 148 | quadlet_t *response; |
---|
| 149 | |
---|
| 150 | debugPrint(DEBUG_LEVEL_SUBUNIT,"AvDeviceMusicSubunit: Plug Information\n"); |
---|
| 151 | |
---|
| 152 | // get music plug info (verified & working) |
---|