/************************************************************************** * * Copyright (c) 2024-2025 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 TestSupport.h * * @author (last) Vinayakam Mani * @date (last) 16-Sep-2025 * * @author (original) Sean Nash * @date (original) 01-Aug-2024 * ***************************************************************************/ #ifndef __TEST_SUPPORT_H__ #define __TEST_SUPPORT_H__ #include "MessageSupport.h" /** * @defgroup TestSupport TestSupport * @brief Test support functions for accessing override records, managing * test configuration settings and handling Dialin check-ins. * * @addtogroup TestSupport * @{ */ // ***************************** OVERRIDE DEFINITIONS & MACROS ************************************* #define OVERRIDE_KEY 0xCCC33C33 ///< Override key #define OVERRIDE_RESET 0x00000000 ///< Override reset /// Override types. typedef enum override_Types { OVERRIDE_INVALID = 0, ///< Invalid - payload invalid or corrupted. OVERRIDE_RESET_OVERRIDE, ///< Override reset. OVERRIDE_OVERRIDE, ///< Override. NUM_OF_OVERRIDE_TYPES ///< Number of override types. } OVERRIDE_TYPE_T; /// Due to message payload size limitation, test config list cannot exceed 62 (250/4) configs. #define MAX_TEST_CONFIGS ( MAX_MSG_PAYLOAD_SIZE / sizeof( BOOL ) ) #ifdef _DD_ /// DD test software configurations typedef enum test_Config_enums { TEST_CONFIG_BETA_HW = 0, ///< Test configuration using Beta HW TEST_CONFIG_FIRST = TEST_CONFIG_BETA_HW, ///< Test configuration first configuration. TEST_CONFIG_DISABLE_BC_PRESSURE_ALARMS, ///< Test configuration disabling BC pressure alarms TEST_CONFIG_DISABLE_DIENER_CONC_PUMP, ///< Test configuration disabling Diener concentrate pump NUM_OF_TEST_CONFIGS ///< Number of test configuration. } TEST_CONFIG_T; #endif #ifdef _TD_ /// TD test software configurations typedef enum test_Config { TEST_CONFIG_FIRST = 0, ///< Test configuration first configuration. NUM_OF_TEST_CONFIGS ///< Number of test configuration. } TEST_CONFIG_T; #endif #pragma pack(push,1) /// Test configuration payload typedef struct { BOOL reset; ///< Test configuration reset. U32 config; ///< Test configuration. } TEST_CONFIG_PAYLOAD_T ; /// Test override payload type union. typedef union { U32 u32; ///< U32 F32 f32; ///< F32 S32 s32; ///< S32 } TEST_OVERRIDE_PAYLOAD_TYPE_T; /// Test override payload type structure. typedef struct { BOOL reset; ///< Reset (bool) TEST_OVERRIDE_PAYLOAD_TYPE_T state; ///< Test override payload } TEST_OVERRIDE_PAYLOAD_T; /// Test override array payload structure. typedef struct { BOOL reset; ///< Reset (bool) TEST_OVERRIDE_PAYLOAD_TYPE_T state; ///< Test override array payload U32 index; ///< Index } TEST_OVERRIDE_ARRAY_PAYLOAD_T; #pragma pack(pop) /// Override U32 structure. typedef struct { U32 data; ///< Data U32 ovInitData; ///< Override init data U32 ovData; ///< Override data U32 override; ///< Override } OVERRIDE_U32_T; /// Override S32 structure. typedef struct { S32 data; ///< Data S32 ovInitData; ///< Override init data S32 ovData; ///< Override data U32 override; ///< Override } OVERRIDE_S32_T; /// Override F32 structure. typedef struct { F32 data; ///< Data F32 ovInitData; ///< Override init data F32 ovData; ///< Overrode data U32 override; ///< Override } OVERRIDE_F32_T; // ********** public function prototypes ********** U08 getU08OverrideValue( OVERRIDE_U32_T *ovU32 ); U16 getU16OverrideValue( OVERRIDE_U32_T *ovU32 ); U32 getU32OverrideValue( OVERRIDE_U32_T *ovU32 ); S32 getS32OverrideValue( OVERRIDE_S32_T *ovS32 ); F32 getF32OverrideValue( OVERRIDE_F32_T *ovF32 ); OVERRIDE_TYPE_T getOverridePayloadFromMessage( MESSAGE_T *message, TEST_OVERRIDE_PAYLOAD_T *override ); OVERRIDE_TYPE_T getOverrideArrayPayloadFromMessage( MESSAGE_T *message, TEST_OVERRIDE_ARRAY_PAYLOAD_T *override ); BOOL u32BroadcastIntervalOverride( MESSAGE_T *message, OVERRIDE_U32_T *override, U32 taskIntvlMS ); BOOL u32Override( MESSAGE_T *message, OVERRIDE_U32_T *override, U32 min, U32 max ); BOOL s32Override( MESSAGE_T *message, OVERRIDE_S32_T *override ); BOOL f32Override( MESSAGE_T *message, OVERRIDE_F32_T *override ); BOOL u32ArrayOverride( MESSAGE_T *message, OVERRIDE_U32_T *override, U32 maxIndex, U32 min, U32 max ); BOOL s32ArrayOverride( MESSAGE_T *message, OVERRIDE_S32_T *override, U32 maxIndex ); BOOL f32ArrayOverride( MESSAGE_T *message, OVERRIDE_F32_T *override, U32 maxIndex ); // Test configuration functions void initTestConfigs( void ); BOOL setTestConfig( TEST_CONFIG_T config ); BOOL resetTestConfig( TEST_CONFIG_T config ); BOOL getTestConfigStatus( TEST_CONFIG_T config ); BOOL sendTestConfigStatusToDialin( void ); BOOL resetAllTestConfigs( void ); void setDialinCheckInTimeStamp( void ); BOOL hasDialinCheckInExpired( void ); void setRecoverFromFaultModeSignal( void ); BOOL hasRecoverFromFaultModeBeenSet( void ); /**@}*/ #endif