forked from rdkcentral/rdkservices
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHdmiInput.h
139 lines (115 loc) · 6.69 KB
/
HdmiInput.h
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
/**
* If not stated otherwise in this file or this component's LICENSE
* file the following copyright and licenses apply:
*
* Copyright 2019 RDK Management
*
* 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.
**/
#pragma once
#include "libIBus.h"
#include "Module.h"
#include "dsTypes.h"
#define DEFAULT_PRIM_VOL_LEVEL 25
#define MAX_PRIM_VOL_LEVEL 100
#define DEFAULT_INPUT_VOL_LEVEL 100
namespace WPEFramework {
namespace Plugin {
// This is a server for a JSONRPC communication channel.
// For a plugin to be capable to handle JSONRPC, inherit from PluginHost::JSONRPC.
// By inheriting from this class, the plugin realizes the interface PluginHost::IDispatcher.
// This realization of this interface implements, by default, the following methods on this plugin
// - exists
// - register
// - unregister
// Any other methood to be handled by this plugin can be added can be added by using the
// templated methods Register on the PluginHost::JSONRPC class.
// As the registration/unregistration of notifications is realized by the class PluginHost::JSONRPC,
// this class exposes a public method called, Notify(), using this methods, all subscribed clients
// will receive a JSONRPC message as a notification, in case this method is called.
class HdmiInput : public PluginHost::IPlugin, public PluginHost::JSONRPC {
private:
// We do not allow this plugin to be copied !!
HdmiInput(const HdmiInput&) = delete;
HdmiInput& operator=(const HdmiInput&) = delete;
void InitializeIARM();
void DeinitializeIARM();
int m_primVolume;
int m_inputVolume; //Player Volume
//Begin methods
uint32_t getHDMIInputDevicesWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t writeEDIDWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t readEDIDWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t getRawHDMISPDWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t getHDMISPDWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t setEdidVersionWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t getEdidVersionWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t startHdmiInput(const JsonObject& parameters, JsonObject& response);
uint32_t stopHdmiInput(const JsonObject& parameters, JsonObject& response);
uint32_t setMixerLevels(const JsonObject& parameters, JsonObject& response);
uint32_t setVideoRectangleWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t getSupportedGameFeatures(const JsonObject& parameters, JsonObject& response);
uint32_t getHdmiGameFeatureStatusWrapper(const JsonObject& parameters, JsonObject& response);
uint32_t getAVLatency(const JsonObject& parameters, JsonObject& response);
uint32_t getTVLowLatencyMode(const JsonObject& parameters, JsonObject& response);
uint32_t getHdmiVersionWrapper(const JsonObject& parameters, JsonObject& response);
//End methods
JsonArray getHDMIInputDevices();
void writeEDID(int deviceId, std::string message);
std::string readEDID(int iPort);
std::string getRawHDMISPD(int iPort);
std::string getHDMISPD(int iPort);
int setEdidVersion(int iPort, int iEdidVer);
int getEdidVersion(int iPort);
bool getHdmiALLMStatus(int iPort);
bool setVideoRectangle(int x, int y, int width, int height);
void getControlSettingsPlugin();
void getHdmiCecSinkPlugin(void);
PluginHost::IShell* m_service = nullptr;
WPEFramework::JSONRPC::LinkType<WPEFramework::Core::JSON::IElement>* m_client;
WPEFramework::JSONRPC::LinkType<WPEFramework::Core::JSON::IElement>* m_tv_client;
std::vector<std::string> m_clientRegisteredEventNames;
uint32_t getServiceState(PluginHost::IShell* shell, const string& callsign, PluginHost::IShell::state& state);
void hdmiInputHotplug( int input , int connect);
static void dsHdmiEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void hdmiInputSignalChange( int port , int signalStatus);
static void dsHdmiSignalStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void hdmiInputStatusChange( int port , bool isPresented);
static void dsHdmiStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void hdmiInputVideoModeUpdate( int port , dsVideoPortResolution_t resolution);
static void dsHdmiVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void hdmiInputALLMChange( int port , bool allmMode);
static void dsHdmiGameFeatureStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void hdmiInputAviContentTypeChange(int port, int content_type);
static void dsHdmiAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void hdmiInAVLatencyChange(int audio_output_delay,int video_latency);
static void dsHdmiAVLatencyEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len);
void reportLatencyInfoToHdmiCecSink();
void onGameModeEventHandler(const JsonObject& parameters);
uint32_t subscribeForTvMgrEvent(const char* eventName);
public:
HdmiInput();
virtual ~HdmiInput();
virtual const string Initialize(PluginHost::IShell* shell) override;
virtual void Deinitialize(PluginHost::IShell* service) override;
virtual string Information() const override { return {}; }
void terminate();
BEGIN_INTERFACE_MAP(HdmiInput)
INTERFACE_ENTRY(PluginHost::IPlugin)
INTERFACE_ENTRY(PluginHost::IDispatcher)
END_INTERFACE_MAP
public:
static HdmiInput* _instance;
};
} // namespace Plugin
} // namespace WPEFramework