1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef CAS_IMPL_H_ 18 #define CAS_IMPL_H_ 19 20 #include <media/stagefright/foundation/ABase.h> 21 #include <android/media/BnCas.h> 22 23 namespace android { 24 namespace media { 25 class ICasListener; 26 } 27 using namespace media; 28 using namespace MediaCas; 29 using binder::Status; 30 class CasPlugin; 31 class SharedLibrary; 32 33 class CasImpl : public BnCas { 34 public: 35 CasImpl(const sp<ICasListener> &listener); 36 virtual ~CasImpl(); 37 38 static void OnEvent( 39 void *appData, 40 int32_t event, 41 int32_t arg, 42 uint8_t *data, 43 size_t size); 44 45 void init(const sp<SharedLibrary>& library, CasPlugin *plugin); 46 void onEvent( 47 int32_t event, 48 int32_t arg, 49 uint8_t *data, 50 size_t size); 51 52 // ICas inherits 53 54 virtual Status setPrivateData( 55 const CasData& pvtData) override; 56 57 virtual Status openSession(CasSessionId* _aidl_return) override; 58 59 virtual Status closeSession(const CasSessionId& sessionId) override; 60 61 virtual Status setSessionPrivateData( 62 const CasSessionId& sessionId, 63 const CasData& pvtData) override; 64 65 virtual Status processEcm( 66 const CasSessionId& sessionId, const ParcelableCasData& ecm) override; 67 68 virtual Status processEmm(const ParcelableCasData& emm) override; 69 70 virtual Status sendEvent( 71 int32_t event, int32_t arg, const ::std::unique_ptr<CasData> &eventData) override; 72 73 virtual Status provision(const String16& provisionString) override; 74 75 virtual Status refreshEntitlements( 76 int32_t refreshType, const ::std::unique_ptr<CasData> &refreshData) override; 77 78 virtual Status release() override; 79 80 private: 81 struct PluginHolder; 82 sp<SharedLibrary> mLibrary; 83 sp<PluginHolder> mPluginHolder; 84 sp<ICasListener> mListener; 85 86 DISALLOW_EVIL_CONSTRUCTORS(CasImpl); 87 }; 88 89 } // namespace android 90 91 #endif // CAS_IMPL_H_ 92