Index: firmware/App/Services/NVMessagingDD.c =================================================================== diff -u -r9b306db98cfce6e9a750b971e1a34c688618aeae -r85a1a996c5aa992bcea51577bde28b1f54ccc476 --- firmware/App/Services/NVMessagingDD.c (.../NVMessagingDD.c) (revision 9b306db98cfce6e9a750b971e1a34c688618aeae) +++ firmware/App/Services/NVMessagingDD.c (.../NVMessagingDD.c) (revision 85a1a996c5aa992bcea51577bde28b1f54ccc476) @@ -963,6 +963,7 @@ * @details \b Outputs: nvmExecreceiveRecordState, * calRecordReceiveStartTime, currentRxRecordType * @param message Pointer to the received message + * @param isIndexed True, if the received record contains an index value. * @param calRecordType Calibration record type being received * @param recordSize Size of the calibration record in bytes * @return TRUE if the calibration record was accepted and processed Index: firmware/App/Services/NVRecordsDD.c =================================================================== diff -u -r9b306db98cfce6e9a750b971e1a34c688618aeae -r85a1a996c5aa992bcea51577bde28b1f54ccc476 --- firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 9b306db98cfce6e9a750b971e1a34c688618aeae) +++ firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision 85a1a996c5aa992bcea51577bde28b1f54ccc476) @@ -27,59 +27,72 @@ */ // ********** private definitions ********** +#define NV_RECORD_SLOT_SIZE 4096 ///< Size of each NV record slot (4KB) -#define RECORD_DEFAULT_TIME 0U ///< Record default time (calibration/set). -#define RECORD_FOURTH_ORDER_COEFF 0.0F ///< Record fourth order coefficient. -#define RECORD_THIRD_ORDER_COEFF 0.0F ///< Record third order coefficient. -#define RECORD_SECOND_ORDER_COEFF 0.0F ///< Record second order coefficient. -#define RECORD_DEFAULT_GAIN 1.0F ///< Record default gain. -#define RECORD_DEFAULT_OFFSET 0.0F ///< Record default offset. -#define RECORD_DEFAULT_CONST 0.0F ///< Record default constant. -#define RECORD_DEFAULT_RATIO 1.0F ///< Record default ratio. -#define RECORD_DEFAULT_SERVICE_INTERVAL_S 15768000U ///< Record default service interval in seconds (6 months). -#define RECORD_DEFAULT_CHARACTER ' ' ///< Record default character. +#define SYSTEM_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) ///< Offset of system record within sector +#define SERVICE_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) ///< Offset of service record within sector +#define CAL_RECORD_OFFSET (1U * NV_RECORD_SLOT_SIZE) ///< Offset of calibration record within sector +#define INSTIT_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) ///< Offset of institutional record within sector +#define USAGE_RECORD_OFFSET (0U * NV_RECORD_SLOT_SIZE) ///< Offset of usage record within sector +#define SYSTEM_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR0_START_ADDRESS + SYSTEM_RECORD_OFFSET ) ///< Start address of system record in NV memory +#define SERVICE_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR1_START_ADDRESS + SERVICE_RECORD_OFFSET ) ///< Start address of service record in NV memory +#define CAL_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR1_START_ADDRESS + CAL_RECORD_OFFSET ) ///< Start address of calibration record in NV memory +#define INSTIT_RECORD_NV_MEM_START_ADDRESS ( BANK7_SECTOR2_START_ADDRESS + INSTIT_RECORD_OFFSET ) ///< Start address of institutional record in NV memory +#define USAGE_INFO_START_ADDRESS ( BANK7_SECTOR3_START_ADDRESS + USAGE_RECORD_OFFSET ) ///< Start address of usage info record in NV memory + +#define RECORD_DEFAULT_TIME 0U ///< Record default time (calibration/set). +#define RECORD_FOURTH_ORDER_COEFF 0.0F ///< Record fourth order coefficient. +#define RECORD_THIRD_ORDER_COEFF 0.0F ///< Record third order coefficient. +#define RECORD_SECOND_ORDER_COEFF 0.0F ///< Record second order coefficient. +#define RECORD_DEFAULT_GAIN 1.0F ///< Record default gain. +#define RECORD_DEFAULT_OFFSET 0.0F ///< Record default offset. +#define RECORD_DEFAULT_CONST 0.0F ///< Record default constant. +#define RECORD_DEFAULT_RATIO 1.0F ///< Record default ratio. +#define RECORD_DEFAULT_SERVICE_INTERVAL_S 15768000U ///< Record default service interval in seconds (6 months). +#define RECORD_DEFAULT_CHARACTER ' ' ///< Record default character. + // DD specific defines -#define DEFAULT_D12_PUMP_TARGET_SPEED 0 ///< Default D12 dailysate pump target speed. -#define DEFAULT_BICARB_CONC_MIXING_RATIO ( 4.06812F / FRACTION_TO_PERCENT_FACTOR ) ///< Ratio between RO water and bicarbonate concentrate mixing ratio. -#define DEFAULT_BICARB_BOTTLE_VOL_ML 3780.0F ///< Record default bicarb bottle volume in milliliters. -#define DEFAULT_BICARB_COND_US_PER_CM 13734.88F ///< Record default acid conductivity in uS/cm. -#define DEFAULT_BICARB_BOTTLE_TEMP_C 23.5F ///< Record default acid bottle temperature in C. -#define DEFAULT_ACID_CONC_MIXING_RATIO ( 2.35618F / FRACTION_TO_PERCENT_FACTOR ) ///< Ratio between RO water and acid concentrate mixing ratio. -#define DEFAULT_ACID_BOTTLE_VOL_ML 3430.0F ///< Record default acid bottle volume in milliliters. -#define DEFAULT_ACID_COND_US_PER_CM 11645.05F ///< Record default acid conductivity in uS/cm. -#define DEFAULT_ACID_BOTTLE_TEMP_C 23.5F ///< Record default acid bottle temperature in C. -#define DEFAULT_UF_TEMP_TAU_C_PER_MIN -0.6F ///< Ultrafilter temperature time constant C/min. -#define DEFAULT_UF_VOLUME_ML 700 ///< Ultrafilter volume in milliliters. -#define DEFAULT_BLOOD_LEAK_SET_POINT 20 ///< Blood leak default set point. +#define DEFAULT_D12_PUMP_TARGET_SPEED 0 ///< Default D12 dailysate pump target speed. +#define DEFAULT_BICARB_CONC_MIXING_RATIO ( 4.06812F / FRACTION_TO_PERCENT_FACTOR ) ///< Ratio between RO water and bicarbonate concentrate mixing ratio. +#define DEFAULT_BICARB_BOTTLE_VOL_ML 3780.0F ///< Record default bicarb bottle volume in milliliters. +#define DEFAULT_BICARB_COND_US_PER_CM 13734.88F ///< Record default acid conductivity in uS/cm. +#define DEFAULT_BICARB_BOTTLE_TEMP_C 23.5F ///< Record default acid bottle temperature in C. +#define DEFAULT_ACID_CONC_MIXING_RATIO ( 2.35618F / FRACTION_TO_PERCENT_FACTOR ) ///< Ratio between RO water and acid concentrate mixing ratio. +#define DEFAULT_ACID_BOTTLE_VOL_ML 3430.0F ///< Record default acid bottle volume in milliliters. +#define DEFAULT_ACID_COND_US_PER_CM 11645.05F ///< Record default acid conductivity in uS/cm. +#define DEFAULT_ACID_BOTTLE_TEMP_C 23.5F ///< Record default acid bottle temperature in C. +#define DEFAULT_UF_TEMP_TAU_C_PER_MIN -0.6F ///< Ultrafilter temperature time constant C/min. +#define DEFAULT_UF_VOLUME_ML 700 ///< Ultrafilter volume in milliliters. +#define DEFAULT_BLOOD_LEAK_SET_POINT 20 ///< Blood leak default set point. // Default Values for Institutional Records -#define DEFAULT_MIN_DIALYSATE_FLOW_MLPM 50 ///< Default value of min dialysate flow in mL/min -#define DEFAULT_MAX_DIALYSATE_FLOW_MLPM 600 ///< Default value of max dialysate flow in mL/min -#define DEFAULT_MIN_DIALYSATE_TEMP_C 35.0F ///< Default value of min dialysate temp in °C -#define DEFAULT_MAX_DIALYSATE_TEMP_C 38.0F ///< Default value of max dialysate temp in °C -#define DEFAULT_MIN_ACID_CONCENTRATE 0 ///< Default value of min acid concentrate -#define DEFAULT_MAX_ACID_CONCENTRATE 2 ///< Default value of max acid concentrate -#define DEFAULT_MIN_BICARB_CARTRIDGE_SIZE_G 0 ///< Default value of min bicarb cartridge size in grams -#define DEFAULT_MAX_BICARB_CARTRIDGE_SIZE_G 5 ///< Default value of max bicarb cartridge size in grams -#define DEFAULT_MIN_SODIUM_MEQL 130 ///< Default value of min sodium in mEq/L -#define DEFAULT_MAX_SODIUM_MEQL 155 ///< Default value of max sodium in mEq/L -#define DEFAULT_MIN_BICARBONATE_MEQL 20 ///< Default value of min bicarbonate in mEq/L -#define DEFAULT_MAX_BICARBONATE_MEQL 40 ///< Default value of max bicarbonate in mEq/L -#define DEFAULT_MAX_RO_REJECTION_RATIO_PCT 90 ///< Max RO rejection ratio in percent. -#define DEFAULT_NUM_OF_DISINFECTION_FREQUENCY 3 ///< Number of Days between each disinfection cycle -#define DEFAULT_NUM_OF_DISINFECTION_CYCLE_TIME 30 ///< Time period of which disinfection is done -#define DEFAULT_MIN_INLET_WATER_COND_ALARM_US_P_CM 200.0F ///< Min inlet water conductivity alarm limit in uS/cm. -#define DEFAULT_MAX_INLET_WATER_COND_ALARM_US_P_CM 50.0F ///< Max inlet water conductivity alarm limit in uS/cm. -#define DEFAULT_ACID_CONCENTRATE_JUG_SIZE 3.43F ///< Acid Concentrate jug size in litres -#define DEFAULT_MIN_ACID_ALARM_US_P_CM 0 ///< Min acid alarm limit in percent. -#define DEFAULT_MIN_BICARB_ALARM_US_P_CM 0 ///< Min bicarb alarm limit in percent. -#define DEFAULT_POST_TREATMENT_DRAIN_OPTION 0 ///< Default Post Treatment Drain Option -#define DEFAULT_POST_TREATMENT_DRY_BICARB_OPTION 0 ///< Default Post Treatment Dry Bicarb Option +#define DEFAULT_MIN_DIALYSATE_FLOW_MLPM 50 ///< Default value of min dialysate flow in mL/min +#define DEFAULT_MAX_DIALYSATE_FLOW_MLPM 600 ///< Default value of max dialysate flow in mL/min +#define DEFAULT_MIN_DIALYSATE_TEMP_C 35.0F ///< Default value of min dialysate temp in °C +#define DEFAULT_MAX_DIALYSATE_TEMP_C 38.0F ///< Default value of max dialysate temp in °C +#define DEFAULT_MIN_ACID_CONCENTRATE 0 ///< Default value of min acid concentrate +#define DEFAULT_MAX_ACID_CONCENTRATE 2 ///< Default value of max acid concentrate +#define DEFAULT_MIN_BICARB_CARTRIDGE_SIZE_G 0 ///< Default value of min bicarb cartridge size in grams +#define DEFAULT_MAX_BICARB_CARTRIDGE_SIZE_G 5 ///< Default value of max bicarb cartridge size in grams +#define DEFAULT_MIN_SODIUM_MEQL 130 ///< Default value of min sodium in mEq/L +#define DEFAULT_MAX_SODIUM_MEQL 155 ///< Default value of max sodium in mEq/L +#define DEFAULT_MIN_BICARBONATE_MEQL 20 ///< Default value of min bicarbonate in mEq/L +#define DEFAULT_MAX_BICARBONATE_MEQL 40 ///< Default value of max bicarbonate in mEq/L +#define DEFAULT_MAX_RO_REJECTION_RATIO_PCT 90 ///< Max RO rejection ratio in percent. +#define DEFAULT_NUM_OF_DISINFECTION_FREQUENCY 3 ///< Number of Days between each disinfection cycle +#define DEFAULT_NUM_OF_DISINFECTION_CYCLE_TIME 30 ///< Time period of which disinfection is done +#define DEFAULT_MIN_INLET_WATER_COND_ALARM_US_P_CM 200.0F ///< Min inlet water conductivity alarm limit in uS/cm. +#define DEFAULT_MAX_INLET_WATER_COND_ALARM_US_P_CM 50.0F ///< Max inlet water conductivity alarm limit in uS/cm. +#define DEFAULT_ACID_CONCENTRATE_JUG_SIZE 3.43F ///< Acid Concentrate jug size in litres +#define DEFAULT_MIN_ACID_ALARM_US_P_CM 0 ///< Min acid alarm limit in percent. +#define DEFAULT_MIN_BICARB_ALARM_US_P_CM 0 ///< Min bicarb alarm limit in percent. +#define DEFAULT_POST_TREATMENT_DRAIN_OPTION 0 ///< Default Post Treatment Drain Option +#define DEFAULT_POST_TREATMENT_DRY_BICARB_OPTION 0 ///< Default Post Treatment Dry Bicarb Option -#define MAX_NUM_OF_WRITE_TRIES 3U ///< Max number of write tries. +#define MAX_NUM_OF_WRITE_TRIES 3U ///< Max number of write tries. -#define RECORD_BYTE_SIZE(r) (sizeof(r) + sizeof(U16)) ///< Record byte size macro. +#define RECORD_BYTE_SIZE(r) (sizeof(r) + sizeof(U16)) ///< Record byte size macro. // Padding length calculation: (DD struct size % bytes to write(16) == 0 ? 0 : ((DD struct size / bytes to write(16)) + 1) * bytes to write(16)) - DD struct size. // NOTE: assuming the macro is calculating the padding length for a non-volatile memory. For NV, 16 bytes is used for buffer. @@ -1671,20 +1684,6 @@ /*********************************************************************//** * @brief - * The getInstitRecDataType function gets the data type associated with - * the specified institutional record item. - * @details \b Inputs: institRecDataTypeTable - * @details \b Outputs: none - * @param institRecType Institutional record type - * @return Data type of the institutional record component - *************************************************************************/ -CRITICAL_DATA_TYPES_T getInstitRecDataType( DD_INSTIT_REC_TYPE institRecType ) -{ - return institRecDataTypeTable[ institRecType ]; -} - -/*********************************************************************//** - * @brief * The getNVMInstitRecord function gets the value of the specified * institutional record item. * @details \b Inputs: ddInstitutionalGroup.ddInstitutionalRecord @@ -1994,6 +1993,20 @@ /*********************************************************************//** * @brief + * The getInstitRecDataType function gets the data type associated with + * the specified institutional record item. + * @details \b Inputs: institRecDataTypeTable + * @details \b Outputs: none + * @param institRecType Institutional record type + * @return Data type of the institutional record component + *************************************************************************/ +CRITICAL_DATA_TYPES_T getInstitRecDataType( DD_INSTIT_REC_TYPE institRecType ) +{ + return institRecDataTypeTable[ institRecType ]; +} + +/*********************************************************************//** + * @brief * The sendNVEvent function sends the event associated with the * specified NV record type. * @details \b Inputs: RECORDS_SPECS Index: firmware/App/Services/NVRecordsDD.h =================================================================== diff -u -r0599bd5494eb64416999de0487a9882c557b6044 -r85a1a996c5aa992bcea51577bde28b1f54ccc476 --- firmware/App/Services/NVRecordsDD.h (.../NVRecordsDD.h) (revision 0599bd5494eb64416999de0487a9882c557b6044) +++ firmware/App/Services/NVRecordsDD.h (.../NVRecordsDD.h) (revision 85a1a996c5aa992bcea51577bde28b1f54ccc476) @@ -338,20 +338,21 @@ DD_ACCEL_SENSOR_CAL_RECORD_T getAccelSensorCalRecord( void ); DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T getBloodLeakSensorCalRecord( void ); - BOOL getNVMRecord( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ); BOOL setNVMRecord( NVM_RECORD_TYPE_T recType, U08* bufferAddress ); BOOL setNVMCalRecord(DD_CAL_REC_TYPE calRecType, U08* bufferAddress, U08 idx); -CRITICAL_DATA_TYPES_T getInstitRecDataType( DD_INSTIT_REC_TYPE institRecType ); BOOL getNVMInstitRecord( DD_INSTIT_REC_TYPE institRecType, U08 *valuePtr ); BOOL setNVMInstitRecord(DD_INSTIT_REC_TYPE institRecType, U08 *valuePtr); +CRITICAL_DATA_TYPES_T getInstitRecDataType( DD_INSTIT_REC_TYPE institRecType ); + void sendNVEvent( NVM_RECORD_TYPE_T recType, U32 d1, U32 d2 ); void updateRecordCRC( NVM_RECORD_TYPE_T recType ); void updateNVSelfTestResult( SELF_TEST_STATUS_T result ); void updateNVSelfTestState( NVM_SELF_TEST_STATE_T state ); void updateSelfTestReadRecordsFlag ( BOOL value ); BOOL updateNVRecordCRC( U32 job, U16 crc ); + /**@}*/ #endif /* _NV_RECORDS_DD_H_ */