Index: NVDataMgmt.c =================================================================== diff -u -re397d81441d2ee301fd6b579ea4d2e6f388eb1f2 -r119ff7186b70a15f4b0957ea8951313b0f0be8c3 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision e397d81441d2ee301fd6b579ea4d2e6f388eb1f2) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 119ff7186b70a15f4b0957ea8951313b0f0be8c3) @@ -23,6 +23,9 @@ #include "system.h" // For fapi operations #include "F021.h" // For fapi operations +#ifdef _HD_ +#include "ModeTreatmentParams.h" +#endif #include "MsgQueues.h" #include "NVDataMgmt.h" #include "OperationModes.h" @@ -921,14 +924,20 @@ // CRC passed, enqueue an erase, a write of calibration data and a write of service record BOOL scheduleStatus = enqueueSector0Records(); +#ifdef _HD_ + // Got new data for the EEPROM records, set the latest institutional record to treatment parameters to make sure + // the treatment parameters have the record available all the time + setNVInstitutionalRecordToTxParamsRecord( &hdInstitutionalGroup.hdInstitutionalRecord ); +#endif + // Signal that there is a new calibration record available. // NOTE: as of now, this signal will be sent even after the system record is sent newCalStartTimer = getMSTimerCount(); isNewCalAvailable = TRUE; } else { - // CRC passed write the last service record to the RTC RAM + // CRC passed write the last record to the RTC RAM enqueueRecordJob( NVDATAMGMT_WRITE, recordSpec.dataLoc, job ); } @@ -1804,7 +1813,7 @@ SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_CALIBRATION_RECORD ].nvEvent, 0, 0 ) SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SYSTEM_RECORD ].nvEvent, 0, 0 ) SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_SERVICE_RECORD ].nvEvent, 0, 0 ) - SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_INTITUTIONAL_RECORD].nvEvent, 0, 0 ) + SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_INTITUTIONAL_RECORD ].nvEvent, 0, 0 ) } #ifndef _RELEASE_ @@ -3840,27 +3849,31 @@ if ( calcCRC != recordCRC ) { // CRC did not pass so set all values to default - hdInstitutionalGroup.hdInstitutionalRecord.minBloodFlowMLPM = DEFAULT_MIN_BLOOD_FLOW_MLPM; - hdInstitutionalGroup.hdInstitutionalRecord.maxBloodFlowMLPM = DEFAULT_MAX_BLOOD_FLOW_MLPM; - hdInstitutionalGroup.hdInstitutionalRecord.minDialysateFlowMLPM = DEFAULT_MIN_DIALYSATE_FLOW_MLPM; - hdInstitutionalGroup.hdInstitutionalRecord.maxDialysateFlowMLPM = DEFAULT_MAX_DIALYSATE_FLOW_MLPM; - hdInstitutionalGroup.hdInstitutionalRecord.minTxDurationMIN = DEFAULT_MIN_TX_DURATION_MIN; - hdInstitutionalGroup.hdInstitutionalRecord.maxTxDurationMIN = DEFAULT_MAX_TX_DURATION_MIN; - hdInstitutionalGroup.hdInstitutionalRecord.heparinEnable = DEFAULT_HEPARIN_ENABLE; - hdInstitutionalGroup.hdInstitutionalRecord.minStopHeparinDispBeforeTxEndMIN = DEFAULT_MIN_STOP_HEP_DISP_BEFORE_TX_END_MIN; - hdInstitutionalGroup.hdInstitutionalRecord.maxStopHeparinDispBeforeTxEndMIN = DEFAULT_MAX_STOP_HEP_DISP_BEFORE_TX_END_MIN; - hdInstitutionalGroup.hdInstitutionalRecord.minSalineBolusVolumeML = DEFAULT_MIN_SALINE_BOLUS_VOLUME_ML; - hdInstitutionalGroup.hdInstitutionalRecord.maxSalineBolusVolumeML = DEFAULT_MAX_SALINE_BOLUS_VOLUME_ML; - hdInstitutionalGroup.hdInstitutionalRecord.minDialysateTempC = DEFAULT_MIN_DIALYSATE_TEMPERATURE_C; - hdInstitutionalGroup.hdInstitutionalRecord.maxDialysateTempC = DEFAULT_MAX_DIALYSATE_TEMPERATURE_C; - hdInstitutionalGroup.hdInstitutionalRecord.minArtPressLimitWindowMMHG = DEFAULT_MIN_ART_PRESS_LIMIT_WINDOW_MMHG; - hdInstitutionalGroup.hdInstitutionalRecord.maxArtPressLimitWindowMMHG = DEFAULT_MAX_ART_PRESS_LIMIT_WINDOW_MMHG; - hdInstitutionalGroup.hdInstitutionalRecord.minVenPressLimitWindowMMHG = DEFAULT_MIN_VEN_PRESS_LIMIT_WINDOW_MMHG; - hdInstitutionalGroup.hdInstitutionalRecord.maxVenPressLimitWindowMMHG = DEFAULT_MAX_VEN_PRESS_LIMIT_WINDOW_MMHG; - hdInstitutionalGroup.hdInstitutionalRecord.minVenAsymPressLimitMMHG = DEFAULT_MIN_VEN_ASYM_PRESS_LIMIT_WINDOW_MMHG; - hdInstitutionalGroup.hdInstitutionalRecord.maxVenAsymPressLimitMMHG = DEFAULT_MAX_VEN_ASYM_PRESS_LIMIT_WINDOW_MMHG; - hdInstitutionalGroup.hdInstitutionalRecord.minUFVolumeL = DEFAULT_MIN_UF_VOLUME_L; - hdInstitutionalGroup.hdInstitutionalRecord.maxUFVolumeL = DEFAULT_MAX_UF_VOLUME_L; + hdInstitutionalGroup.hdInstitutionalRecord.minBloodFlowMLPM = getU32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_BLOOD_FLOW ); + hdInstitutionalGroup.hdInstitutionalRecord.maxBloodFlowMLPM = getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_BLOOD_FLOW ); + hdInstitutionalGroup.hdInstitutionalRecord.minDialysateFlowMLPM = getU32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_DIALYSATE_FLOW ); + hdInstitutionalGroup.hdInstitutionalRecord.maxDialysateFlowMLPM = getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_DIALYSATE_FLOW ); + hdInstitutionalGroup.hdInstitutionalRecord.minTxDurationMIN = getU32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_TREATMENT_DURATION ); + hdInstitutionalGroup.hdInstitutionalRecord.maxTxDurationMIN = getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_TREATMENT_DURATION ); + hdInstitutionalGroup.hdInstitutionalRecord.minStopHeparinDispBeforeTxEndMIN = getU32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME ); + hdInstitutionalGroup.hdInstitutionalRecord.maxStopHeparinDispBeforeTxEndMIN = getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME ); + hdInstitutionalGroup.hdInstitutionalRecord.minSalineBolusVolumeML = getU32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_SALINE_BOLUS_VOLUME ); + hdInstitutionalGroup.hdInstitutionalRecord.maxSalineBolusVolumeML = getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_SALINE_BOLUS_VOLUME ); + hdInstitutionalGroup.hdInstitutionalRecord.minDialysateTempC = getF32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ); + hdInstitutionalGroup.hdInstitutionalRecord.maxDialysateTempC = getF32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ); + hdInstitutionalGroup.hdInstitutionalRecord.minArtPressLimitWindowMMHG = getS32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ); + hdInstitutionalGroup.hdInstitutionalRecord.maxArtPressLimitWindowMMHG = getS32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ); + hdInstitutionalGroup.hdInstitutionalRecord.minVenPressLimitWindowMMHG = getS32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ); + hdInstitutionalGroup.hdInstitutionalRecord.maxVenPressLimitWindowMMHG = getS32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ); + hdInstitutionalGroup.hdInstitutionalRecord.minVenAsymPressLimitMMHG = getS32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); + hdInstitutionalGroup.hdInstitutionalRecord.maxVenAsymPressLimitMMHG = getS32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); + hdInstitutionalGroup.hdInstitutionalRecord.minUFVolumeL = getF32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_UF_VOLUME ); + hdInstitutionalGroup.hdInstitutionalRecord.maxUFVolumeL = getF32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_UF_VOLUME ); + hdInstitutionalGroup.hdInstitutionalRecord.minHeparinDispRateMLPM = getF32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); + hdInstitutionalGroup.hdInstitutionalRecord.maxHeparinDispRateMLPM = getF32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); + hdInstitutionalGroup.hdInstitutionalRecord.minHeparinBolusVolumeML = getF32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); + hdInstitutionalGroup.hdInstitutionalRecord.maxHeparinBolusVolumeML = getF32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); + hdInstitutionalGroup.hdInstitutionalRecord.calibrationTime = getRTCTimestamp(); hdInstitutionalGroup.hdInstitutionalRecord.crc = crc16 ( (U08*)&hdInstitutionalGroup.hdInstitutionalRecord, sizeof( HD_INSTITUTIONAL_RECORD_T ) - sizeof( U16 ) ); hdInstitutionalGroup.crc = crc16 ( (U08*)&hdInstitutionalGroup, sizeof( HD_INSTITUTIONAL_GROUP_T ) - sizeof( U16 ) ); Index: NVDataMgmtHDRecords.h =================================================================== diff -u -r106bbf14432e48c0153ede862800fc3722935ede -r119ff7186b70a15f4b0957ea8951313b0f0be8c3 --- NVDataMgmtHDRecords.h (.../NVDataMgmtHDRecords.h) (revision 106bbf14432e48c0153ede862800fc3722935ede) +++ NVDataMgmtHDRecords.h (.../NVDataMgmtHDRecords.h) (revision 119ff7186b70a15f4b0957ea8951313b0f0be8c3) @@ -35,29 +35,6 @@ #define MAX_TOP_LEVEL_PN_CHARS 10U ///< Max number of characters for top level part number. #define MAX_TOP_LEVEL_SN_CHARS 20U ///< Max number of characters for top level serial number. -// Institutional record defaults -#define DEFAULT_MIN_BLOOD_FLOW_MLPM 100 -#define DEFAULT_MAX_BLOOD_FLOW_MLPM 500 -#define DEFAULT_MIN_DIALYSATE_FLOW_MLPM 100 -#define DEFAULT_MAX_DIALYSATE_FLOW_MLPM 600 -#define DEFAULT_MIN_TX_DURATION_MIN 60 -#define DEFAULT_MAX_TX_DURATION_MIN 480 -#define DEFAULT_HEPARIN_ENABLE 1 -#define DEFAULT_MIN_STOP_HEP_DISP_BEFORE_TX_END_MIN 0 -#define DEFAULT_MAX_STOP_HEP_DISP_BEFORE_TX_END_MIN 480 -#define DEFAULT_MIN_SALINE_BOLUS_VOLUME_ML 100 -#define DEFAULT_MAX_SALINE_BOLUS_VOLUME_ML 300 -#define DEFAULT_MIN_DIALYSATE_TEMPERATURE_C 35.0F -#define DEFAULT_MAX_DIALYSATE_TEMPERATURE_C 37.0F -#define DEFAULT_MIN_ART_PRESS_LIMIT_WINDOW_MMHG 120 -#define DEFAULT_MAX_ART_PRESS_LIMIT_WINDOW_MMHG 200 -#define DEFAULT_MIN_VEN_PRESS_LIMIT_WINDOW_MMHG 100 -#define DEFAULT_MAX_VEN_PRESS_LIMIT_WINDOW_MMHG 200 -#define DEFAULT_MIN_VEN_ASYM_PRESS_LIMIT_WINDOW_MMHG 20 -#define DEFAULT_MAX_VEN_ASYM_PRESS_LIMIT_WINDOW_MMHG 35 -#define DEFAULT_MIN_UF_VOLUME_L 0.0F -#define DEFAULT_MAX_UF_VOLUME_L 8.0F - #ifndef _RELEASE_ /// Software configuration enums typedef enum software_configurations @@ -298,21 +275,24 @@ U32 maxDialysateFlowMLPM; U32 minTxDurationMIN; U32 maxTxDurationMIN; - U32 heparinEnable; U32 minStopHeparinDispBeforeTxEndMIN; U32 maxStopHeparinDispBeforeTxEndMIN; U32 minSalineBolusVolumeML; U32 maxSalineBolusVolumeML; F32 minDialysateTempC; F32 maxDialysateTempC; - U32 minArtPressLimitWindowMMHG; - U32 maxArtPressLimitWindowMMHG; - U32 minVenPressLimitWindowMMHG; - U32 maxVenPressLimitWindowMMHG; - U32 minVenAsymPressLimitMMHG; - U32 maxVenAsymPressLimitMMHG; + S32 minArtPressLimitWindowMMHG; + S32 maxArtPressLimitWindowMMHG; + S32 minVenPressLimitWindowMMHG; + S32 maxVenPressLimitWindowMMHG; + S32 minVenAsymPressLimitMMHG; + S32 maxVenAsymPressLimitMMHG; F32 minUFVolumeL; F32 maxUFVolumeL; + F32 minHeparinDispRateMLPM; + F32 maxHeparinDispRateMLPM; + F32 minHeparinBolusVolumeML; + F32 maxHeparinBolusVolumeML; U32 calibrationTime; U16 crc; } HD_INSTITUTIONAL_RECORD_T;