1b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang/*
2cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Copyright (c) 2014 Intel Corporation 
3cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika//
4cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Licensed under the Apache License, Version 2.0 (the "License");
5cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// you may not use this file except in compliance with the License.
6cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// You may obtain a copy of the License at
7cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika//
8cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika//      http://www.apache.org/licenses/LICENSE-2.0
9cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika//
10cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Unless required by applicable law or agreed to in writing, software
11cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// distributed under the License is distributed on an "AS IS" BASIS,
12cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// See the License for the specific language governing permissions and
14cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// limitations under the License.
15cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika*/
16b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#ifndef DUMMY_DEVICE_H
17b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#define DUMMY_DEVICE_H
18b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
19b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#include <IDisplayDevice.h>
20b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
21b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangnamespace android {
22b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangnamespace intel {
23b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
24b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangclass Hwcomposer;
25b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangclass SoftVsyncObserver;
26b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
27b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangclass DummyDevice : public IDisplayDevice {
28b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangpublic:
293540d325335005c6761c3557679201ae29f7c1d0Michael Lentine    DummyDevice(uint32_t disp, Hwcomposer& hwc);
30b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual ~DummyDevice();
31b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
32b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangpublic:
33b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool prePrepare(hwc_display_contents_1_t *display);
34b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool prepare(hwc_display_contents_1_t *display);
35b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool commit(hwc_display_contents_1_t *display,
36b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang                          IDisplayContext *context);
37b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
38b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool vsyncControl(bool enabled);
39b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool blank(bool blank);
40b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool getDisplaySize(int *width, int *height);
41b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool getDisplayConfigs(uint32_t *configs,
42b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang                                       size_t *numConfigs);
43b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool getDisplayAttributes(uint32_t config,
44b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang                                          const uint32_t *attributes,
45b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang                                          int32_t *values);
46b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool compositionComplete();
47452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish
48452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish    virtual bool setPowerMode(int mode);
49452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish    virtual int  getActiveConfig();
50452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish    virtual bool setActiveConfig(int index);
51452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish
52b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool initialize();
53b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual void deinitialize();
54b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual bool isConnected() const;
55b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual const char* getName() const;
56b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual int getType() const;
57b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual void onVsync(int64_t timestamp);
58b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    virtual void dump(Dump& d);
59b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
60b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangprotected:
61b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    bool mInitialized;
62b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    bool mConnected;
63b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    bool mBlank;
643540d325335005c6761c3557679201ae29f7c1d0Michael Lentine    uint32_t mDisp;
65b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    Hwcomposer& mHwc;
66b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    SoftVsyncObserver *mVsyncObserver;
67b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
68b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang    const char *mName;
69b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang};
70b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
71b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang}
72b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang}
73b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang
74b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#endif /* DUMMY_DEVICE_H */
75