/************************************************************************** * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file NVDataMgmt.h * * @author (last) Dara Navaei * @date (last) 20-Mar-2020 * * @author (original) Dara Navaei * @date (original) 12-Feb-2020 * ***************************************************************************/ #ifndef FWCOMMON_NVDATAMGMT_H_ #define FWCOMMON_NVDATAMGMT_H_ #include "Common.h" // ********** public definitions ********** #define MAX_SYS_SERIAL_NUMBER_CHARACTERS 7U ///< Max number of characters for SYS serial number #define MAX_HW_SERIAL_NUMBER_CHARACTERS 5U ///< Max number of characters for HD serial number #define MAX_DATE_CHARACTERS 10U ///< Max number of characters for date /// Log event enum typedef enum LOG_EVENT { NVDATAMGMT_MODE_CHANGE = 0, ///< Mode change NVDATAMGMT_ALARM, ///< Alarm NVDATAMGMT_DISINFECTION_STARTED, ///< Disinfection started NVDATAMGMT_DISINFECTION_ENDED, ///< Disinfection ended NVDATAMGMT_DEVICE_TURNED_ON, ///< Device turned on NVDATAMGMT_DEVICE_TURNED_OFF, ///< Device turned off NVDATAMGMT_UI_CRASHED ///< UI crashed } NVDATAMGMT_LOG_EVENT_T; /// Read status enum typedef enum READ_STATUS { NVDATAMGMT_READ_IDLE = 0, ///< Read status idle NVDATAMGMT_READ_IN_PROGRESS, ///< Read status in progress NVDATAMGMT_READ_COMPLETE ///< Read status complete } NVDATAMGMT_READ_STATUS_T; #pragma pack(push, 1) /// Manufacturing data struct typedef struct mfg_Data { char SYSSerialNumber [ MAX_SYS_SERIAL_NUMBER_CHARACTERS ]; ///< SYS serial number char HWSerialNumber [ MAX_HW_SERIAL_NUMBER_CHARACTERS ]; ///< HW serial number char mfgDate [ MAX_DATE_CHARACTERS ]; ///< Manufacturing date } MFG_DATA_T; /// Calibration data struct typedef struct calibration_Data { U32 calRecordRevision; ///< Revision of calibration record (rev when structure changes to determine compatibility with f/w version) F32 accelXOffset; ///< Accelerometer X axis offset F32 accelYOffset; ///< Accelerometer Y axis offset F32 accelZOffset; ///< Accelerometer Z axis offset #ifdef _HD_ F32 bloodFlowGain; ///< Gain for blood flow sensor F32 bloodFlowOffset_mL_min; ///< Offset for blood flow sensor F32 dialysateFlowGain; ///< Gain for dialysate flow sensor F32 dialysateFlowOffset_mL_min; ///< Offset for dialysate flow sensor char calDateBloodFlow[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of blood flow sensor char calDateDialysateFlow[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of blood flow sensor #endif char calDateAccel[ MAX_DATE_CHARACTERS ]; ///< Last calibration date of accelerometer } CALIBRATION_DATA_T; /// Service dates struct typedef struct service_dates { char currentServiceDate [ MAX_DATE_CHARACTERS ]; ///< Current service date char nextServiceDate [ MAX_DATE_CHARACTERS ]; ///< Next service date } SERVICE_DATA_T; /// Read data status typedef struct get_data { NVDATAMGMT_READ_STATUS_T status; ///< Read data status U08* externalBuffer; ///< External buffer address } READ_DATA_T; /// Log data struct typedef struct { U32 epochTime; ///< Log data time in epoch U32 eventCode; ///< Log data event code U32 subCode; ///< Log data sub code F32 data1; ///< Log data 1 F32 data2; ///< Log data 2 F32 data3; ///< Log data 3 F32 data4; ///< Log data 4 F32 data5; ///< Log data 5 } LOG_DATA_T; /// Disinfection date struct typedef struct { char disinfectionDate [ MAX_DATE_CHARACTERS ]; ///< Disinfection Date } DISINFECTION_DATE_T; #pragma pack(pop) void initNVDataMgmt ( void ); void signalPowerOffWarning( void ); void execNVDataMgmt ( void ); SELF_TEST_STATUS_T execNVDataMgmtSelfTest ( void ); BOOL setBootloaderFlag ( U32 flag ); U32 getBootloaderFlag ( void ); BOOL setMfgData ( MFG_DATA_T data ); BOOL getMfgData ( MFG_DATA_T* buffer ); BOOL setCalibrationData ( CALIBRATION_DATA_T data ); BOOL getCalibrationData ( CALIBRATION_DATA_T* buffer ); BOOL setServiceDate ( SERVICE_DATA_T data ); BOOL getServiceDate ( SERVICE_DATA_T* buffer ); BOOL setTreatmentTime ( U32 hours ); U32 getTreatmentTime ( void ); BOOL setWaterConsumption ( U32 liters ); U32 getWaterConsumption ( void ); BOOL setDisinfectionDate ( DISINFECTION_DATE_T date ); BOOL getDisinfectionDate ( DISINFECTION_DATE_T* buffer ); BOOL writeLogData ( LOG_DATA_T* data ); BOOL readLogData ( READ_DATA_T* buffer, U32 length ); #endif /* FWCOMMON_NVDATAMGMT_H_ */