Index: NVDataMgmt.c =================================================================== diff -u -rb6692fc38b400e9f2c12520fcadc2438e5a31e36 -rb4e91eb8049e94b0937e341880a90327113fce56 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision b6692fc38b400e9f2c12520fcadc2438e5a31e36) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision b4e91eb8049e94b0937e341880a90327113fce56) @@ -172,7 +172,7 @@ { MFG_DATA_T mfgData; ///< Manufacturing data struct U16 crc; ///< Manufacturing data CRC - U08 Padding[ 0x400 - sizeof(MFG_DATA_T) - sizeof(U16) ]; ///< + U08 Padding[ 0x30 - sizeof(MFG_DATA_T) - sizeof(U16) ]; ///< Padding for reserved mfg data space } MFG_RECORD_T; /// Service record struct @@ -187,7 +187,7 @@ { CALIBRATION_DATA_T calData; ///< Calibration data struct U16 crc; ///< Calibration data CRC - U08 Padding[ 0x400 - sizeof(CALIBRATION_DATA_T) - sizeof(U16) ]; ///< + U08 Padding[ 0x50 - sizeof(CALIBRATION_DATA_T) - sizeof(U16) ]; ///< Padding for reserved cal data space } CALIBRATION_RECORD_T; /// Last disinfection record struct @@ -339,11 +339,13 @@ *************************************************************************/ BOOL setCalibrationData ( CALIBRATION_DATA_T data ) { + BOOL status; + calibrationRecord.calData = data; - calibrationRecord.crc = crc16 ( (U08*)&calibrationRecord.calData, - sizeof(CALIBRATION_DATA_T) ); + calibrationRecord.crc = crc16( (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); // The entire sector 0 must be erased and re-written again - BOOL status = enqueueBank7Sector0Records(); + status = enqueueBank7Sector0Records(); + return status; } @@ -361,14 +363,18 @@ { BOOL status = FALSE; - if ( ( buffer != NULL ) && ( TRUE == calRecordIsValid ) ) + if ( buffer != NULL ) { memcpy ( buffer, (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); - status = TRUE; + if ( TRUE == calRecordIsValid ) + { + status = TRUE; + } } return status; - } +} + /************************************************************************* * @brief setServiceDate * The setServiceDate updates the struct that holds the calibration data, @@ -733,7 +739,7 @@ * @param none * @return none *************************************************************************/ -void execNVDataMgmt ( void ) +void execNVDataMgmt( void ) { switch ( NVDataMgmtExecState ) { @@ -958,12 +964,15 @@ // If the RAM is in Idle, read the log records if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE || timeoutStatus == TRUE ) { + U32 len = sizeof(MFG_RECORD_T) / sizeof(U32); + U32 *addr = (U32*)&mfgRecord; + getDataFromRAM ( (U08*)&logRecord, sizeof(LOG_RECORD_T) ); currentTime = getMSTimerCount(); // Get ready for reading the manufacturing record - Fapi_doMarginRead ( (U32*)BANK7_SECTOR0_START_ADDRESS, (U32*)&mfgRecord, - sizeof(MFG_RECORD_T), Fapi_NormalRead ); + Fapi_doMarginRead ( (U32*)BANK7_SECTOR0_START_ADDRESS, addr, + len, Fapi_NormalRead ); state = NVDATAMGMT_SELF_TEST_STATE_READ_MFG_RECORD; } @@ -991,7 +1000,7 @@ currentTime = getMSTimerCount(); // Send the read command for calibration record Fapi_doMarginRead ( (U32*)CALIBRATION_RECORD_START_ADDRESS, (U32*)&calibrationRecord, - sizeof(CALIBRATION_RECORD_T), Fapi_NormalRead ); + sizeof(CALIBRATION_RECORD_T) / sizeof(U32), Fapi_NormalRead ); state = NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD; } @@ -1151,7 +1160,7 @@ } #endif // Check CRC for calibration record - calcCRC = crc16 ( (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); + calcCRC = crc16( (U08*)&calibrationRecord.calData, sizeof(CALIBRATION_DATA_T) ); recordCRC = calibrationRecord.crc; if ( calcCRC != recordCRC ) { @@ -1704,10 +1713,8 @@ { // 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) ); + 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; }