Index: firmware/App/Services/NVRecordsDD.c =================================================================== diff -u -rbe1ff666dbd2ff03342c22c8e50b21d0f9b988a9 -r1ce98afa73e6c88addb3a01643c791c15e7a147c --- firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision be1ff666dbd2ff03342c22c8e50b21d0f9b988a9) +++ firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 1ce98afa73e6c88addb3a01643c791c15e7a147c) @@ -152,7 +152,6 @@ U16 crc; ///< CRC for the DG service structure. } DD_SERVICE_GROUP_T; - /// DD institutional record structure typedef struct { @@ -241,7 +240,7 @@ static BOOL isDDAcidConcentrateRecordValid( DD_ACID_CONCENTRATE_T* record ); static BOOL isDDBicarbConcentrateRecordValid( DD_BICARB_CONCENTRATE_T* record ); static BOOL isDDAccelerometerSensorRecordValid( DD_ACCEL_SENSOR_CAL_RECORD_T* record ); -static BOOL isDDBloodLeakSesnorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ); +static BOOL isDDBloodLeakSensorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ); static void initDDSystemRecord( void ); static void initDDServiceRecord( void ); @@ -480,7 +479,6 @@ * @details \b Outputs: ddSystemGroup.ddSystemRecord, ddSystemGroup.crc * @return TRUE if the DD system record is valid otherwise FALSE *************************************************************************/ - static BOOL isDDSystemRecordValid( void ) { BOOL status = TRUE; @@ -710,7 +708,7 @@ isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* bloodLeak = &ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord; - isHardwareRecordValid = isDDBloodLeakSesnorValid( bloodLeak ); + isHardwareRecordValid = isDDBloodLeakSensorValid( bloodLeak ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; // If the sub groups failed, they are all updated to their benign values @@ -855,15 +853,15 @@ /*********************************************************************//** * @brief - * The isDDBloodLeakSesnorValid function checks if the blood leak sensor + * The isDDBloodLeakSensorValid function checks if the blood leak sensor * calibration record is valid. It verifies CRC and updates the record * with default values if invalid. * @details \b Inputs: none * @details \b Outputs: none * @param record Pointer to blood leak sensor calibration record to check * @return TRUE if the record is valid otherwise FALSE *************************************************************************/ -static BOOL isDDBloodLeakSesnorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ) +static BOOL isDDBloodLeakSensorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ) { BOOL status = TRUE; U16 calcCRC = crc16 ( (U08*)record, sizeof( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T ) - sizeof( U16 ) ); @@ -917,7 +915,9 @@ ddServiceGroup.ddServiceRecord.serviceLoc = 0; ddServiceGroup.ddServiceRecord.lastServiceEpochDate = 0; ddServiceGroup.ddServiceRecord.serviceIntervalSeconds = 0; -// ddServiceGroup.ddServiceRecord.lastResetTimeEpoch = getRTCTimestamp(); + + // TODO: Update lastResetTimeEpoch to current timestamp published by UI. + ddServiceGroup.ddServiceRecord.lastResetTimeEpoch = RECORD_DEFAULT_TIME; } /*********************************************************************//** @@ -953,7 +953,9 @@ ddInstitutionalGroup.ddInstitutionalRecord.minBicarbAlarmLimitPCT = DEFAULT_MIN_BICARB_ALARM_US_P_CM; ddInstitutionalGroup.ddInstitutionalRecord.postTreatDrainOption = DEFAULT_POST_TREATMENT_DRAIN_OPTION; ddInstitutionalGroup.ddInstitutionalRecord.postTreatDryBicarbOption = DEFAULT_POST_TREATMENT_DRY_BICARB_OPTION; -// ddInstitutionalGroup.ddInstitutionalRecord.calibrationTime = getRTCTimestamp(); + + // TODO: Update lastUpdatedTime to current timestamp published by UI. + ddInstitutionalGroup.ddInstitutionalRecord.lastUpdatedTime = RECORD_DEFAULT_TIME; } /*********************************************************************//** @@ -995,47 +997,39 @@ switch ( recType ) { case NVM_SYSTEM_RECORD: + for ( i = 0; i < SYSTEM_RECORD_PADDING_LENGTH; i++ ) { - for ( i = 0; i < SYSTEM_RECORD_PADDING_LENGTH; i++ ) - { - ddSystemGroup.padding[ i ] = 0; - } + ddSystemGroup.padding[ i ] = 0; } break; + case NVM_SERVICE_RECORD: - { for ( i = 0; i < SERVICE_RECORD_PADDING_LENGTH; i++ ) { ddServiceGroup.padding[ i ] = 0; } - } break; + case NVM_CALIBRATION_RECORD: - { for ( i = 0; i < CALIBRATION_RECORD_PADDING_LENGTH; i++ ) { ddCalibrationGroup.padding[ i ] = 0; } - } - break; + break; case NVM_INSTITUTIONAL_RECORD: - { for ( i = 0; i < INSTITUTIONAL_RECORD_PADDING_LENGTH; i++ ) { ddInstitutionalGroup.padding[ i ] = 0; } - } - break; + break; case NVM_USAGE_INFO_RECORD: - { for ( i = 0; i < USAGE_INFO_RECORD_PADDING_LENGTH; i++ ) { ddUsageInfoGroup.padding[ i ] = 0; } - } - break; + break; default: break; @@ -1063,45 +1057,37 @@ switch ( recType ) { case NVM_SYSTEM_RECORD: - { - ddSystemGroup.ddSystemRecord.crc = crc16 ( (U08*)&ddSystemGroup.ddSystemRecord, - sizeof( DD_SYSTEM_RECORD_T ) - sizeof( U16 ) ); - ddSystemGroup.crc = crc16 ( (U08*)&ddSystemGroup, - sizeof( DD_SYSTEM_GROUP_T ) - sizeof( U16 ) ); - } + ddSystemGroup.ddSystemRecord.crc = crc16 ( (U08*)&ddSystemGroup.ddSystemRecord, + sizeof( DD_SYSTEM_RECORD_T ) - sizeof( U16 ) ); + ddSystemGroup.crc = crc16 ( (U08*)&ddSystemGroup, + sizeof( DD_SYSTEM_GROUP_T ) - sizeof( U16 ) ); break; + case NVM_SERVICE_RECORD: - { ddServiceGroup.ddServiceRecord.crc = crc16 ( (U08*)&ddServiceGroup.ddServiceRecord, sizeof( DD_SERVICE_RECORD_T ) - sizeof( U16 ) ); ddServiceGroup.crc = crc16 ( (U08*)&ddServiceGroup, sizeof( DD_SERVICE_GROUP_T ) - sizeof( U16 ) ); - } break; + case NVM_CALIBRATION_RECORD: - { ddCalibrationGroup.crc = crc16 ( (U08*)&ddCalibrationGroup, sizeof( DD_CALIBRATION_GROUP_T ) - sizeof( U16 ) ); - } - break; + break; case NVM_INSTITUTIONAL_RECORD: - { ddInstitutionalGroup.ddInstitutionalRecord.crc = crc16 ( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord, sizeof( DD_INSTITUTIONAL_RECORD_T ) - sizeof( U16 ) ); ddInstitutionalGroup.crc = crc16 ( (U08*)&ddInstitutionalGroup, sizeof( DD_INSTITUTIONAL_GROUP_T ) - sizeof( U16 ) ); - } - break; + break; case NVM_USAGE_INFO_RECORD: - { ddUsageInfoGroup.ddUsageInfoRecord.crc = crc16 ( (U08*)&ddUsageInfoGroup.ddUsageInfoRecord, sizeof( DD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); ddUsageInfoGroup.crc = crc16 ( (U08*)&ddUsageInfoGroup, sizeof( DD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); - } - break; + break; default: break; @@ -1810,8 +1796,8 @@ dataSize = sizeof(U32); break; - case DD_INSTIT_CALIBRATION_TIME: - srcPtr = (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.calibrationTime; + case DD_INSTIT_LAST_UPDATED_TIME: + srcPtr = (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.lastUpdatedTime; dataSize = sizeof(U32); break; @@ -1963,8 +1949,8 @@ dataSize = sizeof(U32); break; - case DD_INSTIT_CALIBRATION_TIME: - destPtr = (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.calibrationTime; + case DD_INSTIT_LAST_UPDATED_TIME: + destPtr = (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.lastUpdatedTime; dataSize = sizeof(U32); break;