12652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang/*
22652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * Copyright 2016 The Android Open Source Project
32652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang *
42652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * Licensed under the Apache License, Version 2.0 (the "License");
52652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * you may not use this file except in compliance with the License.
62652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * You may obtain a copy of the License at
72652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang *
82652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang *      http://www.apache.org/licenses/LICENSE-2.0
92652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang *
102652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * Unless required by applicable law or agreed to in writing, software
112652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * distributed under the License is distributed on an "AS IS" BASIS,
122652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * See the License for the specific language governing permissions and
142652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang * limitations under the License.
152652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang */
162652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
172652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang#include <binder/IMediaResourceMonitor.h>
182652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang#include <binder/Parcel.h>
192652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang#include <utils/Errors.h>
202652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang#include <sys/types.h>
212652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
222652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kangnamespace android {
232652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
242652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang// ----------------------------------------------------------------------
252652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
262652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kangclass BpMediaResourceMonitor : public BpInterface<IMediaResourceMonitor> {
272652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kangpublic:
282652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang    BpMediaResourceMonitor(const sp<IBinder>& impl)
292652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        : BpInterface<IMediaResourceMonitor>(impl) {}
302652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
31a2a6be113f263bc12c81d3c81069f592cc76a6c7Dongwon Kang    virtual void notifyResourceGranted(/*in*/ int32_t pid, /*in*/ const int32_t type)
322652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang    {
332652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        Parcel data, reply;
342652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        data.writeInterfaceToken(IMediaResourceMonitor::getInterfaceDescriptor());
352652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        data.writeInt32(pid);
36a2a6be113f263bc12c81d3c81069f592cc76a6c7Dongwon Kang        data.writeInt32(type);
372652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        remote()->transact(NOTIFY_RESOURCE_GRANTED, data, &reply, IBinder::FLAG_ONEWAY);
382652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang    }
392652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang};
402652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
412652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon KangIMPLEMENT_META_INTERFACE(MediaResourceMonitor, "android.media.IMediaResourceMonitor");
422652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
432652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang// ----------------------------------------------------------------------
442652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
452652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kangstatus_t BnMediaResourceMonitor::onTransact( uint32_t code, const Parcel& data, Parcel* reply,
462652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        uint32_t flags) {
472652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang    switch(code) {
482652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        case NOTIFY_RESOURCE_GRANTED: {
492652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang            CHECK_INTERFACE(IMediaResourceMonitor, data, reply);
502652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang            int32_t pid = data.readInt32();
51a2a6be113f263bc12c81d3c81069f592cc76a6c7Dongwon Kang            const int32_t type = data.readInt32();
52a2a6be113f263bc12c81d3c81069f592cc76a6c7Dongwon Kang            notifyResourceGranted(/*in*/ pid, /*in*/ type);
532652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang            return NO_ERROR;
542652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        } break;
552652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang        default:
562652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang            return BBinder::onTransact(code, data, reply, flags);
572652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang    }
582652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang}
592652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
602652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang// ----------------------------------------------------------------------
612652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang
622652c17bcf78ba307ef8cf8389a02d51b37d595bDongwon Kang}; // namespace android
63