Index: firmware/App/Services/Reservoirs.h =================================================================== diff -u -r99f108ac337a30a2407410ca8be9a990cee9758a -re86af65442a36724461317980814f0868bd8c995 --- firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision 99f108ac337a30a2407410ca8be9a990cee9758a) +++ firmware/App/Services/Reservoirs.h (.../Reservoirs.h) (revision e86af65442a36724461317980814f0868bd8c995) @@ -7,55 +7,86 @@ * * @file Reservoirs.h * -* @author (last) Dara Navaei -* @date (last) 04-Jun-2020 +* @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 number 1 - RESERVOIR_2, ///< Reservoir number 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 setActiveReservoirCmd( RESERVOIR_ID_T resID ); // handle switch reservoirs command from HD -BOOL startFillCmd( U32 fillToVolMl ); // handle fill command from HD -BOOL stopFillCmd( void ); // handle stop fill command from HD -BOOL startDrainCmd( U32 drainToVolMl ); // handle drain command from HD -BOOL stopDrainCmd( void ); // handle stop drain command from HD -BOOL startTrimmerHeaterCmd( void ); // handle start trimmer heater control command from HD -BOOL stopTrimmerHeaterCmd( void ); // handle stop trimmer heater control command from HD - -RESERVOIR_ID_T getActiveReservoir( void ); -U32 getReservoirFillVolumeTargetMl( void ); -U32 getReservoirDrainVolumeTargetMl( void ); - -BOOL testSetDGActiveReservoirOverride( RESERVOIR_ID_T value ); +BOOL testSetDGActiveReservoirOverride( DG_RESERVOIR_ID_T value ); BOOL testResetDGActiveReservoirOverride( void ); BOOL testSetReservoirFillVolumeMlOverride( U32 value ); BOOL testResetReservoirFillVolumeMlOverride( void );