Index: firmware/App/Services/Reservoirs.h =================================================================== diff -u -r8b56b0c617ac49536b8d53852b9621be873bade6 -re86af65442a36724461317980814f0868bd8c995 --- firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision 8b56b0c617ac49536b8d53852b9621be873bade6) +++ firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision e86af65442a36724461317980814f0868bd8c995) @@ -1,57 +1,92 @@ -/**********************************************************************//** - * - * Copyright (c) 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 - * - * @date 18-Mar-2020 - * @author S. Nash - * - * @brief header file for Reservoirs service module. - * - **************************************************************************/ +/************************************************************************** +* +* 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" +#include "DGDefs.h" + +/** + * @defgroup Reservoirs Reservoirs + * @brief Reservoirs service module. Maintains reservoir set points and handles reservoir related commands from the HD. + * + * @addtogroup Reservoirs + * @{ + */ + +// ********** public definitions ********** + +#pragma pack(push,1) + +/// Fill command data structure. +typedef struct +{ + U32 fillToVolumeMl; ///< Target volume to fill to (in mL) + U32 cmd; ///< General command (start/stop) +} FILL_CMD_T; + +/// 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; + +/// Reservoir data struct. +typedef struct +{ + U32 activeReservoir; ///< Active reservoir ID + U32 fillToVolumeMl; ///< Volume target to fill to + U32 drainToVolumeMl; ///< Volume target to drain to +} RESERVOIR_DATA_T; + +#pragma pack(pop) -#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 #1. - RESERVOIR_2, ///< Reservoir #2. - NUM_OF_RESERVOIRS ///< Number of reservoirs. -} RESERVOIR_ID_T; - // ********** public function prototypes ********** void initReservoirs( void ); +void execReservoirs( void ); + +void setActiveReservoirCmd( DG_RESERVOIR_ID_T resID ); // handle switch reservoirs command from HD +void changeValveSettingCmd( DG_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 + +void tareReservoir( void ); +void resetReservoirsLowestWeight( void ); + +DG_RESERVOIR_ID_T getInactiveReservoir( void ); +F32 getReservoirWeight( DG_RESERVOIR_ID_T reservoirId ); + +BOOL hasTargetFillVolumeBeenReached( DG_RESERVOIR_ID_T reservoirId ); +BOOL hasTargetDrainVolumeBeenReached( DG_RESERVOIR_ID_T reservoirId , U32 timeout ); -BOOL startFill( RESERVOIR_ID_T resID, U32 fillToVolMl, F32 targetPrimeTemp, F32 targetTrimTemp ); // handle fill command from HD -BOOL stopFill( void ); // handle stop fill command from HD -BOOL startDrain( RESERVOIR_ID_T resID, U32 drainToVolMl ); // handle drain command from HD -BOOL stopDrain( void ); // handle stop drain command from HD - -DATA_GET_PROTOTYPE( RESERVOIR_ID_T, getActiveReservoir ); -DATA_GET_PROTOTYPE( U32, getReservoirFillVolumeTargetMl ); -DATA_GET_PROTOTYPE( U32, getReservoirDrainVolumeTargetMl ); - -BOOL testSetDGActiveReservoirOverride( RESERVOIR_ID_T value ); +BOOL testSetDGActiveReservoirOverride( DG_RESERVOIR_ID_T value ); BOOL testResetDGActiveReservoirOverride( void ); BOOL testSetReservoirFillVolumeMlOverride( U32 value ); BOOL testResetReservoirFillVolumeMlOverride( void );