/** * @brief UpiGetBackupMemorySize * * Get memory size used in backup module * * @return memory size */ _backup_u32_ UpiGetBackupMemorySize(void) { _backup_u32_ totalSize; _backup_u32_ tmp; totalSize = 0; #ifndef UG31XX_SHELL_ALGORITHM tmp = (_backup_u32_)sizeof(CheckBackupFile_orgCapData); totalSize = totalSize + tmp; UG31_LOGD("[%s]: memory size for CheckBackupFile_orgCapData = %d (%d)\n", __func__, (int)tmp, (int)totalSize); tmp = (_backup_u32_)sizeof(CheckBackupFile_orgSysData); totalSize = totalSize + tmp; UG31_LOGD("[%s]: memory size for CheckBackupFile_orgSysData = %d (%d)\n", __func__, (int)tmp, (int)totalSize); tmp = (_backup_u32_)sizeof(UpiWriteSuspendResumeData_buf[0]); totalSize = totalSize + tmp*BACKUP_MAX_LOG_SUSPEND_DATA; UG31_LOGD("[%s]: memory size for UpiWriteSuspendResumeData_buf = %d (%d)\n", __func__, (int)tmp, (int)totalSize); #endif ///< end of UG31XX_SHELL_ALGORITHM return (totalSize); }
/** * @brief UpdateBackupFile * * Update backup file * * @para data address of BackupDataType * @return CHECK_BACKUP_FILE_STS */ _backup_u8_ UpdateBackupFile(BackupDataType *data) { _upi_bool_ rtn; PrepareData(data); rtn = write_backup_file(data->backupFileName, data->backupBuffer, data->backupBufferSize); if(rtn == _UPI_FALSE_) { UG31_LOGD("[%s]: Write data to backup file fail.\n", __func__); return (CHECK_BACKUP_FILE_STS_WRITE_FAIL); } return (CHECK_BACKUP_FILE_STS_PASS); }
/** * @brief UpdateBackupFile * * Update backup file * * @para data address of BackupDataType * @return CHECK_BACKUP_FILE_STS */ _backup_u8_ UpdateBackupFile(BackupDataType *data) { _upi_bool_ rtn; PrepareData(data); #if defined (uG31xx_OS_WINDOWS) rtn = write_backup_file(data->backupFileName, data->backupBuffer, data->backupBufferSize); #else ///< else of defined (uG31xx_OS_WINDOWS) rtn = write_backup_file(ptrBackupFileName, data->backupBuffer, data->backupBufferSize); #endif ///< end of defined (uG31xx_OS_WINDOWS) if(rtn == _UPI_FALSE_) { UG31_LOGD("[%s]: Write data to backup file fail.\n", __func__); return (CHECK_BACKUP_FILE_STS_WRITE_FAIL); } return (CHECK_BACKUP_FILE_STS_PASS); }
/** * @brief CheckBackupFile * * Check backup file is consisted with IC or not * * @para data address of BackupDataType * @return CHECK_BACKUP_FILE_STS */ _backup_u8_ CheckBackupFile(BackupDataType *data) { CapacityDataType *orgCapData; SystemDataType *orgSysData; _upi_bool_ rtn; _backup_u32_ driverVer; _backup_u8_ rtnU8; _backup_u16_ volt1; _backup_u16_ volt2; /// [AT-PM] : Create buffer ; 02/21/2013 #ifndef UG31XX_SHELL_ALGORITHM orgCapData = &CheckBackupFile_orgCapData; orgSysData = &CheckBackupFile_orgSysData; #else ///< else of UG31XX_SHELL_ALGORITHM orgCapData = (CapacityDataType *)upi_malloc(sizeof(CapacityDataType)); orgSysData = (SystemDataType *)upi_malloc(sizeof(SystemDataType)); #endif ///< end of UG31XX_SHELL_ALGORITHM upi_memcpy(orgCapData, data->capData, sizeof(CapacityDataType)); upi_memcpy(orgSysData, data->sysData, sizeof(SystemDataType)); volt1 = data->backupVolt1; volt2 = data->backupVolt2; /// [AT-PM] : Get data from file ; 02/21/2013 rtn = read_backup_file(data->backupFileName, data->backupBuffer, data->backupBufferSize); if(rtn == _UPI_FALSE_) { UG31_LOGD("[%s]: Read data from backup file fail.\n", __func__); #ifdef UG31XX_SHELL_ALGORITHM upi_free(orgCapData); upi_free(orgSysData); #endif ///< end of UG31XX_SHELL_ALGORITHM return (CHECK_BACKUP_FILE_STS_READ_FAIL); } driverVer = ConvertData(data); /// [AT-PM] : Following information is not checked ; 02/21/2013 data->sysData->rmFromIC = orgSysData->rmFromIC; data->sysData->timeTagFromIC = orgSysData->timeTagFromIC; data->sysData->deltaCapFromIC = orgSysData->deltaCapFromIC; data->sysData->adc1ConvTime = orgSysData->adc1ConvTime; data->capData->preDsgCharge = orgCapData->preDsgCharge; /// [AT-PM] : Check data ; 02/21/2013 if(driverVer != UG31XX_DRIVER_VERSION) { UG31_LOGN("[%s]: Backup file version mismatched.\n", __func__); rtnU8 = CHECK_BACKUP_FILE_STS_VERSION_MISMATCH; } else if((upi_memcmp(data->backupCustomerSelfDef, data->sysData->ggbParameter->customerSelfDef, CELL_PARAMETER_STRING_LENGTH) != 0) || (upi_memcmp(data->backupProjectSelfDef, data->sysData->ggbParameter->projectSelfDef, CELL_PARAMETER_STRING_LENGTH) != 0)) { UG31_LOGN("[%s]: Backup file cell information mismatched.\n", __func__); rtnU8 = CHECK_BACKUP_FILE_STS_VERSION_MISMATCH; } else if((upi_memcmp(orgCapData, data->capData, sizeof(CapacityDataType)) != 0) || (upi_memcmp(orgSysData, data->sysData, sizeof(SystemDataType)) != 0) || (volt1 != data->backupVolt1) || (volt2 != data->backupVolt2)) { UG31_LOGN("[%s]: Backup file needs to be updated\n", __func__); rtnU8 = CHECK_BACKUP_FILE_STS_NEED_UPDATE; } else { rtnU8 = CHECK_BACKUP_FILE_STS_PASS; } #ifdef UG31XX_SHELL_ALGORITHM upi_free(orgCapData); upi_free(orgSysData); #endif ///< end of UG31XX_SHELL_ALGORITHM return (rtnU8); }