#define UA_RESULT_KEY "db/SyncML/oma-dm-service/UAresult"
//#define RB_ERR_CODE_MAX_COUNT 16
-#define RB_ERR_CODE_MAX_COUNT 7
+#define RB_ERR_CODE_MAX_COUNT 20
typedef struct _type_Redbend_OMADM_Table {
int result_code;
} type_redbend_omadm_table_s;
type_redbend_omadm_table_s redbend_omadm_table[RB_ERR_CODE_MAX_COUNT] = {
-/*
- {200, "Successful", "0", "S_RB_SUCCESS"},
- {410, "Firmware Update Failed", "1", "E_RB_*"}, // juhaki.park
- {402, "Corrupted Firmware Update Package", "8000000D", "E_RB_PKG_CORRUPTED"},
- {403, "Firmware Update Package - Device Mismatch", "80000002", "E_RB_BAD_PARAMS"},
- {403, "Firmware Update Package - Device Mismatch", "80000011", "E_RB_WRONG_UPI_VER"},
- {403, "Firmware Update Package - Device Mismatch", "80000012", "E_RB_WRONG_UPI_UPDATE"},
- {403, "Firmware Update Package - Device Mismatch", "80000013", "E_RB_UPDATE_SECTOR_SIG"},
- {404, "Failed Firmware Update Package Validation", "8001001A", "E_RB_NON_DP_FORMAT_NOT_SUPPORTED"},
- {404, "Failed Firmware Update Package Validation", "80010025", "E_RB_INVALID_DP_HEADER"},
- {404, "Failed Firmware Update Package Validation", "80010026", "E_RB_INVALID_DP_WRONG_SIGNATURE"},
- {404, "Failed Firmware Update Package Validation", "80010027", "E_RB_INVALID_DP"},
- {405, "Firmware Update Package Not Acceptable", "8000000B", "E_RB_PKG_TOO_SHORT"},
- {405, "Firmware Update Package Not Acceptable", "8000000C", "E_RB_PKG_TOO_LONG"},
- {405, "Firmware Update Package Not Acceptable", "8000000E", "E_RB_PKG_NOT_AUTHORIZED"},
- {410, "Firmware Update Failed", "**", "E_RB_*"},
- {502, "Firmware update fails due to device out of memory", "8000001E", "E_RB_NOT_ENOUGH_RAM"},
-*/
- {200, "Successful", "0", "S_RB_SUCCESS"},
- {410, "Firmware Update Failed", "FDBC", "E_RB_Bootloader_update_error"}, // juhaki.park
- {410, "Firmware Update Failed", "fdbc", "E_RB_Bootloader_update_error"}, // juhaki.park
- {410, "Firmware Update Failed", "FDBD", "E_RB_Boot_partition_update_error"}, // juhaki.park
- {410, "Firmware Update Failed", "fdbd", "E_RB_Boot_partition_update_error"}, // juhaki.park
- {410, "Firmware Update Failed", "FDBE", "E_RB_Platform_update_error"}, // juhaki.park
- {410, "Firmware Update Failed", "fdbe", "E_RB_Platform_update_error"}, // juhaki.park
+ {200, "Successful", "0", NULL},
+ {410, "UPI_DELTA_PATH_ERROR", "fdaa", NULL},
+ {410, "UPI_DELTA_PATH_LENGTH_ERROR", "fdab", NULL},
+ {410, "UPI_GUI_INIT_ERROR", "fdba", NULL},
+ {410, "UPI_VERSION_ERROR", "fdbb", NULL},
+ {410, "UPI_SBL_VERIFY_ERROR", "fdca", NULL},
+ {410, "UPI_BOOT_VERIFY_ERROR", "fdcb", "kernel verification fail"},
+ {410, "UPI_PLATFORM_VERIFY_ERROR", "fdcc", "platform verification fail"},
+ {410, "UPI_CSC_VERIFY_ERROR", "fdcd", "csc verification fail"},
+ {410, "UPI_MODEM_VERIFY_ERROR", "fdce", "modem verification fail"},
+ {410, "UPI_SBL_UPDATE_ERROR", "fdda", "bootloader update fail"},
+ {410, "UPI_BOOT_UPDATE_ERROR", "fddb", "kernel update fail"},
+ {410, "UPI_PLATFORM_UPDATE_ERROR", "fddc", "platform update fail"},
+ {410, "UPI_CSC_UPDATE_ERROR", "fddd", "csc update fail"},
+ {410, "UPI_MODEM_UPDATE_ERROR", "fdde", "modem update fail"},
+ {410, "UPI_INVALID_PARAM_ERROR", "fdea", NULL},
+ {410, "UPI_STATUSFLAG_ERROR", "fdeb", NULL},
+ {410, "UPI_DELTACOUNT_ERROR", "fdec", "no delta file"},
+ {410, "UPI_NO_DELTA_ERROR", "fdfa", NULL},
+ {410, "UPI_NO_UA_ERROR", "fdfb", NULL},
/*{0, NULL, NULL, NULL},*/
};
*/
}
-void slp_device_ctrl_get_fota_fail_ua_result(char * str_UA_file_position)
+char* slp_device_ctrl_get_fota_fail_ua_result()
{
_EXTERN_FUNC_ENTER;
FILE *file_des;
if (file_des == NULL) {
_DEBUG_INFO("fopen fail - cause file \n");
_EXTERN_FUNC_EXIT;
- return;
+ return NULL;
}
fseek(file_des, 0, SEEK_END);
lSize = ftell(file_des);
if (file_des != NULL)
fclose(file_des);
_EXTERN_FUNC_EXIT;
- return;
+ return NULL;
}
rewind(file_des);
char *str_result = NULL;
fclose(file_des);
_DEBUG_INFO("malloc fail \n");
_EXTERN_FUNC_EXIT;
- return;
+ return NULL;
}
memset(str_result, 0x0, sizeof(char)*(lSize+1)); // PREVENT
free(str_result);
_EXTERN_FUNC_EXIT;
- return;
+ return NULL;
}
if (str_result[lSize - 1] == '\n')
str_result[lSize - 1] = 0;
- if(lSize > 0) {
- int vconf_result = 0;
- char str_ua_result[128] = {0,};
- if(str_UA_file_position == NULL) {
- snprintf(str_ua_result,128,"NoData-%s", str_result);
- } else {
- snprintf(str_ua_result,128,"%s-%s", str_UA_file_position, str_result);
- }
- vconf_result = vconf_set_str(UA_RESULT_KEY, str_ua_result);
- if(vconf_result == 0) {
- _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, str_ua_result);
- } else {
- _DEBUG_VERBOSE("vconf_set_str() %s failed !!", UA_RESULT_KEY);
- }
- }
-
_DEBUG_INFO("str_result [%s] \n", str_result);
- if (str_result != NULL)
- free(str_result);
-
if (file_des != NULL)
fclose(file_des);
_EXTERN_FUNC_EXIT;
+ return str_result;
}
int slp_device_ctrl_get_fota_update_result()
int update_result = 400;
FILE *file_des;
- long lSize = 0; /*prevent */
+ long lSize = 0;
+ long file_data_size = 0;
size_t result;
//file_des = fopen("/opt/result", "rb");
char file_path[128] = {0,};
+
+ char * str_cause = NULL;
+ int vconf_result = 0;
+ char str_result_merge[128] = {0,};
+
snprintf(file_path,128, "%s/result", /*FOTA_SAVE_DIR*/ "/opt/usr/data/fota/save");
file_des = fopen(file_path, "rb");
_EXTERN_FUNC_EXIT;
return 400;
}
- if (str_result[lSize - 1] == '\n')
+ if (str_result[lSize - 1] == '\n') {
str_result[lSize - 1] = 0;
+ file_data_size = lSize -1;
+ } else {
+ file_data_size = lSize;
+ }
for (j = 0; j < RB_ERR_CODE_MAX_COUNT; j++) {
- if (strlen(str_result) == strlen(redbend_omadm_table[j].result_redbend)) {
+ //if (strlen(str_result) == strlen(redbend_omadm_table[j].result_redbend)) {
+ if (file_data_size == strlen(redbend_omadm_table[j].result_redbend)) {
if ((strcmp(str_result, redbend_omadm_table[j].result_redbend) == 0)) {
update_result = redbend_omadm_table[j].result_code;
match_found = true;
- _DEBUG_INFO("Result info [%s] \n", redbend_omadm_table[j].str_redbend);
-
- if(update_result != 200) {
- slp_device_ctrl_get_fota_fail_ua_result(redbend_omadm_table[j].str_redbend);
+ _DEBUG_INFO("Result meanning info [%s] \n", redbend_omadm_table[j].str_meanning);
+
+ ////////////////////////////////////////////////////////////////////////////////
+ if(redbend_omadm_table[j].str_redbend != NULL) {
+ str_cause = slp_device_ctrl_get_fota_fail_ua_result();
+ if(str_cause == NULL) {
+ vconf_result = vconf_set_str(UA_RESULT_KEY, redbend_omadm_table[j].str_meanning);
+ if(vconf_result == 0) {
+ _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, redbend_omadm_table[j].str_meanning);
+ } else {
+ _DEBUG_VERBOSE("vconf_set_str() %s failed !!", UA_RESULT_KEY);
+ }
+ } else {
+ if( strlen(str_cause) > 0 ) {
+ snprintf(str_result_merge, 120, "%s - %s", redbend_omadm_table[j].str_meanning, str_cause);
+ vconf_result = vconf_set_str(UA_RESULT_KEY, str_result_merge);
+ if(vconf_result == 0) {
+ _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, str_result_merge);
+ } else {
+ _DEBUG_VERBOSE("vconf_set_str() %s failed !!", UA_RESULT_KEY);
+ }
+ } else {
+ vconf_result = vconf_set_str(UA_RESULT_KEY, redbend_omadm_table[j].str_meanning);
+ if(vconf_result == 0) {
+ _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, redbend_omadm_table[j].str_meanning);
+ } else {
+ _DEBUG_VERBOSE("vconf_set_str() %s failed !!", UA_RESULT_KEY);
+ }
+ }
+ }
} else {
- int vconf_result = 0;
- vconf_result = vconf_set_str(UA_RESULT_KEY, redbend_omadm_table[j].str_redbend);
+ vconf_result = vconf_set_str(UA_RESULT_KEY, redbend_omadm_table[j].str_meanning);
if(vconf_result == 0) {
- _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, redbend_omadm_table[j].str_redbend);
+ _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, redbend_omadm_table[j].str_meanning);
} else {
_DEBUG_VERBOSE("vconf_set_str() %s failed !!", UA_RESULT_KEY);
}
}
+ ////////////////////////////////////////////////////////////////////////////////
break; /* If existing error code, break-out from the for-loop. */
}
update_result = 410;
}
+ if(!match_found) {
+ vconf_result = vconf_set_str(UA_RESULT_KEY, "No find");
+ if(vconf_result == 0) {
+ _DEBUG_VERBOSE("vconf_set_str() success %s [%s]!!", UA_RESULT_KEY, "No find");
+ } else {
+ _DEBUG_VERBOSE("vconf_set_str() %s failed !!", UA_RESULT_KEY);
+ }
+ }
+
+
+ if(str_cause != NULL)
+ free(str_cause);
if (str_result != NULL)
free(str_result);