Index: firmware/App/Common.h =================================================================== diff -u -r53165945d15dd7a30b3d194573507cbd31e5314f -rfe01fd0124c0c43737474781730608d55d0f0bda --- firmware/App/Common.h (.../Common.h) (revision 53165945d15dd7a30b3d194573507cbd31e5314f) +++ firmware/App/Common.h (.../Common.h) (revision fe01fd0124c0c43737474781730608d55d0f0bda) @@ -1,6 +1,6 @@ /************************************************************************** * -* Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. +* 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. @@ -24,7 +24,7 @@ #ifndef _VECTORCAST_ #define RM46_EVAL_BOARD_TARGET 1 // #define SIMULATE_UI 1 -// #define DEBUG_ENABLED 1 + #define DEBUG_ENABLED 1 #ifdef DEBUG_ENABLED #include @@ -77,7 +77,7 @@ // **** Common Definitions **** -#define NEARLY_ZERO 0.00001 +#define NEARLY_ZERO 0.00000001 #define MASK_OFF_MSB 0x00FF #define MASK_OFF_LSB 0xFF00 #define MASK_OFF_MSW 0x0000FFFF @@ -89,21 +89,30 @@ #define MAX_DOUBLE_DIGIT_DECIMAL 99U #define MAX_SINGLE_DIGIT_DECIMAL 9U #define SHIFT_BITS_BY_4 4U +#define FLOAT_TO_INT_ROUNDUP_OFFSET 0.5 +#define ML_PER_LITER 1000 +#define MS_PER_SECOND 1000 +#define SEC_PER_MIN 60 +#define FRACTION_TO_PERCENT_FACTOR 100.0 // **** Common Macros **** -#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 FLOAT_TO_INT_WITH_ROUND(f) ((f) < 0.0 ? (S32)((f) - FLOAT_TO_INT_ROUNDUP_OFFSET) : (S32)((f) + FLOAT_TO_INT_ROUNDUP_OFFSET)) +#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 INC_CAP(v, u) ((v) == (u) ? (u) : ((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)) +#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)) +#define GET_TOGGLE(v, l, h) ((v) == (l) ? (h) : (l)) +#define BIT_BY_POS(p) (1U << (p)) #define SET_ALARM_WITH_1_U32_DATA(a,d1) { \ ALARM_DATA_T dat1; \ @@ -112,6 +121,13 @@ activateAlarm1Data( a, dat1 ); \ } +#define SET_ALARM_WITH_1_F32_DATA(a,d1) { \ + ALARM_DATA_T dat1; \ + dat1.dataType = ALARM_DATA_TYPE_F32; \ + dat1.data.flt.data = (F32)(d1); \ + activateAlarm1Data( a, dat1 ); \ +} + #define SET_ALARM_WITH_2_U32_DATA(a,d1,d2) { \ ALARM_DATA_T dat1; \ ALARM_DATA_T dat2; \ @@ -135,6 +151,7 @@ #pragma WEAK(can1HighLevelInterrupt) void can1HighLevelInterrupt(void) {} #endif + #define fabs(v) ((v) < 0.0 ? ((v) * -1.0) : (v)) #endif