Index: Utilities.h =================================================================== diff -u -re8828d66e4a76e0590c3f06b7f6235f33df64e80 -r569a9f44c93e6489f1dc1a62a7937e100ea344c2 --- Utilities.h (.../Utilities.h) (revision e8828d66e4a76e0590c3f06b7f6235f33df64e80) +++ Utilities.h (.../Utilities.h) (revision 569a9f44c93e6489f1dc1a62a7937e100ea344c2) @@ -28,32 +28,62 @@ // ********** public definitions ********** -#define MAX_TIME_WINDOWED_COUNT 5 ///< Maximum # of counts that a time windowed count can count to. +// ******* Time Windowed Count Definitions ********* +#define MAX_TIME_WINDOWED_COUNT 5 ///< Maximum # of counts that a time windowed count can count to. /// Enumeration of time-windowed counts. typedef enum TimeWindowedCounts { - TIME_WINDOWED_COUNT_BAD_MSG_CRC = 0, ///< Bad message CRC. - TIME_WINDOWED_COUNT_CAN_WARNING, ///< CAN warning. - TIME_WINDOWED_COUNT_CAN_PASSIVE, ///< CAN passive mode. - TIME_WINDOWED_COUNT_CAN_OFF, ///< CAN off. - TIME_WINDOWED_COUNT_CAN_PARITY, ///< CAN parity error. - TIME_WINDOWED_COUNT_FPGA_UART_FRAME_ERROR, ///< FPGA UART frame error. - TIME_WINDOWED_COUNT_FPGA_UART_OVERRUN, ///< FPGA UART overrun error. + TIME_WINDOWED_COUNT_BAD_MSG_CRC = 0, ///< Bad message CRC + TIME_WINDOWED_COUNT_CAN_WARNING, ///< CAN warning + TIME_WINDOWED_COUNT_CAN_PASSIVE, ///< CAN passive mode + TIME_WINDOWED_COUNT_CAN_OFF, ///< CAN off + TIME_WINDOWED_COUNT_CAN_PARITY, ///< CAN parity error + TIME_WINDOWED_COUNT_FPGA_UART_FRAME_ERROR, ///< FPGA UART frame error + TIME_WINDOWED_COUNT_FPGA_UART_OVERRUN, ///< FPGA UART overrun error #ifdef _HD_ #endif #ifdef _DG_ - TIME_WINDOWED_COUNT_FPGA_CONDUCTIVITY_SENSOR_ERROR, ///< FPGA Conductivity sensor error + TIME_WINDOWED_COUNT_FPGA_CONDUCTIVITY_SENSOR_ERROR, ///< FPGA Conductivity sensor error + TIME_WINDOWED_COUNT_FPGA_TEMPERATURE_SENSOR_ERROR, ///< FPGA Temperature sensor error #endif NUM_OF_TIME_WINDOWED_COUNTS ///< Number of pressure sensors. } TIME_WINDOWED_COUNT_T; - + +// ******* Critical Data Definitions ********* +/// Critical data types list. +typedef enum Critical_Data_Types +{ + CRITICAL_DATA_TYPE_U32 = 0, ///< Critical data is unsigned 32-bit integer type + CRITICAL_DATA_TYPE_F32, ///< Critical data is 32-bit floating point type + NUM_OF_CRITICAL_DATA_TYPES ///< Total number of critical data types. +} CRITICAL_DATA_TYPES_T; + +/// Record structure for alarm data of any supported type. +typedef union +{ + U32 uInt; ///< critical data of unsigned integer type. + F32 flt; ///< critical data of floating point type. +} CRITICAL_DATAS_T; + +/// critical integer data structure. +typedef struct +{ + CRITICAL_DATA_TYPES_T typ; ///< Type of data + CRITICAL_DATAS_T data; ///< Data value + U32 comp; ///< One's compliment of value + BOOL set; ///< Flag indicates data has been set +} CRITICAL_DATA_T; + // ********** public function prototypes ********** U16 crc16( const U08 *address, U32 len ); U08 crc8( const U08 *address, U32 len ); void initTimeWindowedCount( TIME_WINDOWED_COUNT_T cnt, U32 maxCnt, U32 winMs ); -BOOL incTimeWindowedCount( TIME_WINDOWED_COUNT_T cnt ); +BOOL incTimeWindowedCount( TIME_WINDOWED_COUNT_T cnt ); +CRITICAL_DATAS_T getCriticalData( CRITICAL_DATA_T *data ); +void setCriticalData( CRITICAL_DATA_T *data, CRITICAL_DATAS_T value ); +void resetCriticalData( CRITICAL_DATA_T *data ); /**@}*/