/************************************************************************** * * Copyright (c) 2019-2019 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 Common.h * * @date 19-Sep-2019 * @author S. Nash * * @brief Header file for common definitions and types. * **************************************************************************/ #ifndef __COMMON_H__ #define __COMMON_H__ #include "hal_stdtypes.h" // ********** build switches ********** #ifndef _VECTORCAST_ #define RM46_EVAL_BOARD_TARGET 1 #define SIMULATE_UI 1 #endif // ********** public definitions ********** // **** Types **** typedef float F32; typedef double F64; typedef unsigned long int U32; typedef long int S32; typedef unsigned short U16; typedef short S16; typedef unsigned char U08; typedef unsigned long int BOOL; typedef unsigned char BYTE; typedef enum Pin_Signal_States { PIN_SIGNAL_LOW = 0, PIN_SIGNAL_HIGH, NUM_OF_PIN_SIGNAL_STATES } PIN_SIGNAL_STATE_T; typedef enum Self_Test_Status { SELF_TEST_STATUS_IN_PROGRESS = 0, SELF_TEST_STATUS_PASSED, SELF_TEST_STATUS_FAILED, NUM_OF_SELF_TEST_STATUS } SELF_TEST_STATUS_T; typedef enum Two_Way_States { STATE_CLOSED = 0, STATE_OPEN, NUM_OF_OPN_CLS_STATES } OPN_CLS_STATE_T; // **** Common Definitions **** #define NEARLY_ZERO 0.00001 #define MASK_OFF_MSB 0x00FF #define MASK_OFF_LSB 0xFF00 #define MASK_OFF_MSW 0x0000FFFF #define MASK_OFF_LSW 0xFFFF0000 #define SHIFT_8_BITS_FOR_BYTE_SHIFT 8 #define SHIFT_16_BITS_FOR_WORD_SHIFT 16 #define CAP(v,u) ((v) > (u) ? (u) : (v)) #define RANGE(v,l,u) ((v) > (u) ? (u) : ((v) < (l) ? (l) : (v))) #define INC_WRAP(v,l,u) ((v) == (u) ? (l) : ((v)+1)) #define MAX(a,b) ((a) < (b) ? (b) : (a)) #define MIN(a,b) ((a) > (b) ? (b) : (a)) #define GET_LSB_OF_WORD(w) ((U08)((w) & MASK_OFF_MSB)) #define GET_MSB_OF_WORD(w) ((U08)(((w) >> SHIFT_8_BITS_FOR_BYTE_SHIFT) & MASK_OFF_MSB)) #define GET_LSW_OF_LONG(l) ((U16)((l) & MASK_OFF_MSW)) #define GET_MSW_OF_LONG(l) ((U16)(((l) >> SHIFT_16_BITS_FOR_WORD_SHIFT) & MASK_OFF_MSW)) #define MAKE_WORD_OF_BYTES(h,l) ((((U16)(h) << SHIFT_8_BITS_FOR_BYTE_SHIFT) & MASK_OFF_LSB) | ((U16)(l) & MASK_OFF_MSB)) #define MAKE_LONG_OF_WORDS(h,l) ((((U32)(h) << SHIFT_16_BITS_FOR_WORD_SHIFT) & MASK_OFF_LSW) | ((U32)(l) & MASK_OFF_MSW)) // **** Script Support Definitions **** #define OVERRIDE_KEY 0xCCC33C33 #define OVERRIDE_RESET 0x00000000 // DATA_DECL - declares an overrideable data variable // t = data's type // t_name = name for data's structure type // d_name = name for data's variable // i_val = data's initial value // o_val = data's initial override value #define DATA_DECL( t, t_name, d_name, i_val, o_val ) \ struct t_name \ { \ t data; \ t ovInitData; \ t ovData; \ U32 override; \ }; \ static struct t_name d_name = { i_val, o_val, o_val, OVERRIDE_RESET } // DATA_GET_PROTOTYPE - declares a function prototype for a DATA getter function // t = data's type // f_name = name for DATA getter function #define DATA_GET_PROTOTYPE( t, f_name ) t f_name( void ) // DATA_GET - creates a getter function for a DATA // t = data's type // f_name = name for DATA getter function // d_name = name of data's variable #define DATA_GET( t, f_name, d_name ) \ t f_name( void ) \ { \ t result = d_name.data; \ if ( OVERRIDE_KEY == d_name.override ) \ { \ result = d_name.ovData; \ } \ return result; \ } // DATA_OVERRIDE_FUNC - creates an override and a reset override function for a DATA // t = data's type // o_name = name for override function // r_name = name for reset override function // d_name = name of data's variable #define DATA_OVERRIDE_FUNC( t, o_name, r_name, d_name ) \ BOOL o_name( t value ) \ { \ BOOL result = FALSE; \ if ( TRUE == isTestingActivated() ) \ { \ result = TRUE; \ d_name.ovData = value; \ d_name.override = OVERRIDE_KEY; \ } \ return result; \ } \ BOOL r_name( void ) \ { \ BOOL result = FALSE; \ if ( TRUE == isTestingActivated() ) \ { \ result = TRUE; \ d_name.override = OVERRIDE_RESET; \ d_name.ovData = d_name.ovInitData; \ } \ return result; \ } // **** VectorCAST Definitions **** #ifdef _VECTORCAST_ #define _enable_IRQ() #define _disable_IRQ() #define _enable_FIQ() #ifndef _MINGW_ #pragma WEAK(can1LowLevelInterrupt) void can1LowLevelInterrupt(void) {} #pragma WEAK(can1HighLevelInterrupt) void can1HighLevelInterrupt(void) {} #endif #endif #endif