Index: NVDataMgmt.c =================================================================== diff -u -reb133bc728b96fda709740f61b5dc22eae9ac5c9 -r779c7d77dada88780c86e3c77a0055dcda10ef04 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision eb133bc728b96fda709740f61b5dc22eae9ac5c9) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 779c7d77dada88780c86e3c77a0055dcda10ef04) @@ -956,65 +956,65 @@ BOOL getNVRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ) { U08 i; - U08* nvDataStartPtr = 0; - BOOL isNVDataValid = FALSE; - U32 nvDataLength = 0; + U08* nvDataStartPtr = 0; + BOOL isNVDataInvalid = FALSE; + U32 nvDataLength = 0; switch ( nvData ) { #ifdef _HD_ case GET_CAL_BLOOD_LEAK_SENSOR: - nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.bloodLeakSensorCalRecord; - nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.bloodLeakSensorCalRecord ); - isNVDataValid = ( 0 == hdCalibrationRecord.hdCalibrationGroups.bloodLeakSensorCalRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.bloodLeakSensorCalRecord; + nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.bloodLeakSensorCalRecord ); + isNVDataInvalid = ( 0 == hdCalibrationRecord.hdCalibrationGroups.bloodLeakSensorCalRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_TEMPERATURE_SESNORS: nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.tempSensorsCalRecord; nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.tempSensorsCalRecord ); // Loop through each sensor's calibration data and make sure it is valid for ( i = 0; i < NUM_OF_CAL_DATA_HD_TEMP_SENSORS; i++ ) - isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.tempSensorsCalRecord.hdTemperatureSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.tempSensorsCalRecord.hdTemperatureSensors[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_ACCEL_SENSORS: - nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.accelerometerSensorCalRecord; - nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.accelerometerSensorCalRecord ); - isNVDataValid = ( 0 == hdCalibrationRecord.hdCalibrationGroups.accelerometerSensorCalRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.accelerometerSensorCalRecord; + nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.accelerometerSensorCalRecord ); + isNVDataInvalid = ( 0 == hdCalibrationRecord.hdCalibrationGroups.accelerometerSensorCalRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_HEPARIN_FORCE_SENSOR: - nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.heparinForceSensorCalRecord; - nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.heparinForceSensorCalRecord ); - isNVDataValid = ( 0 == hdCalibrationRecord.hdCalibrationGroups.heparinForceSensorCalRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.heparinForceSensorCalRecord; + nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.heparinForceSensorCalRecord ); + isNVDataInvalid = ( 0 == hdCalibrationRecord.hdCalibrationGroups.heparinForceSensorCalRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_PUMPS: nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.pumpsCalRecord; nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.pumpsCalRecord ); for ( i = 0; i < NUM_OF_CAL_DATA_HD_PUMPS; i++ ) - isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.pumpsCalRecord.hdPumps[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.pumpsCalRecord.hdPumps[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_PRESSURE_SENSORS: 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 ); + isNVDataInvalid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.pressureSensorsCalRecord.hdPressureSensors[ i ].calibrationTime ? TRUE : FALSE ); 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 ); + isNVDataInvalid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.occlusionSensorsCalRecord.hdOcclusionSensors[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_VALVES: nvDataStartPtr = (U08*)&hdCalibrationRecord.hdCalibrationGroups.valvesCalRecord; nvDataLength = sizeof( hdCalibrationRecord.hdCalibrationGroups.valvesCalRecord ); for ( i = 0; i < NUM_OF_CAL_DATA_HD_VALVES; i++ ) - isNVDataValid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.valvesCalRecord.hdvalves[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == hdCalibrationRecord.hdCalibrationGroups.valvesCalRecord.hdvalves[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_SYS_RECORD: @@ -1037,115 +1037,115 @@ nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord.pressureSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord.pressureSensors[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_LOAD_CELL_SENSORS: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord.loadCells[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord.loadCells[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_FLOW_SENSORS: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord.flowSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord.flowSensors[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_ACID_CONCENTREATES: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord.acidConcentrate[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord.acidConcentrate[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_BICARB_CONCENTRATES: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord.bicarbConcentrate[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord.bicarbConcentrate[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_ACCEL_SENSORS: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord; - isNVDataValid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord; + isNVDataInvalid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_CONDUCTIVITY_SENSORS: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.condSensorsCalRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.condSensorsCalRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.condSensorsCalRecord.condSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.condSensorsCalRecord.condSensors[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_TEMP_SENSORS: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord.tempSensors[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord.tempSensors[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_RSRVRS_VOL_RECORD: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.reservoirVolumesRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.reservoirVolumesRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.reservoirVolumesRecord.reservoir[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.reservoirVolumesRecord.reservoir[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_HEATING_RECORD: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.heatingCalRecord; - nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.heatingCalRecord ); - isNVDataValid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.heatingCalRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.heatingCalRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.heatingCalRecord ); + isNVDataInvalid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.heatingCalRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_DRAIN_LINE_VOLUME_RECORD: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord; - nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord ); - isNVDataValid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord ); + isNVDataInvalid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_RO_PUMP_RECORD: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.roPumpRecord; - nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.roPumpRecord ); - isNVDataValid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.roPumpRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.roPumpRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.roPumpRecord ); + isNVDataInvalid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.roPumpRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_CONCENTRATE_PUMPS_RECORD: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.concentratePumpsRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.concentratePumpsRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.concentratePumpsRecord.concentratePumps[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.concentratePumpsRecord.concentratePumps[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_DRAIN_PUMP_RECORD: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord; - nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord ); - isNVDataValid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord ); + isNVDataInvalid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_FANS_RECORD: nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.fansRecord; nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.fansRecord ); for ( i = 0; i < numOfSnsrs2Check; i++ ) - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.fansRecord.fans[ i ].calibrationTime ? FALSE : TRUE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.fansRecord.fans[ i ].calibrationTime ? TRUE : FALSE ); break; case GET_CAL_PRE_RO_PURGE_VOLUME_RECORD: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord; - nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord ); - isNVDataValid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord ); + isNVDataInvalid = ( 0 == dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord.calibrationTime ? TRUE : FALSE ); break; case GET_CAL_FILTERS_RECORD: - nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.filtersRecord; - nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.filtersRecord ); - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonFilter.calibrationTime ? FALSE : TRUE ); - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonPolishFilter.calibrationTime ? FALSE : TRUE ); - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.roFilter.calibrationTime ? FALSE : TRUE ); - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.sedimentFilter.calibrationTime ? FALSE : TRUE ); - isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.ultraFilter.calibrationTime ? FALSE : TRUE ); + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.filtersRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.filtersRecord ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonFilter.calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonPolishFilter.calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.roFilter.calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.sedimentFilter.calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.ultraFilter.calibrationTime ? TRUE : FALSE ); break; case GET_INF_HEATERS_RECORD: @@ -1183,12 +1183,12 @@ } // Check if the non-volatile data is valid and if not raise the alarm - if ( FALSE == isNVDataValid ) + if ( TRUE == isNVDataInvalid ) { // If no alarm has been provided to raise, just set the variable as TRUE if ( ALARM_ID_NO_ALARM == nvAlarm ) { - isNVDataValid = TRUE; + isNVDataInvalid = TRUE; } else { @@ -1201,13 +1201,14 @@ #ifndef _RELEASE_ else { - isNVDataValid = TRUE; + isNVDataInvalid = FALSE; } #endif } } - return isNVDataValid; + // Reverse the polarity to signal the outside users that the calibration has passed. + return ( FALSE == isNVDataInvalid ? TRUE : FALSE ); } #ifndef _RELEASE_ @@ -1702,7 +1703,7 @@ currentTime = getMSTimerCount(); state = NVDATAMGMT_EXEC_STATE_WRITE_TO_RTC; } - else if ( ( NVDATAMGMT_READ == ops ) && ( NVDATAMGMT_RTC == location) ) + else if ( ( NVDATAMGMT_READ == ops ) && ( NVDATAMGMT_RTC == location ) ) { readFromRAM( startAddress, maxBufferLength ); //currentJob.externalAddress->status = NVDATAMGMT_READ_IN_PROGRESS; // TODO Phase 1B for logging @@ -3797,10 +3798,18 @@ if ( getAvailableRecordQueueCount() >= MIN_JOBS_NEEDED_FOR_SECTOR_0 ) { + RECORD_JOBS_STATE_T record; + enqueueRecordJob( NVDATAMGMT_ERASE_SECTOR, NVDATAMGMT_EEPROM, NVDATAMGMT_CALIBRATION_RECORD ); - enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_EEPROM, NVDATAMGMT_CALIBRATION_RECORD ); - enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_EEPROM, NVDATAMGMT_SYSTEM_RECORD ); - enqueueRecordJob( NVDATAMGMT_WRITE, NVDATAMGMT_EEPROM, NVDATAMGMT_SERVICE_RECORD ); + + for ( record = NVDATAMGMT_CALIBRATION_RECORD; record < NUM_OF_NVDATMGMT_RECORDS_JOBS; record++ ) + { + if ( NVDATAMGMT_EEPROM == RECORDS_SPECS[ record ].dataLoc ) + { + enqueueRecordJob( NVDATAMGMT_WRITE, RECORDS_SPECS[ record ].dataLoc, record ); + } + } + status = TRUE; }