Index: firmware/App/Services/NVRecordsDD.c =================================================================== diff -u -r43e60a63eae841e599ff9106f43177a8f63d22be -r724f9a0cf2b603e988a519420bf95f4aa4da4b93 --- firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 43e60a63eae841e599ff9106f43177a8f63d22be) +++ firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 724f9a0cf2b603e988a519420bf95f4aa4da4b93) @@ -13,7 +13,7 @@ ***************************************************************************/ #include // For memcpy -#include "Common.h" +//#include "Common.h" #include "DDDefs.h" #include "NVMsgQ.h" #include "NVRecordsDD.h" @@ -87,7 +87,6 @@ { DD_PRES_SENSORS_CAL_RECORD_T presSensorsCalRecord; ///< DG pressure sensors. DD_FLOW_SENSORS_CAL_RECORD_T flowSensorsCalRecord; ///< DG flow sensors. - DD_LOAD_CELLS_CAL_RECORD_T loadCellsCalRecord; ///< DG load cells. DD_TEMP_SENSORS_CAL_RECORD_T tempSensorsCalRecord; ///< DG temperature sensors. DD_CONC_PUMPS_CAL_RECORD_T concentratePumpsRecord; ///< DG concentrate pumps. DD_DRAIN_PUMP_CAL_RECORD_T drainPumpRecord; ///< DG drain pump. @@ -128,14 +127,6 @@ U16 crc; ///< CRC for the DG service structure. } DD_SERVICE_GROUP_T; -/// DG scheduler record structure -typedef struct -{ - DD_SCHEDULED_RUN_RECORD_T ddScheduledRun; ///< DG scheduled runs. - U08 padding[ RECORD_PADDING_LENGTH(DD_SCHEDULED_RUN_RECORD_T, MAX_EEPROM_WRITE_BUFFER_BYTES) ]; ///< DG scheduled run group padding. - U16 crc; ///< CRC for the DG scheduled runs structure. -} DD_SCHEDULED_RUNS_GROUP_T; - /// DG usage record structure typedef struct { @@ -144,26 +135,6 @@ U16 crc; ///< CRC for the DG usage info structure. } DD_USAGE_INFO_GROUP_T; -/// DG heaters record -typedef struct -{ - DD_HEATERS_RECORD_T ddHeatersInfo; ///< DG heaters info record. - U08 padding[ RECORD_PADDING_LENGTH(DD_HEATERS_RECORD_T, MAX_EEPROM_WRITE_BUFFER_BYTES) ]; ///< DG heater info group padding. - U16 crc; ///< CRC for the DG heaters info structure. -} DD_HEATERS_INFO_GROUP_T; - -#ifndef _RELEASE_ -/// DG software configurations group -typedef struct -{ - DD_SW_CONFIG_RECORD_T ddSWConfigsRecord; ///< Software configurations record. - - // Since the software configurations are one byte, Num_of was used for the length of the lists - U08 padding[ RECORD_PADDING_LENGTH(DD_SW_CONFIG_RECORD_T, MAX_EEPROM_WRITE_BUFFER_BYTES) ]; ///< Software configurations group padding. - U16 crc; ///< Software configurations CRC. -} DD_SW_CONFIG_GROUP_T; -#endif - #pragma pack(pop) // ********** private data ********** @@ -172,25 +143,15 @@ static DD_CALIBRATION_RECORD_T ddCalibrationRecord; ///< DG calibration record structure (including padding and final CRC). static DD_SYSTEM_GROUP_T ddSystemGroup; ///< DG system group structure (including padding and final CRC). static DD_SERVICE_GROUP_T ddServiceGroup; ///< DG service group structure (including padding and final CRC). -static DD_SCHEDULED_RUNS_GROUP_T ddScheduledRunsGroup; ///< DG scheduled run structure (including padding and final CRC). static DD_USAGE_INFO_GROUP_T ddUsageInfoGroup; ///< DG usage info structure (including padding and final CRC). -static DD_HEATERS_INFO_GROUP_T ddHeatersInfoGroup; ///< DG heaters info structure (including padding and final CRC). -#ifndef _RELEASE_ -static DD_SW_CONFIG_GROUP_T ddSWConfigGroup; ///< DG Software configurations structure(including padding and final CRC). -#endif // Process records specifications const PROCESS_RECORD_SPECS_T RECORDS_SPECS[ NUM_OF_NVDATMGMT_RECORDS_JOBS ] = { // Start address Size of the job Max write bytes per job Max read bytes per job Record structure pointer Record CRC pointer Event calibration record update {CAL_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_CALIBRATION_RECORD_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_CALIBRATION_RECORD_T), (U08*)&ddCalibrationRecord, (U08*)&ddCalibrationRecord.crc, DD_EVENT_CAL_RECORD_UPDATE }, // NVDATAMGMT_CALIBRATION_RECORD {SYSTEM_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_SYSTEM_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SYSTEM_GROUP_T), (U08*)&ddSystemGroup, (U08*)&ddSystemGroup.crc, DD_EVENT_SYSTEM_RECORD_UPDATE }, // NVDATAMGMT_SYSTEM_RECORD {SERVICE_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_SERVICE_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SERVICE_GROUP_T), (U08*)&ddServiceGroup, (U08*)&ddServiceGroup.crc, DD_EVENT_SERVICE_UPDATE }, // NVDATAMGMT_SERVICE_RECORD - {DD_SCHEDULED_RUNS_START_ADDRESS, sizeof(DD_SCHEDULED_RUNS_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SCHEDULED_RUNS_GROUP_T),(U08*)&ddScheduledRunsGroup, (U08*)&ddScheduledRunsGroup.crc, DD_EVENT_SCHEDULED_RUNS_UPDATE }, // NVDATAMGMT_SCHEDULER_RECORD - {DD_HEATERS_INFO_START_ADDRESS, sizeof(DD_HEATERS_INFO_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_HEATERS_INFO_GROUP_T), (U08*)&ddHeatersInfoGroup, (U08*)&ddHeatersInfoGroup.crc, DD_EVENT_HEATERS_INFO_UPDATE }, // NVDATAMGMT_HEATERS_INFO_RECORD {DD_USAGE_INFO_START_ADDRESS, sizeof(DD_USAGE_INFO_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_USAGE_INFO_GROUP_T), (U08*)&ddUsageInfoGroup, (U08*)&ddUsageInfoGroup.crc, DD_EVENT_USAGE_INFO_UPDATE }, // NVDATAMGMT_USAGE_INFO_RECORD -#ifndef _RELEASE_ - {SW_CONFIGS_START_ADDRESS, sizeof(DD_SW_CONFIG_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SW_CONFIG_GROUP_T), (U08*)&ddSWConfigGroup, (U08*)&ddSWConfigGroup.crc, DD_EVENT_SW_CONFIG_UPDATE } // NVDATAMGMT_SW_CONFIG_RECORD -#endif }; static NVDATAMGMT_SELF_TEST_STATE_T nvDataMgmtSelfTestState; ///< NVDataMgmt self-test state variable. @@ -222,9 +183,6 @@ static BOOL isDDAccelerometerSensorRecordValid( DD_ACCEL_SENSOR_CAL_RECORD_T* record ); static BOOL isDDHeatingCalRecordValid( DD_HEATING_CAL_RECORD_T* record ); static BOOL isDDFillConductiviesRecordValid( DD_ACID_BICARB_FILL_COND_VALUES_T* record, DD_ACID_TYPES_T acidType, DD_FILL_COND_OPS_T operation ); -#ifndef _RELEASE_ -static BOOL isSWConfigRecordValid( void ); -#endif void initNVRecordsDD( void ) { @@ -309,7 +267,6 @@ BOOL hasSystemRecordPassed = TRUE; BOOL hasServiceRecordPassed = TRUE; BOOL hasInstitutionalRecordPassed = TRUE; - BOOL hasSWConfigRecordPassed = TRUE; BOOL hasUsageRecordPassed = TRUE; updateRecordReadStatus( NVDATAMGMT_RECORDS_CRC_CHECKED ); @@ -319,9 +276,6 @@ hasSystemRecordPassed = isDDSystemRecordValid(); hasServiceRecordPassed = isDDServiceRecordValid(); hasUsageRecordPassed = isDDUsageRecordValid(); -#ifndef _RELEASE_ - hasSWConfigRecordPassed = isSWConfigRecordValid(); -#endif // If any of the records did not pass, they should be filled // with benign values. After that, schedule a write to sector 0 @@ -330,23 +284,15 @@ ( FALSE == hasSystemRecordPassed ) || ( FALSE == hasInstitutionalRecordPassed ) ) { enqueueSector0Records(); - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_CALIBRATION_RECORD ].nvEvent, 0, 0 ) - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SYSTEM_RECORD ].nvEvent, 0, 0 ) - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SERVICE_RECORD ].nvEvent, 0, 0 ) + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_CALIBRATION_RECORD ].nvEvent, 0, 0 ); + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SYSTEM_RECORD ].nvEvent, 0, 0 ); + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SERVICE_RECORD ].nvEvent, 0, 0 ); } -#ifndef _RELEASE_ - if ( FALSE == hasSWConfigRecordPassed ) - { - enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_SW_CONFIG_RECORD ); - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SW_CONFIG_RECORD ].nvEvent, 0, 0 ) - } -#endif - if ( FALSE == hasUsageRecordPassed ) { enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_USAGE_INFO_RECORD ); - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ) + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ); } // Check if the records' entire CRCs as well as the individual CRCs passed @@ -415,39 +361,8 @@ return status; } -#ifndef _RELEASE_ /*********************************************************************//** * @brief - * The isSWConfigRecordValid function checks the validity of the software - * configuration record. - * @details Inputs: ddSWConfigGroup, hdSWConfigGroup - * @details Outputs: ddSWConfigGroup, hdSWConfigGroup - * @return TRUE if the DG system record is valid otherwise FALSE - *************************************************************************/ -static BOOL isSWConfigRecordValid( void ) -{ - BOOL status = TRUE; - - U16 calcCRC = crc16( (U08*)&ddSWConfigGroup, sizeof( DD_SW_CONFIG_GROUP_T ) - sizeof( U16 ) ); - U16 recordCRC = ddSWConfigGroup.crc; - - if ( calcCRC != recordCRC ) - { - memset( (U08*)&ddSWConfigGroup, 0, sizeof( DD_SW_CONFIG_GROUP_T ) ); - - // Recalculate the CRC with the default values - ddSWConfigGroup.crc = crc16( (U08*)&ddSWConfigGroup, sizeof( DD_SW_CONFIG_GROUP_T ) - sizeof( U16 ) ); - - // Set the to FALSE since the record is not valid - status = FALSE; - } - - return status; -} -#endif - -/*********************************************************************//** - * @brief * The isDDSystemRecordValid function checks the validity of the DG system * record. * @details Inputs: ddSystemGroup.ddSystemRecord @@ -574,7 +489,7 @@ // Get the calibration record of the hardware (i.e. pressure sensor) DD_PRES_SENSORS_CAL_RECORD_T* pressure = &ddCalibrationRecord.ddCalibrationGroups.presSensorsCalRecord; // The ones that are an array, are looped through - for ( i = 0; i < NUM_OF_CAL_DATA_PRES_SENSORS; i++ ) + for ( i = 0; i < NUM_OF_PRESSURE_SENSORS; i++ ) { // Get calibration payload and assign it to a pointer record = (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->pressureSensors[ i ]; @@ -587,12 +502,6 @@ isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } - for ( i = 0; i < PRES_SENSORS_RESERVED_SPACE_COUNT; i++ ) - { - // Benign the pressures reserved spaces - memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); - } - DD_FLOW_SENSORS_CAL_RECORD_T* flow = &ddCalibrationRecord.ddCalibrationGroups.flowSensorsCalRecord; for ( i = 0; i < NUM_OF_CAL_DATA_FLOW_SENSORS; i++ ) { @@ -601,20 +510,6 @@ isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } - for ( i = 0; i < FLOW_SENSROS_RESERVED_SPACE_COUNT; i++ ) - { - // Benign the the flow sensors reserved spaces - memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&flow->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); - } - - DD_LOAD_CELLS_CAL_RECORD_T* load = &ddCalibrationRecord.ddCalibrationGroups.loadCellsCalRecord; - for ( i = 0; i < NUM_OF_CAL_DATA_LOAD_CELLS; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&load->loadCells[ i ]; - isHardwareRecordValid = isPolynomialRecordValid( record ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - } - DD_TEMP_SENSORS_CAL_RECORD_T* temperature = &ddCalibrationRecord.ddCalibrationGroups.tempSensorsCalRecord; for ( i = 0; i < NUM_OF_CAL_DATA_TEMP_SENSORS; i++ ) { @@ -623,12 +518,6 @@ isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } - for ( i = 0; i < TEMP_SENSORS_RESERVED_SPACE_COUNT; i++ ) - { - // Benign the temperature sensors reserved spaces - memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); - } - DD_CONC_PUMPS_CAL_RECORD_T* concPump = &ddCalibrationRecord.ddCalibrationGroups.concentratePumpsRecord; for ( i = 0; i < NUM_OF_CAL_DATA_DD_CONC_PUMPS; i++ ) { @@ -958,9 +847,6 @@ if ( calcCRC != recordCRC ) { // CRC did not pass so set all values to default - record->reservedSpace1 = RECORD_DEFAULT_CONST; - record->reservedSpace2 = RECORD_DEFAULT_CONST; - record->reservedSpace3 = RECORD_DEFAULT_CONST; record->calibrationTime = RECORD_DEFAULT_TIME; record->crc = crc16 ( (U08*)record, sizeof(DD_FILTER_CAL_RECORD_T) - sizeof(U16) ); @@ -989,8 +875,6 @@ if ( calcCRC != recordCRC ) { // CRC did not pass so set all values to default - record->reservedSpace1 = RECORD_DEFAULT_CONST; - record->reservedSpace2 = RECORD_DEFAULT_CONST; record->calibrationTime = RECORD_DEFAULT_TIME; record->crc = crc16 ( (U08*)record, sizeof(DD_FAN_CAL_RECORD_T) - sizeof(U16) ); @@ -1213,7 +1097,7 @@ status = TRUE; enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_USAGE_INFO_RECORD ); - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ) + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ); } else if ( ++usageWriteTries > MAX_NUM_OF_WRITE_TRIES ) { @@ -1255,8 +1139,8 @@ enqueueSector0Records(); enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_USAGE_INFO_RECORD ); // Both the usage and service records have been updated - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ) - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SERVICE_RECORD ].nvEvent, 0, 0 ) + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ); + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SERVICE_RECORD ].nvEvent, 0, 0 ); status = TRUE; } @@ -1289,21 +1173,13 @@ switch ( nvData ) { - case GET_CAL_PRESSURE_SENOSRS: nvDataStartPtr = (U08*)&ddCalibrationRecord.ddCalibrationGroups.presSensorsCalRecord; nvDataLength = sizeof( ddCalibrationRecord.ddCalibrationGroups.presSensorsCalRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) isNVDataInvalid |= ( 0 == ddCalibrationRecord.ddCalibrationGroups.presSensorsCalRecord.pressureSensors[ i ].calibrationTime ? TRUE : FALSE ); break; - case GET_CAL_LOAD_CELL_SENSORS: - nvDataStartPtr = (U08*)&ddCalibrationRecord.ddCalibrationGroups.loadCellsCalRecord; - nvDataLength = sizeof( ddCalibrationRecord.ddCalibrationGroups.loadCellsCalRecord ); - for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataInvalid |= ( 0 == ddCalibrationRecord.ddCalibrationGroups.loadCellsCalRecord.loadCells[ i ].calibrationTime ? TRUE : FALSE ); - break; - case GET_CAL_FLOW_SENSORS: nvDataStartPtr = (U08*)&ddCalibrationRecord.ddCalibrationGroups.flowSensorsCalRecord; nvDataLength = sizeof( ddCalibrationRecord.ddCalibrationGroups.flowSensorsCalRecord ); @@ -1408,11 +1284,6 @@ } break; - case GET_INF_HEATERS_RECORD: - nvDataStartPtr = (U08*)&ddHeatersInfoGroup.ddHeatersInfo; - nvDataLength = sizeof( ddHeatersInfoGroup.ddHeatersInfo ); - break; - case GET_SYS_RECORD: nvDataStartPtr = (U08*)&ddSystemGroup.ddSystemRecord; nvDataLength = sizeof( ddSystemGroup.ddSystemRecord ); @@ -1423,11 +1294,6 @@ nvDataLength = sizeof( ddServiceGroup.ddServiceRecord ); break; - case GET_SRR_RECORD: - nvDataStartPtr = (U08*)&ddScheduledRunsGroup.ddScheduledRun; - nvDataLength = sizeof( ddScheduledRunsGroup.ddScheduledRun ); - break; - case GET_USAGE_RECORD: nvDataStartPtr = (U08*)&ddUsageInfoGroup.ddUsageInfo; nvDataLength = sizeof( ddUsageInfoGroup.ddUsageInfo ); @@ -1456,18 +1322,7 @@ } else { -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_CAL_CHECK ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - activateAlarmNoData( nvAlarm ); - } -#ifndef _RELEASE_ - else - { - isNVDataInvalid = FALSE; - } -#endif + activateAlarmNoData( nvAlarm ); } } @@ -1535,28 +1390,5 @@ isSelfTestReadRecordsDone = value; } -#ifndef _RELEASE_ -/*********************************************************************//** - * @brief - * The getSoftwareConfigStatus function returns the status of a software - * configuration. - * @details Inputs: swConfigsList - * @details Outputs: none - * @param config which is the configuration of the that its status is requested - * @return status of the software configuration (0 or 1) - *************************************************************************/ -U08 getSoftwareConfigStatus( SOFTWARE_CONFIG_T config ) -{ - U08 value = 0; - - // If the build is not a release, get the value from the software configurations list - // If the build is a release, the configuration not matter what its value is kept in - // the NV RAM, it returns a 0 which is the configuration is disabled - value = ddSWConfigGroup.ddSWConfigsRecord.swConfigs[ config ]; - - return value; -} -#endif - /**@}*/