Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -rbeb95e3e8f85740707704d7089db8b3ec8574bbd -r9b306db98cfce6e9a750b971e1a34c688618aeae --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision beb95e3e8f85740707704d7089db8b3ec8574bbd) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 9b306db98cfce6e9a750b971e1a34c688618aeae) @@ -133,7 +133,7 @@ break; case DD_POST_STATE_NVDATAMGMT: -// testStatus = execNVMSelfTest(); + testStatus = execNVMSelfTest(); postState = handlePOSTStatus( testStatus ); break; Index: firmware/App/Services/NVMessagingDD.c =================================================================== diff -u -r0599bd5494eb64416999de0487a9882c557b6044 -r9b306db98cfce6e9a750b971e1a34c688618aeae --- firmware/App/Services/NVMessagingDD.c (.../NVMessagingDD.c) (revision 0599bd5494eb64416999de0487a9882c557b6044) +++ firmware/App/Services/NVMessagingDD.c (.../NVMessagingDD.c) (revision 9b306db98cfce6e9a750b971e1a34c688618aeae) @@ -136,7 +136,8 @@ static BOOL sendAccelSensorCalRecord( void ); static BOOL sendBloodLeakSensorCalRecord( void ); -static BOOL receiveCalRecord( MESSAGE_T *message, DD_CAL_REC_TYPE calRecordType, U16 recordSize ); +static BOOL receiveCalRecord( MESSAGE_T *message, BOOL isIndexed, + DD_CAL_REC_TYPE calRecordType, U16 recordSize ); static MSG_ID_T getNVMCalRecordResponseMsgId(DD_CAL_REC_TYPE calRecordType ); static void monitorNewCalSignal( void ); @@ -967,22 +968,32 @@ * @return TRUE if the calibration record was accepted and processed * successfully otherwise FALSE *************************************************************************/ -static BOOL receiveCalRecord( MESSAGE_T* message, DD_CAL_REC_TYPE calRecordType, U16 recordSize ) +static BOOL receiveCalRecord( MESSAGE_T* message, BOOL isIndexed, + DD_CAL_REC_TYPE calRecordType, U16 recordSize ) { BOOL status = FALSE; U08* payloadPtr = message->payload; - U08 expectedPayloadLen = ( sizeof(U08) + recordSize ); + U08 expectedPayloadLen = recordSize ; MSG_ID_T msgID = getNVMCalRecordResponseMsgId( calRecordType ); UI_RESPONSE_PAYLOAD_T response; + if ( TRUE == isIndexed ) + { + expectedPayloadLen = ( sizeof(U08) + recordSize ); + } + DD_NVM_SEND_RECORD_PAYLOAD_T recvdPayload; if ( DD_MODE_SERV == getCurrentOperationMode() ) { if ( message->hdr.payloadLen == expectedPayloadLen ) { - memcpy( &recvdPayload.idx, payloadPtr, sizeof(U32)); - payloadPtr += sizeof(U08); + // Get the index of the received calibration record if required + if ( TRUE == isIndexed ) + { + memcpy( &recvdPayload.idx, payloadPtr, sizeof(U32)); + payloadPtr += sizeof(U08); + } memcpy( &recvdPayload.data, payloadPtr, recordSize ); @@ -1414,7 +1425,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_PRESSURE_SENSOR, + result = receiveCalRecord( message, TRUE, DD_CAL_RECORD_PRESSURE_SENSOR, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); return result; @@ -1434,7 +1445,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_TEMPERATURE_SENSOR, + result = receiveCalRecord( message, TRUE, DD_CAL_RECORD_TEMPERATURE_SENSOR, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); return result; @@ -1454,7 +1465,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_CONCENTRATE_PUMP, + result = receiveCalRecord( message, TRUE, DD_CAL_RECORD_CONCENTRATE_PUMP, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); return result; @@ -1474,7 +1485,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_D12_PUMP, + result = receiveCalRecord( message, FALSE, DD_CAL_RECORD_D12_PUMP, sizeof( DD_D12_DIALYSATE_PUMP_RECORD_T ) ); return result; @@ -1494,7 +1505,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_D48_PUMP, + result = receiveCalRecord( message, FALSE, DD_CAL_RECORD_D48_PUMP, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); return result; @@ -1514,7 +1525,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_ACID_CONCENTRATE, + result = receiveCalRecord( message, TRUE, DD_CAL_RECORD_ACID_CONCENTRATE, sizeof( DD_ACID_CONCENTRATE_T ) ); return result; @@ -1535,7 +1546,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_BICARB_CONCENTRATE, + result = receiveCalRecord( message, TRUE, DD_CAL_RECORD_BICARB_CONCENTRATE, sizeof( DD_BICARB_CONCENTRATE_T ) ); return result; @@ -1555,7 +1566,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_ACCELEROMETER_SENSOR, + result = receiveCalRecord( message, FALSE, DD_CAL_RECORD_ACCELEROMETER_SENSOR, sizeof( DD_ACCEL_SENSOR_CAL_RECORD_T ) ); return result; @@ -1575,7 +1586,7 @@ { BOOL result = FALSE; - result = receiveCalRecord( message, DD_CAL_RECORD_BLLOD_LEAK_SENSOR, + result = receiveCalRecord( message, FALSE, DD_CAL_RECORD_BLLOD_LEAK_SENSOR, sizeof( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T ) ); return result; Index: firmware/App/Services/NVRecordsDD.c =================================================================== diff -u -r0599bd5494eb64416999de0487a9882c557b6044 -r9b306db98cfce6e9a750b971e1a34c688618aeae --- firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 0599bd5494eb64416999de0487a9882c557b6044) +++ firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 9b306db98cfce6e9a750b971e1a34c688618aeae) @@ -233,7 +233,6 @@ static void initDDServiceRecord( void ); static void initDDInstitutionalRecord( void ); static void initDDUsageRecord( void ); -//static void initDDCalibrationRecord( void ); static void updateRecordPadding( NVM_RECORD_TYPE_T recType ); @@ -967,82 +966,6 @@ /*********************************************************************//** * @brief - * The initDDCalibrationRecord function initializes the DD calibration record with - * default values. - * @details \b Inputs: none - * @details \b Outputs: ddCalibrationGroup.ddCalibrationRecord - * @return none - *************************************************************************/ -//static void initDDCalibrationRecord( void ) -//{ -// U32 i; -// POLYNOMIAL_CAL_PAYLOAD_T* record; -// -// DD_PRES_SENSORS_CAL_RECORD_T* pressure = &ddCalibrationGroup.ddCalibrationRecord.presSensorsCalRecord; -// for ( i = 0; i < NUM_OF_PRESSURE_SENSORS; i++ ) -// { -// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->pressureSensors[ i ]; -// benignPolynomialCalRecord( record ); -// } -// -// DD_TEMP_SENSORS_CAL_RECORD_T* temperature = &ddCalibrationGroup.ddCalibrationRecord.tempSensorsCalRecord; -// for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) -// { -// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->tempSensors[ i ]; -// benignPolynomialCalRecord( record ); -// } -// -// DD_CONC_PUMPS_CAL_RECORD_T* concPump = &ddCalibrationGroup.ddCalibrationRecord.concentratePumpsRecord; -// for ( i = 0; i < NUM_OF_CONCENTRATE_PUMPS; i++ ) -// { -// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&concPump->concentratePumps[ i ]; -// benignPolynomialCalRecord( record ); -// } -// -// ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.targetPumpSpeed = DEFAULT_D12_PUMP_TARGET_SPEED; -// ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.calibrationTime = RECORD_DEFAULT_TIME; -// ddCalibrationGroup.ddCalibrationRecord.d12DialysatePumpRecord.crc = crc16 ( (U08*)record, -// sizeof( DD_D12_DIALYSATE_PUMP_RECORD_T ) - sizeof( U16 ) ); -// -// DD_D48_DIALYSATE_PUMP_RECORD_T* d48Pump = &ddCalibrationGroup.ddCalibrationRecord.d48DialysatePumpRecord; -// record = (POLYNOMIAL_CAL_PAYLOAD_T*)&d48Pump->d48DialysatePump; -// benignPolynomialCalRecord( record ); -// -// DD_ACID_CONCENTRATES_RECORD_T* acidConc = &ddCalibrationGroup.ddCalibrationRecord.acidConcentratesRecord; -// for ( i = 0; i < NUM_OF_ACID_TYPE; i++ ) -// { -// acidConc->acidConcentrate[ i ].acidConcMixRatio = DEFAULT_ACID_CONC_MIXING_RATIO; -// acidConc->acidConcentrate[ i ].acidFullBottleVolumeML = DEFAULT_ACID_BOTTLE_VOL_ML; -// acidConc->acidConcentrate[ i ].acidConductivityUSPerCM = DEFAULT_ACID_COND_US_PER_CM; -// acidConc->acidConcentrate[ i ].acidBottleTemperature = DEFAULT_ACID_BOTTLE_TEMP_C; -// acidConc->acidConcentrate[ i ].calibrationTime = RECORD_DEFAULT_TIME; -// acidConc->acidConcentrate[ i ].crc = crc16 ( (U08*)record, sizeof( DD_ACID_CONCENTRATE_T ) - sizeof( U16 ) ); -// } -// -// DD_BICARB_CONCENTRATES_RECORD_T* bicarbConc = &ddCalibrationGroup.ddCalibrationRecord.bicarbConcentratesRecord; -// for ( i = 0; i < NUM_OF_BICARB_TYPE; i++ ) -// { -// bicarbConc->bicarbConcentrate[ i ].bicarbConcMixRatio = DEFAULT_BICARB_CONC_MIXING_RATIO; -// bicarbConc->bicarbConcentrate[ i ].bicarbStartVolumeML = DEFAULT_BICARB_BOTTLE_VOL_ML; -// bicarbConc->bicarbConcentrate[ i ].bicarbConductivityUSPerCM = DEFAULT_BICARB_COND_US_PER_CM; -// bicarbConc->bicarbConcentrate[ i ].bicarbBottleTemperature = DEFAULT_BICARB_BOTTLE_TEMP_C; -// bicarbConc->bicarbConcentrate[ i ].calibrationTime = RECORD_DEFAULT_TIME; -// bicarbConc->bicarbConcentrate[ i ].crc = crc16 ( (U08*)record, sizeof( DD_BICARB_CONCENTRATE_T ) - sizeof( U16 ) ); -// } -// -// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelXOffset = RECORD_DEFAULT_OFFSET; -// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelYOffset = RECORD_DEFAULT_OFFSET; -// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.accelZOffset = RECORD_DEFAULT_OFFSET; -// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.calibrationTime = RECORD_DEFAULT_TIME; -// ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.crc = crc16 ( (U08*)record, sizeof(DD_ACCEL_SENSOR_CAL_RECORD_T) - sizeof(U16) ); -// -// ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.setPoint = DEFAULT_BLOOD_LEAK_SET_POINT; -// ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.calibrationTime = RECORD_DEFAULT_TIME; -// ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord.crc = crc16 ( (U08*)record, sizeof( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T ) - sizeof( U16 ) ); -//} - -/*********************************************************************//** - * @brief * The updateRecordPadding function updates the padding bytes of the * specified NV record. It clears all padding bytes to ensure * consistent CRC calculation and record storage. @@ -1475,7 +1398,6 @@ return ( ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord ); } - /*********************************************************************//** * @brief * The getNVMRecord function copies the requested non-volatile