Index: Accel.c =================================================================== diff -u -r19d562b24a5269e04108116ad942d31dbb3961f1 -rab745156d182ac1ee04a98aa2b2af0f30c8894e6 --- Accel.c (.../Accel.c) (revision 19d562b24a5269e04108116ad942d31dbb3961f1) +++ Accel.c (.../Accel.c) (revision ab745156d182ac1ee04a98aa2b2af0f30c8894e6) @@ -560,18 +560,14 @@ switch ( accelSelfTestState ) { case ACCELEROMETER_SELF_TEST_STATE_START: - { - CALIBRATION_DATA_T cal; + { + HD_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getHDAccelerometerSensorCalibrationRecord(); - // Retrieve blood flow sensor calibration data - if ( TRUE == getCalibrationData( &cal ) ) - { - accelCalOffsets[ ACCEL_AXIS_X ] = cal.accelXOffset; - accelCalOffsets[ ACCEL_AXIS_Y ] = cal.accelYOffset; - accelCalOffsets[ ACCEL_AXIS_Z ] = cal.accelZOffset; - accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_IN_PROGRESS; - } - else + accelCalOffsets[ ACCEL_AXIS_X ] = cal.accelXOffset; + accelCalOffsets[ ACCEL_AXIS_Y ] = cal.accelYOffset; + accelCalOffsets[ ACCEL_AXIS_Z ] = cal.accelZOffset; + accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_IN_PROGRESS; + //else TODO what to do with this statement? { // shouldn't get here - should have failed NV-Data POST prior result = SELF_TEST_STATUS_FAILED; accelSelfTestState = ACCELEROMETER_SELF_TEST_STATE_COMPLETE; @@ -624,62 +620,8 @@ * TEST SUPPORT FUNCTIONS *************************************************************************/ - /*********************************************************************//** * @brief - * The setAccelCalibration function sets the accelerometer calibration - * factors and has them stored in non-volatile memory. - * @details Inputs: accelCalOffsets - * @details Outputs: accelCalOffsets - * @param offsetX offset calibration factor for X axis - * @param offsetY offset calibration factor for Y axis - * @param offsetZ offset calibration factor for Z axis - * @return TRUE if calibration factors successfully set/stored, FALSE if not - *************************************************************************/ -BOOL setAccelCalibration( F32 offsetX, F32 offsetY, F32 offsetZ ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - CALIBRATION_DATA_T cal; - - getCalibrationData( &cal ); - // keep locally and apply immediately - accelCalOffsets[ ACCEL_AXIS_X ] = offsetX; - accelCalOffsets[ ACCEL_AXIS_Y ] = offsetY; - accelCalOffsets[ ACCEL_AXIS_Z ] = offsetZ; - // also update calibration record in non-volatile memory - cal.accelXOffset = offsetX; - cal.accelYOffset = offsetY; - cal.accelZOffset = offsetZ; - setCalibrationData( cal ); - result = TRUE; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The getAccelCalibration function retrieves the current accelerometer - * calibration factors. - * @details Inputs: accelCalOffsets - * @details Outputs: none - * @param offsetX value to populate with X axis offset calibration factor - * @param offsetY value to populate with Y axis offset calibration factor - * @param offsetZ value to populate with Z axis offset calibration factor - * @return none - *************************************************************************/ -void getAccelCalibration( F32 *offsetX, F32 *offsetY, F32 *offsetZ ) -{ - *offsetX = accelCalOffsets[ ACCEL_AXIS_X ]; - *offsetY = accelCalOffsets[ ACCEL_AXIS_Y ]; - *offsetZ = accelCalOffsets[ ACCEL_AXIS_Z ]; -} - -/*********************************************************************//** - * @brief * The testSetAccelDataPublishIntervalOverride function overrides the * accelerometer data publish interval. * @details Inputs: accelDataPublishInterval Index: Accel.h =================================================================== diff -u -r9039be47e57a36cea6f8b264d539fe619f218e05 -rab745156d182ac1ee04a98aa2b2af0f30c8894e6 --- Accel.h (.../Accel.h) (revision 9039be47e57a36cea6f8b264d539fe619f218e05) +++ Accel.h (.../Accel.h) (revision ab745156d182ac1ee04a98aa2b2af0f30c8894e6) @@ -71,8 +71,6 @@ SELF_TEST_STATUS_T execAccelTest( void ); -BOOL setAccelCalibration( F32 offsetX, F32 offsetY, F32 offsetZ ); -void getAccelCalibration( F32 *offsetX, F32 *offsetY, F32 *offsetZ ); BOOL testSetAccelDataPublishIntervalOverride( U32 value ); BOOL testResetAccelDataPublishIntervalOverride( void ); BOOL testSetAccelAxisOverride( U32 axis, F32 value ); Index: NVDataMgmt.c =================================================================== diff -u -rf2a92b265b295e93b57199a89d6491e195f74c56 -rab745156d182ac1ee04a98aa2b2af0f30c8894e6 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision f2a92b265b295e93b57199a89d6491e195f74c56) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision ab745156d182ac1ee04a98aa2b2af0f30c8894e6) @@ -43,8 +43,7 @@ #define MIN_JOBS_NEEDED_FOR_DATA_LOG 3U ///< Min queue required for data log (3). #define MIN_JOBS_NEEDED_FOR_SECTOR_0 4U ///< Min queue count needed to write all (4) records back in sector 0. -// The clock frequency comes from HCLK_FREQ and it has to be rounded up to the -// nearest number +// The clock frequency comes from HCLK_FREQ and it has to be rounded up to the nearest number #define ROUNDED_HCLK_FREQ FLOAT_TO_INT_WITH_ROUND(HCLK_FREQ) ///< Rounded HCLK for EERPOM clock. #define BANK7_SECTOR_0_31_ENABLE_BIT_MASK 0x0000000F ///< Bank7 sector 0 t0 31 enable mask. #define BANK7_SECTOR_32_63_ENABLE_BIT_MASK 0x00000000 ///< Bank7 sector 32 to 63 enable mask. @@ -104,15 +103,15 @@ typedef enum NVDataMgmt_Self_Test_States { NVDATAMGMT_SELF_TEST_STATE_START = 0, ///< Self test start. - NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM, ///< Self test enable EERPOM. - NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG, ///< Self test read bootloader. + NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM, ///< Self test enable EERPOM. TODO remove + NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG, ///< Self test read bootloader. TODO remove NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD, ///< Self test read log record. - NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME, ///< Self test read treatment time. - NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION, ///< Self test read water consumption. - NVDATAMGMT_SELF_TEST_STATE_READ_MFG_RECORD, ///< Self test read manufacturing record. - NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD, ///< Self test read calibration record. - NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD, ///< Self test read service record. - NVDATAMGMT_SELF_TEST_STATE_READ_LAST_DISINFECTION_DATE, ///< Self test read last disinfection date. + NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME, ///< Self test read treatment time. TODO combine with water consumption + NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION, ///< Self test read water consumption. TODO combine with tx time + NVDATAMGMT_SELF_TEST_STATE_READ_MFG_RECORD, ///< Self test read manufacturing record. TODO modify + NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD, ///< Self test read calibration record. TODO modify + NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD, ///< Self test read service record. TODO modify + NVDATAMGMT_SELF_TEST_STATE_READ_LAST_DISINFECTION_DATE, ///< Self test read last disinfection date. TODO remove NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC, ///< Self test check CRC. NVDATAMGMT_SELF_TEST_STATE_COMPLETE, ///< Self test complete. NUM_OF_NVDATAMGMT_SELF_TEST_STATES ///< Total number of self-test states. @@ -255,14 +254,6 @@ U16 crc; ///< Water consumption CRC } WATER_CONSUMPTION_RECORD_T; -/// Calibration record structure. -typedef struct -{ - CALIBRATION_DATA_T calData; ///< Calibration data struct - U16 crc; ///< Calibration data CRC - U08 Padding[ 0x50 - sizeof(CALIBRATION_DATA_T) - sizeof(U16) ]; ///< Padding for reserved cal data space -} CALIBRATION_RECORD_T; //TODO remove - // ********** HD/DG record structures ********** #ifdef _DG_ @@ -419,22 +410,26 @@ static LOG_RECORD_T logRecord; ///< Log record variable. static TREATMENT_TIME_RECORD_T treatmentTimeRecord; ///< Treatment time record. static WATER_CONSUMPTION_RECORD_T waterConsumptionRecord; ///< Water consumption record. -static CALIBRATION_RECORD_T calibrationRecord; ///< Calibration record. static U08 queueRearIndex = QUEUE_START_INDEX; ///< Queue rear index. static U08 queueFrontIndex = QUEUE_START_INDEX; ///< Queue front index. static U08 queueCount = 0; ///< Queue count. -static NVDATAMGMT_SELF_TEST_STATE_T NVDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; ///< NVDataMgmt self-test state variable. -static NVDATAMGMT_EXEC_STATE_T NVDataMgmtExecState = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; ///< NVDataMgmt exec state variable. -static SELF_TEST_STATUS_T NVDataMgmtSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; ///< NVDataMgmt self-test result. +static NVDATAMGMT_SELF_TEST_STATE_T nvDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; ///< NVDataMgmt self-test state variable. +static NVDATAMGMT_EXEC_STATE_T nvDataMgmtExecState = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; ///< NVDataMgmt exec state variable. +static SELF_TEST_STATUS_T nvDataMgmtSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; ///< NVDataMgmt self-test result. static BOOL hasCommandTimedout = FALSE; ///< Boolean flag for timeout of the commands. static U32 currentTime = 0; ///< Current time. -static BOOL calRecordIsValid = FALSE; ///< Flag indicates whether stored calibration record was found to be valid. static volatile BOOL powerOffIsImminent = FALSE; ///< Power off warning has been signaled. Non-volatile memory operations should be completed ASAP and then ceased. +/* + * Order of POST: + * Start (check EEPROM is enabled + * Read Calibration + * Read Manufacturing + * Read Service + * Read Usage Info? (Water consumption, Treatment time) + * Check CRCs + */ -// *** This declaration will cause a compiler error if CALIBRATION_DATA_T record size exceeds max message payload size. -U08 calRecordSizeAssertion[ ( sizeof( CALIBRATION_DATA_T ) <= MAX_MSG_PAYLOAD_SIZE ? 1 : -1 ) ]; //TODO remove - // Private functions static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestStart ( void ); static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestEnableEEPROM ( void ); @@ -471,7 +466,6 @@ static BOOL isQueueEmpty ( void ); static BOOL isQueueFull ( void ); static U32 getAvailableQueueCount ( void ); -static BOOL enqueueBank7Sector0Records ( void ); // TODO remove // Helper functions static BOOL didCommandTimeout ( ALARM_ID_T alarm, U08* state ); @@ -487,17 +481,24 @@ /*********************************************************************//** * @brief * The initNVDataMgmt function initializes the module. - * @details Inputs: NVDataMgmtSelfTestState, NVDataMgmtExecState, NVDataMgmtSelfTestResult, - * queueRearIndex, queueFrontIndex, queueCount - * @details Outputs: NVDataMgmtSelfTestState, NVDataMgmtExecState, NVDataMgmtSelfTestResult, - * queueRearIndex, queueFrontIndex, queueCount //TODO update the function header + * @details Inputs: NVDataMgmtSelfTestState, NVDataMgmtExecState, + * NVDataMgmtSelfTestResult, queueRearIndex, queueFrontIndex, queueCount, + * recordUpdateAddress, recordQueueRearIndex, recordQueueFrontIndex, + * recordQueueCount, recordAddressOffset, writtenRecordStatus, + * hasPublishRecordBeenRequested + * @details Outputs: NVDataMgmtSelfTestState, NVDataMgmtExecState, + * NVDataMgmtSelfTestResult, queueRearIndex, queueFrontIndex, queueCount, + * recordUpdateAddress, recordQueueRearIndex, recordQueueFrontIndex, + * recordQueueCount, recordAddressOffset, writtenRecordStatus, + * hasPublishRecordBeenRequested * @return none *************************************************************************/ void initNVDataMgmt( void ) { - NVDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; - NVDataMgmtExecState = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; - NVDataMgmtSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; + // Initialize the parameters + nvDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; + nvDataMgmtExecState = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; + nvDataMgmtSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; nvDataMgmtExecProcessRecordState = NVDATAMGMT_PROCESS_RECORD_STATE_IDLE; nvDataMgmtExecReceiveRecordState = NVDATAMGMT_RECEIVE_RECORD_IDLE; queueRearIndex = QUEUE_START_INDEX; @@ -522,7 +523,7 @@ * The signalPowerOffWarning signals this module that system power off is * imminent and any non-volatile data writes in progress should be wrapped up * quickly and any pending non-volatile data writes should not be started. - * @details Inputs: none + * @details Inputs: powerOffIsImminent * @details Outputs: powerOffIsImminent * @return none *************************************************************************/ @@ -535,53 +536,53 @@ * @brief * The execNVDataMgmt runs the NVDataMgmt main tasks. * @details Inputs: NVDataMgmtExecState - * @details Outputs: NVDataMgmtExecState, alarm if exec state was invalid + * @details Outputs: NVDataMgmtExecState * @return none *************************************************************************/ void execNVDataMgmt( void ) { // TODO - not sure where it should go Dara, but need to look at powerOffIsImminent flag and block // queuing of any new jobs, maybe even block starting of any new jobs if flag is set - switch ( NVDataMgmtExecState ) + switch ( nvDataMgmtExecState ) { case NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST: - NVDataMgmtExecState = handleExecWaitForPostState(); + nvDataMgmtExecState = handleExecWaitForPostState(); break; case NVDATAMGMT_EXEC_STATE_IDLE: - NVDataMgmtExecState = handleExecIdleState(); + nvDataMgmtExecState = handleExecIdleState(); break; case NVDATAMGMT_EXEC_STATE_WRITE_TO_EEPROM: - NVDataMgmtExecState = handleExecWriteToEEPROMState(); + nvDataMgmtExecState = handleExecWriteToEEPROMState(); break; case NVDATAMGMT_EXEC_STATE_VERIFY_WRITE: - NVDataMgmtExecState = handleExecVerifyWriteState(); + nvDataMgmtExecState = handleExecVerifyWriteState(); break; case NVDATAMGMT_EXEC_STATE_READ_FROM_EEPROM: - NVDataMgmtExecState = handleExecReadFromEEPROMState(); + nvDataMgmtExecState = handleExecReadFromEEPROMState(); break; case NVDATAMGMT_EXEC_STATE_ERASE_EEPROM: - NVDataMgmtExecState = handleExecEraseState(); + nvDataMgmtExecState = handleExecEraseState(); break; case NVDATAMGMT_EXEC_STATE_WRITE_TO_RTC: - NVDataMgmtExecState = handleExecWriteToRAMState(); + nvDataMgmtExecState = handleExecWriteToRAMState(); break; case NVDATAMGMT_EXEC_STATE_READ_FROM_RTC: - NVDataMgmtExecState = handleExecReadFromRAMState(); + nvDataMgmtExecState = handleExecReadFromRAMState(); break; default: #ifdef _DG_ - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, NVDataMgmtExecState ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, nvDataMgmtExecState ); #else - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, NVDataMgmtExecState ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, nvDataMgmtExecState ); #endif - NVDataMgmtExecState = NVDATAMGMT_EXEC_STATE_IDLE; + nvDataMgmtExecState = NVDATAMGMT_EXEC_STATE_IDLE; break; } } @@ -590,56 +591,56 @@ * @brief * The execNVDataMgmtSelfTest runs the NVDataMgmt POST during the self-test. * @details Inputs: NVDataMgmtSelfTestState - * @details Outputs: NVDataMgmtSelfTestState, alarm if there was a software fault + * @details Outputs: NVDataMgmtSelfTestState * @return NVDataMgmtSelfTestResult the result of self-test *************************************************************************/ SELF_TEST_STATUS_T execNVDataMgmtSelfTest ( void ) { - switch ( NVDataMgmtSelfTestState ) + switch ( nvDataMgmtSelfTestState ) { case NVDATAMGMT_SELF_TEST_STATE_START: - NVDataMgmtSelfTestState = handleSelfTestStart(); + nvDataMgmtSelfTestState = handleSelfTestStart(); break; case NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM: - NVDataMgmtSelfTestState = handleSelfTestEnableEEPROM(); + nvDataMgmtSelfTestState = handleSelfTestEnableEEPROM(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG: - NVDataMgmtSelfTestState = handleSelfTestReadBootloaderFlag(); + nvDataMgmtSelfTestState = handleSelfTestReadBootloaderFlag(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD: - NVDataMgmtSelfTestState = handleSelfTestReadLogRecord(); + nvDataMgmtSelfTestState = handleSelfTestReadLogRecord(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME: - NVDataMgmtSelfTestState = handleSelfTestReadHDTreatmentTime(); + nvDataMgmtSelfTestState = handleSelfTestReadHDTreatmentTime(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION: - NVDataMgmtSelfTestState = handleSelfTestReadDGWaterConsumption(); + nvDataMgmtSelfTestState = handleSelfTestReadDGWaterConsumption(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_MFG_RECORD: - NVDataMgmtSelfTestState = handleSelfTestReadMfgRecord(); + nvDataMgmtSelfTestState = handleSelfTestReadMfgRecord(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD: - NVDataMgmtSelfTestState = handleSelfTestReadCalibrationRecord(); + nvDataMgmtSelfTestState = handleSelfTestReadCalibrationRecord(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD: - NVDataMgmtSelfTestState = handleSelfTestReadServiceRecord(); + nvDataMgmtSelfTestState = handleSelfTestReadServiceRecord(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_LAST_DISINFECTION_DATE: - NVDataMgmtSelfTestState = handleSelfTestReadLastDisinfectionDate(); + nvDataMgmtSelfTestState = handleSelfTestReadLastDisinfectionDate(); break; case NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC: - NVDataMgmtSelfTestState = handleSelfTestCheckCRC(); + nvDataMgmtSelfTestState = handleSelfTestCheckCRC(); break; case NVDATAMGMT_SELF_TEST_STATE_COMPLETE: @@ -648,24 +649,26 @@ default: #ifdef _DG_ - SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, NVDataMgmtSelfTestState ); + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, nvDataMgmtSelfTestState ); #else - SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, NVDataMgmtSelfTestState ); + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, nvDataMgmtSelfTestState ); #endif - NVDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_COMPLETE; - NVDataMgmtSelfTestResult = SELF_TEST_STATUS_FAILED; + nvDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_COMPLETE; + nvDataMgmtSelfTestResult = SELF_TEST_STATUS_FAILED; break; } - return NVDataMgmtSelfTestResult; + return nvDataMgmtSelfTestResult; } /*********************************************************************//** * @brief * The execNVDataMgmtProcessRecord runs the NVDataMgmt send records related - * tasks. - * @details Inputs: nvDataMgmtExecProcessRecordState - * @details Outputs: nvDataMgmtExecProcessRecordState + * to tasks. + * @details Inputs: nvDataMgmtExecProcessRecordState, + * nvDataMgmtExecReceiveRecordState + * @details Outputs: nvDataMgmtExecProcessRecordState, + * nvDataMgmtExecReceiveRecordState * @return none *************************************************************************/ void execNVDataMgmtProcessRecord( void ) @@ -708,8 +711,9 @@ * @brief * The getDGCalibrationRecord function sets the calibration state machine * to read and publish calibration record. - * @details Inputs: hasPublishRecordBeenRequested, NVDataMgmtExecCalState - * @details Outputs: hasPublishRecordBeenRequested + * @details Inputs: hasPublishRecordBeenRequested, recordToPublish + * nvDataMgmtExecProcessRecordState + * @details Outputs: hasPublishRecordBeenRequested, recordToPublish * @return TRUE if the request was successfully registered *************************************************************************/ BOOL getCalibrationRecord( void ) @@ -1422,87 +1426,34 @@ { return hdCalibrationRecord.hdCalibrationGroups.accelerometerCalRecord; } -#endif /*********************************************************************//** * @brief - * The setCalibrationData updates the structure that holds the calibration data, - * calls another function to calculate the CRC for the provided data and - * calls another function to erase sector 0 and write the new manufacturing - * data. - * @details Inputs: calibrationRecord - * @details Outputs: calibrationRecord - * @param data calibration data structure - * @return TRUE if updating was successfully scheduled + * The getHDSystemRecord function returns the HD system record. + * @details Inputs: none + * @details Outputs: none + * @return HD system record *************************************************************************/ -BOOL setCalibrationData ( CALIBRATION_DATA_T data ) +HD_SYSTEM_RECORD_T getHDSystemRecord( void ) { - BOOL status; - - calibrationRecord.calData = data; - calibrationRecord.crc = crc16( (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); - // The entire sector 0 must be erased and re-written again - status = enqueueBank7Sector0Records(); - - return status; + return hdSystemGroup.hdsystemRecord; } /*********************************************************************//** * @brief - * The getCalibrationData function returns the data in the structure that hold - * calibration record to buffer that the caller has provided. - * @details Inputs: calibrationRecord + * The getHDServiceRecord function returns the HD service record. + * @details Inputs: none * @details Outputs: none - * @param buffer address of calibration data buffer - * @return TRUE if calibration record valid + * @return HD service record *************************************************************************/ -BOOL getCalibrationData ( CALIBRATION_DATA_T* buffer ) +HD_SERVICE_RECORD_T getHDServiceRecord( void ) { - BOOL status = FALSE; - - if ( buffer != NULL ) - { - memcpy ( buffer, (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); - status = calRecordIsValid; - } - - return status; + return hdServiceGroup.hdServiceRecord; } +#endif /*********************************************************************//** * @brief - * The testResetCalibrationData function erases the calibration data. - * @details - * Inputs: calibrationRecord - * Outputs: none - * @param key a key is required to erase calibration data - * @return TRUE if calibration record valid - *************************************************************************/ -BOOL testResetCalibrationData( U32 key ) -{ - BOOL status = FALSE; - - // tester must be logged in - if ( TRUE == isTestingActivated() ) - { - // verify key - if ( ERASE_CALIBRATION_KEY == key ) - { - // erase calibration record - memset( (U08*)&calibrationRecord.calData, 0, sizeof(CALIBRATION_DATA_T) ); - // zero CRC so integrity check will fail unless calibration data set again - calibrationRecord.crc = 0; - // save erased calibration record - // queue job to re-store all non-volatile data records to memory bank 7, sector 0 (sector allocated for these records) from RAM - status = enqueueBank7Sector0Records(); - } - } - - return status; -} - -/*********************************************************************//** - * @brief * The writeLogData checks if the queue is not full and if it is not, it calls * enqueue to schedule a job for writing the log data. * @details Inputs: logRecord @@ -1968,16 +1919,16 @@ } #endif // Check CRC for calibration record - calcCRC = crc16( (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); - recordCRC = calibrationRecord.crc; + //calcCRC = crc16( (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); + recordCRC = 0;//calibrationRecord.crc; if ( calcCRC != recordCRC ) { hasCRCPassed = FALSE; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_NVDATA_CAL_RECORD_CRC_ERROR, recordCRC, calcCRC ); } else { - calRecordIsValid = TRUE; + //calRecordIsValid = TRUE; } #ifndef LIMITED_NVDATA_CRC_CHECKS // Check CRC for service record @@ -1992,11 +1943,11 @@ // There should be no failed CRCs and no command should timeout for the self-test to pass if ( hasCRCPassed && !hasCommandTimedout ) { - NVDataMgmtSelfTestResult = SELF_TEST_STATUS_PASSED; + nvDataMgmtSelfTestResult = SELF_TEST_STATUS_PASSED; } else { - NVDataMgmtSelfTestResult = SELF_TEST_STATUS_FAILED; + nvDataMgmtSelfTestResult = SELF_TEST_STATUS_FAILED; } return state; @@ -2765,33 +2716,6 @@ /*********************************************************************//** * @brief - * The enqueueBank7Sector0Records checks whether there are enough number of - * queues for erasing and setting the records. If there are enough queues, - * it schedules an erase job and then schdules jobs to write all the records - * back to Bank 7 Sector 0. - * @details Inputs: mfgRecord, calibrationRecord - * @details Outputs: none - * @return TRUE if there are enough queue jobs available - *************************************************************************/ -static BOOL enqueueBank7Sector0Records( void ) -{ - BOOL status = FALSE; - U32 currentQueueCount = getAvailableQueueCount(); - - if ( currentQueueCount >= MIN_JOBS_NEEDED_FOR_SECTOR_0 ) - { - // Sector 0 must be erased first - enqueue ( NVDATAMGMT_ERASE_SECTOR, NVDATAMGMT_EEPROM, BANK7_SECTOR0_START_ADDRESS, 0, 0, 0 ); - //enqueue ( NVDATAMGMT_WRITE, NVDATAMGMT_EEPROM, BANK7_SECTOR0_START_ADDRESS, (U08*)&mfgRecord, 0, sizeof(MFG_RECORD_T) ); - //enqueue ( NVDATAMGMT_WRITE, NVDATAMGMT_EEPROM, CALIBRATION_RECORD_START_ADDRESS, (U08*)&calibrationRecord, 0, sizeof(CALIBRATION_RECORD_T) ); - status = TRUE; - } - - return status; -} - -/*********************************************************************//** - * @brief * The didCommandTimedout checks whether the a command whether RTC RAM or * EEPROM has timedout. If it has timedout, it sets the alarm and turns * flag to TRUE. Index: NVDataMgmt.h =================================================================== diff -u -rf2a92b265b295e93b57199a89d6491e195f74c56 -rab745156d182ac1ee04a98aa2b2af0f30c8894e6 --- NVDataMgmt.h (.../NVDataMgmt.h) (revision f2a92b265b295e93b57199a89d6491e195f74c56) +++ NVDataMgmt.h (.../NVDataMgmt.h) (revision ab745156d182ac1ee04a98aa2b2af0f30c8894e6) @@ -59,33 +59,7 @@ } NVDATAMGMT_READ_STATUS_T; #pragma pack(push, 1) -/********************** OLD STRUCTS TODO REMOVE ******************/ -/// Payload record structure for a linear calibration message. TODO remove -typedef struct -{ - F32 gain; - F32 offset; -} LINEAR_F32_CAL_PAYLOAD_T; -// TODO remove the above structure -/// Calibration data structure. -typedef struct calibration_Data -{ - U32 calRecordRevision; ///< Revision of calibration record (rev when structure changes to determine compatibility with f/w version) - F32 accelXOffset; ///< Accelerometer X axis offset - F32 accelYOffset; ///< Accelerometer Y axis offset - F32 accelZOffset; ///< Accelerometer Z axis offset -#ifdef _HD_ - F32 bloodFlowGain; ///< Gain for blood flow sensor - F32 bloodFlowOffset_mL_min; ///< Offset for blood flow sensor - F32 dialysateFlowGain; ///< Gain for dialysate flow sensor - F32 dialysateFlowOffset_mL_min; ///< Offset for dialysate flow sensor -#endif - //char calDateAccel[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of accelerometer -} CALIBRATION_DATA_T; - -/********************** TODO OLD STRUCT REMOVE ******************/ - /// Read data status structure. typedef struct get_data { @@ -157,12 +131,10 @@ HD_TEMP_SENSORS_CAL_RECORD_T getHDTemperatureSensorsCalibrationRecord( void ); HD_HEPARIN_FORCE_SENSOR_CAL_RECORD_T getHDHeparinForceSensorCalibrationRecord( void ); HD_ACCELEROMETER_SENSOR_CAL_RECORD_T getHDAccelerometerSensorCalibrationRecord( void ); +HD_SYSTEM_RECORD_T getHDSystemRecord( void ); +HD_SERVICE_RECORD_T getHDServiceRecord( void ); #endif -BOOL setCalibrationData ( CALIBRATION_DATA_T data ); //TODO remove -BOOL getCalibrationData ( CALIBRATION_DATA_T* buffer ); //TODO remove -BOOL testResetCalibrationData( U32 key ); // TODO clean up - BOOL setTreatmentTime ( U32 hours ); U32 getTreatmentTime ( void );