1 /*
2  * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_IAVCAST_CONTROLLER_H
17 #define OHOS_IAVCAST_CONTROLLER_H
18 
19 #include "avcast_controller.h"
20 #include "iavcontroller_callback.h"
21 #include "iremote_broker.h"
22 
23 namespace OHOS::AVSession {
24 class IAVCastController : public AVCastController, public IRemoteBroker {
25 public:
26     DECLARE_INTERFACE_DESCRIPTOR(u"ohos.avsession.IAVCastController");
27 
28     enum {
29         CAST_CONTROLLER_CMD_SEND_CONTROL_COMMAND,
30         CAST_CONTROLLER_CMD_START,
31         CAST_CONTROLLER_CMD_PREPARE,
32         CAST_CONTROLLER_CMD_GET_DURATION,
33         CAST_CONTROLLER_CMD_GET_CAST_AV_PLAYBACK_STATE,
34         CAST_CONTROLLER_CMD_GET_CURRENT_ITEM,
35         CAST_CONTROLLER_CMD_GET_VALID_COMMANDS,
36         CAST_CONTROLLER_CMD_SET_DISPLAY_SURFACE,
37         CAST_CONTROLLER_CMD_SET_CAST_PLAYBACK_FILTER,
38         CAST_CONTROLLER_CMD_PROVIDE_KEY_RESPONSE,
39         CAST_CONTROLLER_CMD_REGISTER_CALLBACK,
40         CAST_CONTROLLER_CMD_DESTROY,
41         CAST_CONTROLLER_CMD_ADD_AVAILABLE_COMMAND,
42         CAST_CONTROLLER_CMD_REMOVE_AVAILABLE_COMMAND,
43         CAST_CONTROLLER_CMD_MAX,
44     };
45 
46 protected:
47     virtual int32_t RegisterCallbackInner(const sptr<IRemoteObject>& callback) = 0;
48 };
49 }
50 #endif // OHOS_IAVCAST_CONTROLLER_H
51