Index: firmware/App/Common.h =================================================================== diff -u -reb877ae36c28eb83553ee11ccccf42e2c4a5b4d2 -rda054e07ed923d897e58f77a14e21d864ac4d5b8 --- firmware/App/Common.h (.../Common.h) (revision eb877ae36c28eb83553ee11ccccf42e2c4a5b4d2) +++ firmware/App/Common.h (.../Common.h) (revision da054e07ed923d897e58f77a14e21d864ac4d5b8) @@ -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. @@ -22,8 +22,15 @@ // ********** build switches ********** #ifndef _VECTORCAST_ -// #define RM46_EVAL_BOARD_TARGET 1 + #define RM46_EVAL_BOARD_TARGET 1 // #define SIMULATE_UI 1 +// #define DEBUG_ENABLED 1 +// #define ACK_NOT_IMPLEMENTED 1 + + #ifdef DEBUG_ENABLED + #include + #include + #endif #endif // ********** public definitions ********** @@ -62,28 +69,76 @@ NUM_OF_OPN_CLS_STATES } OPN_CLS_STATE_T; +typedef enum Motor_Directions +{ + MOTOR_DIR_FORWARD = 0, + MOTOR_DIR_REVERSE, + NUM_OF_MOTOR_DIRECTIONS +} MOTOR_DIR_T; + // **** 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 #define MASK_OFF_LSW 0xFFFF0000 #define SHIFT_8_BITS_FOR_BYTE_SHIFT 8 #define SHIFT_16_BITS_FOR_WORD_SHIFT 16 +#define MASK_OFF_NIBBLE_LSB 0xF0 +#define MASK_OFF_NIBBLE_MSB 0x0F +#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 -#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)) + +// **** Common Macros **** + +#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; \ + dat1.dataType = ALARM_DATA_TYPE_U32; \ + dat1.data.uInt.data = (U32)(d1); \ + 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; \ + dat1.dataType = ALARM_DATA_TYPE_U32; \ + dat1.data.uInt.data = (U32)(d1); \ + dat2.dataType = ALARM_DATA_TYPE_U32; \ + dat2.data.uInt.data = (U32)(d2); \ + activateAlarm2Data( a, dat1, dat2 ); \ +} + // **** VectorCAST Definitions **** #ifdef _VECTORCAST_ @@ -97,9 +152,13 @@ #pragma WEAK(can1HighLevelInterrupt) void can1HighLevelInterrupt(void) {} #endif + #define fabs(v) ((v) < 0.0 ? ((v) * -1.0) : (v)) #endif +// include alarm mgmt header +#include "AlarmMgmt.h" + // include test support definitions and macros #include "TestSupport.h"