summaryrefslogtreecommitdiff
path: root/libqservice/IQService.h
blob: 07a9a6445fb98652cdbcbc300b832e5fe9ac72a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 * Copyright (C) 2010 The Android Open Source Project
 * Copyright (C) 2012-2014, 2016-2017 The Linux Foundation. All rights reserved.
 *
 * Not a Contribution, Apache license notifications and license are
 * retained for attribution purposes only.

 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_IQSERVICE_H
#define ANDROID_IQSERVICE_H

#include <stdint.h>
#include <sys/types.h>
#include <utils/Errors.h>
#include <utils/RefBase.h>
#include <binder/IInterface.h>
#include <binder/IBinder.h>
#include <IQClient.h>
#include <IQHDMIClient.h>


namespace qService {
// ----------------------------------------------------------------------------

class IQService : public android::IInterface
{
public:
    DECLARE_META_INTERFACE(QService);
    enum {
        COMMAND_LIST_START = android::IBinder::FIRST_CALL_TRANSACTION,
        GET_PANEL_BRIGHTNESS = 2, // Provides ability to set the panel brightness
        SET_PANEL_BRIGHTNESS = 3, // Provides ability to get the panel brightness
        CONNECT_HWC_CLIENT = 4, // Connect to qservice
        SCREEN_REFRESH = 5,     // Refresh screen through SF invalidate
        EXTERNAL_ORIENTATION = 6,// Set external orientation
        BUFFER_MIRRORMODE = 7,  // Buffer mirrormode
        CHECK_EXTERNAL_STATUS = 8,// Check status of external display
        GET_DISPLAY_ATTRIBUTES = 9,// Get display attributes
        SET_HSIC_DATA = 10,     // Set HSIC on dspp
        GET_DISPLAY_VISIBLE_REGION = 11,// Get the visibleRegion for dpy
        SET_SECONDARY_DISPLAY_STATUS = 12,// Sets secondary display status
        SET_MAX_PIPES_PER_MIXER = 13,// Set max pipes per mixer for MDPComp
        SET_VIEW_FRAME = 14,    // Set view frame of display
        DYNAMIC_DEBUG = 15,     // Enable more logging on the fly
        SET_IDLE_TIMEOUT = 16,  // Set idle timeout for GPU fallback
        TOGGLE_BWC = 17,           // Toggle BWC On/Off on targets that support
        /* Enable/Disable/Set refresh rate dynamically */
        CONFIGURE_DYN_REFRESH_RATE = 18,
        CONTROL_PARTIAL_UPDATE = 19,   // Provides ability to enable/disable partial update
        TOGGLE_SCREEN_UPDATES = 20, // Provides ability to set the panel brightness
        SET_FRAME_DUMP_CONFIG = 21,  // Provides ability to set the frame dump config
        SET_S3D_MODE = 22, // Set the 3D mode as specified in msm_hdmi_modes.h
        CONNECT_HDMI_CLIENT = 23,  // Connect HDMI CEC HAL Client
        QDCM_SVC_CMDS = 24,        // request QDCM services.
        SET_ACTIVE_CONFIG = 25, //Set a specified display config
        GET_ACTIVE_CONFIG = 26, //Get the current config index
        GET_CONFIG_COUNT = 27, //Get the number of supported display configs
        GET_DISPLAY_ATTRIBUTES_FOR_CONFIG = 28, //Get attr for specified config
        SET_DISPLAY_MODE = 29, // Set display mode to command or video mode
        SET_CAMERA_STATUS = 30, // To notify display when camera is on and off
        MIN_HDCP_ENCRYPTION_LEVEL_CHANGED = 31,
        GET_BW_TRANSACTION_STATUS = 32, //Client can query BW transaction status.
        SET_LAYER_MIXER_RESOLUTION = 33, // Enables client to set layer mixer resolution.
        SET_COLOR_MODE = 34, // Overrides the QDCM mode on the display
        GET_HDR_CAPABILITIES = 35, // Get HDR capabilities for legacy HWC interface
        SET_COLOR_MODE_BY_ID = 36, // Overrides the QDCM mode using the given mode ID
        GET_COMPOSER_STATUS = 37, // Get composer init status-true if primary display init is done
        SET_COLOR_MODE_WITH_RENDER_INTENT = 38,
        SET_COLOR_SAMPLING_ENABLED = 39, // Toggle the collection of display color stats
        COMMAND_LIST_END = 400,
    };

    enum {
        END = 0,
        START,
    };

    enum {
        DEBUG_ALL,
        DEBUG_MDPCOMP,
        DEBUG_VSYNC,
        DEBUG_VD,
        DEBUG_PIPE_LIFECYCLE,
        DEBUG_DRIVER_CONFIG,
        DEBUG_ROTATOR,
        DEBUG_QDCM,
        DEBUG_SCALAR,
        DEBUG_CLIENT,
        DEBUG_DISPLAY,
        DEBUG_MAX_VAL = DEBUG_DISPLAY, // Used to check each bit of the debug command paramater.
        // Update DEBUG_MAX_VAL when adding new debug tag.
    };

    enum {
        PREF_POST_PROCESSING,
        PREF_PARTIAL_UPDATE,
        ENABLE_PARTIAL_UPDATE,
    };

    // Register a HWC client that can be notified
    // This client is generic and is intended to get
    // dispatches of all events calling into QService
    virtual void connect(const android::sp<qClient::IQClient>& client) = 0;
    // Register an HDMI client. This client gets notification of HDMI events
    // such as plug/unplug and CEC messages
    virtual void connect(const android::sp<qClient::IQHDMIClient>& client) = 0;
    // Generic function to dispatch binder commands
    // The type of command decides how the data is parceled
    virtual android::status_t dispatch(uint32_t command,
            const android::Parcel* inParcel,
            android::Parcel* outParcel) = 0;
};

// ----------------------------------------------------------------------------

class BnQService : public android::BnInterface<IQService>
{
public:
    virtual android::status_t onTransact( uint32_t code,
                                          const android::Parcel& data,
                                          android::Parcel* reply,
                                          uint32_t flags = 0);
};

// ----------------------------------------------------------------------------
}; // namespace qService

#endif // ANDROID_IQSERVICE_H