Lines Matching defs:command
48 static const char kCmdDeadlockedString[] = "AudioPolicyService command thread may be deadlocked\n";
81 // start output activity command thread
336 snprintf(buffer, SIZE, "Command Thread: %p\n", mAudioCommandThread.get());
436 sp<AudioCommand> command = mAudioCommands[0];
438 mLastCommand = command;
440 switch (command->mCommand) {
443 ToneData *data = (ToneData *)command->mParam.get();
462 VolumeData *data = (VolumeData *)command->mParam.get();
465 command->mStatus = AudioSystem::setStreamVolume(data->mStream,
470 ParametersData *data = (ParametersData *)command->mParam.get();
473 command->mStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
476 VoiceVolumeData *data = (VoiceVolumeData *)command->mParam.get();
479 command->mStatus = AudioSystem::setVoiceVolume(data->mVolume);
482 StopOutputData *data = (StopOutputData *)command->mParam.get();
494 ReleaseOutputData *data = (ReleaseOutputData *)command->mParam.get();
506 CreateAudioPatchData *data = (CreateAudioPatchData *)command->mParam.get();
510 command->mStatus = PERMISSION_DENIED;
512 command->mStatus = af->createAudioPatch(&data->mPatch, &data->mHandle);
516 ReleaseAudioPatchData *data = (ReleaseAudioPatchData *)command->mParam.get();
520 command->mStatus = PERMISSION_DENIED;
522 command->mStatus = af->releaseAudioPatch(data->mHandle);
546 SetAudioPortConfigData *data = (SetAudioPortConfigData *)command->mParam.get();
550 command->mStatus = PERMISSION_DENIED;
552 command->mStatus = af->setAudioPortConfig(&data->mConfig);
557 (DynPolicyMixStateUpdateData *)command->mParam.get();
570 ALOGW("AudioCommandThread() unknown command %d", command->mCommand);
573 Mutex::Autolock _l(command->mLock);
574 if (command->mWaitStatus) {
575 command->mWaitStatus = false;
576 command->mCond.signal();
624 result.append(" Command Time Wait pParam\n");
629 result.append(" Last Command\n");
647 sp<AudioCommand> command = new AudioCommand();
648 command->mCommand = START_TONE;
652 command->mParam = data;
654 sendCommand(command);
659 sp<AudioCommand> command = new AudioCommand();
660 command->mCommand = STOP_TONE;
662 sendCommand(command);
670 sp<AudioCommand> command = new AudioCommand();
671 command->mCommand = SET_VOLUME;
676 command->mParam = data;
677 command->mWaitStatus = true;
680 return sendCommand(command, delayMs);
687 sp<AudioCommand> command = new AudioCommand();
688 command->mCommand = SET_PARAMETERS;
692 command->mParam = data;
693 command->mWaitStatus = true;
696 return sendCommand(command, delayMs);
701 sp<AudioCommand> command = new AudioCommand();
702 command->mCommand = SET_VOICE_VOLUME;
705 command->mParam = data;
706 command->mWaitStatus = true;
708 return sendCommand(command, delayMs);
715 sp<AudioCommand> command = new AudioCommand();
716 command->mCommand = STOP_OUTPUT;
721 command->mParam = data;
723 sendCommand(command);
730 sp<AudioCommand> command = new AudioCommand();
731 command->mCommand = RELEASE_OUTPUT;
736 command->mParam = data;
738 sendCommand(command);
748 sp<AudioCommand> command = new AudioCommand();
749 command->mCommand = CREATE_AUDIO_PATCH;
753 command->mParam = data;
754 command->mWaitStatus = true;
756 status = sendCommand(command, delayMs);
766 sp<AudioCommand> command = new AudioCommand();
767 command->mCommand = RELEASE_AUDIO_PATCH;
770 command->mParam = data;
771 command->mWaitStatus = true;
773 return sendCommand(command, delayMs);
778 sp<AudioCommand> command = new AudioCommand();
779 command->mCommand = UPDATE_AUDIOPORT_LIST;
781 sendCommand(command);
786 sp<AudioCommand>command = new AudioCommand();
787 command->mCommand = UPDATE_AUDIOPATCH_LIST;
789 sendCommand(command);
795 sp<AudioCommand> command = new AudioCommand();
796 command->mCommand = SET_AUDIOPORT_CONFIG;
799 command->mParam = data;
800 command->mWaitStatus = true;
802 return sendCommand(command, delayMs);
808 sp<AudioCommand> command = new AudioCommand();
809 command->mCommand = DYN_POLICY_MIX_STATE_UPDATE;
813 command->mParam = data;
816 sendCommand(command);
819 status_t AudioPolicyService::AudioCommandThread::sendCommand(sp<AudioCommand>& command, int delayMs)
823 insertCommand_l(command, delayMs);
826 Mutex::Autolock _l(command->mLock);
827 while (command->mWaitStatus) {
829 if (command->mCond.waitRelative(command->mLock, timeOutNs) != NO_ERROR) {
830 command->mStatus = TIMED_OUT;
831 command->mWaitStatus = false;
834 return command->mStatus;
838 void AudioPolicyService::AudioCommandThread::insertCommand_l(sp<AudioCommand>& command, int delayMs)
842 command->mTime = systemTime() + milliseconds(delayMs);
853 if (command2->mTime <= command->mTime) break;
857 if ((command->mCommand == CREATE_AUDIO_PATCH) ||
858 (command->mCommand == RELEASE_AUDIO_PATCH)) {
863 } else if (command2->mCommand != command->mCommand) continue;
865 switch (command->mCommand) {
867 ParametersData *data = (ParametersData *)command->mParam.get();
870 ALOGV("Comparing parameter command %s to new command %s",
889 // if all keys have been filtered out, remove the command.
896 command->mTime = command2->mTime;
898 // command status as the command is now delayed
903 VolumeData *data = (VolumeData *)command->mParam.get();
907 ALOGV("Filtering out volume command on output %d for stream %d",
910 command->mTime = command2->mTime;
912 // command status as the command is now delayed
920 if (command->mCommand == CREATE_AUDIO_PATCH) {
921 handle = ((CreateAudioPatchData *)command->mParam.get())->mHandle;
922 patch = ((CreateAudioPatchData *)command->mParam.get())->mPatch;
924 handle = ((ReleaseAudioPatchData *)command->mParam.get())->mHandle;
938 if( (command->mCommand == CREATE_AUDIO_PATCH) &&
952 ALOGV("Filtering out %s audio patch command for handle %d",
953 (command->mCommand == CREATE_AUDIO_PATCH) ? "create" : "release", handle);
955 command->mTime = command2->mTime;
957 // command status as the command is now delayed
974 // removed commands always have time stamps greater than current command
977 ALOGV("suppressing command: %d", mAudioCommands[k]->mCommand);
986 // Except for create audio patch command because the returned patch handle
988 if (delayMs != 0 && command->mCommand != CREATE_AUDIO_PATCH) {
989 command->mWaitStatus = false;
992 // insert command at the right place according to its time stamp
993 ALOGV("inserting command: %d at index %zd, num commands %zu",
994 command->mCommand, i+1, mAudioCommands.size());
995 mAudioCommands.insertAt(command, i + 1);