Skip to content

Commit

Permalink
DELIA-42480 : Remove multiple calls to IARM_Bus_Init in thunder plugins
Browse files Browse the repository at this point in the history
No more init errors should be in Thunder log like this:
IARM IARM_Bus_Init("Display_Settings"): invalid param.
  • Loading branch information
maksimsav committed May 19, 2020
1 parent 83d181d commit ad0f9c5
Show file tree
Hide file tree
Showing 49 changed files with 175 additions and 803 deletions.
8 changes: 4 additions & 4 deletions ContinueWatching/ContinueWatching.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ namespace WPEFramework {
bool retVal = false;
RFC_ParamData_t param = {0};

WDMP_STATUS status = getRFCParameter("ServiceManager", feature.c_str(), &param);
WDMP_STATUS status = getRFCParameter(const_cast<char *>("ServiceManager"), feature.c_str(), &param);
if (status == WDMP_SUCCESS) {
LOGINFO("%s name = %s, type = %d, value = %s\n", __FUNCTION__, param.name, param.type, param.value);

Expand Down Expand Up @@ -863,7 +863,7 @@ namespace WPEFramework {

string dectokenbase64;
std::stringstream listdecydec;
for (int i=0; i<decnum_chars; ++i){
for (unsigned int i=0; i<decnum_chars; ++i){
listdecydec << decworkspace[i];
}
dectokenbase64 = listdecydec.str();
Expand Down Expand Up @@ -893,7 +893,7 @@ namespace WPEFramework {
b64_encode(encodebuff,tokenVec.size(),workspace);

std::stringstream list1;
for (int i=0; i<workspace_size; ++i){
for (unsigned int i=0; i<workspace_size; ++i){
list1 << workspace[i];
}
tokenbase64 = list1.str();
Expand Down Expand Up @@ -927,7 +927,7 @@ namespace WPEFramework {

string jsontokenbase64;
std::stringstream listwritetofile;
for (int i=0; i<jsonworkspace_size; ++i){
for (unsigned int i=0; i<jsonworkspace_size; ++i){
listwritetofile << jsonworkspace[i];
}
jsontokenbase64 = listwritetofile.str();
Expand Down
6 changes: 3 additions & 3 deletions ContinueWatching/ContinueWatching.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ namespace WPEFramework {
{
public:
ContinueWatchingImpl();
~ContinueWatchingImpl();
virtual ~ContinueWatchingImpl();
virtual std::string getApplicationToken() = 0;
virtual bool setApplicationToken(std::string token) = 0;
virtual bool deleteApplicationToken() = 0;
Expand Down Expand Up @@ -132,7 +132,7 @@ namespace WPEFramework {
{
public:
NetflixContinueWatchingImpl();
~NetflixContinueWatchingImpl();
virtual ~NetflixContinueWatchingImpl();
std::string getApplicationToken();
bool setApplicationToken(std::string token);
bool deleteApplicationToken();
Expand All @@ -142,7 +142,7 @@ namespace WPEFramework {
{
public:
ContinueWatchingImplFactory();
~ContinueWatchingImplFactory();
virtual ~ContinueWatchingImplFactory();
ContinueWatchingImpl* createContinueWatchingImpl(std::string strApplicationName);
};
} // namespace Plugin
Expand Down
3 changes: 2 additions & 1 deletion ControlService/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ add_subdirectory(test)

add_library(${MODULE_NAME} SHARED
ControlService.cpp
Module.cpp)
Module.cpp
../helpers/utils.cpp)

set_target_properties(${MODULE_NAME} PROPERTIES
CXX_STANDARD 11
Expand Down
93 changes: 42 additions & 51 deletions ControlService/ControlService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,63 +114,54 @@ namespace WPEFramework {
void ControlService::InitializeIARM()
{
LOGINFO();
IARM_Result_t res = IARM_Bus_Init(IARM_CONTROLSERVICE_PLUGIN_NAME);
if (res == IARM_RESULT_SUCCESS)
{
// We have our own Linux process, so we need to connect and disconnect from the IARM Bus
IARM_CHECK( IARM_Bus_Connect() );
m_hasOwnProcess = true;
if (Utils::IARM::init())
{
IARM_Result_t res;
// Register for the irMgr irkey events
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_IRMGR_NAME, IARM_BUS_IRMGR_EVENT_IRKEY, controlEventHandler) );

// Register for ControlMgr ghost code events
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_KEY_GHOST, controlEventHandler) );
// Register for ControlMgr pairing-related events
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_BEGIN, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_KEY_PRESS, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_END, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONFIGURATION_COMPLETE, controlEventHandler) );
// Register for ControlMgr API 6 event additions (battery and reboot)
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_BATTERY_MILESTONE, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_REMOTE_REBOOT, controlEventHandler) );
// Register for ControlMgr API 6 polling REVERSE_CMD BEGIN and END events (for FindMyRemote)
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_RCU_REVERSE_CMD_END, controlEventHandler) );
// Register for ControlMgr API 6+ onControl event pass-through
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONTROL, controlEventHandler) );
}
else
m_hasOwnProcess = false;

// Register for the irMgr irkey events
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_IRMGR_NAME, IARM_BUS_IRMGR_EVENT_IRKEY, controlEventHandler) );

// Register for ControlMgr ghost code events
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_KEY_GHOST, controlEventHandler) );
// Register for ControlMgr pairing-related events
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_BEGIN, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_KEY_PRESS, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_END, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONFIGURATION_COMPLETE, controlEventHandler) );
// Register for ControlMgr API 6 event additions (battery and reboot)
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_BATTERY_MILESTONE, controlEventHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_REMOTE_REBOOT, controlEventHandler) );
// Register for ControlMgr API 6 polling REVERSE_CMD BEGIN and END events (for FindMyRemote)
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_RCU_REVERSE_CMD_END, controlEventHandler) );
// Register for ControlMgr API 6+ onControl event pass-through
IARM_CHECK( IARM_Bus_RegisterEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONTROL, controlEventHandler) );
}

