1d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah/*
2d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * Copyright (C) 2010 The Android Open Source Project
3d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * Copyright (C) 2012-2013, The Linux Foundation. All rights reserved.
4d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah *
5d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * Not a Contribution, Apache license notifications and license are
6d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * retained for attribution purposes only.
7d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
8d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * Licensed under the Apache License, Version 2.0 (the "License");
9d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * you may not use this file except in compliance with the License.
10d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * You may obtain a copy of the License at
11d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah *
12d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah *      http://www.apache.org/licenses/LICENSE-2.0
13d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah *
14d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * Unless required by applicable law or agreed to in writing, software
15d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * distributed under the License is distributed on an "AS IS" BASIS,
16d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * See the License for the specific language governing permissions and
18d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah * limitations under the License.
19d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah */
20d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
21d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah#include <sys/types.h>
22d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah#include <binder/Parcel.h>
23d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah#include <binder/IBinder.h>
24d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah#include <binder/IInterface.h>
25d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah#include <utils/Errors.h>
26d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah#include <IQClient.h>
27d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
28d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahusing namespace android;
29d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
30d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah// ---------------------------------------------------------------------------
31d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
32d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahnamespace qClient {
33d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
34d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahenum {
35d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION,
36d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah};
37d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
38d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahclass BpQClient : public BpInterface<IQClient>
39d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah{
40d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahpublic:
41d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    BpQClient(const sp<IBinder>& impl)
42d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        : BpInterface<IQClient>(impl) {}
43d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
44e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran    virtual status_t notifyCallback(uint32_t msg, uint32_t value) {
45d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        Parcel data, reply;
46d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        data.writeInterfaceToken(IQClient::getInterfaceDescriptor());
47d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        data.writeInt32(msg);
48d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        data.writeInt32(value);
49d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        remote()->transact(NOTIFY_CALLBACK, data, &reply);
50e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran        status_t result = reply.readInt32();
51e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran        return result;
52d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    }
53d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah};
54d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
55d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh ShahIMPLEMENT_META_INTERFACE(QClient, "android.display.IQClient");
56d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
57d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah// ----------------------------------------------------------------------
58d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
59d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahstatus_t BnQClient::onTransact(
60d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
61d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah{
62d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    switch(code) {
63d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        case NOTIFY_CALLBACK: {
64d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah            CHECK_INTERFACE(IQClient, data, reply);
65d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah            uint32_t msg = data.readInt32();
66d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah            uint32_t value = data.readInt32();
67d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah            notifyCallback(msg, value);
68d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah            return NO_ERROR;
69d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        } break;
70d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        default:
71d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah            return BBinder::onTransact(code, data, reply, flags);
72d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    }
73d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah}
74d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
75d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah}; // namespace qClient
76