1be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root/*
2be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * Copyright (C) 2010 The Android Open Source Project
3be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root *
4be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * Licensed under the Apache License, Version 2.0 (the "License");
5be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * you may not use this file except in compliance with the License.
6be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * You may obtain a copy of the License at
7be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root *
8be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root *      http://www.apache.org/licenses/LICENSE-2.0
9be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root *
10be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * Unless required by applicable law or agreed to in writing, software
11be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * distributed under the License is distributed on an "AS IS" BASIS,
12be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * See the License for the specific language governing permissions and
14be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root * limitations under the License.
15be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root */
16be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root
17be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root#include <storage/IMountServiceListener.h>
18be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root#include <binder/Parcel.h>
19be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root
20be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Rootnamespace android {
21be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root
22be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Rootenum {
23be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root    TRANSACTION_onUsbMassStorageConnectionChanged = IBinder::FIRST_CALL_TRANSACTION,
24be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root    TRANSACTION_onStorageStateChanged,
25be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root};
26be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root
2734b33887a17a312167666be217a0f521236b393dSudheer Shankaclass BpMountServiceListener: public BpInterface<IMountServiceListener> {
2834b33887a17a312167666be217a0f521236b393dSudheer Shankapublic:
2934b33887a17a312167666be217a0f521236b393dSudheer Shanka    explicit BpMountServiceListener(const sp<IBinder>& impl)
3034b33887a17a312167666be217a0f521236b393dSudheer Shanka            : BpInterface<IMountServiceListener>(impl) { }
3134b33887a17a312167666be217a0f521236b393dSudheer Shanka
3234b33887a17a312167666be217a0f521236b393dSudheer Shanka    virtual void onUsbMassStorageConnectionChanged(const bool /* connected */) { }
3334b33887a17a312167666be217a0f521236b393dSudheer Shanka    virtual void onStorageStateChanged(const String16& /* path */,
3434b33887a17a312167666be217a0f521236b393dSudheer Shanka            const String16& /* oldState */, const String16& /* newState */) { }
3534b33887a17a312167666be217a0f521236b393dSudheer Shanka};
3634b33887a17a312167666be217a0f521236b393dSudheer Shanka
372250d56a0b47b93016018340c8f4040325aa5611Sudheer ShankaIMPLEMENT_META_INTERFACE(MountServiceListener, "android.os.storage.IStorageEventListener")
3834b33887a17a312167666be217a0f521236b393dSudheer Shanka
3934b33887a17a312167666be217a0f521236b393dSudheer Shanka// ----------------------------------------------------------------------
4034b33887a17a312167666be217a0f521236b393dSudheer Shanka
41be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Rootstatus_t BnMountServiceListener::onTransact(
42be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
43be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root{
44be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root    switch(code) {
45be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root        case TRANSACTION_onUsbMassStorageConnectionChanged: {
46be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            CHECK_INTERFACE(IMountServiceListener, data, reply);
47be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            bool connected = (data.readInt32() != 0);
48be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            onUsbMassStorageConnectionChanged(connected);
49be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            reply->writeNoException();
50be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            return NO_ERROR;
512b3a8cd808a4013f43c881eca64a870ff0ea735bAndreas Gampe        }
52be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root        case TRANSACTION_onStorageStateChanged: {
53be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            CHECK_INTERFACE(IMountServiceListener, data, reply);
54be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            String16 path = data.readString16();
55be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            String16 oldState = data.readString16();
56be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            String16 newState = data.readString16();
57be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            onStorageStateChanged(path, oldState, newState);
58be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            reply->writeNoException();
59be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            return NO_ERROR;
60be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root        }
61be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root        default:
62be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root            return BBinder::onTransact(code, data, reply, flags);
63be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root    }
64be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root}
65be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root// ----------------------------------------------------------------------
66be857d42849eaaa554d4772dbba7755f8a0f3547Kenny Root
672b3a8cd808a4013f43c881eca64a870ff0ea735bAndreas Gampe}
68