Author: siarzhuk Date: 2010-06-01 20:59:09 +0200 (Tue, 01 Jun 2010) New Revision: 36994 Changeset: http://dev.haiku-os.org/changeset/36994/haiku Modified: haiku/branches/developer/siarzhuk/usb_audio/AudioControlInterface.cpp haiku/branches/developer/siarzhuk/usb_audio/AudioControlInterface.h haiku/branches/developer/siarzhuk/usb_audio/AudioFunction.h haiku/branches/developer/siarzhuk/usb_audio/AudioStreamingInterface.cpp haiku/branches/developer/siarzhuk/usb_audio/AudioStreamingInterface.h haiku/branches/developer/siarzhuk/usb_audio/Device.cpp haiku/branches/developer/siarzhuk/usb_audio/Device.h haiku/branches/developer/siarzhuk/usb_audio/Driver.cpp haiku/branches/developer/siarzhuk/usb_audio/Driver.h haiku/branches/developer/siarzhuk/usb_audio/Settings.cpp haiku/branches/developer/siarzhuk/usb_audio/Settings.h haiku/branches/developer/siarzhuk/usb_audio/Stream.cpp haiku/branches/developer/siarzhuk/usb_audio/Stream.h haiku/branches/developer/siarzhuk/usb_audio/makefile Log: Fixed Haiku coding style violations mostly pointed by FuncHaikuCheck vim script. Use user_memcpy for data received from userland. Modified: haiku/branches/developer/siarzhuk/usb_audio/AudioControlInterface.cpp =================================================================== --- haiku/branches/developer/siarzhuk/usb_audio/AudioControlInterface.cpp 2010-06-01 18:56:55 UTC (rev 36993) +++ haiku/branches/developer/siarzhuk/usb_audio/AudioControlInterface.cpp 2010-06-01 18:59:09 UTC (rev 36994) @@ -91,7 +91,7 @@ case UndefinedUSB_IO: return "USB I/O"; case StreamingUSB_IO: return "USB Streaming I/O"; case VendorUSB_IO: return "Vendor USB I/O"; - // Input Terminal Types + // Input Terminal Types case Undefined_In: return "Undefined Input"; case Microphone_In: return "Microphone"; case DesktopMic_In: return "Desktop Microphone"; @@ -99,7 +99,7 @@ case OmniMic_In: return "Omni-directional Mic"; case MicsArray_In: return "Microphone Array"; case ProcMicsArray_In: return "Processing Mic Array"; - // Output Terminal Types + // Output Terminal Types case Undefined_Out: return "Undefined Output"; case Speaker_Out: return "Speaker"; case HeadPhones_Out: return "Headphones"; @@ -161,27 +161,27 @@ TRACE_ALWAYS("Unknown Terminal Type: %#06x", TerminalType); return "Unknown"; -} +} // control id is encoded in following way -// CSCNIDIF where: -// CS - control selector -// CN - channel -// ID - id of this feature unit -// IF - interface -// +// CS CN ID IF where: +// CS - control selector +// CN - channel +// ID - id of this feature unit +// IF - interface + #define CTL_ID(_CS, _CN, _ID, _IF) (((_CS) << 24) | ((_CN) << 16) | ((_ID) << 8) | (_IF)) #define CS_FROM_CTLID(_ID) (0xff & ((_ID) >> 24)) #define CN_FROM_CTLID(_ID) (0xff & ((_ID) >> 16)) -#define ID_FROM_CTLID(_ID) (0xff & ((_ID) >> 8)) +#define ID_FROM_CTLID(_ID) (0xff & ((_ID) >> 8)) -#define REQ_VALUE(_ID) (0xffff & ((_ID) >> 16)) -#define REQ_INDEX(_ID) (0xffff & (_ID)) +#define REQ_VALUE(_ID) (0xffff & ((_ID) >> 16)) +#define REQ_INDEX(_ID) (0xffff & (_ID)) _AudioControl::_AudioControl(AudioControlInterface* interface, - usb_audiocontrol_header_descriptor* Header) : + usb_audiocontrol_header_descriptor* Header) : fStatus(B_NO_INIT), fInterface(interface), fSubType(Header->descriptor_subtype), @@ -200,12 +200,12 @@ AudioChannelCluster* _AudioControl::OutCluster() { - if(SourceID() == 0 || fInterface == NULL) { + if (SourceID() == 0 || fInterface == NULL) { return NULL; } _AudioControl* control = fInterface->Find(SourceID()); - if(control == NULL) { + if (control == NULL) { return NULL; } @@ -216,7 +216,7 @@ AudioChannelCluster::AudioChannelCluster() : fOutChannelsNumber(0), fChannelsConfig(0), - fChannelNames(0) + fChannelNames(0) { } @@ -228,8 +228,8 @@ } -_Terminal::_Terminal(AudioControlInterface* interface, - usb_audiocontrol_header_descriptor* Header) : +_Terminal::_Terminal(AudioControlInterface* interface, + usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header), fTerminalType(0), fAssociatedTerminal(0), @@ -240,7 +240,7 @@ } -_Terminal::~_Terminal() +_Terminal::~_Terminal() { } @@ -261,11 +261,11 @@ InputTerminal::InputTerminal(AudioControlInterface* interface, - usb_audiocontrol_header_descriptor* Header) : + usb_audiocontrol_header_descriptor* Header) : _AudioChannelCluster<_Terminal>(interface, Header) { - usb_input_terminal_descriptor_r1* Terminal = - (usb_input_terminal_descriptor_r1*) Header; + usb_input_terminal_descriptor_r1* Terminal + = (usb_input_terminal_descriptor_r1*) Header; fID = Terminal->terminal_id; fTerminalType = Terminal->terminal_type; fAssociatedTerminal = Terminal->assoc_terminal; @@ -275,14 +275,14 @@ GetTerminalDescription(fTerminalType), fTerminalType); TRACE("Assoc.terminal:%d\n", fAssociatedTerminal); - if(fInterface->SpecReleaseNumber() < 0x200) { + if (fInterface->SpecReleaseNumber() < 0x200) { fOutChannelsNumber = Terminal->num_channels; fChannelsConfig = Terminal->channel_config; fChannelNames = Terminal->channel_names; fStringIndex = Terminal->terminal; } else { - usb_input_terminal_descriptor* Terminal = - (usb_input_terminal_descriptor*) Header; + usb_input_terminal_descriptor* Terminal + = (usb_input_terminal_descriptor*) Header; fClockSourceId = Terminal->clock_source_id; fOutChannelsNumber = Terminal->num_channels; fChannelsConfig = Terminal->channel_config; @@ -309,11 +309,11 @@ OutputTerminal::OutputTerminal(AudioControlInterface* interface, - usb_audiocontrol_header_descriptor* Header) : + usb_audiocontrol_header_descriptor* Header) : _Terminal(interface, Header) { - usb_output_terminal_descriptor_r1* Terminal = - (usb_output_terminal_descriptor_r1*) Header; + usb_output_terminal_descriptor_r1* Terminal + = (usb_output_terminal_descriptor_r1*) Header; fID = Terminal->terminal_id; fTerminalType = Terminal->terminal_type; @@ -326,13 +326,13 @@ TRACE("Assoc.terminal:%d\n", fAssociatedTerminal); TRACE("Source ID:%d\n", fSourceID); - if(fInterface->SpecReleaseNumber() < 0x200) { + if (fInterface->SpecReleaseNumber() < 0x200) { fStringIndex = Terminal->terminal; } else { - usb_output_terminal_descriptor* Terminal = - (usb_output_terminal_descriptor*) Header; + usb_output_terminal_descriptor* Terminal + = (usb_output_terminal_descriptor*) Header; - fClockSourceId = Terminal->clock_source_id; + fClockSourceId = Terminal->clock_source_id; fControlsBitmap = Terminal->bm_controls; fStringIndex = Terminal->terminal; @@ -356,14 +356,14 @@ _AudioChannelCluster<_AudioControl>(interface, Header), fControlsBitmap(0) { - usb_mixer_unit_descriptor* Mixer = - (usb_mixer_unit_descriptor*) Header; + usb_mixer_unit_descriptor* Mixer + = (usb_mixer_unit_descriptor*) Header; fID = Mixer->unit_id; TRACE("Mixer ID:%d >>>\n", fID); TRACE("Number of input pins:%d\n", Mixer->num_input_pins); - for(size_t i = 0; i < Mixer->num_input_pins; i++) { + for (size_t i = 0; i < Mixer->num_input_pins; i++) { fInputPins.PushBack(Mixer->input_pins[i]); TRACE("Input pin #%d:%d\n", i, fInputPins[i]); } @@ -371,10 +371,10 @@ uint8* mixerControlsData = NULL; uint8 mixerControlsSize = 0; - if(fInterface->SpecReleaseNumber() < 0x200) { - usb_output_channels_descriptor_r1* OutChannels = - (usb_output_channels_descriptor_r1*) - &Mixer->input_pins[Mixer->num_input_pins]; + if (fInterface->SpecReleaseNumber() < 0x200) { + usb_output_channels_descriptor_r1* OutChannels + = (usb_output_channels_descriptor_r1*) + &Mixer->input_pins[Mixer->num_input_pins]; fOutChannelsNumber = OutChannels->num_output_pins; fChannelsConfig = OutChannels->channel_config; @@ -384,9 +384,9 @@ mixerControlsSize = Mixer->length - 10 - Mixer->num_input_pins; fStringIndex = *(mixerControlsData + mixerControlsSize); } else { - usb_output_channels_descriptor* OutChannels = - (usb_output_channels_descriptor*) - &Mixer->input_pins[Mixer->num_input_pins]; + usb_output_channels_descriptor* OutChannels + = (usb_output_channels_descriptor*) + &Mixer->input_pins[Mixer->num_input_pins]; fOutChannelsNumber = OutChannels->num_output_pins; fChannelsConfig = OutChannels->channel_config; @@ -405,7 +405,7 @@ TRACE("Out channels names:%d\n", fChannelNames); TRACE("Controls Size:%d\n", mixerControlsSize); - for(size_t i = 0; i < mixerControlsSize; i++) { + for (size_t i = 0; i < mixerControlsSize; i++) { fProgrammableControls.PushBack(mixerControlsData[i]); TRACE("Controls Data[%d]:%#x\n", i, fProgrammableControls[i]); } @@ -426,25 +426,25 @@ _AudioControl(interface, Header), fControlsBitmap(0) { - usb_selector_unit_descriptor* Selector = - (usb_selector_unit_descriptor*) Header; + usb_selector_unit_descriptor* Selector + = (usb_selector_unit_descriptor*) Header; fID = Selector->unit_id; TRACE("Selector ID:%d >>>\n", fID); TRACE("Number of input pins:%d\n", Selector->num_input_pins); - for(size_t i = 0; i < Selector->num_input_pins; i++) { + for (size_t i = 0; i < Selector->num_input_pins; i++) { fInputPins.PushBack(Selector->input_pins[i]); TRACE("Input pin #%d:%d\n", i, fInputPins[i]); } - if(fInterface->SpecReleaseNumber() < 0x200) { + if (fInterface->SpecReleaseNumber() < 0x200) { - fStringIndex = Selector->input_pins[Selector->num_input_pins]; + fStringIndex = Selector->input_pins[Selector->num_input_pins]; } else { fControlsBitmap = Selector->input_pins[Selector->num_input_pins]; - fStringIndex = Selector->input_pins[Selector->num_input_pins + 1]; + fStringIndex = Selector->input_pins[Selector->num_input_pins + 1]; TRACE("Controls Bitmap:%d\n", fControlsBitmap); } @@ -463,17 +463,17 @@ AudioChannelCluster* SelectorUnit::OutCluster() { - if(fInterface == NULL) { + if (fInterface == NULL) { return NULL; } - for(int i = 0; i < fInputPins.Count(); i++) { + for (int i = 0; i < fInputPins.Count(); i++) { _AudioControl* control = fInterface->Find(fInputPins[i]); - if(control == NULL) { + if (control == NULL) { continue; } - if(control->OutCluster() != NULL) { + if (control->OutCluster() != NULL) { return control->OutCluster(); } } @@ -486,8 +486,8 @@ usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header) { - usb_feature_unit_descriptor* Feature = - (usb_feature_unit_descriptor*) Header; + usb_feature_unit_descriptor* Feature + = (usb_feature_unit_descriptor*) Header; fID = Feature->unit_id; TRACE("Feature ID:%d >>>\n", fID); @@ -499,9 +499,9 @@ uint8 channelsCount = (Feature->length - 6) / controlSize; uint8 *ControlsBitmapPointer = (uint8*)&Feature->bma_controls[0]; - if(fInterface->SpecReleaseNumber() < 0x200) { - usb_feature_unit_descriptor_r1* Feature = - (usb_feature_unit_descriptor_r1*) Header; + if (fInterface->SpecReleaseNumber() < 0x200) { + usb_feature_unit_descriptor_r1* Feature + = (usb_feature_unit_descriptor_r1*) Header; controlSize = Feature->control_size; channelsCount = (Feature->length - 7) / Feature->control_size; ControlsBitmapPointer = &Feature->bma_controls[0]; @@ -510,7 +510,7 @@ TRACE("Channel bitmap size:%d\n", controlSize); TRACE("Channels number:%d\n", channelsCount - 1); // not add master! - for(size_t i = 0; i < channelsCount; i++) { + for (size_t i = 0; i < channelsCount; i++) { uint8 *controlPointer = &ControlsBitmapPointer[i * controlSize]; switch(controlSize) { case 1: fControlBitmaps.PushBack(*controlPointer); break; @@ -542,13 +542,13 @@ { // first check if source of this FU is an input terminal _AudioControl *control = fInterface->Find(fSourceID); - while(control != 0) { + while (control != 0) { - if(control->SubType() != IDSInputTerminal) + if (control->SubType() != IDSInputTerminal) break; // USB I/O terminal is a not good candidate to use it's name - if(static_cast<_Terminal*>(control)->IsUSBIO()) + if (static_cast<_Terminal*>(control)->IsUSBIO()) break; // use the name of source input terminal as name of this FU @@ -557,13 +557,13 @@ // check if output of this FU is connected to output terminal control = fInterface->FindOutputTerminal(fID); - while(control != 0) { - - if(control->SubType() != IDSOutputTerminal) + while (control != 0) { + + if (control->SubType() != IDSOutputTerminal) break; // USB I/O terminal is a not good candidate to use it's name - if(static_cast<_Terminal*>(control)->IsUSBIO()) + if (static_cast<_Terminal*>(control)->IsUSBIO()) break; // use the name of this output terminal as name of this FU @@ -577,7 +577,7 @@ bool FeatureUnit::HasControl(int32 Channel, uint32 Control) { - if(Channel >= fControlBitmaps.Count()) { + if (Channel >= fControlBitmaps.Count()) { TRACE_ALWAYS("Out of limits error of retrieving control %#010x " "for channel %d\n", Control, Channel); return false; @@ -590,7 +590,7 @@ void FeatureUnit::NormalizeAndTraceChannel(int32 Channel) { - if(Channel >= fControlBitmaps.Count()) { + if (Channel >= fControlBitmaps.Count()) { TRACE_ALWAYS("Out of limits error of tracing channel %d\n", Channel); return; } @@ -611,13 +611,13 @@ { BassBoostControl1, BassBoostControl, "Bass Boost" }, { LoudnessControl1, LoudnessControl, "Loudness" }, { 0, InputGainControl, "InputGain" }, - { 0, InputGainPadControl, "InputGainPad" }, - { 0, PhaseInverterControl, "PhaseInverter" }, - { 0, UnderflowControl, "Underflow" }, - { 0, OverflowControl, "Overflow" } + { 0, InputGainPadControl, "InputGainPad" }, + { 0, PhaseInverterControl, "PhaseInverter" }, + { 0, UnderflowControl, "Underflow" }, + { 0, OverflowControl, "Overflow" } }; - if(Channel == 0) + if (Channel == 0) TRACE("Master channel bitmap:%#x\n", fControlBitmaps[Channel]); else TRACE("Channel %d bitmap:%#x\n", Channel, fControlBitmaps[Channel]); @@ -625,17 +625,17 @@ bool isRev1 = (fInterface->SpecReleaseNumber() < 0x200); uint32 remappedBitmap = 0; - for(size_t i = 0; i < _countof(remapInfos); i++) { + for (size_t i = 0; i < _countof(remapInfos); i++) { uint32 bits = isRev1 ? remapInfos[i].rev1Bits : remapInfos[i].rev2Bits; - if((fControlBitmaps[Channel] & bits) > 0) { - if(isRev1) { + if ((fControlBitmaps[Channel] & bits) > 0) { + if (isRev1) { remappedBitmap |= remapInfos[i].rev2Bits; } TRACE("\t%s\n", remapInfos[i].name); - } + } } - if(isRev1) { + if (isRev1) { TRACE("\t%#08x -> %#08x.\n", fControlBitmaps[Channel], remappedBitmap); fControlBitmaps[Channel] = remappedBitmap; } @@ -646,8 +646,8 @@ usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header) { - usb_input_terminal_descriptor* D = - (usb_input_terminal_descriptor*) Header; + usb_input_terminal_descriptor* D + = (usb_input_terminal_descriptor*) Header; TRACE("Effect Unit:%d >>>\n", D->terminal_id); } @@ -663,8 +663,8 @@ fProcessType(0), fControlsBitmap(0) { - usb_processing_unit_descriptor* Processing = - (usb_processing_unit_descriptor*) Header; + usb_processing_unit_descriptor* Processing + = (usb_processing_unit_descriptor*) Header; fID = Processing->unit_id; TRACE("Processing ID:%d >>>\n", fID); @@ -673,23 +673,23 @@ TRACE("Processing Type:%d\n", fProcessType); TRACE("Number of input pins:%d\n", Processing->num_input_pins); - for(size_t i = 0; i < Processing->num_input_pins; i++) { + for (size_t i = 0; i < Processing->num_input_pins; i++) { fInputPins.PushBack(Processing->input_pins[i]); TRACE("Input pin #%d:%d\n", i, fInputPins[i]); } - if(fInterface->SpecReleaseNumber() < 0x200) { - usb_output_channels_descriptor_r1* OutChannels = - (usb_output_channels_descriptor_r1*) - &Processing->input_pins[Processing->num_input_pins]; + if (fInterface->SpecReleaseNumber() < 0x200) { + usb_output_channels_descriptor_r1* OutChannels + = (usb_output_channels_descriptor_r1*) + &Processing->input_pins[Processing->num_input_pins]; fOutChannelsNumber = OutChannels->num_output_pins; fChannelsConfig = OutChannels->channel_config; fChannelNames = OutChannels->channel_names; } else { - usb_output_channels_descriptor* OutChannels = - (usb_output_channels_descriptor*) - &Processing->input_pins[Processing->num_input_pins]; + usb_output_channels_descriptor* OutChannels + = (usb_output_channels_descriptor*) + &Processing->input_pins[Processing->num_input_pins]; fOutChannelsNumber = OutChannels->num_output_pins; fChannelsConfig = OutChannels->channel_config; @@ -705,7 +705,7 @@ uint8* controlsData = (uint8*) ++OutChannels; - for(size_t i = 0; i < controlsSize; i++) { + for (size_t i = 0; i < controlsSize; i++) { fProgrammableControls.PushBack(controlsData[i]); TRACE("Controls Data[%d]:%#x\n", i, controlsData[i]); } @@ -728,8 +728,8 @@ fExtensionCode(0), fControlsBitmap(0) { - usb_extension_unit_descriptor* Extension = - (usb_extension_unit_descriptor*) Header; + usb_extension_unit_descriptor* Extension + = (usb_extension_unit_descriptor*) Header; fID = Extension->unit_id; TRACE("Extension ID:%d >>>\n", fID); @@ -738,23 +738,23 @@ TRACE("Extension Type:%d\n", fExtensionCode); TRACE("Number of input pins:%d\n", Extension->num_input_pins); - for(size_t i = 0; i < Extension->num_input_pins; i++) { + for (size_t i = 0; i < Extension->num_input_pins; i++) { fInputPins.PushBack(Extension->input_pins[i]); TRACE("Input pin #%d:%d\n", i, fInputPins[i]); } - if(fInterface->SpecReleaseNumber() < 0x200) { - usb_output_channels_descriptor_r1* OutChannels = - (usb_output_channels_descriptor_r1*) + if (fInterface->SpecReleaseNumber() < 0x200) { + usb_output_channels_descriptor_r1* OutChannels + = (usb_output_channels_descriptor_r1*) &Extension->input_pins[Extension->num_input_pins]; fOutChannelsNumber = OutChannels->num_output_pins; fChannelsConfig = OutChannels->channel_config; fChannelNames = OutChannels->channel_names; } else { - usb_output_channels_descriptor* OutChannels = - (usb_output_channels_descriptor*) + usb_output_channels_descriptor* OutChannels + = (usb_output_channels_descriptor*) &Extension->input_pins[Extension->num_input_pins]; fOutChannelsNumber = OutChannels->num_output_pins; @@ -771,7 +771,7 @@ uint8* controlsData = (uint8*) ++OutChannels; - for(size_t i = 0; i < controlsSize; i++) { + for (size_t i = 0; i < controlsSize; i++) { fProgrammableControls.PushBack(controlsData[i]); TRACE("Controls Data[%d]:%#x\n", i, controlsData[i]); } @@ -793,8 +793,8 @@ usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header) { - usb_input_terminal_descriptor* D = - (usb_input_terminal_descriptor*) Header; + usb_input_terminal_descriptor* D + = (usb_input_terminal_descriptor*) Header; TRACE("Clock Source:%d >>>\n", D->terminal_id); } @@ -808,8 +808,8 @@ usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header) { - usb_input_terminal_descriptor* D = - (usb_input_terminal_descriptor*) Header; + usb_input_terminal_descriptor* D + = (usb_input_terminal_descriptor*) Header; TRACE("Clock Selector:%d >>>\n", D->terminal_id); } @@ -823,8 +823,8 @@ usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header) { - usb_input_terminal_descriptor* D = - (usb_input_terminal_descriptor*) Header; + usb_input_terminal_descriptor* D + = (usb_input_terminal_descriptor*) Header; TRACE("Clock Multiplier:%d >>>\n", D->terminal_id); } @@ -838,8 +838,8 @@ usb_audiocontrol_header_descriptor* Header) : _AudioControl(interface, Header) { - usb_input_terminal_descriptor* D = - (usb_input_terminal_descriptor*) Header; + usb_input_terminal_descriptor* D + = (usb_input_terminal_descriptor*) Header; TRACE("Sample Rate Converter:%d >>>\n", D->terminal_id); } @@ -862,10 +862,11 @@ AudioControlInterface::~AudioControlInterface() { - for(AudioControlsIterator I = fAudioControls.Begin(); + for (AudioControlsIterator I = fAudioControls.Begin(); I != fAudioControls.End(); I++) { delete I->Value(); } + fAudioControls.MakeEmpty(); // object already freed. just purge the map @@ -878,11 +879,11 @@ status_t AudioControlInterface::Init(size_t interface, usb_interface_info *Interface) { - for(size_t i = 0; i < Interface->generic_count; i++) { - usb_audiocontrol_header_descriptor *Header = - (usb_audiocontrol_header_descriptor *)Interface->generic[i]; + for (size_t i = 0; i < Interface->generic_count; i++) { + usb_audiocontrol_header_descriptor *Header + = (usb_audiocontrol_header_descriptor *)Interface->generic[i]; - if(Header->descriptor_type != AC_CS_INTERFACE) { + if (Header->descriptor_type != AC_CS_INTERFACE) { TRACE_ALWAYS("Ignore Audio Control of " "unknown descriptor type %#04x.\n", Header->descriptor_type); continue; @@ -895,57 +896,57 @@ TRACE_ALWAYS("Ignore Audio Control of unknown " "descriptor sub-type %#04x\n", Header->descriptor_subtype); break; - case IDSUndefined: - TRACE_ALWAYS("Ignore Audio Control of undefined sub-type\n"); + case IDSUndefined: + TRACE_ALWAYS("Ignore Audio Control of undefined sub-type\n"); break; case IDSHeader: InitACHeader(interface, Header); break; case IDSInputTerminal: - control = new InputTerminal(this, Header); + control = new InputTerminal(this, Header); break; case IDSOutputTerminal: - control = new OutputTerminal(this, Header); + control = new OutputTerminal(this, Header); break; case IDSMixerUnit: - control = new MixerUnit(this, Header); + control = new MixerUnit(this, Header); break; case IDSSelectorUnit: - control = new SelectorUnit(this, Header); + control = new SelectorUnit(this, Header); break; case IDSFeatureUnit: control = new FeatureUnit(this, Header); break; case IDSEffectUnit: - if(SpecReleaseNumber() < 200) - control = new ProcessingUnit(this, Header); + if (SpecReleaseNumber() < 200) + control = new ProcessingUnit(this, Header); else control = new EffectUnit(this, Header); break; case IDSProcessingUnit: - if(SpecReleaseNumber() < 200) - control = new ExtensionUnit(this, Header); + if (SpecReleaseNumber() < 200) + control = new ExtensionUnit(this, Header); else - control = new ProcessingUnit(this, Header); + control = new ProcessingUnit(this, Header); break; case IDSExtensionUnit: - control = new ExtensionUnit(this, Header); + control = new ExtensionUnit(this, Header); break; - case IDSClockSource: - control = new ClockSource(this, Header); + case IDSClockSource: + control = new ClockSource(this, Header); break; case IDSClockSelector: - control = new ClockSelector(this, Header); + control = new ClockSelector(this, Header); break; case IDSClockMultiplier: - control = new ClockMultiplier(this, Header); + control = new ClockMultiplier(this, Header); break; case IDSSampleRateConverter: - control = new SampleRateConverter(this, Header); + control = new SampleRateConverter(this, Header); break; } - if(control != 0 && control->InitCheck() == B_OK) { + if (control != 0 && control->InitCheck() == B_OK) { switch(control->SubType()) { case IDSOutputTerminal: fOutputTerminals.Put(control->SourceID(), control); @@ -980,24 +981,24 @@ status_t -AudioControlInterface::InitACHeader(size_t interface, - usb_audiocontrol_header_descriptor* Header) +AudioControlInterface::InitACHeader(size_t interface, + usb_audiocontrol_header_descriptor* Header) { - if(Header == NULL) { + if (Header == NULL) { return fStatus = B_NO_INIT; } - fInterface = interface; + fInterface = interface; fADCSpecification = Header->bcd_release_no; TRACE("ADCSpecification:%#06x\n", fADCSpecification); - if(fADCSpecification < 0x200) { - usb_audiocontrol_header_descriptor_r1* Header1 = - (usb_audiocontrol_header_descriptor_r1*) Header; + if (fADCSpecification < 0x200) { + usb_audiocontrol_header_descriptor_r1* Header1 + = (usb_audiocontrol_header_descriptor_r1*) Header; TRACE("InterfacesCount:%d\n", Header1->in_collection); - for(size_t i = 0; i < Header1->in_collection; i++) { + for (size_t i = 0; i < Header1->in_collection; i++) { fStreams.PushBack(Header1->interface_numbers[i]); TRACE("Interface[%d] number is %d\n", i, fStreams[i]); } @@ -1011,28 +1012,27 @@ return /*fStatus =*/ B_OK; } - uint32 -AudioControlInterface::GetChannelsDescription(int32 &index, - multi_description *Description, AudioControlsVector &Terminals) +AudioControlInterface::GetChannelsDescription(Vector<multi_channel_info>& Channels, + multi_description *Description, AudioControlsVector &Terminals) { uint32 addedChannels = 0; - multi_channel_info* Channels = Description->channels; +// multi_channel_info* Channels = Description->channels; - for(int32 i = 0; i < Terminals.Count(); i++) { + for (int32 i = 0; i < Terminals.Count(); i++) { bool bIsInputTerminal = Terminals[i]->SubType() == IDSInputTerminal; AudioChannelCluster* cluster = Terminals[i]->OutCluster(); - if(cluster == 0 || cluster->ChannelsCount() <= 0) { + if (cluster == 0 || cluster->ChannelsCount() <= 0) { TRACE_ALWAYS("Terminal #%d ignored due null channels cluster (%08x)\n", Terminals[i]->ID(), cluster); continue; } - uint32 channels = GetTerminalChannels(cluster, Channels, index, + uint32 channels = GetTerminalChannels(Channels, cluster,//index, bIsInputTerminal ? B_MULTI_INPUT_CHANNEL : B_MULTI_OUTPUT_CHANNEL); - if(bIsInputTerminal) + if (bIsInputTerminal) Description->input_channel_count += channels; else Description->output_channel_count += channels; @@ -1044,20 +1044,21 @@ } uint32 -AudioControlInterface::GetTerminalChannels(AudioChannelCluster* cluster, - multi_channel_info* Channels, int32& index, channel_kind kind, uint32 connectors) +AudioControlInterface::GetTerminalChannels(Vector<multi_channel_info>& Channels, + AudioChannelCluster* cluster, channel_kind kind, uint32 connectors) { - if(cluster->ChannelsCount() < 2) { // mono channel - Channels[index].channel_id = index; - Channels[index].kind = kind; - Channels[index].designations= B_CHANNEL_MONO_BUS; - Channels[index].connectors = connectors; - index++; + if (cluster->ChannelsCount() < 2) { // mono channel + multi_channel_info info; + info.channel_id = Channels.Count(); + info.kind = kind; + info.designations= B_CHANNEL_MONO_BUS; + info.connectors = connectors; + Channels.PushBack(info); return 1; } - uint32 startIndex = index; + uint32 startCount = Channels.Count(); const uint32 locations = 18; @@ -1065,90 +1066,88 @@ uint32 ch; uint32 bus; } Designations[locations] = { - { B_CHANNEL_LEFT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_RIGHT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_CENTER, B_CHANNEL_SURROUND_BUS }, - { B_CHANNEL_SUB, B_CHANNEL_SURROUND_BUS }, - { B_CHANNEL_REARLEFT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_REARRIGHT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_FRONT_LEFT_CENTER, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_FRONT_RIGHT_CENTER, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_BACK_CENTER, B_CHANNEL_SURROUND_BUS }, - { B_CHANNEL_SIDE_LEFT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_SIDE_RIGHT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_TOP_CENTER, B_CHANNEL_SURROUND_BUS }, - { B_CHANNEL_TOP_FRONT_LEFT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_TOP_FRONT_CENTER, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_TOP_FRONT_RIGHT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_TOP_BACK_LEFT, B_CHANNEL_STEREO_BUS }, - { B_CHANNEL_TOP_BACK_CENTER, B_CHANNEL_SURROUND_BUS }, - { B_CHANNEL_TOP_BACK_RIGHT, B_CHANNEL_STEREO_BUS } + { B_CHANNEL_LEFT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_RIGHT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_CENTER, B_CHANNEL_SURROUND_BUS }, + { B_CHANNEL_SUB, B_CHANNEL_SURROUND_BUS }, + { B_CHANNEL_REARLEFT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_REARRIGHT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_FRONT_LEFT_CENTER, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_FRONT_RIGHT_CENTER, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_BACK_CENTER, B_CHANNEL_SURROUND_BUS }, + { B_CHANNEL_SIDE_LEFT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_SIDE_RIGHT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_TOP_CENTER, B_CHANNEL_SURROUND_BUS }, + { B_CHANNEL_TOP_FRONT_LEFT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_TOP_FRONT_CENTER, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_TOP_FRONT_RIGHT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_TOP_BACK_LEFT, B_CHANNEL_STEREO_BUS }, + { B_CHANNEL_TOP_BACK_CENTER, B_CHANNEL_SURROUND_BUS }, + { B_CHANNEL_TOP_BACK_RIGHT, B_CHANNEL_STEREO_BUS } }; // Haiku multi-aduio designations have the same bits // as USB Audio 2.0 cluster spatial locations :-) - for(size_t i = 0; i < locations; i++) { + for (size_t i = 0; i < locations; i++) { uint32 designation = 1 << i; - if((cluster->ChannelsConfig() & designation) == designation) { - Channels[index].channel_id = index; - Channels[index].kind = kind; - Channels[index].designations = - Designations[i].ch | Designations[i].bus; - Channels[index].connectors = connectors; - index++; + if ((cluster->ChannelsConfig() & designation) == designation) { + multi_channel_info info; + info.channel_id = Channels.Count(); + info.kind = kind; + info.designations= Designations[i].ch | Designations[i].bus; + info.connectors = connectors; + Channels.PushBack(info); } } - return index - startIndex; + return Channels.Count() - startCount; } uint32 -AudioControlInterface::GetBusChannelsDescription(int32 &index, +AudioControlInterface::GetBusChannelsDescription(Vector<multi_channel_info>& Channels, multi_description *Description) { uint32 addedChannels = 0; - multi_channel_info* Channels = Description->channels; +// multi_channel_info* Channels = Description->channels; // first iterate output channels - for(AudioControlsIterator I=fOutputTerminals.Begin(); + for (AudioControlsIterator I = fOutputTerminals.Begin(); I != fOutputTerminals.End(); I++) { _AudioControl* control = I->Value(); - if(static_cast<_Terminal*>(control)->IsUSBIO()) + if (static_cast<_Terminal*>(control)->IsUSBIO()) continue; AudioChannelCluster* cluster = control->OutCluster(); - if(cluster == 0 || cluster->ChannelsCount() <= 0) { + if (cluster == 0 || cluster->ChannelsCount() <= 0) { TRACE_ALWAYS("Terminal #%d ignored due null channels cluster (%08x)\n", control->ID(), cluster); continue; } - uint32 channels = GetTerminalChannels(cluster, Channels, - index, B_MULTI_OUTPUT_BUS); + uint32 channels = GetTerminalChannels(Channels, cluster, B_MULTI_OUTPUT_BUS); Description->output_bus_channel_count += channels; addedChannels += channels; - } + } // output channels should follow too - for(AudioControlsIterator I=fInputTerminals.Begin(); + for (AudioControlsIterator I = fInputTerminals.Begin(); I != fInputTerminals.End(); I++) { _AudioControl* control = I->Value(); - if(static_cast<_Terminal*>(control)->IsUSBIO()) + if (static_cast<_Terminal*>(control)->IsUSBIO()) continue; AudioChannelCluster* cluster = control->OutCluster(); - if(cluster == 0 || cluster->ChannelsCount() <= 0) { + if (cluster == 0 || cluster->ChannelsCount() <= 0) { TRACE_ALWAYS("Terminal #%d ignored due null channels cluster (%08x)\n", control->ID(), cluster); continue; } - uint32 channels = GetTerminalChannels(cluster, Channels, - index, B_MULTI_INPUT_BUS); + uint32 channels = GetTerminalChannels(Channels, cluster, B_MULTI_INPUT_BUS); Description->input_bus_channel_count += channels; addedChannels += channels; @@ -1161,7 +1160,7 @@ void AudioControlInterface::_HarvestRecordFeatureUnits(_AudioControl* rootControl, AudioControlsMap& Map) { - if(rootControl == 0) { + if (rootControl == 0) { TRACE_ALWAYS("Not processing due NULL root control.\n"); return; } @@ -1174,7 +1173,7 @@ case IDSSelectorUnit: { SelectorUnit* unit = static_cast<SelectorUnit*>(rootControl); - for(int i = 0; i < unit->fInputPins.Count(); i++) { + for (int i = 0; i < unit->fInputPins.Count(); i++) { _HarvestRecordFeatureUnits(Find(unit->fInputPins[i]), Map); } @@ -1193,9 +1192,9 @@ AudioControlInterface::_InitGainLimits(multi_mix_control& Control) { struct _GainInfo { - uint8 request; - int16 data; - float& value; + uint8 request; + int16 data; + float& value; } gainInfos[] = { { UAS_GET_MIN, 0, Control.gain.min_gain }, { UAS_GET_MAX, 0, Control.gain.max_gain }, @@ -1207,14 +1206,14 @@ Control.gain.granularity = 1.; size_t actualLength = 0; - for(size_t i = 0; i < _countof(gainInfos); i++) { + for (size_t i = 0; i < _countof(gainInfos); i++) { status_t status = gUSBModule->send_request(fDevice->USBDevice(), - USB_REQTYPE_INTERFACE_IN | USB_REQTYPE_CLASS, + USB_REQTYPE_INTERFACE_IN | USB_REQTYPE_CLASS, gainInfos[i].request, REQ_VALUE(Control.id), REQ_INDEX(Control.id), sizeof(gainInfos[i].data), &gainInfos[i].data, &actualLength); - if(status != B_OK || actualLength != sizeof(gainInfos[i].data)) { - TRACE_ALWAYS("Request %d failed:%#08x; received %d of %d\n", + if (status != B_OK || actualLength != sizeof(gainInfos[i].data)) { + TRACE_ALWAYS("Request %d failed:%#08x; received %d of %d\n", i, status, actualLength, sizeof(gainInfos[i].data)); continue; } @@ -1228,8 +1227,8 @@ uint32 -AudioControlInterface::_ListFeatureUnitOption(uint32 controlType, - int32& index, int32 parentIndex, +AudioControlInterface::_ListFeatureUnitOption(uint32 controlType, + int32& index, int32 parentIndex, multi_mix_control_info* Info, FeatureUnit* unit, uint32 channel, uint32 channels) { @@ -1264,29 +1263,29 @@ multi_mix_control* Controls = Info->controls; - if(unit->HasControl(channel, controlType)) { - uint32 masterIndex = - Controls[index].id = CTL_ID(id, channel, unit->ID(), fInterface); - Controls[index].flags = flags; - Controls[index].parent = parentIndex; - Controls[index].string = string; - if(name != NULL) + if (unit->HasControl(channel, controlType)) { + uint32 masterIndex + = Controls[index].id = CTL_ID(id, channel, unit->ID(), fInterface); + Controls[index].flags = flags; + Controls[index].parent = parentIndex; + Controls[index].string = string; + if (name != NULL) strncpy(Controls[index].name, name, sizeof(Controls[index].name)); - if(initGainLimits) + if (initGainLimits) _InitGainLimits(Controls[index]); index++; - if(channels == 2) { - Controls[index].id = CTL_ID(id, channel + 1, + if (channels == 2) { + Controls[index].id = CTL_ID(id, channel + 1, unit->ID(), fInterface); Controls[index].flags = flags; Controls[index].parent = parentIndex; Controls[index].master = masterIndex; Controls[index].string = string; - if(name != NULL) + if (name != NULL) strncpy(Controls[index].name, name, sizeof(Controls[index].name)); - if(initGainLimits) + if (initGainLimits) _InitGainLimits(Controls[index]); [... truncated: 2423 lines follow ...]