Index: firmware/App/Services/NVMessagingDD.c =================================================================== diff -u -rac72b3fa86015b2c60c7687a4597dd4ae5c24dc8 -r83bae6ae5f7f26a3511d1d6965310fd8ac9ad496 --- firmware/App/Services/NVMessagingDD.c (.../NVMessagingDD.c) (revision ac72b3fa86015b2c60c7687a4597dd4ae5c24dc8) +++ firmware/App/Services/NVMessagingDD.c (.../NVMessagingDD.c) (revision 83bae6ae5f7f26a3511d1d6965310fd8ac9ad496) @@ -196,7 +196,6 @@ { BOOL accepted; ///< Accepted/Rejected U32 rejectionReason; ///< Reason to reject the entire request - U32 idxRejectReason; ///< Reason to reject sensor index of the calibration record LINEAR_REJECT_REASON_CAL_PAYLOAD_T data; ///< Linear record reject reasons } DD_NVM_SET_LINEAR_CAL_REC_PAYLOAD_T; @@ -247,7 +246,6 @@ { BOOL accepted; ///< Accepted/Rejected U32 rejectionReason; ///< Reason to reject the entire request - U32 idxRejectReason; ///< Reason to reject Acid Conc index U32 acidConcMixRatioRejectReason; ///< Reason to reject Acid Conc calibration record parameter acidConcMixRatio U32 acidFullBottleVolumeMLRejectReason; ///< Reason to reject Acid Conc calibration record parameter acidFullBottleVolumeML U32 acidConductivityUSPerCMRejectReason; ///< Reason to reject Acid Conc calibration record parameter acidConductivityUSPerCM @@ -269,7 +267,6 @@ { BOOL accepted; ///< Accepted/Rejected U32 rejectionReason; ///< Reason to reject the entire request - U08 idxRejectReason; ///< Reason to reject bicarb Conc index U32 bicarbConcMixRatioRejectReason; ///< Reason to reject bicarb Conc calibration record parameter bicarbConcMixRatio U32 bicarbStartVolumeMLRejectReason; ///< Reason to reject bicarb Conc calibration record parameter bicarbStartVolumeML U32 bicarbConductivityUSPerCMRejectReason; ///< Reason to reject bicarb Conc calibration record parameter bicarbConductivityUSPerCM @@ -327,7 +324,6 @@ { BOOL accepted; ///< Accepted/Rejected U32 rejectionReason; ///< Reason to reject the entire request - U32 idxRejectReason; ///< Reason to reject conductivity sensor index U32 K_highRejectReason; ///< Reason to reject conductivity sensor calibration record parameter K_high U32 alpha_higRejectReason; ///< Reason to reject conductivity sensor calibration record parameter alpha_high U32 eta_highRejectReason; ///< Reason to reject conductivity sensor calibration record parameter eta_high @@ -675,7 +671,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_SYSTEM_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_SYSTEM_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_SYSTEM_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateSendRetryCount( sendStatus ); @@ -712,7 +708,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_SERVICE_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_SERVICE_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_SERVICE_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateSendRetryCount( sendStatus ); @@ -750,7 +746,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_USAGE_INFO_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_USAGE_INFO_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_USAGE_INFO_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateSendRetryCount( sendStatus ); @@ -788,7 +784,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_INSTIT_BASIC_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_INSTIT_BASIC_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_INSTIT_BASIC_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateSendRetryCount( sendStatus ); @@ -826,7 +822,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_INSTIT_ADVANCED_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_INSTIT_ADVANCED_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_INSTIT_ADVANCED_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateSendRetryCount( sendStatus ); @@ -864,7 +860,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_INSTIT_ADDITIONAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_INSTIT_ADDITIONAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_INSTIT_ADDITIONAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateSendRetryCount( sendStatus ); @@ -903,7 +899,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_PRESSURE_SENSOR_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_LINEAR_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_LINEAR_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, NUM_OF_PRESSURE_SENSORS ); @@ -942,7 +938,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_TEMPERATURE_SENSOR_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_LINEAR_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_LINEAR_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, NUM_OF_TEMPERATURE_SENSORS ); @@ -981,7 +977,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_CONC_PUMP_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_LINEAR_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_LINEAR_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, NUM_OF_CONCENTRATE_PUMPS ); @@ -1018,7 +1014,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_D12_PUMP_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_D12_PUMP_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_D12_PUMP_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, 0 ); @@ -1055,7 +1051,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_D48_PUMP_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_D48_PUMP_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_D48_PUMP_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, 0 ); @@ -1094,7 +1090,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_ACID_CONC_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_ACID_CONC_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_ACID_CONC_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, NUM_OF_ACID_TYPE ); @@ -1133,7 +1129,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_BICARB_CONC_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_BICARB_CONC_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_BICARB_CONC_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, NUM_OF_BICARB_TYPE ); @@ -1170,7 +1166,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_ACCEL_SENSOR_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_ACCEL_SENSOR_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_ACCEL_SENSOR_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, 0 ); @@ -1207,7 +1203,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_BLOOD_LEAK_SENSOR_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_BLOOD_LEAK_SENSOR_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_BLOOD_LEAK_SENSOR_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, 0 ); @@ -1246,7 +1242,7 @@ sendStatus = sendMessage( MSG_ID_DD_UI_NVM_GET_CONDUCTIVITY_SENSOR_CAL_RECORD_RESPONSE, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&payload, - sizeof( DD_NVM_GET_CONDUCTIVITY_SENSOR_CAL_REC_PAYLOAD_T ) ); + ( sizeof( DD_NVM_GET_CONDUCTIVITY_SENSOR_CAL_REC_PAYLOAD_T ) - sizeof( U16 ) ) ); } state = updateCalSendRetryCountAndIndex( sendStatus, NUM_OF_CONDUCTIVITY_SENSORS ); @@ -1748,7 +1744,7 @@ } else { - response.idxRejectReason = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + response.rejectionReason = REQUEST_REJECT_REASON_INDEX_OUT_OF_RANGE; } } else @@ -1820,7 +1816,7 @@ } else { - response.idxRejectReason = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + response.rejectionReason = REQUEST_REJECT_REASON_INDEX_OUT_OF_RANGE; } } else @@ -1892,7 +1888,7 @@ } else { - response.idxRejectReason = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + response.rejectionReason = REQUEST_REJECT_REASON_INDEX_OUT_OF_RANGE; } } else @@ -2086,7 +2082,7 @@ } else { - response.idxRejectReason = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + response.rejectionReason = REQUEST_REJECT_REASON_INDEX_OUT_OF_RANGE; } } else @@ -2158,7 +2154,7 @@ } else { - response.idxRejectReason = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + response.rejectionReason = REQUEST_REJECT_REASON_INDEX_OUT_OF_RANGE; } } else @@ -2325,24 +2321,35 @@ BOOL handleDDSetConductivitySensorCalRecRequest( MESSAGE_T *message ) { - BOOL result = FALSE; - U08* payloadPtr = message->payload; - U08 recordSize = sizeof( CONDUCTIVITY_COEFFICIENTS_T ) - sizeof( U16 ); // Data - CRC + BOOL result = FALSE; + U08* payloadPtr = message->payload; + U08 recordSize = sizeof( CONDUCTIVITY_COEFFICIENTS_T ) - sizeof( U16 ); // Data - CRC + U08 expectedPayloadLen = sizeof( U08 ) + recordSize; // Index + Data - CRC DD_NVM_SET_CONDUCTIVITY_SENSOR_CAL_REC_PAYLOAD_T response = { 0 }; + U08 idx; CONDUCTIVITY_COEFFICIENTS_T record; // Calibration record can be updated only in service mode if ( DD_MODE_SERV == getCurrentOperationMode() ) { - if ( message->hdr.payloadLen == recordSize ) + if ( message->hdr.payloadLen == expectedPayloadLen ) { - memcpy( &record, payloadPtr, recordSize ); - record.crc = crc16( (U08*)&record, recordSize ); - setNVMMRecord( NV_DD_DATA_CAL_CONDUCTIVITY_SENSORS, (U08*)&record, 0 ); - result = enqueueEraseAndWriteSector( NVM_CALIBRATION_RECORD ); - sendNVEvent( NVM_CALIBRATION_RECORD, 0, 0 ); - response.accepted = TRUE; + memcpy( &idx, payloadPtr, sizeof(U08)); + payloadPtr += sizeof(U08); + if( idx < NUM_OF_CONDUCTIVITY_SENSORS ) + { + memcpy( &record, payloadPtr, recordSize ); + record.crc = crc16( (U08*)&record, recordSize ); + setNVMMRecord( NV_DD_DATA_CAL_CONDUCTIVITY_SENSORS, (U08*)&record, idx ); + result = enqueueEraseAndWriteSector( NVM_CALIBRATION_RECORD ); + sendNVEvent( NVM_CALIBRATION_RECORD, 0, 0 ); + response.accepted = TRUE; + } + else + { + response.rejectionReason = REQUEST_REJECT_REASON_INDEX_OUT_OF_RANGE; + } } else {