void ControlService::DeinitializeIARM()
{
LOGINFO();
IARM_Result_t res;

// Remove handlers for irMgr control irkey events
IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_IRMGR_NAME, IARM_BUS_IRMGR_EVENT_IRKEY, controlEventHandler) );

// Remove handler for ControlMgr ghost code events
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_KEY_GHOST, controlEventHandler) );
// Remove handlers for ControlMgr pairing-related events
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_BEGIN, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_KEY_PRESS, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_END, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONFIGURATION_COMPLETE, controlEventHandler) );
// Remove handlers for ControlMgr API 6 event additions (battery and reboot)
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_BATTERY_MILESTONE, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_REMOTE_REBOOT, controlEventHandler) );
// Remove handlers for ControlMgr API 6 polling REVERSE_CMD BEGIN and END events (for FindMyRemote)
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_RCU_REVERSE_CMD_END, controlEventHandler) );
// Remove handler for ControlMgr API 6+ onControl event pass-through
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONTROL, controlEventHandler) );

if (m_hasOwnProcess)
{
IARM_CHECK( IARM_Bus_Disconnect() );
IARM_CHECK( IARM_Bus_Term() );
m_hasOwnProcess = false;

if (Utils::IARM::isConnected())
{
IARM_Result_t res;

// Remove handlers for irMgr control irkey events
IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_IRMGR_NAME, IARM_BUS_IRMGR_EVENT_IRKEY, controlEventHandler) );

// Remove handler for ControlMgr ghost code events
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_KEY_GHOST, controlEventHandler) );
// Remove handlers for ControlMgr pairing-related events
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_BEGIN, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_KEY_PRESS, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_VALIDATION_END, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONFIGURATION_COMPLETE, controlEventHandler) );
// Remove handlers for ControlMgr API 6 event additions (battery and reboot)
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_BATTERY_MILESTONE, controlEventHandler) );
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_REMOTE_REBOOT, controlEventHandler) );
// Remove handlers for ControlMgr API 6 polling REVERSE_CMD BEGIN and END events (for FindMyRemote)
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_RCU_REVERSE_CMD_END, controlEventHandler) );
// Remove handler for ControlMgr API 6+ onControl event pass-through
IARM_CHECK( IARM_Bus_RemoveEventHandler(CTRLM_MAIN_IARM_BUS_NAME, CTRLM_RCU_IARM_EVENT_CONTROL, controlEventHandler) );
}
}

