Index: NVDataMgmt.c =================================================================== diff -u -r793c9593c95fc6ecb33130a6b4a340c825ff01b8 -r0132727168202dc86bc18561eef868ef40476270 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 793c9593c95fc6ecb33130a6b4a340c825ff01b8) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 0132727168202dc86bc18561eef868ef40476270) @@ -74,7 +74,7 @@ // Data addresses and length in RTC RAM #define LOG_RECORD_START_ADDRESS 0x00000000 // 0 ///< Log record start address in RTC RAM (0). -#define HD_TREATMENT_TIME_ADDRESS 0x00000010 // 16 ///< HD treatment time start address in RTC RAM (16). +#define HD_USAGE_INFO_START_ADDRESS 0x00000010 // 16 ///< HD usage info start address in RTC RAM (16). #define DG_USAGE_INFO_START_ADDRESS 0x00000020 // 32 ///< DG usage info start address in RTC RAM (32). #define SERVICE_RECORD_START_ADDRESS 0x00000030 // 48 ///< Service date record start address in RTC RAM (HD/DG) (48). #define DG_SCHEDULED_RUNS_START_ADDRESS (SERVICE_RECORD_START_ADDRESS + sizeof(DG_SERVICE_GROUP_T)) ///< DG scheduled runs start address in RTC RAM. @@ -460,8 +460,9 @@ {SYSTEM_RECORD_NV_MEM_START_ADDRESS, sizeof(HD_SYSTEM_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(HD_SYSTEM_GROUP_T), (U08*)&hdSystemGroup, (U08*)&hdSystemGroup.crc, NVDATAMGMT_EEPROM}, // NVDATAMGMT_SYSTEM_RECORD {SERVICE_RECORD_START_ADDRESS, sizeof(HD_SERVICE_GROUP_T), MAX_RTC_RAM_OPS_BUFFER_BYTES, MAX_RTC_RAM_OPS_BUFFER_BYTES, (U08*)&hdServiceGroup, (U08*)&hdServiceGroup.crc, NVDATAMGMT_RTC}, // NVDATAMGMT_PROCESS_LAST_SERVICE_RECORD #ifndef _RELEASE_ - {SW_CONFIGS_START_ADDRESS, sizeof(HD_SW_CONFIG_GROUP_T), MAX_RTC_RAM_OPS_BUFFER_BYTES, MAX_RTC_RAM_OPS_BUFFER_BYTES, (U08*)&hdSWConfigGroup, (U08*)&hdSWConfigGroup.crc, NVDATAMGMT_RTC} // NVDATAMGMT_SW_CONFIG_RECORD + {SW_CONFIGS_START_ADDRESS, sizeof(HD_SW_CONFIG_GROUP_T), MAX_RTC_RAM_OPS_BUFFER_BYTES, MAX_RTC_RAM_OPS_BUFFER_BYTES, (U08*)&hdSWConfigGroup, (U08*)&hdSWConfigGroup.crc, NVDATAMGMT_RTC}, // NVDATAMGMT_SW_CONFIG_RECORD #endif + {HD_USAGE_INFO_START_ADDRESS, sizeof(HD_USAGE_INFO_GROUP_T), MAX_RTC_RAM_OPS_BUFFER_BYTES, MAX_RTC_RAM_OPS_BUFFER_BYTES, (U08*)&hdUsageInfoGroup, (U08*)&hdUsageInfoGroup.crc, NVDATAMGMT_RTC}, // NVDATAMGMT_USAGE_INFO }; #endif @@ -1029,14 +1030,14 @@ nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.pressureSensorsCalRecord; nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.pressureSensorsCalRecord ); for ( i = 0; i < NUM_OF_CAL_DATA_HD_PRESSURE_SESNSORS; i++ ) - isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.pressureSensorsCalRecord.hdPressureSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.pressureSensorsCalRecord.hdPressureSensors[ i ].calibrationTime ? FALSE : TRUE ); break; case GET_CAL_OCCLUSION_SESNSORS: nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.occlusionSensorsCalRecord; nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.occlusionSensorsCalRecord ); for ( i = 0; i < NUM_OF_CAL_DATA_OCCLUSION_SENSORS; i++ ) - isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.occlusionSensorsCalRecord.hdOcclusionSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.occlusionSensorsCalRecord.hdOcclusionSensors[ i ].calibrationTime ? FALSE : TRUE ); break; case GET_CAL_VALVES: @@ -1330,23 +1331,34 @@ #ifdef _HD_ /*********************************************************************//** * @brief - * The setTreatmentTime sets a queue job to write the treatment time in - * the specified RAM address. - * @details Inputs: treatmentTimeRecord - * @details Outputs: treatmentTimeRecord - * @param hours treatmet time in hours + * The setTxTimeHours sets the treatment time in hours. + * @details Inputs: none + * @details Outputs: hdUsageInfoGroup + * @param hours treatment time in hours + * @param isServiceDone flag to indicate the service has been done * @return TRUE if the queue was not full so the job was scheduled successfully *************************************************************************/ -BOOL setTreatmentTime ( U32 hours ) +BOOL setTxTimeHours( F32 hours, BOOL isServiceDone ) { BOOL status = FALSE; - hdUsageInfoGroup.hdUsageInfo.treatmentTime = hours; - hdUsageInfoGroup.crc = crc16 ( (U08*)&hdUsageInfoGroup.hdUsageInfo.treatmentTime, sizeof(U32) ); + if ( TRUE == isServiceDone ) + { + hdUsageInfoGroup.hdUsageInfo.txTimeTotalHrs += hdUsageInfoGroup.hdUsageInfo.txTimeSinceLastSrvcHrs; + hdUsageInfoGroup.hdUsageInfo.txTimeSinceLastSrvcHrs = hours; + } + else + { + hdUsageInfoGroup.hdUsageInfo.txTimeSinceLastSrvcHrs += hours; + hdUsageInfoGroup.hdUsageInfo.txTimeTotalHrs += hdUsageInfoGroup.hdUsageInfo.txTimeSinceLastSrvcHrs; + } + + hdUsageInfoGroup.hdUsageInfo.crc = crc16( (U08*)&hdUsageInfoGroup.hdUsageInfo, sizeof( HD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); + hdUsageInfoGroup.crc = crc16( (U08*)&hdUsageInfoGroup, sizeof( HD_USAGE_INFO_GROUP_T ) - sizeof( U16 ) ); + if ( FALSE == isQueueFull() ) { - enqueue( NVDATAMGMT_WRITE, NVDATAMGMT_RTC, HD_TREATMENT_TIME_ADDRESS, - (U08*)&hdUsageInfoGroup, 0, sizeof(HD_USAGE_INFO_RECORD_T) ); + enqueue( NVDATAMGMT_WRITE, NVDATAMGMT_RTC, HD_USAGE_INFO_START_ADDRESS, (U08*)&hdUsageInfoGroup, 0, sizeof( HD_USAGE_INFO_GROUP_T ) ); status = TRUE; } @@ -1355,15 +1367,25 @@ /*********************************************************************//** * @brief - * The getTreatmentTime returns the total number treatment hours of the - * HD device. + * The setTxLastStartTimeEpoch sets the last treatment start time in epoch * @details Inputs: none - * Output: none - * @return treatment time as U32 + * Output: hdUsageInfoGroup + * @return TRUE if the write job was queued properly otherwise, FALSE *************************************************************************/ -U32 getTreatmentTime ( void ) +BOOL setTxLastStartTimeEpoch( U32 epoch ) { - return hdUsageInfoGroup.hdUsageInfo.treatmentTime; + BOOL status = FALSE; + hdUsageInfoGroup.hdUsageInfo.txLastStartTimeEpoch = epoch; + hdUsageInfoGroup.hdUsageInfo.crc = crc16 ( (U08*)&hdUsageInfoGroup.hdUsageInfo, sizeof( HD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); + hdUsageInfoGroup.crc = crc16 ( (U08*)&hdUsageInfoGroup, sizeof( HD_USAGE_INFO_GROUP_T ) - sizeof( U16 ) ); + + if ( FALSE == isQueueFull() ) + { + enqueue( NVDATAMGMT_WRITE, NVDATAMGMT_RTC, HD_USAGE_INFO_START_ADDRESS, (U08*)&hdUsageInfoGroup, 0, sizeof( HD_USAGE_INFO_GROUP_T ) ); + status = TRUE; + } + + return status; } #endif #ifdef _DG_ @@ -1670,13 +1692,16 @@ // If the RTC RAM is ready, read the results if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE || timeoutStatus == TRUE ) { - getDataFromRAM( (U08*)&hdUsageInfoGroup, sizeof(HD_USAGE_INFO_RECORD_T) ); // If the RAM is ready, request a read for the log records (RAM) if ( getRTCRAMState() == RTC_RAM_STATE_READY ) { - readFromRAM( LOG_RECORD_START_ADDRESS, sizeof(LOG_RECORD_T) ); - currentTime = getMSTimerCount(); - state = NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD; + PROCESS_RECORD_SPECS_T specs = RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ]; + U08* bufferAddress = specs.structAddressPtr; + U32 maxBufferLength = specs.maxReadBufferSize; + + getDataFromRAM ( bufferAddress, maxBufferLength ); + + state = NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC; } } @@ -1834,7 +1859,12 @@ currentTime = getMSTimerCount(); readFromRAM( startAddress, maxBufferLength ); +#ifdef _DG_ state = NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION; +#endif +#ifdef _HD_ + state = NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME; +#endif } } #else @@ -2119,6 +2149,7 @@ if ( recordCurrentJob.memoryLocation == NVDATAMGMT_EEPROM && FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { U32 i; + U08* bufferPtr = jobSpecs.structAddressPtr + recordAddressOffset; // Loop through the bytes in the buffer Index: NVDataMgmt.h =================================================================== diff -u -r793c9593c95fc6ecb33130a6b4a340c825ff01b8 -r0132727168202dc86bc18561eef868ef40476270 --- NVDataMgmt.h (.../NVDataMgmt.h) (revision 793c9593c95fc6ecb33130a6b4a340c825ff01b8) +++ NVDataMgmt.h (.../NVDataMgmt.h) (revision 0132727168202dc86bc18561eef868ef40476270) @@ -127,12 +127,12 @@ BOOL setHeatersInfoRecord( U08 *addressPtr, U32 infoLength ); #endif #ifdef _HD_ -BOOL setTreatmentTime ( U32 hours ); -U32 getTreatmentTime ( void ); +BOOL setTxTimeHours( F32 hours, BOOL isServiceDone ); +BOOL setTxLastStartTimeEpoch( U32 epoch ); #endif -BOOL writeLogData( LOG_DATA_T* data ); -BOOL readLogData( READ_DATA_T* buffer, U32 length ); +BOOL writeLogData( LOG_DATA_T* data ); // Phase 1B +BOOL readLogData( READ_DATA_T* buffer, U32 length ); // Phase 1B BOOL sendRecordToDialin( RECORD_JOBS_STATE_T job ); BOOL receiveRecordFromDialin( RECORD_JOBS_STATE_T job, U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); Index: NVDataMgmtHDRecords.h =================================================================== diff -u -r793c9593c95fc6ecb33130a6b4a340c825ff01b8 -r0132727168202dc86bc18561eef868ef40476270 --- NVDataMgmtHDRecords.h (.../NVDataMgmtHDRecords.h) (revision 793c9593c95fc6ecb33130a6b4a340c825ff01b8) +++ NVDataMgmtHDRecords.h (.../NVDataMgmtHDRecords.h) (revision 0132727168202dc86bc18561eef868ef40476270) @@ -256,7 +256,7 @@ { F32 txTimeTotalHrs; ///< Treatment time total in hours (never reset). F32 txTimeSinceLastSrvcHrs; ///< Treatment time since last service in hours. - U32 txLastEpochDate; ///< Last tretment time in epoch. + U32 txLastStartTimeEpoch; ///< Last treatment time in epoch. U16 crc; ///< CRC for the HD usage info structure. } HD_USAGE_INFO_RECORD_T;