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