AudioEndpointParcelable.h revision 828bea5f61f3c40d24759cd8739dd95570883b56
116c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck/* 216c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * Copyright 2016 The Android Open Source Project 316c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * 416c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 516c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * you may not use this file except in compliance with the License. 616c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * You may obtain a copy of the License at 716c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * 816c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * http://www.apache.org/licenses/LICENSE-2.0 916c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * 1016c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * Unless required by applicable law or agreed to in writing, software 1116c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * distributed under the License is distributed on an "AS IS" BASIS, 1216c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * See the License for the specific language governing permissions and 1416c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * limitations under the License. 1516c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck */ 1616c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck 1716c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck#ifndef BINDING_AUDIOENDPOINTPARCELABLE_H 1816c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck#define BINDING_AUDIOENDPOINTPARCELABLE_H 1979abbf22d4f672208327546661e694d837f564a9Derek Sollenberger 20d2dfd8f128b632ed99418ab2b32949c939a9a369Chris Craik#include <stdint.h> 21d2dfd8f128b632ed99418ab2b32949c939a9a369Chris Craik 227dc370bfe3223dfbcb368e0006c688dfd668ab01sergeyv//#include <sys/mman.h> 2356ad6ec42f814e9e61030ff819cac4e5d31def8bDerek Sollenberger#include <binder/Parcel.h> 2498c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel#include <binder/Parcelable.h> 2598c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel 2698c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel#include "binding/OboeServiceDefinitions.h" 27f4cf5d3b019fa60e96219578a4c6ad1a90c7b665Ben Wagner#include "binding/RingBufferParcelable.h" 2852771272f4f018f4fc6846224bf047497e784af1Stan Iliev 29f4cf5d3b019fa60e96219578a4c6ad1a90c7b665Ben Wagnerusing android::status_t; 30ee708facf127f2e8bed5970d5c05fa823fcfc1ceLeon Scroggins IIIusing android::Parcel; 31ee708facf127f2e8bed5970d5c05fa823fcfc1ceLeon Scroggins IIIusing android::Parcelable; 3216c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck 3316c9d6a92e1b86d448c00c52a1630f3e71e6df76John Recknamespace oboe { 3416c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck 3516c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck/** 3616c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * Container for information about the message queues plus 3716c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * general stream information needed by Oboe clients. 3816c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * It contains no addresses, just sizes, offsets and file descriptors for 3916c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * shared memory that can be passed through Binder. 4016c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck */ 4116c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reckclass AudioEndpointParcelable : public Parcelable { 4216c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reckpublic: 4316c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck AudioEndpointParcelable(); 4416c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck virtual ~AudioEndpointParcelable(); 4516c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck 4616c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck /** 4716c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * Add the file descriptor to the table. 4816c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck * @return index in table or negative error 4916c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck */ 5016c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck int32_t addFileDescriptor(int fd, int32_t sizeInBytes); 5116c9d6a92e1b86d448c00c52a1630f3e71e6df76John Reck 52d2dfd8f128b632ed99418ab2b32949c939a9a369Chris Craik virtual status_t writeToParcel(Parcel* parcel) const override; 5398c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel 5498c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel virtual status_t readFromParcel(const Parcel* parcel) override; 5598c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel 5698c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel oboe_result_t resolve(EndpointDescriptor *descriptor); 5798c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel 5898c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel oboe_result_t validate(); 5998c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel 6098c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel void dump(); 6198c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel 6298c78dad1969e2321cfee2085faa55d95bba7e29Greg Danielpublic: // TODO add getters 6398c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel // Set capacityInFrames to zero if Queue is unused. 6498c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel RingBufferParcelable mUpMessageQueueParcelable; // server to client 6598c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel RingBufferParcelable mDownMessageQueueParcelable; // to server 6698c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel RingBufferParcelable mUpDataQueueParcelable; // eg. record, could share same queue 6798c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel RingBufferParcelable mDownDataQueueParcelable; // eg. playback 68d2dfd8f128b632ed99418ab2b32949c939a9a369Chris Craik 69243e85b2e443def1ef47a180e824b36f513c8db8Chris Craikprivate: 7098c78dad1969e2321cfee2085faa55d95bba7e29Greg Daniel int32_t mNumSharedMemories = 0; 7156ad6ec42f814e9e61030ff819cac4e5d31def8bDerek Sollenberger SharedMemoryParcelable mSharedMemories[MAX_SHARED_MEMORIES]; 72243e85b2e443def1ef47a180e824b36f513c8db8Chris Craik}; 73243e85b2e443def1ef47a180e824b36f513c8db8Chris Craik 74243e85b2e443def1ef47a180e824b36f513c8db8Chris Craik} /* namespace oboe */ 75243e85b2e443def1ef47a180e824b36f513c8db8Chris Craik 7656ad6ec42f814e9e61030ff819cac4e5d31def8bDerek Sollenberger#endif //BINDING_AUDIOENDPOINTPARCELABLE_H 77d2dfd8f128b632ed99418ab2b32949c939a9a369Chris Craik