Expand Down
1 change: 0 additions & 1 deletion ControlService/ControlService.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@ namespace WPEFramework {
static ControlService* _instance;
private:
uint32_t m_apiVersionNumber;
bool m_hasOwnProcess;

JsonObject m_remoteInfo[CTRLM_MAIN_MAX_BOUND_CONTROLLERS];
int m_numOfBindRemotes;
Expand Down
4 changes: 2 additions & 2 deletions ControlService/test/controlSvcTestClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ namespace Handlers {

int main(int argc, char** argv)
{
JSONRPC::Client* remoteObject = NULL;
JSONRPC::LinkType<Core::JSON::IElement> * remoteObject = NULL;

int choice;
uint32_t ret;
Expand All @@ -319,7 +319,7 @@ int main(int argc, char** argv)
Core::SystemInfo::SetEnvironment(_T("THUNDER_ACCESS"), (_T(SERVER_DETAILS)));

if (NULL == remoteObject) {
remoteObject = new JSONRPC::Client(_T(SYSSRV_CALLSIGN), _T(""));
remoteObject = new JSONRPC::LinkType<Core::JSON::IElement>(_T(SYSSRV_CALLSIGN), _T(""));
if (NULL == remoteObject) {
std::cout << "JSONRPC::Client initialization failed" << std::endl;
} else {
Expand Down
38 changes: 0 additions & 38 deletions DeviceIdentification/DeviceIdentificationPlugin.json

This file was deleted.

14 changes: 0 additions & 14 deletions DeviceInfo/DeviceInfoPlugin.json

This file was deleted.

14 changes: 0 additions & 14 deletions DisplayInfo/DisplayInfoPlugin.json

This file was deleted.

4 changes: 4 additions & 0 deletions DisplayInfo/Nexus/PlatformImplementation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,12 @@ class DisplayInfoImplementation : public Exchange::IGraphicsProperties, public E
, _adminLock()
, _activity(*this) {

#ifdef __DEBUG__
NEXUS_Error rc = NxClient_Join(NULL);
ASSERT(!rc);
#else
NxClient_Join(NULL);
#endif
NxClient_UnregisterAcknowledgeStandby(NxClient_RegisterAcknowledgeStandby());
NEXUS_Platform_GetConfiguration(&_platformConfig);

Expand Down
3 changes: 2 additions & 1 deletion DisplaySettings/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ find_package(${NAMESPACE}Plugins REQUIRED)

add_library(${MODULE_NAME} SHARED
DisplaySettings.cpp
Module.cpp)
Module.cpp
../helpers/utils.cpp)

set_target_properties(${MODULE_NAME} PROPERTIES
CXX_STANDARD 11
Expand Down
42 changes: 25 additions & 17 deletions DisplaySettings/DisplaySettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,16 +185,19 @@ namespace WPEFramework {
void DisplaySettings::InitializeIARM()
{
LOGINFO();
IARM_Result_t res;
IARM_CHECK( IARM_Bus_Init("Display_Settings") );
IARM_CHECK( IARM_Bus_Connect() );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_RX_SENSE, DisplResolutionHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS, DisplResolutionHandler) );
//TODO(MROLLINS) localinput.cpp has PreChange guared with #if !defined(DISABLE_PRE_RES_CHANGE_EVENTS)
//Can we set it all the time from inside here and let localinput put guards around listening for our event?
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_RES_PRECHANGE,ResolutionPreChange) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, ResolutionPostChange) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, dsHdmiEventHandler) );

if (Utils::IARM::init())
{
IARM_Result_t res;
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_RX_SENSE, DisplResolutionHandler) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS, DisplResolutionHandler) );
//TODO(MROLLINS) localinput.cpp has PreChange guarded with #if !defined(DISABLE_PRE_RES_CHANGE_EVENTS)
//Can we set it all the time from inside here and let localinput put guards around listening for our event?
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_RES_PRECHANGE,ResolutionPreChange) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, ResolutionPostChange) );
IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, dsHdmiEventHandler) );
}

try
{
//TODO(MROLLINS) this is probably per process so we either need to be running in our own process or be carefull no other plugin is calling it
Expand All @@ -207,15 +210,21 @@ namespace WPEFramework {
}
}

//TODO(MROLLINS) - we need to install crash handler to ensure DeinitializeIARM gets called
void DisplaySettings::DeinitializeIARM()
{
LOGINFO();
IARM_Result_t res;
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_RX_SENSE) );
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS) );
IARM_CHECK( IARM_Bus_Disconnect() );
IARM_CHECK( IARM_Bus_Term() );

if (Utils::IARM::isConnected())
{
IARM_Result_t res;
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_RX_SENSE) );
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS) );
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_RES_PRECHANGE) );
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE) );
IARM_CHECK( IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG) );
}


try
{
//TODO(MROLLINS) this is probably per process so we either need to be running in our own process or be carefull no other plugin is calling it
Expand All @@ -226,7 +235,6 @@ namespace WPEFramework {
{
LOGINFO("device::Manager::DeInitialize failed");
}

}

void DisplaySettings::ResolutionPreChange(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
Expand Down
8 changes: 0 additions & 8 deletions DisplaySettings/DisplaySettings.json

This file was deleted.

2 changes: 1 addition & 1 deletion FrontPanel/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ add_library(${MODULE_NAME} SHARED
Module.cpp
../helpers/frontpanel.cpp
../helpers/powerstate.cpp
)
../helpers/utils.cpp)

set_target_properties(${MODULE_NAME} PROPERTIES
CXX_STANDARD 11
Expand Down
Loading

0 comments on commit ad0f9c5

Please sign in to comment.