Index: Common.h =================================================================== diff -u -rc4171147708d867ba5886aaa53182ad0fae774d3 -r4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe --- Common.h (.../Common.h) (revision c4171147708d867ba5886aaa53182ad0fae774d3) +++ Common.h (.../Common.h) (revision 4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe) @@ -34,7 +34,7 @@ typedef float F32; ///< 32-bit floating point type typedef double F64; ///< 64-bit floating point type -typedef long long U64; ///< 64-bit signed integer type +typedef unsigned long long U64; ///< 64-bit unsigned integer type typedef unsigned int U32; ///< 32-bit unsigned integer type typedef int S32; ///< 32-bit signed integer type typedef unsigned short U16; ///< 16-bit unsigned integer type @@ -121,6 +121,7 @@ #define BITS_12_FULL_SCALE 4096 ///< Full scale range for 12 bit ADC or DAC #define BITS_14_FULL_SCALE 16384 ///< Full scale range for 14 bit ADC or DAC #define BITS_16_FULL_SCALE 65536 ///< Full scale range for 16 bit ADC or DAC +#define BITS_24_FULL_SCALE 16777216 ///< Full scale range for 24 bit ADC or DAC #define HALF 0.5F ///< Half // **** Common Macros **** @@ -254,6 +255,23 @@ sendEvent( e, dat1, dat2 ); \ } +// **** Common Broadcast Data **** + +/// Heaters data structure. +typedef struct +{ + F32 mainPrimayHeaterDC; ///< Main primary heater DC + F32 smallPrimaryHeaterDC; ///< Small primary heater DC + F32 trimmerHeaterDC; ///< Trimmer heater DC + F32 primaryTargetTemp; ///< Primary heater target temperature + F32 trimmerTargetTemp; ///< Trimmer heater target temperature + U32 primaryHeaterState; ///< Primary heater state + U32 trimmerHeaterState; ///< Trimmer heater state + F32 primaryEfficiency; ///< Primary heater efficiency + F32 primaryCalcTargetTemp; ///< Primary heater calculated target temperature + F32 trimmerCalcCurrentTemp; ///< Trimmer heater calculated current temperature +} HEATERS_DATA_T; + // **** VectorCAST Definitions **** #ifdef _VECTORCAST_ Index: NVDataMgmt.c =================================================================== diff -u -rdfd0ead85658fba92a433726e2212c5b20597805 -r4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe --- NVDataMgmt.c (.../NVDataMgmt.c) (revision dfd0ead85658fba92a433726e2212c5b20597805) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe) @@ -2712,7 +2712,7 @@ dgSystemGroup.dgSystemRecord.mfgDate = 0; dgSystemGroup.dgSystemRecord.mfgLocation = 0; memset( dgSystemGroup.dgSystemRecord.topLevelPN, RECORD_DEFAULT_CHARACTER, sizeof( dgSystemGroup.dgSystemRecord.topLevelPN ) ); - memset( dgSystemGroup.dgSystemRecord.topLevelPN, RECORD_DEFAULT_CHARACTER, sizeof( dgSystemGroup.dgSystemRecord.topLevelPN ) ); + memset( dgSystemGroup.dgSystemRecord.topLevelSN, RECORD_DEFAULT_CHARACTER, sizeof( dgSystemGroup.dgSystemRecord.topLevelSN ) ); // Recalculate the CRC with the default values dgSystemGroup.dgSystemRecord.crc = crc16 ( (U08*)&dgSystemGroup.dgSystemRecord, sizeof( DG_SYSTEM_RECORD_T ) - sizeof( U16 ) ); Index: PersistentAlarm.c =================================================================== diff -u -rffd3ac3c3107860b53463bc5336bbd3ab69477a4 -r4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe --- PersistentAlarm.c (.../PersistentAlarm.c) (revision ffd3ac3c3107860b53463bc5336bbd3ab69477a4) +++ PersistentAlarm.c (.../PersistentAlarm.c) (revision 4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe) @@ -26,51 +26,51 @@ // ********** private definitions ********** -#define NUM_OF_FPGA_ALARMS_PER_GROUP 2 -#define FPGA_READ_ALARM_INDEX 0 -#define FPGA_ERROR_ALARM_INDEX 1 +#define NUM_OF_FPGA_ALARMS_PER_GROUP 2 ///< Number of FPGA alarms per group. +#define FPGA_READ_ALARM_INDEX 0 ///< FPGA read alarm index number. +#define FPGA_ERROR_ALARM_INDEX 1 ///< FPGA error alarm index number. /// FPGA persistent alarm types typedef enum { - FPGA_READ_ERROR = 0, - FPGA_ERROR_ERROR, - FPGA_NOT_UPDATING_ERROR, - NUM_OF_FPGA_ERROR_TYPES + FPGA_READ_ERROR = 0, ///< FPGA read error type. + FPGA_ERROR_ERROR, ///< FPGA error error type. + FPGA_NOT_UPDATING_ERROR, ///< FPGA not updating error type. + NUM_OF_FPGA_ERROR_TYPES ///< Number of FPGA error types. } FPGA_ERROR_TYPE_T; /// Persistent alarm structure typedef struct { - ALARM_ID_T alarm; ///< Alarm ID - U32 persistentClearPeriod; ///< Persistent count limit before clear alarm - U32 persistentTriggerPeriod; ///< Persistent count limit before trigger alarm - U32 errorClearedStartTime; ///< Error cleared start time - U32 errorOccurredStartTime; ///< Error occurred start time + ALARM_ID_T alarm; ///< Alarm ID. + U32 persistentClearPeriod; ///< Persistent count limit before clear alarm. + U32 persistentTriggerPeriod; ///< Persistent count limit before trigger alarm. + U32 errorClearedStartTime; ///< Error cleared start time. + U32 errorOccurredStartTime; ///< Error occurred start time. } PERSISTENT_ALARM_DATA_T; /// FPGA persistent alarm data structure typedef struct { - U32 fpagErrorClearedStartTime; ///< FPGA error cleared start time - U32 fpgaErrorOccurredStartTime; ///< FPGA error occurred start time - U32 fpgaPreviousCount; ///< FPGA previous read count - BOOL fpgaIsConditionClear; ///< FPGA is persistent condition clear + U32 fpagErrorClearedStartTime; ///< FPGA error cleared start time. + U32 fpgaErrorOccurredStartTime; ///< FPGA error occurred start time. + U32 fpgaPreviousCount; ///< FPGA previous read count. + BOOL fpgaIsConditionClear; ///< FPGA is persistent condition clear. } FPGA_ALARM_DATA_T; /// FPGA persistent alarm structure typedef struct { - ALARM_ID_T fpgaAlarm; ///< FPGA read alarm - U32 fpgaPersistentClearPeriod; ///< FPGA persistent count limit before clear alarm - U32 fpgaPersistentTriggerPeriod; ///< FPGA persistent count limit before trigger alarm - FPGA_ALARM_DATA_T fpgaAlarmData[ NUM_OF_FPGA_ERROR_TYPES ]; + ALARM_ID_T fpgaAlarm; ///< FPGA read alarm. + U32 fpgaPersistentClearPeriod; ///< FPGA persistent count limit before clear alarm. + U32 fpgaPersistentTriggerPeriod; ///< FPGA persistent count limit before trigger alarm. + FPGA_ALARM_DATA_T fpgaAlarmData[ NUM_OF_FPGA_ERROR_TYPES ]; ///< FPGA persistent alarm data. } FPGA_PERSISTENT_ALARM_GROUP_T; // ********** private data ********** -static PERSISTENT_ALARM_DATA_T persistentAlarms[ NUM_OF_ALARM_IDS ]; ///< Array of persistent alarm structure -static FPGA_PERSISTENT_ALARM_GROUP_T fpgaPersistentAlarmGroup[ NUM_OF_FPGA_SENSOR_GROUPS ]; +static PERSISTENT_ALARM_DATA_T persistentAlarms[ NUM_OF_ALARM_IDS ]; ///< Array of persistent alarm structure. +static FPGA_PERSISTENT_ALARM_GROUP_T fpgaPersistentAlarmGroup[ NUM_OF_FPGA_SENSOR_GROUPS ]; ///< FPGA persistent alarm group. // ********** private function prototypes ********** @@ -106,6 +106,19 @@ } } +/*********************************************************************//** + * @brief + * The initFPGAPersistentAlarm function initializes the FPGA persistent alarm + * when the alarm count lower than maximum persistent alarm allowed and the FPGA + * sensor group is less than the maximum allowed sensor group. + * @details Inputs: none + * @details Outputs: fpgaPersistentAlarmGroup + * @param group which is the FPGA persistent alarm group + * @param alarmId Alarm id + * @param persistentClearPeriod Persistent period limit before clear alarm (in ms) + * @param persistentTriggerPeriod Persistent period limit before trigger alarm (in ms) + * @return none + *************************************************************************/ void initFPGAPersistentAlarm( FPGA_PERSISTENT_ALARMS_GROUP_T group, ALARM_ID_T alarmIndex, U32 persistentClearPeriod, U32 persistentTriggerPeriod ) { if ( ( group < NUM_OF_FPGA_SENSOR_GROUPS ) && ( alarmIndex < NUM_OF_ALARM_IDS ) ) @@ -252,6 +265,51 @@ /*********************************************************************//** * @brief + * The checkFPGAPersistentAlarms function checks the FPGA persistent alarm + * status of the provided FPGA persistent alarm group. + * @details Inputs: fpgaPersistentAlarmGroup + * @details Outputs: fpgaPersistentAlarmGroup + * @param alarmGroup which is the alarm group of the persistent alarm + * (i.e. 2-wire temperature sensor) + * @param errorCount which is the FPGA error count of the sensor group + * @param readCount which is the FPGA read count of the sensor group + * @return none + *************************************************************************/ +void checkFPGAPersistentAlarms( FPGA_PERSISTENT_ALARMS_GROUP_T group, U32 errorCount, U32 readCount ) +{ + if ( group < NUM_OF_FPGA_SENSOR_GROUPS ) + { + FPGA_ERROR_TYPE_T type = NUM_OF_FPGA_ERROR_TYPES; + BOOL isReadPersTrgrd = FALSE; + BOOL isErroPersTrgrd = FALSE; + + isReadPersTrgrd = isFPGAPersistentAlarmTriggered( &fpgaPersistentAlarmGroup[ group ], readCount, FPGA_READ_ERROR ); + + if ( TRUE == isReadPersTrgrd ) + { + type = FPGA_READ_ERROR; + } + + isErroPersTrgrd = isFPGAPersistentAlarmTriggered( &fpgaPersistentAlarmGroup[ group ], errorCount, FPGA_ERROR_ERROR ); + + if ( TRUE == isErroPersTrgrd ) + { + type = FPGA_ERROR_ERROR; + } + + if ( ( TRUE == isReadPersTrgrd ) || ( TRUE == isErroPersTrgrd ) ) + { + SET_ALARM_WITH_2_U32_DATA( fpgaPersistentAlarmGroup[ group ].fpgaAlarm, type, group ); + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED, (U32)group ); + } +} + +/*********************************************************************//** + * @brief * The isFPGAPersistentAlarmTriggered function checks whether persistent alarm * has been triggered or not. * @details Inputs: alarmGroup @@ -278,6 +336,7 @@ break; case FPGA_NOT_UPDATING_ERROR: + hasErrorOccured = TRUE; break; } @@ -303,52 +362,4 @@ return isPersistentTriggered; } -/*********************************************************************//** - * @brief - * The checkFPGAPersistentAlarms function checks the FPGA persistent alarm - * status of the provided FPGA persistent alarm group. - * @details Inputs: fpgaPersistentAlarmGroup - * @details Outputs: fpgaPersistentAlarmGroup - * @param alarmGroup which is the alarm group of the persistent alarm - * (i.e. 2-wire temperature sensor) - * @param errorCount which is the FPGA error count of the sensor group - * @param readCount which is the FPGA read count of the sensor group - * @return none - *************************************************************************/ -void checkFPGAPersistentAlarms( FPGA_PERSISTENT_ALARMS_GROUP_T group, U32 errorCount, U32 readCount ) -{ - if ( group < NUM_OF_FPGA_SENSOR_GROUPS ) - { - FPGA_ERROR_TYPE_T type = NUM_OF_FPGA_ERROR_TYPES; - BOOL isPersistenceTrgrd = FALSE; - FPGA_ALARM_DATA_T readData = fpgaPersistentAlarmGroup[ group ].fpgaAlarmData[ FPGA_READ_ERROR ]; - FPGA_ALARM_DATA_T errorData = fpgaPersistentAlarmGroup[ group ].fpgaAlarmData[ FPGA_ERROR_ERROR ]; - - if ( ( readCount == readData.fpgaPreviousCount ) && ( errorCount == errorData.fpgaPreviousCount ) ) - { - type = FPGA_NOT_UPDATING_ERROR; - isPersistenceTrgrd = isFPGAPersistentAlarmTriggered( &fpgaPersistentAlarmGroup[ group ], readCount, FPGA_NOT_UPDATING_ERROR ); - } - else if ( readData.fpgaPreviousCount != readCount ) - { - type = FPGA_READ_ERROR; - isPersistenceTrgrd = isFPGAPersistentAlarmTriggered( &fpgaPersistentAlarmGroup[ group ], readCount, FPGA_READ_ERROR ); - } - else if ( errorData.fpgaPreviousCount != errorCount ) - { - type = FPGA_ERROR_ERROR; - isPersistenceTrgrd = isFPGAPersistentAlarmTriggered( &fpgaPersistentAlarmGroup[ group ], errorCount, FPGA_ERROR_ERROR ); - } - - if ( TRUE == isPersistenceTrgrd ) - { - SET_ALARM_WITH_2_U32_DATA( fpgaPersistentAlarmGroup[ group ].fpgaAlarm, type, group ); - } - } - else - { - // TODO software fault - } -} - /**@}*/ Index: PersistentAlarm.h =================================================================== diff -u -rffd3ac3c3107860b53463bc5336bbd3ab69477a4 -r4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe --- PersistentAlarm.h (.../PersistentAlarm.h) (revision ffd3ac3c3107860b53463bc5336bbd3ab69477a4) +++ PersistentAlarm.h (.../PersistentAlarm.h) (revision 4c8f5e8c8e26bb5c84859b4c846f3b583aae55fe) @@ -34,16 +34,16 @@ #ifdef _DG_ typedef enum { - TWO_WIRE_ADC_TEMP_SENSORS = 0, - THD_ADC_TEMP_SENSORS, - TDI_ADC_TEMP_SENSORS, - TRO_ADC_TEMP_SENSORS, - CPI_COND_SENSOR, - CPO_COND_SENSOR, - PRESSURE_SENSORS, - FLOW_SENSORS, - BARO_SENSORS, - NUM_OF_FPGA_SENSOR_GROUPS + TWO_WIRE_ADC_TEMP_SENSORS = 0, ///< Two wire ADC temperature sensors. + THD_ADC_TEMP_SENSORS, ///< THd ADC temperature sensors. + TDI_ADC_TEMP_SENSORS, ///< TDi ADC temperature sensors. + TRO_ADC_TEMP_SENSORS, ///< TRo ADC temperature sensors. + CPI_COND_SENSOR, ///< CPi conductivity sensor. + CPO_COND_SENSOR, ///< CPo conductivity sensor. + PRESSURE_SENSORS, ///< Pressure sensors. + FLOW_SENSORS, ///< Flow sensors. + BARO_SENSOR, ///< Barometric sensor. + NUM_OF_FPGA_SENSOR_GROUPS ///< Number of FPGA sensor groups. } FPGA_PERSISTENT_ALARMS_GROUP_T; #endif