Index: firmware/App/Services/NVRecordsDD.c =================================================================== diff -u -r2f1c3a32a7e6f196fb0ca6f28fdb91b5ff237c07 -r3b7c92408ac36d501987a526bca1dab2bc9782eb --- firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 2f1c3a32a7e6f196fb0ca6f28fdb91b5ff237c07) +++ firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 3b7c92408ac36d501987a526bca1dab2bc9782eb) @@ -13,6 +13,7 @@ ***************************************************************************/ #include // For memcpy +#include "Common.h" #include "DDDefs.h" #include "NVJobQ.h" #include "NVMessagingDD.h" @@ -170,7 +171,7 @@ // Start address Size of the job Record structure pointer Record CRC pointer Event calibration record update {SYSTEM_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_SYSTEM_GROUP_T), (U08*)&ddSystemGroup, (U08*)&ddSystemGroup.crc, DD_EVENT_SYSTEM_RECORD_UPDATE }, // NVM_SYSTEM_RECORD {SERVICE_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_SERVICE_GROUP_T), (U08*)&ddServiceGroup, (U08*)&ddServiceGroup.crc, DD_EVENT_SERVICE_UPDATE }, // NVM_SERVICE_RECORD - {CAL_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_CALIBRATION_GROUP_T), (U08*)&ddCalibrationGroup, (U08*)&ddCalibrationGroup.crc, DD_EVENT_CAL_RECORD_UPDATE }, // NVM_CALIBRATION_RECORD + {CAL_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_CALIBRATION_GROUP_T), (U08*)&ddCalibrationGroup, (U08*)&ddCalibrationGroup.crc, DD_EVENT_CAL_RECORD_UPDATE }, // NVM_CALIBRATION_RECORD {INSTIT_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_INSTITUTIONAL_GROUP_T), (U08*)&ddInstitutionalGroup, (U08*)&ddInstitutionalGroup.crc, DD_EVENT_INSTIT_RECORD_UPDATE }, // NVM_INSTITUTIONAL_RECORD {USAGE_INFO_START_ADDRESS, sizeof(DD_USAGE_INFO_GROUP_T), (U08*)&ddUsageInfoGroup, (U08*)&ddUsageInfoGroup.crc, DD_EVENT_USAGE_INFO_UPDATE }, // NVM_USAGE_INFO_RECORD }; @@ -232,7 +233,7 @@ static void initDDServiceRecord( void ); static void initDDInstitutionalRecord( void ); static void initDDUsageRecord( void ); -static void initDDCalibrationRecord( void ); +//static void initDDCalibrationRecord( void ); static void updateRecordPadding( NVM_RECORD_TYPE_T recType ); @@ -254,18 +255,18 @@ nvmSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; usageWriteTries = 0; - initDDSystemRecord(); - initDDServiceRecord(); - initDDInstitutionalRecord(); - initDDCalibrationRecord(); - initDDUsageRecord(); - - int i; - for( i = 0; i < NUM_OF_NVM_RECORD_TYPES; i++ ) - { - updateRecordPadding( (NVM_RECORD_TYPE_T)i ); - updateRecordCRC( ( NVM_RECORD_TYPE_T )i); - } +// initDDSystemRecord(); +// initDDServiceRecord(); +// initDDInstitutionalRecord(); +// initDDCalibrationRecord(); +// initDDUsageRecord(); +// +// int i; +// for( i = 0; i < NUM_OF_NVM_RECORD_TYPES; i++ ) +// { +// updateRecordPadding( (NVM_RECORD_TYPE_T)i ); +// updateRecordCRC( ( NVM_RECORD_TYPE_T )i); +// } } /*********************************************************************//** @@ -486,6 +487,9 @@ // CRC did not pass so set all values to default initDDSystemRecord(); + // Initialize the padding + updateRecordPadding( NVM_SYSTEM_RECORD ); + // Recalculate the CRC with the default values updateRecordCRC( NVM_SYSTEM_RECORD ); @@ -528,6 +532,9 @@ // CRC did not pass so set all values to default initDDServiceRecord(); + // Initialize the padding + updateRecordPadding( NVM_SERVICE_RECORD ); + // Recalculate the CRC with the default values updateRecordCRC( NVM_SERVICE_RECORD ); @@ -562,6 +569,9 @@ // CRC did not pass so set all values to default initDDInstitutionalRecord(); + // Initialize the padding + updateRecordPadding( NVM_INSTITUTIONAL_RECORD ); + // Recalculate the CRC with the default values updateRecordCRC( NVM_INSTITUTIONAL_RECORD ); @@ -596,6 +606,9 @@ // CRC did not pass so set all values to default initDDUsageRecord(); + // Initialize the padding + updateRecordPadding( NVM_USAGE_INFO_RECORD ); + // Recalculate the CRC with the default values updateRecordCRC( NVM_USAGE_INFO_RECORD ); status = FALSE; @@ -674,14 +687,14 @@ isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; DD_ACID_CONCENTRATES_RECORD_T* acidConc = &ddCalibrationGroup.ddCalibrationRecord.acidConcentratesRecord; - for ( i = 0; i < NUM_OF_CAL_DATA_ACID_CONCENTRATES; i++ ) + for ( i = 0; i < NUM_OF_ACID_TYPE; i++ ) { isHardwareRecordValid = isDDAcidConcentrateRecordValid( &acidConc->acidConcentrate[ i ] ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; } DD_BICARB_CONCENTRATES_RECORD_T* bicarbConc = &ddCalibrationGroup.ddCalibrationRecord.bicarbConcentratesRecord; - for ( i = 0; i < NUM_OF_CAL_DATA_BICARB_CONCENTRATES; i++ ) + for ( i = 0; i < NUM_OF_BICARB_TYPE; i++ ) { isHardwareRecordValid = isDDBicarbConcentrateRecordValid( &bicarbConc->bicarbConcentrate[ i ] ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; @@ -700,6 +713,11 @@ if ( ( FALSE == isCalRecordValid ) || ( recordCRC != ddCalibrationGroup.crc ) ) { isCalRecordValid = FALSE; + + // Initialize the padding + updateRecordPadding( NVM_USAGE_INFO_RECORD ); + + // Recalculate the CRC ddCalibrationGroup.crc = crc16 ( (U08*)&ddCalibrationGroup, sizeof( DD_CALIBRATION_GROUP_T ) - sizeof( U16 ) ); activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_CALIBRATION_RECORD_CRC ); @@ -872,13 +890,11 @@ static void initDDServiceRecord( void ) { - ddServiceGroup.ddServiceRecord.isHDFOnlineFluid = TRUE; - ddServiceGroup.ddServiceRecord.waterRecovery = 1; - ddServiceGroup.ddServiceRecord.serviceLoc = 2; - ddServiceGroup.ddServiceRecord.lastServiceEpochDate = 3; - ddServiceGroup.ddServiceRecord.serviceIntervalSeconds = 4; -// ddServiceGroup.ddServiceRecord.serviceIntervalSeconds = RECORD_DEFAULT_SERVICE_INTERVAL_S; - ddServiceGroup.ddServiceRecord.lastResetTimeEpoch = 5; + ddServiceGroup.ddServiceRecord.isHDFOnlineFluid = FALSE; + ddServiceGroup.ddServiceRecord.waterRecovery = 0; + ddServiceGroup.ddServiceRecord.serviceLoc = 0; + ddServiceGroup.ddServiceRecord.lastServiceEpochDate = 0; + ddServiceGroup.ddServiceRecord.serviceIntervalSeconds = 0; // ddServiceGroup.ddServiceRecord.lastResetTimeEpoch = getRTCTimestamp(); } @@ -920,74 +936,74 @@ // ddUsageInfoGroup.ddUsageInfoRecord.lastResetTimeEpoch = getRTCTimestamp(); } -static void initDDCalibrationRecord( void ) -{ - U32 i; - POLYNOMIAL_CAL_PAYLOAD_T* record; +//static void initDDCalibrationRecord( void ) +//{ +// U32 i; +// POLYNOMIAL_CAL_PAYLOAD_T* record; +// +// DD_PRES_SENSORS_CAL_RECORD_T* pressure = &ddCalibrationGroup.ddCalibrationRecord.presSensorsCalRecord; +// for ( i = 0; i < NUM_OF_PRESSURE_SENSORS; i++ ) +// { +// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->pressureSensors[ i ]; +// benignPolynomialCalRecord( record ); +// } +// +// DD_TEMP_SENSORS_CAL_RECORD_T* temperature = &ddCalibrationGroup.ddCalibrationRecord.tempSensorsCalRecord; +// for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) +// { +// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->tempSensors[ i ]; +// benignPolynomialCalRecord( record ); +// } +// +// DD_CONC_PUMPS_CAL_RECORD_T* concPump = &ddCalibrationGroup.ddCalibrationRecord.concentratePumpsRecord; +// for ( i = 0; i < NUM_OF_CONCENTRATE_PUMPS; i++ ) +// { +// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&concPump->concentratePumps[ i ]; +// benignPolynomialCalRecord( record ); +// } +// +// ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.targetPumpSpeed = DEFAULT_D12_PUMP_TARGET_SPEED; +// ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.calibrationTime = RECORD_DEFAULT_TIME; +// ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.crc = crc16 ( (U08*)record, +// sizeof( DD_D12_DIALYSATE_PUMP_RECORD_T ) - sizeof( U16 ) ); +// +// DD_D48_DIALYSATE_PUMP_RECORD_T* d48Pump = &ddCalibrationGroup.ddCalibrationRecord.d48DialysatePumpRecord; +// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&d48Pump->d48DialysatePump; +// benignPolynomialCalRecord( record ); +// +// DD_ACID_CONCENTRATES_RECORD_T* acidConc = &ddCalibrationGroup.ddCalibrationRecord.acidConcentratesRecord; +// for ( i = 0; i < NUM_OF_ACID_TYPE; i++ ) +// { +// acidConc->acidConcentrate[ i ].acidConcMixRatio = DEFAULT_ACID_CONC_MIXING_RATIO; +// acidConc->acidConcentrate[ i ].acidFullBottleVolumeML = DEFAULT_ACID_BOTTLE_VOL_ML; +// acidConc->acidConcentrate[ i ].acidConductivityUSPerCM = DEFAULT_ACID_COND_US_PER_CM; +// acidConc->acidConcentrate[ i ].acidBottleTemperature = DEFAULT_ACID_BOTTLE_TEMP_C; +// acidConc->acidConcentrate[ i ].calibrationTime = RECORD_DEFAULT_TIME; +// acidConc->acidConcentrate[ i ].crc = crc16 ( (U08*)record, sizeof( DD_ACID_CONCENTRATE_T ) - sizeof( U16 ) ); +// } +// +// DD_BICARB_CONCENTRATES_RECORD_T* bicarbConc = &ddCalibrationGroup.ddCalibrationRecord.bicarbConcentratesRecord; +// for ( i = 0; i < NUM_OF_BICARB_TYPE; i++ ) +// { +// bicarbConc->bicarbConcentrate[ i ].bicarbConcMixRatio = DEFAULT_BICARB_CONC_MIXING_RATIO; +// bicarbConc->bicarbConcentrate[ i ].bicarbStartVolumeML = DEFAULT_BICARB_BOTTLE_VOL_ML; +// bicarbConc->bicarbConcentrate[ i ].bicarbConductivityUSPerCM = DEFAULT_BICARB_COND_US_PER_CM; +// bicarbConc->bicarbConcentrate[ i ].bicarbBottleTemperature = DEFAULT_BICARB_BOTTLE_TEMP_C; +// bicarbConc->bicarbConcentrate[ i ].calibrationTime = RECORD_DEFAULT_TIME; +// bicarbConc->bicarbConcentrate[ i ].crc = crc16 ( (U08*)record, sizeof( DD_BICARB_CONCENTRATE_T ) - sizeof( U16 ) ); +// } +// +// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelXOffset = RECORD_DEFAULT_OFFSET; +// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelYOffset = RECORD_DEFAULT_OFFSET; +// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelZOffset = RECORD_DEFAULT_OFFSET; +// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.calibrationTime = RECORD_DEFAULT_TIME; +// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.crc = crc16 ( (U08*)record, sizeof(DD_ACCEL_SENSOR_CAL_RECORD_T) - sizeof(U16) ); +// +// ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.setPoint = DEFAULT_BLOOD_LEAK_SET_POINT; +// ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.calibrationTime = RECORD_DEFAULT_TIME; +// ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.crc = crc16 ( (U08*)record, sizeof( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T ) - sizeof( U16 ) ); +//} - DD_PRES_SENSORS_CAL_RECORD_T* pressure = &ddCalibrationGroup.ddCalibrationRecord.presSensorsCalRecord; - for ( i = 0; i < NUM_OF_PRESSURE_SENSORS; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->pressureSensors[ i ]; - benignPolynomialCalRecord( record ); - } - - DD_TEMP_SENSORS_CAL_RECORD_T* temperature = &ddCalibrationGroup.ddCalibrationRecord.tempSensorsCalRecord; - for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->tempSensors[ i ]; - benignPolynomialCalRecord( record ); - } - - DD_CONC_PUMPS_CAL_RECORD_T* concPump = &ddCalibrationGroup.ddCalibrationRecord.concentratePumpsRecord; - for ( i = 0; i < NUM_OF_CONCENTRATE_PUMPS; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&concPump->concentratePumps[ i ]; - benignPolynomialCalRecord( record ); - } - - ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.targetPumpSpeed = DEFAULT_D12_PUMP_TARGET_SPEED; - ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.calibrationTime = RECORD_DEFAULT_TIME; - ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.crc = crc16 ( (U08*)record, - sizeof( DD_D12_DIALYSATE_PUMP_RECORD_T ) - sizeof( U16 ) ); - - DD_D48_DIALYSATE_PUMP_RECORD_T* d48Pump = &ddCalibrationGroup.ddCalibrationRecord.d48DialysatePumpRecord; - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&d48Pump->d48DialysatePump; - benignPolynomialCalRecord( record ); - - DD_ACID_CONCENTRATES_RECORD_T* acidConc = &ddCalibrationGroup.ddCalibrationRecord.acidConcentratesRecord; - for ( i = 0; i < NUM_OF_CAL_DATA_ACID_CONCENTRATES; i++ ) - { - acidConc->acidConcentrate[ i ].acidConcMixRatio = DEFAULT_ACID_CONC_MIXING_RATIO; - acidConc->acidConcentrate[ i ].acidFullBottleVolumeML = DEFAULT_ACID_BOTTLE_VOL_ML; - acidConc->acidConcentrate[ i ].acidConductivityUSPerCM = DEFAULT_ACID_COND_US_PER_CM; - acidConc->acidConcentrate[ i ].acidBottleTemperature = DEFAULT_ACID_BOTTLE_TEMP_C; - acidConc->acidConcentrate[ i ].calibrationTime = RECORD_DEFAULT_TIME; - acidConc->acidConcentrate[ i ].crc = crc16 ( (U08*)record, sizeof( DD_ACID_CONCENTRATE_T ) - sizeof( U16 ) ); - } - - DD_BICARB_CONCENTRATES_RECORD_T* bicarbConc = &ddCalibrationGroup.ddCalibrationRecord.bicarbConcentratesRecord; - for ( i = 0; i < NUM_OF_CAL_DATA_BICARB_CONCENTRATES; i++ ) - { - bicarbConc->bicarbConcentrate[ i ].bicarbConcMixRatio = DEFAULT_BICARB_CONC_MIXING_RATIO; - bicarbConc->bicarbConcentrate[ i ].bicarbStartVolumeML = DEFAULT_BICARB_BOTTLE_VOL_ML; - bicarbConc->bicarbConcentrate[ i ].bicarbConductivityUSPerCM = DEFAULT_BICARB_COND_US_PER_CM; - bicarbConc->bicarbConcentrate[ i ].bicarbBottleTemperature = DEFAULT_BICARB_BOTTLE_TEMP_C; - bicarbConc->bicarbConcentrate[ i ].calibrationTime = RECORD_DEFAULT_TIME; - bicarbConc->bicarbConcentrate[ i ].crc = crc16 ( (U08*)record, sizeof( DD_BICARB_CONCENTRATE_T ) - sizeof( U16 ) ); - } - - ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelXOffset = RECORD_DEFAULT_OFFSET; - ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelYOffset = RECORD_DEFAULT_OFFSET; - ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelZOffset = RECORD_DEFAULT_OFFSET; - ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.calibrationTime = RECORD_DEFAULT_TIME; - ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.crc = crc16 ( (U08*)record, sizeof(DD_ACCEL_SENSOR_CAL_RECORD_T) - sizeof(U16) ); - - ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.setPoint = DEFAULT_BLOOD_LEAK_SET_POINT; - ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.calibrationTime = RECORD_DEFAULT_TIME; - ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.crc = crc16 ( (U08*)record, sizeof( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T ) - sizeof( U16 ) ); -} - static void updateRecordPadding( NVM_RECORD_TYPE_T recType ) { U32 i = 0;