Index: NVDataMgmt.c =================================================================== diff -u -r299edeca9155ebc1c7ceeeee8cfc01ee22915557 -r2f7355279ef1d1330623472538a4ff2150a929ad --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 299edeca9155ebc1c7ceeeee8cfc01ee22915557) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 2f7355279ef1d1330623472538a4ff2150a929ad) @@ -72,9 +72,12 @@ // Data addresses in EEPROM #define CALIBRATION_RECORD_START_ADDRESS (BANK7_SECTOR0_START_ADDRESS + 0x100) +#define COMMAND_TIME_OUT 500U // time in ms + typedef enum NVDataMgmt_Self_Test_States { NVDATAMGMT_SELF_TEST_STATE_START = 0, + NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM, // TODO ADD TO AE NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG, NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD, NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME, @@ -186,7 +189,7 @@ // Private variables -static MEMORY_OPS_T jobQueue [ QUEUE_MAX_SIZE ]; +static MEMORY_OPS_T jobQueue [ QUEUE_MAX_SIZE ]; static MEMORY_OPS_T currentJob; static LOG_RECORD_T logRecord; static TREATMENT_TIME_RECORD_T treatmentTimeRecord; @@ -204,10 +207,13 @@ static BOOL isServiceOnEntry = TRUE; static U32 bootloaderFlag = 0; static BOOL hasLogRecordCRCFailed = FALSE; +static BOOL hasCommandFailed = FALSE; +static U32 currentTime = 0; // Private functions static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestStart ( void ); +static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestEnableEEPROM ( void ); // TODO Add to AE static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadBootloaderFlag ( void ); static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadHDTreatmentTime ( void ); static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadDGWaterConsumption ( void ); @@ -244,6 +250,7 @@ static U08 readBufferForTest [ 36 ]; static READ_DATA_T mytest; static CALIBRATION_DATA_T calTest; +static SERVICE_DATA_T service; // REMOVE THIS CODE /************************************************************************* @@ -257,11 +264,9 @@ *************************************************************************/ void initNVDataMgmt ( void ) { - // TODO: initialize all the necessary variables NVDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; NVDataMgmtExecState = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; NVDataMgmtSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; - isServiceOnEntry = TRUE; hasLogRecordCRCFailed = FALSE; queueRearIndex = QUEUE_START_INDEX; queueFrontIndex = QUEUE_START_INDEX; @@ -335,13 +340,13 @@ * @param none * @return BOOL *************************************************************************/ -BOOL writeLogData ( U08* data ) +BOOL writeLogData ( U08* data, U32 length ) { BOOL status = FALSE; - if ( !isQueueFull() ) + if ( !isQueueFull() ) { - enqueue ( NVDATAMGMT_WRITE, NVDATAMGMT_RTC, 0, data, 0, sizeof(LOG_HEADER_T) ); + enqueue ( NVDATAMGMT_WRITE, NVDATAMGMT_EEPROM, 0, data, 0, length ); status = TRUE; } @@ -456,6 +461,11 @@ NVDataMgmtSelfTestState = handleSelfTestStart(); break; + case NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM: + + NVDataMgmtSelfTestState = handleSelfTestEnableEEPROM(); + break; + case NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG: NVDataMgmtSelfTestState = handleSelfTestReadBootloaderFlag(); @@ -622,19 +632,38 @@ *************************************************************************/ static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestStart ( void ) { - NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_START; + NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM; - if ( isServiceOnEntry ) + Fapi_enableEepromBankSectors( BANK7_SECTOR_0_31_ENABLE_BIT_MASK, + BANK7_SECTOR_32_63_ENABLE_BIT_MASK ); + + return state; +} + +/************************************************************************* + * @brief handleSelfTestEnableEEPROM + * The handleSelfTestEnableEEPROM waits for EEPROM to return with ready from + * enabling the EEPROM command + * @details + * Inputs : none + * Outputs : NVDATAMGMT_SELF_TEST_STATE_T + * @param none + * @return NVDATAMGMT_SELF_TEST_STATE_T + *************************************************************************/ +static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestEnableEEPROM ( void ) +{ + NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_ENABLE_EEPROM; + + if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { - Fapi_enableEepromBankSectors( BANK7_SECTOR_0_31_ENABLE_BIT_MASK, - BANK7_SECTOR_32_63_ENABLE_BIT_MASK ); - isServiceOnEntry = FALSE; - } - else if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) - { + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + readFromRAM( BOOTLOADER_FLAG_ADDRESS, BOOTLOADER_FLAG_LENGTH_BYTES ); + currentTime = getMSTimerCount(); + } state = NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG; - isServiceOnEntry = TRUE; } + return state; } @@ -652,29 +681,42 @@ { NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + /* if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { readFromRAM( BOOTLOADER_FLAG_ADDRESS, BOOTLOADER_FLAG_LENGTH_BYTES ); + //currentTime = getMSTimerCount(); isServiceOnEntry= FALSE; - } + }*/ if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { - U08 i; - U08 tempBuffer [ BOOTLOADER_FLAG_LENGTH_BYTES ]; - U32 tempValue; - getDataFromRAM( tempBuffer, BOOTLOADER_FLAG_LENGTH_BYTES ); - for ( i = 0; i < BOOTLOADER_FLAG_LENGTH_BYTES; i++ ) + getDataFromRAM( (U08*)&bootloaderFlag, BOOTLOADER_FLAG_LENGTH_BYTES ); +#ifdef _HD_ + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) { - tempValue = tempBuffer [ i ] << i * SHIFT_8_BITS_FOR_BYTE_SHIFT; - bootloaderFlag = bootloaderFlag + tempValue; + readFromRAM ( HD_TREATMENT_TIME_ADDRESS, sizeof(TREATMENT_TIME_RECORD_T) ); + currentTime = getMSTimerCount(); } + state = NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME; +#else + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + readFromRAM ( DG_CONSUMED_WATER_ADDRESS, sizeof(WATER_CONSUMPTION_RECORD_T) ); + currentTime = getMSTimerCount(); + } + state = NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION; +#endif + } + /*else if ( didTimeout( currentTime, COMMAND_TIME_OUT ) ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_RAM_OPS_ERROR, NVDATAMGMT_SELF_TEST_STATE_READ_BOOTLOADER_FLAG, getRTCRAMStatus() ); + hasCommandFailed = TRUE; #ifdef _HD_ state = NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME; #else state = NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION; #endif isServiceOnEntry= TRUE; - } + }*/ return state; } @@ -693,18 +735,31 @@ { NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + /*if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { readFromRAM ( HD_TREATMENT_TIME_ADDRESS, sizeof(TREATMENT_TIME_RECORD_T) ); isServiceOnEntry= FALSE; - } + }*/ if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { getDataFromRAM ( (U08*)&treatmentTimeRecord, sizeof(TREATMENT_TIME_RECORD_T) ); - state = NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD; - isServiceOnEntry = TRUE; + + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + readFromRAM ( LOG_RECORD_START_ADDRESS, sizeof(LOG_RECORD_T) ); + state = NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD; + } } + /*else if ( didTimeout( currentTime, COMMAND_TIME_OUT ) ) + { + Fapi_StatusType status; + status = FAPI_GET_FSM_STATUS; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_NVDATA_EEPROM_OPS_FAILURE, NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME, + 0 ); + hasCommandFailed = TRUE; + }*/ + return state; } @@ -722,16 +777,19 @@ { NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_WATER_CONSUMPTION; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + /*if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { readFromRAM ( DG_CONSUMED_WATER_ADDRESS, sizeof(WATER_CONSUMPTION_RECORD_T) ); isServiceOnEntry= FALSE; - } + }*/ if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { getDataFromRAM ( (U08*)&waterConsumptionRecord, sizeof(WATER_CONSUMPTION_RECORD_T) ); + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + readFromRAM ( LOG_RECORD_START_ADDRESS, sizeof(LOG_RECORD_T) ); + } state = NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD; - isServiceOnEntry = TRUE; } return state; @@ -749,17 +807,21 @@ static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadLogRecord ( void ) { NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + + /*if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { readFromRAM ( LOG_RECORD_START_ADDRESS, sizeof(LOG_RECORD_T) ); isServiceOnEntry= FALSE; - } + }*/ if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { getDataFromRAM ( (U08*)&logRecord, sizeof(LOG_RECORD_T) ); + + Fapi_doMarginRead ( (U32*)BANK7_SECTOR0_START_ADDRESS, (U32*)&mfgRecord, + sizeof(MFG_RECORD_T), Fapi_NormalRead ); state = NVDATAMGMT_SELF_TEST_STATE_READ_MFG_RECORD; - isServiceOnEntry = TRUE; } + return state; } @@ -776,75 +838,77 @@ static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadMfgRecord ( void ) { NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_MFG_RECORD; - - if ( isServiceOnEntry ) + /*if ( isServiceOnEntry ) { Fapi_doMarginRead ( (U32*)BANK7_SECTOR0_START_ADDRESS, (U32*)&mfgRecord, - sizeof(MFG_DATA_T), Fapi_NormalRead ); + sizeof(MFG_RECORD_T), Fapi_NormalRead ); isServiceOnEntry = FALSE; - } - else if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) + }*/ + if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { + Fapi_doMarginRead ( (U32*)CALIBRATION_RECORD_START_ADDRESS, (U32*)&calibrationRecord, + sizeof(CALIBRATION_RECORD_T), Fapi_NormalRead ); state = NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD; - isServiceOnEntry = TRUE; } return state; } /************************************************************************* - * @brief handleSelfTestReadServiceRecord - * The handleSelfTestReadServiceRecord reads the service dates from RTC - * RAM + * @brief handleSelfTestReadCalibrationRecord + * The handleSelfTestReadCalibrationRecord reads the calibration record + * from EEPROM * @details * Inputs : none * Outputs : NVDATAMGMT_SELF_TEST_STATE_T * @param none * @return NVDATAMGMT_SELF_TEST_STATE_T *************************************************************************/ -static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadServiceRecord ( void ) +static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadCalibrationRecord ( void ) { - NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD; + NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + /*if ( isServiceOnEntry ) { - readFromRAM( SERVICE_DATE_START_ADDRESS, sizeof(SERVICE_RECORD_T) ); - isServiceOnEntry= FALSE; - } - if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) + Fapi_doMarginRead ( (U32*)CALIBRATION_RECORD_START_ADDRESS, (U32*)&calibrationRecord, + sizeof(CALIBRATION_RECORD_T), Fapi_NormalRead ); + isServiceOnEntry = FALSE; + }*/ + if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { - getDataFromRAM ( (U08*)&serviceRecord, sizeof(SERVICE_RECORD_T) ); - state = NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC; - isServiceOnEntry = TRUE; + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + readFromRAM( SERVICE_DATE_START_ADDRESS, sizeof(SERVICE_RECORD_T) ); + state = NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD; + } } return state; } /************************************************************************* - * @brief handleSelfTestReadCalibrationRecord - * The handleSelfTestReadCalibrationRecord reads the calibration record - * from EEPROM + * @brief handleSelfTestReadServiceRecord + * The handleSelfTestReadServiceRecord reads the service dates from RTC + * RAM * @details * Inputs : none * Outputs : NVDATAMGMT_SELF_TEST_STATE_T * @param none * @return NVDATAMGMT_SELF_TEST_STATE_T *************************************************************************/ -static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadCalibrationRecord ( void ) +static NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadServiceRecord ( void ) { - NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_CAL_RECORD; + NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD; - if ( isServiceOnEntry ) + /*if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { - Fapi_doMarginRead ( (U32*)(CALIBRATION_RECORD_START_ADDRESS ), (U32*)&calibrationRecord, - sizeof(CALIBRATION_RECORD_T), Fapi_NormalRead ); - isServiceOnEntry = FALSE; - } - else if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) + readFromRAM( SERVICE_DATE_START_ADDRESS, sizeof(SERVICE_RECORD_T) ); + isServiceOnEntry= FALSE; + }*/ + if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { + getDataFromRAM ( (U08*)&serviceRecord, sizeof(SERVICE_RECORD_T) ); state = NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC; - isServiceOnEntry = TRUE; } return state; @@ -889,7 +953,7 @@ if ( calcCRC != recordCRC ) { hasCRCPassed = FALSE; - // Warning alarm + hasLogRecordCRCFailed = TRUE; } // Check CRC for manufacturing record calcCRC = crc16 ( (U08*)&mfgRecord.mfgData, sizeof(MFG_DATA_T) ); @@ -915,7 +979,7 @@ hasCRCPassed = FALSE; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_NVDATA_SRVC_RECORD_CRC_ERROR, recordCRC, calcCRC ); } - if ( hasCRCPassed ) + if ( hasCRCPassed || !hasCommandFailed ) { NVDataMgmtSelfTestResult = SELF_TEST_STATUS_PASSED; } @@ -939,6 +1003,7 @@ static NVDATAMGMT_EXEC_STATE_T handleExecWaitForPostState ( void ) { NVDATAMGMT_EXEC_STATE_T state = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; + if ( NVDataMgmtSelfTestState == NVDATAMGMT_SELF_TEST_STATE_COMPLETE ) { // TODO: REMOVE THIS CODE @@ -954,13 +1019,15 @@ mytest.status = NVDATAMGMT_READ_IDLE; mytest.externalBuffer = readBufferForTest; - //writeLogData ( (U08*)&logData ); - //readLogData ( &mytest, 5 ); + //writeLogData ( (U08*)&logData, 32 ); + readLogData ( &mytest, sizeof(readBufferForTest) ); //calTest.occSensorOffset = 3.4; //calTest.tempSensorOffset = 13.2; //setCalibrationData(calTest); - + char a[10] = {'0','3','-', '0','3','-','2','0','2','0'};; + memcpy(service.currentServiceDate, a, 10); + memcpy(service.nextServiceDate, a, 10); //setTreatmentTime(750); /*MFG_DATA_T test; @@ -998,25 +1065,43 @@ dequeue(); NVDATAMGMT_OPERATION_STATE_T ops = currentJob.memoryOperation; NVDATAMGMT_LOCATION_STATE_T location = currentJob.memoryLocation; + U32* startAddress = currentJob.startAddress; + U32 length = currentJob.length; if ( ops == NVDATAMGMT_WRITE && location == NVDATAMGMT_EEPROM ) { + Fapi_issueProgrammingCommand ( startAddress, currentJob.buffer, length, + 0x00, 0, Fapi_DataOnly ); state = NVDATAMGMT_EXEC_STATE_WRITE_TO_EEPROM; } else if ( ops == NVDATAMGMT_READ && location == NVDATAMGMT_EEPROM ) { + Fapi_doMarginRead ( startAddress, (U32*)( currentJob.externalAddress->externalBuffer ), + length, Fapi_NormalRead ); + // Change the status to in progress until the read operation is done + currentJob.externalAddress->status = NVDATAMGMT_READ_IN_PROGRESS; state = NVDATAMGMT_EXEC_STATE_READ_FROM_EEPROM; } else if ( ops == NVDATAMGMT_ERASE_SECTOR ) { + Fapi_issueAsyncCommandWithAddress ( Fapi_EraseSector, startAddress ); state = NVDATAMGMT_EXEC_STATE_ERASE_EEPROM; } else if ( ops == NVDATAMGMT_WRITE && location == NVDATAMGMT_RTC ) { + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + writeToRAM ( (U32)startAddress, currentJob.buffer, length ); + } state = NVDATAMGMT_EXEC_STATE_WRITE_TO_RTC; } else if ( ops == NVDATAMGMT_READ && location == NVDATAMGMT_RTC ) { + if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + { + readFromRAM( (U32)startAddress, length ); + currentJob.externalAddress->status = NVDATAMGMT_READ_IN_PROGRESS; + } state = NVDATAMGMT_EXEC_STATE_READ_FROM_RTC; } } @@ -1038,16 +1123,16 @@ { NVDATAMGMT_EXEC_STATE_T state = NVDATAMGMT_EXEC_STATE_WRITE_TO_EEPROM; - if ( isServiceOnEntry ) + /*if ( isServiceOnEntry ) { Fapi_issueProgrammingCommand ( currentJob.startAddress, currentJob.buffer, currentJob.length, 0x00, 0, Fapi_DataOnly ); isServiceOnEntry = FALSE; - } - else if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) + }*/ + if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { state = NVDATAMGMT_EXEC_STATE_IDLE; - isServiceOnEntry = TRUE; + //isServiceOnEntry = TRUE; } return state; @@ -1067,20 +1152,20 @@ { NVDATAMGMT_EXEC_STATE_T state = NVDATAMGMT_EXEC_STATE_READ_FROM_EEPROM; - if ( isServiceOnEntry ) + /*if ( isServiceOnEntry ) { Fapi_doMarginRead ( currentJob.startAddress, (U32*)currentJob.externalAddress->externalBuffer, currentJob.length, Fapi_NormalRead ); // Change the status to in progress until the read operation is done currentJob.externalAddress->status = NVDATAMGMT_READ_IN_PROGRESS; isServiceOnEntry = FALSE; - } - else if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) + }*/ + if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { currentJob.externalAddress->status = NVDATAMGMT_READ_COMPLETE; state = NVDATAMGMT_EXEC_STATE_IDLE; - isServiceOnEntry = TRUE; + //isServiceOnEntry = TRUE; } return state; @@ -1100,15 +1185,15 @@ { NVDATAMGMT_EXEC_STATE_T state = NVDATAMGMT_EXEC_STATE_ERASE_EEPROM; - if ( isServiceOnEntry ) + /*if ( isServiceOnEntry ) { Fapi_issueAsyncCommandWithAddress ( Fapi_EraseSector, currentJob.startAddress ); isServiceOnEntry = FALSE; - } - else if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) + }*/ + if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady ) { state = NVDATAMGMT_EXEC_STATE_IDLE; - isServiceOnEntry = TRUE; + //isServiceOnEntry = TRUE; } return state; @@ -1129,16 +1214,16 @@ { NVDATAMGMT_EXEC_STATE_T state = NVDATAMGMT_EXEC_STATE_WRITE_TO_RTC; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + /*if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { writeToRAM ( (U32)( currentJob.startAddress ), currentJob.buffer, currentJob.length ); isServiceOnEntry= FALSE; - } + }*/ if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { state = NVDATAMGMT_EXEC_STATE_IDLE; - isServiceOnEntry = TRUE; + //isServiceOnEntry = TRUE; } return state; @@ -1159,16 +1244,17 @@ static NVDATAMGMT_EXEC_STATE_T handleExecReadFromRAMState ( void ) { NVDATAMGMT_EXEC_STATE_T state = NVDATAMGMT_EXEC_STATE_READ_FROM_RTC; - if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) + /*if ( isServiceOnEntry && getRTCRAMState() == RTC_RAM_STATE_READY ) { readFromRAM( (U32)( currentJob.startAddress ), currentJob.length ); isServiceOnEntry= FALSE; - } + }*/ if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE ) { - getDataFromRAM( currentJob.buffer, currentJob.length ); + getDataFromRAM( currentJob.externalAddress->externalBuffer, currentJob.length ); + currentJob.externalAddress->status = NVDATAMGMT_READ_COMPLETE; state = NVDATAMGMT_EXEC_STATE_IDLE; - isServiceOnEntry = TRUE; + //isServiceOnEntry = TRUE; } return state; } @@ -1203,7 +1289,10 @@ jobQueue [ myAddIndex ].startAddress = (U32*)startAddress; jobQueue [ myAddIndex ].length = length; jobQueue [ myAddIndex ].externalAddress = extAddress; - memcpy ( jobQueue [ myAddIndex ].buffer, data, length ); + if ( extAddress == 0 ) + { + memcpy ( jobQueue [ myAddIndex ].buffer, data, length ); + } } /************************************************************************* @@ -1237,16 +1326,19 @@ // If full // 1. set readIndexChange = +512 // 2. set recordCountchange = -512 - readIndexChange = MAX_LOG_DATA_PER_SECTOR; - logRecord.logHeader.recordCount = logRecord.logHeader.recordCount - MAX_LOG_DATA_PER_SECTOR; + if ( logRecord.logHeader.recordCount >= MAX_NUM_OF_DATA_LOGS_IN_SECTOR3 - 1 ) + { + logRecord.logHeader.recordCount = logRecord.logHeader.recordCount - MAX_LOG_DATA_PER_SECTOR; + readIndexChange = MAX_LOG_DATA_PER_SECTOR; + } setMemoryOpsStruct ( NVDATAMGMT_ERASE_SECTOR, NVDATAMGMT_EEPROM, opsStartAddress, 0, 0, 0 ); } // Check for wrap in 1536 which is at the end of sector 3 writeIndexChange = INC_WRAP( logRecord.logHeader.nextWriteIndex, LOG_DATA_START_INDEX, MAX_NUM_OF_DATA_LOGS_IN_SECTOR3 - 1 ); logRecord.logHeader.nextWriteIndex = writeIndexChange; - logRecord.logHeader.recordCount = logRecord.logHeader.recordCount + recordCountChange; - logRecord.logHeader.nextReadIndex = logRecord.logHeader.nextReadIndex + readIndexChange; + logRecord.logHeader.recordCount = logRecord.logHeader.recordCount + recordCountChange; + logRecord.logHeader.nextReadIndex = logRecord.logHeader.nextReadIndex + readIndexChange; // Calculate the CRC for the new record logRecord.crc = crc16 ( (U08*)&logRecord.logHeader, sizeof(LOG_HEADER_T) ); @@ -1321,7 +1413,6 @@ // Setup EEPROM read log event else if ( ops == NVDATAMGMT_READ && location == NVDATAMGMT_EEPROM ) { - //maxBufferLength = MAX_JOB_DATA_SIZE_BYTES; if ( startAddress == 0 ) { opsStartAddress = prepareReadLogJobAndGetStartAddress(); Index: NVDataMgmt.h =================================================================== diff -u -r299edeca9155ebc1c7ceeeee8cfc01ee22915557 -r2f7355279ef1d1330623472538a4ff2150a929ad --- NVDataMgmt.h (.../NVDataMgmt.h) (revision 299edeca9155ebc1c7ceeeee8cfc01ee22915557) +++ NVDataMgmt.h (.../NVDataMgmt.h) (revision 2f7355279ef1d1330623472538a4ff2150a929ad) @@ -59,6 +59,7 @@ { F32 occSensorOffset; F32 tempSensorOffset; + char calibrationDate [ MAX_DATE_CHARACTERS ]; } CALIBRATION_DATA_T; typedef struct get_data @@ -82,6 +83,10 @@ void getCalibrationData ( U08* buffer ); +BOOL setServiceDate ( SERVICE_DATA_T data ); // TODO ADD TO AE + +void getServiceDate ( U08* buffer ); // TODO ADD TO AE + BOOL setTreatmentTime ( U32 mins ); U32 getTreatmentTime ( void ); @@ -90,7 +95,7 @@ U32 getWaterConsumption ( void ); -BOOL writeLogData ( U08* data ); +BOOL writeLogData ( U08* data, U32 length ); BOOL readLogData ( READ_DATA_T* buffer, U32 length );