AAudioStreamRequest.cpp revision c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fb
1204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk/* 2204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * Copyright 2016 The Android Open Source Project 3204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * 4204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * Licensed under the Apache License, Version 2.0 (the "License"); 5204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * you may not use this file except in compliance with the License. 6204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * You may obtain a copy of the License at 7204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * 8204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * http://www.apache.org/licenses/LICENSE-2.0 9204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * 10204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * Unless required by applicable law or agreed to in writing, software 11204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * distributed under the License is distributed on an "AS IS" BASIS, 12204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * See the License for the specific language governing permissions and 14204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk * limitations under the License. 15204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk */ 16204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 17c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk#define LOG_TAG "AAudio" 18c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk//#define LOG_NDEBUG 0 19c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk#include <utils/Log.h> 20c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk 21204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk#include <stdint.h> 22204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 23204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk#include <sys/mman.h> 24204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk#include <binder/Parcel.h> 25204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk#include <binder/Parcelable.h> 26204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 275ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burk#include <aaudio/AAudioDefinitions.h> 28204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 295ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burk#include "binding/AAudioStreamConfiguration.h" 305ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burk#include "binding/AAudioStreamRequest.h" 31204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 32204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burkusing android::NO_ERROR; 33204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burkusing android::status_t; 34204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burkusing android::Parcel; 35204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burkusing android::Parcelable; 36204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 375ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burkusing namespace aaudio; 38204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 395ed503c7a66c90f93759c90237a9b432dbd93f9fPhil BurkAAudioStreamRequest::AAudioStreamRequest() 40204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk : mConfiguration() 41204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk {} 42204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 435ed503c7a66c90f93759c90237a9b432dbd93f9fPhil BurkAAudioStreamRequest::~AAudioStreamRequest() {} 44204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 455ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burkstatus_t AAudioStreamRequest::writeToParcel(Parcel* parcel) const { 46c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status_t status = parcel->writeInt32((int32_t) mUserId); 47c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 48c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status = parcel->writeInt32((int32_t) mProcessId); 49c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 50c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status = parcel->writeInt32((int32_t) mDirection); 51c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 52c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status = mConfiguration.writeToParcel(parcel); 53c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 54c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk return NO_ERROR; 55c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk 56c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burkerror: 57c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk ALOGE("AAudioStreamRequest.writeToParcel(): write failed = %d", status); 58c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk return status; 59204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk} 60204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 615ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burkstatus_t AAudioStreamRequest::readFromParcel(const Parcel* parcel) { 62204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk int32_t temp; 63c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status_t status = parcel->readInt32(&temp); 64c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 65204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk mUserId = (uid_t) temp; 66c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status = parcel->readInt32(&temp); 67c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 68204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk mProcessId = (pid_t) temp; 69c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status = parcel->readInt32(&temp); 70c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 71c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk mDirection = (aaudio_direction_t) temp; 72c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk status = mConfiguration.readFromParcel(parcel); 73c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk if (status != NO_ERROR) goto error; 74c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk return NO_ERROR; 75c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk 76c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burkerror: 77c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk ALOGE("AAudioStreamRequest.readFromParcel(): read failed = %d", status); 78c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk return status; 79204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk} 80204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 81c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burkaaudio_result_t AAudioStreamRequest::validate() const { 82204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk return mConfiguration.validate(); 83204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk} 84204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk 85c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burkvoid AAudioStreamRequest::dump() const { 86c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk ALOGD("AAudioStreamRequest mUserId = %d", mUserId); 875ed503c7a66c90f93759c90237a9b432dbd93f9fPhil Burk ALOGD("AAudioStreamRequest mProcessId = %d", mProcessId); 88c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fbPhil Burk ALOGD("AAudioStreamRequest mDirection = %d", mDirection); 89204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk mConfiguration.dump(); 90204a163c86f357a878873fe7d4c4164f3d55c9b6Phil Burk} 91