diff --git a/config-arm/TR181-USGv2.XML b/config-arm/TR181-USGv2.XML index 7e717f14..7235f36a 100644 --- a/config-arm/TR181-USGv2.XML +++ b/config-arm/TR181-USGv2.XML @@ -539,6 +539,28 @@ true + + + + X_RDKCENTRAL-COM_FwDwld_AvlMem_RsrvThreshold + + unsignedInt + + uint32 + + true + + + + + X_RDKCENTRAL-COM_FwDwld_ImageProcMemPercent + + unsignedInt + + uint32 + + true + diff --git a/source-arm/TR-181/board_sbapi/Makefile.am b/source-arm/TR-181/board_sbapi/Makefile.am index 92a3e78b..e0f98e3d 100644 --- a/source-arm/TR-181/board_sbapi/Makefile.am +++ b/source-arm/TR-181/board_sbapi/Makefile.am @@ -114,7 +114,7 @@ if CORE_NET_LIB_FEATURE_SUPPORT libCcspPandM_board_sbapi_la_LDFLAGS += -lnet endif -libCcspPandM_board_sbapi_la_LDFLAGS = -lccsp_common -ltime_conversion -lwebconfig_framework -lmsgpackc +libCcspPandM_board_sbapi_la_LDFLAGS = -lccsp_common -ltime_conversion -lwebconfig_framework -lmsgpackc -lfw_download_chk if FEATURE_HOTSPOT_SUPPORT libCcspPandM_board_sbapi_la_LDFLAGS += -lHotspotApi endif diff --git a/source-arm/TR-181/board_sbapi/cosa_deviceinfo_apis.c b/source-arm/TR-181/board_sbapi/cosa_deviceinfo_apis.c index e4dbb6af..d3877691 100644 --- a/source-arm/TR-181/board_sbapi/cosa_deviceinfo_apis.c +++ b/source-arm/TR-181/board_sbapi/cosa_deviceinfo_apis.c @@ -98,6 +98,7 @@ #include "cosa_drg_common.h" #include "safec_lib_common.h" #include "ansc_string_util.h" +#include "fw_download_check.h" #define DEVICE_PROPERTIES "/etc/device.properties" #define PARTNERS_INFO_FILE "/nvram/partners_defaults.json" @@ -4732,6 +4733,12 @@ FirmwareDownloadAndFactoryReset(void* arg) } CcspTraceWarning(("%s: ImageName %s, url %s\n", __FUNCTION__, Imagename, URL)); + if(can_proceed_fw_download() == FW_DWNLD_MEMCHK_NOT_ENOUGH_MEM) + { + CcspTraceError(("FirmwareDownloadAndFactoryReset : Not enough memory to proceed firmware download\n")); + commonSyseventSet("fw_update_inprogress", "false"); + return NULL; + } if( RETURN_ERR == cm_hal_FWupdateAndFactoryReset( URL, Imagename )) { CcspTraceError(("FirmwareDownloadAndFactoryReset :cm_hal_FWupdateAndFactoryReset failed for webpa.\n")); diff --git a/source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c b/source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c index 99468f6e..ecc26078 100644 --- a/source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c +++ b/source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c @@ -792,6 +792,22 @@ DeviceInfo_GetParamUlongValue CosaDmlDiGetFactoryResetCount(NULL,puLong); return TRUE; } + + if (strcmp(ParamName, "X_RDKCENTRAL-COM_FwDwld_AvlMem_RsrvThreshold") == 0) + { + char buf[10]= {0}; + syscfg_get( NULL, "FwDwld_AvlMem_RsrvThreshold", buf, sizeof(buf)); + *puLong = atoi(buf); + return TRUE; + } + + if (strcmp(ParamName, "X_RDKCENTRAL-COM_FwDwld_ImageProcMemPercent") == 0) + { + char buf[10]= {0}; + syscfg_get( NULL, "FwDwld_ImageProcMemPercent", buf, sizeof(buf)); + *puLong = atoi(buf); + return TRUE; + } /* CcspTraceWarning(("Unsupported parameter '%s'\n", ParamName)); */ return FALSE; @@ -1402,7 +1418,23 @@ DeviceInfo_SetParamUlongValue fprintf(fp, "%s\n", buff); fclose(fp); return TRUE; - } + } + + if (strcmp(ParamName, "X_RDKCENTRAL-COM_FwDwld_AvlMem_RsrvThreshold") == 0) + { + if (syscfg_set_u_commit (NULL, "FwDwld_AvlMem_RsrvThreshold", uValue) != 0) { + return FALSE; + } + return TRUE; + } + + if (strcmp(ParamName, "X_RDKCENTRAL-COM_FwDwld_ImageProcMemPercent") == 0) + { + if (syscfg_set_u_commit (NULL, "FwDwld_ImageProcMemPercent", uValue) != 0) { + return FALSE; + } + return TRUE; + } /* CcspTraceWarning(("Unsupported parameter '%s'\n", ParamName)); */ return FALSE; }