/************************************************************************** * * 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 Reservoirs.h * * @author (last) Quang Nguyen * @date (last) 25-Aug-2020 * * @author (original) Sean * @date (original) 18-Mar-2020 * ***************************************************************************/ #ifndef __RESERVOIRS_H__ #define __RESERVOIRS_H__ #include "DGCommon.h" /** * @defgroup Reservoirs Reservoirs * @brief Reservoirs service module. Maintains reservoir set points and handles reservoir related commands from the HD. * * @addtogroup Reservoirs * @{ */ // ********** public definitions ********** /// Enumeration of reservoirs. typedef enum Reservoirs { RESERVOIR_1 = 0, ///< Reservoir number 1 RESERVOIR_2, ///< Reservoir number 2 NUM_OF_RESERVOIRS ///< Number of reservoirs } RESERVOIR_ID_T; /// Enumeration of valve settings. typedef enum Valve_Setting { VALVE_SETTING_R1_TO_R2 = 0, ///< Valve setting for displacement from reservoir 1 to reservoir 2 VALVE_SETTING_R2_TO_R1, ///< Valve setting for displacement from reservoir 2 to reservoir 1 NUM_OF_VALVE_SETTTINGS ///< Number of valve settings } VALVE_SETTING_ID_T; #pragma pack(push,1) /// Drain command data structure. typedef struct { U32 targetVolume; ///< Target volume to drain to (in mL) BOOL tareLoadCell; ///< Flag to tare load call } DRAIN_CMD_T; /// DG command response data record. typedef struct { U32 commandID; ///< The command DG is responding to BOOL rejected; ///< Flag indicates if the command has been rejected U32 rejectCode; ///< Reason code for rejecting the command } DG_CMD_RESPONSE_T; #pragma pack(pop) // ********** public function prototypes ********** void initReservoirs( void ); void execReservoirs( void ); void setActiveReservoirCmd( RESERVOIR_ID_T resID ); // handle switch reservoirs command from HD void changeValveSettingCmd( VALVE_SETTING_ID_T valveSettingID ); // handle valve setting change command from HD void startFillCmd( U32 fillToVolMl ); // handle fill command from HD void stopFillCmd( void ); // handle stop fill command from HD void startDrainCmd( DRAIN_CMD_T drainCmd ); // handle drain command from HD void stopDrainCmd( void ); // handle stop drain command from HD RESERVOIR_ID_T getInactiveReservoir( void ); BOOL hasTargetFillVolumeBeenReached( RESERVOIR_ID_T reservoirId ); BOOL hasTargetDrainVolumeBeenReached( RESERVOIR_ID_T reservoirId , U32 timeout ); void resetReservoirLoadCellsOffset( RESERVOIR_ID_T reservoirId ); BOOL testSetDGActiveReservoirOverride( RESERVOIR_ID_T value ); BOOL testResetDGActiveReservoirOverride( void ); BOOL testSetReservoirFillVolumeMlOverride( U32 value ); BOOL testResetReservoirFillVolumeMlOverride( void ); BOOL testSetReservoirDrainVolumeMlOverride( U32 value ); BOOL testResetReservoirDrainVolumeMlOverride( void ); /**@}*/ #endif