• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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