Skip to content

Commit

Permalink
RDKTV-9417 : HDMI-CEC state does not persist
Browse files Browse the repository at this point in the history
Reason for change:
HDMI-CEC_state_does_not_persist
Test Procedure: None
Risks: Low

Change-Id: I6829081a0a2bf4a0e5bf1ff0ff8d443ccccbd749
Signed-off-by:Anooj Cheriyan <[email protected]>
  • Loading branch information
acheri988 committed Jul 28, 2021
1 parent f271bf1 commit dfd13a8
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 175 deletions.
23 changes: 2 additions & 21 deletions HdmiCec/HdmiCec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ namespace WPEFramework
else
{
setEnabled(false);
persistSettings(false);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_ENABLED, JsonValue(false));
}
}

Expand Down Expand Up @@ -307,32 +307,13 @@ namespace WPEFramework
return cecSettingEnabled;
}

void HdmiCec::persistSettings(bool enableStatus)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting[CEC_SETTING_ENABLED] = enableStatus;

cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCec::setEnabled(bool enabled)
{
LOGWARN("Entered setEnabled ");

if (cecSettingEnabled != enabled)
{
persistSettings(enabled);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_ENABLED, JsonValue(enabled));
}
if(true == enabled)
{
Expand Down
69 changes: 3 additions & 66 deletions HdmiCecSink/HdmiCecSink.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1097,7 +1097,7 @@ namespace WPEFramework
std::string osd = parameters["name"].String();
LOGINFO("setOSDNameWrapper osdName: %s",osd.c_str());
osdName = osd.c_str();
persistOSDName(osd.c_str());
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_OSD_NAME, JsonValue(osd.c_str()));
}
else
{
Expand Down Expand Up @@ -1280,7 +1280,7 @@ namespace WPEFramework
appVendorId = {(uint8_t)(vendorID >> 16 & 0xff),(uint8_t)(vendorID>> 8 & 0xff),(uint8_t) (vendorID & 0xff)};
LOGINFO("appVendorId : %s vendorID :%x \n",appVendorId.toString().c_str(), vendorID );

persistVendorId(vendorID);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_VENDOR_ID, JsonValue(vendorID));
}
else
{
Expand Down Expand Up @@ -1459,76 +1459,13 @@ namespace WPEFramework
return cecSettingEnabled;
}

void HdmiCecSink::persistSettings(bool enableStatus)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_ENABLED] = enableStatus;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCecSink::persistOSDName(const char *name)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_OSD_NAME] = name;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCecSink::persistVendorId(unsigned int vendorId)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_VENDOR_ID] = vendorId;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCecSink::setEnabled(bool enabled)
{
LOGINFO("Entered setEnabled: %d cecSettingEnabled :%d ",enabled, cecSettingEnabled);

if (cecSettingEnabled != enabled)
{
persistSettings(enabled);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_ENABLED, JsonValue(enabled));
cecSettingEnabled = enabled;
}
if(true == enabled)
Expand Down
92 changes: 4 additions & 88 deletions HdmiCec_2/HdmiCec_2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -704,7 +704,7 @@ namespace WPEFramework
std::string osd = parameters["name"].String();
LOGINFO("setOSDNameWrapper osdName: %s",osd.c_str());
osdName = osd.c_str();
persistOSDName(osd.c_str());
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_OSD_NAME, JsonValue(osd.c_str()));
}
else
{
Expand Down Expand Up @@ -742,7 +742,7 @@ namespace WPEFramework
appVendorId = {(uint8_t)(vendorID >> 16 & 0xff),(uint8_t)(vendorID>> 8 & 0xff),(uint8_t) (vendorID & 0xff)};
LOGINFO("appVendorId : %s vendorID :%x \n",appVendorId.toString().c_str(), vendorID );

persistVendorId(vendorID);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_VENDOR_ID, JsonValue(vendorID));
}
else
{
Expand Down Expand Up @@ -872,97 +872,13 @@ namespace WPEFramework
return cecSettingEnabled;
}

void HdmiCec_2::persistSettings(bool enableStatus)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_ENABLED] = enableStatus;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCec_2::persistOTPSettings(bool enableStatus)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_OTP_ENABLED] = enableStatus;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCec_2::persistOSDName(const char *name)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_OSD_NAME] = name;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCec_2::persistVendorId(unsigned int vendorId)
{
Core::File file;
file = CEC_SETTING_ENABLED_FILE;

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[CEC_SETTING_VENDOR_ID] = vendorId;
cecSetting.IElement::ToFile(file);

file.Close();

return;
}

void HdmiCec_2::setEnabled(bool enabled)
{
LOGINFO("Entered setEnabled ");

if (cecSettingEnabled != enabled)
{
persistSettings(enabled);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_ENABLED, JsonValue(enabled));
cecSettingEnabled = enabled;
}
if(true == enabled)
Expand All @@ -981,7 +897,7 @@ namespace WPEFramework
if (cecOTPSettingEnabled != enabled)
{
LOGINFO("persist setOTPEnabled ");
persistOTPSettings(enabled);
Utils::persistJsonSettings (CEC_SETTING_ENABLED_FILE, CEC_SETTING_OTP_ENABLED, JsonValue(enabled));
cecOTPSettingEnabled = enabled;
}
return;
Expand Down
1 change: 1 addition & 0 deletions helpers/frontpanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,7 @@ namespace WPEFramework
m_preferencesHash.IElement::ToFile(file);

file.Close();
Utils::syncPersistFile (FP_SETTINGS_FILE_JSON);
}

void CFrontPanel::loadPreferences()
Expand Down
36 changes: 36 additions & 0 deletions helpers/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -381,3 +381,39 @@ bool Utils::isValidInt(char* x)
return Checked;
}

void Utils::syncPersistFile (const string file) {
FILE * fp = NULL;
fp = fopen(file.c_str(), "r");
if (fp == NULL) {
printf("fopen NULL\n");
return;
}
fflush(fp);
fsync(fileno(fp));
fclose(fp);
}

void Utils::persistJsonSettings(const string strFile, const string strKey, const JsonValue& jsValue)
{
Core::File file;
file = strFile.c_str();

file.Open(false);
if (!file.IsOpen())
file.Create();

JsonObject cecSetting;
cecSetting.IElement::FromFile(file);
file.Destroy();
file.Create();
cecSetting[strKey.c_str()] = jsValue;
cecSetting.IElement::ToFile(file);

file.Close();

//Sync the settings
Utils::syncPersistFile (strFile);

return;
}

2 changes: 2 additions & 0 deletions helpers/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,8 @@ namespace Utils

bool getRFCConfig(char* paramName, RFC_ParamData_t& paramOutput);
bool isValidInt(char* x);
void syncPersistFile (const string file);
void persistJsonSettings(const string file, const string strKey, const JsonValue& jsValue);

//class for std::thread RAII
class ThreadRAII
Expand Down

0 comments on commit dfd13a8

Please sign in to comment.