Index: firmware/App/Monitors/Voltages.c =================================================================== diff -u -r8cbddbe34a4ffed5a4d9fac07a065799c5862611 -r2f00c73cb1a67b9206c64a29a4d45d21b0f129f2 --- firmware/App/Monitors/Voltages.c (.../Voltages.c) (revision 8cbddbe34a4ffed5a4d9fac07a065799c5862611) +++ firmware/App/Monitors/Voltages.c (.../Voltages.c) (revision 2f00c73cb1a67b9206c64a29a4d45d21b0f129f2) @@ -49,34 +49,34 @@ } VOLTAGES_STATE_T; /// Maximum voltage/current level for each monitored signal. -static const F32 MAX_VOLTAGES[ NUM_OF_MONITORED_LINES ] = +static const F32 MAX_VOLTAGES[ NUM_OF_MONITORED_VOLTAGES ] = { - 1.32, // MONITORED_LINE_1_2V - 3.63, // MONITORED_LINE_3_3V - 5.5, // MONITORED_LINE_5V_LOGIC - 5.5, // MONITORED_LINE_5V_SENSORS - 26.4, // MONITORED_LINE_24V - 28.25, // MONITORED_LINE_24V_REGEN - 1.3125, // MONITORED_LINE_FPGA_REF_V - 3.3, // MONITORED_LINE_PBA_REF_V - 1.1, // MONITORED_LINE_FPGA_VCC_V - 1.98, // MONITORED_LINE_FPGA_AUX_V - 0.1 // MONITORED_LINE_FPGA_PVN_V + 1.32, // MONITORED_VOLTAGE_1_2V + 3.63, // MONITORED_VOLTAGE_3_3V + 5.5, // MONITORED_VOLTAGE_5V_LOGIC + 5.5, // MONITORED_VOLTAGE_5V_SENSORS + 26.4, // MONITORED_VOLTAGE_24V + 28.25, // MONITORED_VOLTAGE_24V_REGEN + 1.3125, // MONITORED_VOLTAGE_FPGA_REF_V + 3.3, // MONITORED_VOLTAGE_PBA_REF_V + 1.1, // MONITORED_VOLTAGE_FPGA_VCC_V + 1.98, // MONITORED_VOLTAGE_FPGA_AUX_V + 0.1 // MONITORED_VOLTAGE_FPGA_PVN_V }; /// Minimum voltage/current level for each monitored signal. -static const F32 MIN_VOLTAGES[ NUM_OF_MONITORED_LINES ] = +static const F32 MIN_VOLTAGES[ NUM_OF_MONITORED_VOLTAGES ] = { - 1.08, // MONITORED_LINE_1_2V - 2.97, // MONITORED_LINE_3_3V - 4.5, // MONITORED_LINE_5V_LOGIC - 4.5, // MONITORED_LINE_5V_SENSORS - 21.6, // MONITORED_LINE_24V - 22.0, // MONITORED_LINE_24V_REGEN - 1.1875, // MONITORED_LINE_FPGA_REF_V - 2.7, // MONITORED_LINE_PBA_REF_V - 0.9, // MONITORED_LINE_FPGA_VCC_V - 1.62, // MONITORED_LINE_FPGA_AUX_V - -0.1 // MONITORED_LINE_FPGA_PVN_V + 1.08, // MONITORED_VOLTAGE_1_2V + 2.97, // MONITORED_VOLTAGE_3_3V + 4.5, // MONITORED_VOLTAGE_5V_LOGIC + 4.5, // MONITORED_VOLTAGE_5V_SENSORS + 21.6, // MONITORED_VOLTAGE_24V + 22.0, // MONITORED_VOLTAGE_24V_REGEN + 1.1875, // MONITORED_VOLTAGE_FPGA_REF_V + 2.7, // MONITORED_VOLTAGE_PBA_REF_V + 0.9, // MONITORED_VOLTAGE_FPGA_VCC_V + 1.62, // MONITORED_VOLTAGE_FPGA_AUX_V + -0.1 // MONITORED_VOLTAGE_FPGA_PVN_V }; // ********** private data ********** @@ -87,7 +87,7 @@ /// Interval (in ms) at which to publish voltages monitor data to CAN bus. static OVERRIDE_U32_T voltagesDataPublishInterval = { VOLTAGES_DATA_PUB_INTERVAL, VOLTAGES_DATA_PUB_INTERVAL, 0, 0 }; -static OVERRIDE_F32_T voltages[ NUM_OF_MONITORED_LINES ]; ///< Monitored voltages and currents. +static OVERRIDE_F32_T voltages[ NUM_OF_MONITORED_VOLTAGES ]; ///< Monitored voltages and currents. // ********** private function prototypes ********** @@ -110,7 +110,7 @@ voltagesState = VOLTAGES_INIT_STATE; voltagesDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - for ( i = 0; i < (U32)NUM_OF_MONITORED_LINES; i++ ) + for ( i = 0; i < (U32)NUM_OF_MONITORED_VOLTAGES; i++ ) { voltages[i].data = 0.0; voltages[i].ovData = 0.0; @@ -181,17 +181,17 @@ VOLTAGES_STATE_T result = VOLTAGES_MONITOR_STATE; // Get latest signal levels - voltages[ MONITORED_LINE_1_2V ].data = getIntADCVoltageConverted( INT_ADC_1_2V_PROCESSOR ); - voltages[ MONITORED_LINE_3_3V ].data = getIntADCVoltageConverted( INT_ADC_3_3V ); - voltages[ MONITORED_LINE_5V_LOGIC ].data = getIntADCVoltageConverted( INT_ADC_5V_LOGIC ); - voltages[ MONITORED_LINE_5V_SENSORS ].data = getIntADCVoltageConverted( INT_ADC_5V_SENSORS ); - voltages[ MONITORED_LINE_24V ].data = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS ); - voltages[ MONITORED_LINE_24V_REGEN ].data = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS_REG ); - voltages[ MONITORED_LINE_FPGA_REF_V ].data = getIntADCVoltageConverted( INT_ADC_1_25_FPGA_ADC_REF ); - voltages[ MONITORED_LINE_PBA_REF_V ].data = getIntADCVoltageConverted( INT_ADC_PBA_ADC_REF ); - voltages[ MONITORED_LINE_FPGA_VCC_V ].data = getFPGAVcc(); - voltages[ MONITORED_LINE_FPGA_AUX_V ].data = getFPGAVccAux(); - voltages[ MONITORED_LINE_FPGA_PVN_V ].data = getFPGAVpvn(); + voltages[ MONITORED_VOLTAGE_1_2V ].data = getIntADCVoltageConverted( INT_ADC_1_2V_PROCESSOR ); + voltages[ MONITORED_VOLTAGE_3_3V ].data = getIntADCVoltageConverted( INT_ADC_3_3V ); + voltages[ MONITORED_VOLTAGE_5V_LOGIC ].data = getIntADCVoltageConverted( INT_ADC_5V_LOGIC ); + voltages[ MONITORED_VOLTAGE_5V_SENSORS ].data = getIntADCVoltageConverted( INT_ADC_5V_SENSORS ); + voltages[ MONITORED_VOLTAGE_24V ].data = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS ); + voltages[ MONITORED_VOLTAGE_24V_REGEN ].data = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS_REG ); + voltages[ MONITORED_VOLTAGE_FPGA_REF_V ].data = getIntADCVoltageConverted( INT_ADC_1_25_FPGA_ADC_REF ); + voltages[ MONITORED_VOLTAGE_PBA_REF_V ].data = getIntADCVoltageConverted( INT_ADC_PBA_ADC_REF ); + voltages[ MONITORED_VOLTAGE_FPGA_VCC_V ].data = getFPGAVcc(); + voltages[ MONITORED_VOLTAGE_FPGA_AUX_V ].data = getFPGAVccAux(); + voltages[ MONITORED_VOLTAGE_FPGA_PVN_V ].data = getFPGAVpvn(); // Check voltage ranges checkVoltageRanges(); @@ -220,10 +220,10 @@ F32 alarmVoltage = 0.0F; // Check range - for ( channel = MONITORED_LINE_FIRST_VOLTAGE; channel < NUM_OF_MONITORED_LINES; channel++ ) + for ( channel = MONITORED_VOLTAGE_FIRST_VOLTAGE; channel < NUM_OF_MONITORED_VOLTAGES; channel++ ) { if ( ( ( isSafetyShutdownActivated() != TRUE ) && ( hasPowerBeenLost != TRUE ) ) || - ( ( channel != MONITORED_LINE_24V ) && ( channel != MONITORED_LINE_24V_REGEN ) ) ) + ( ( channel != MONITORED_VOLTAGE_24V ) && ( channel != MONITORED_VOLTAGE_24V_REGEN ) ) ) { #ifndef _RELEASE_ // if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_VOLTAGES_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) @@ -251,11 +251,11 @@ // Pre-Treatment, Treatment, or Post-Treatment mode if ( ( MODE_PRET == opMode ) || ( MODE_TREA == opMode ) || ( MODE_POST == opMode ) ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT, getMonitoredLineLevel( MONITORED_LINE_24V ), getMonitoredLineLevel( MONITORED_LINE_24V_REGEN ) ); + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT, getMonitoredLineLevel( MONITORED_VOLTAGE_24V ), getMonitoredLineLevel( MONITORED_VOLTAGE_24V_REGEN ) ); } else { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_TD_AC_POWER_LOST, getMonitoredLineLevel( MONITORED_LINE_24V ), getMonitoredLineLevel( MONITORED_LINE_24V_REGEN ) ); + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_TD_AC_POWER_LOST, getMonitoredLineLevel( MONITORED_VOLTAGE_24V ), getMonitoredLineLevel( MONITORED_VOLTAGE_24V_REGEN ) ); } // Reset the alarm clearance counter @@ -291,7 +291,7 @@ { F32 result = 0.0; - if ( signal < NUM_OF_MONITORED_LINES ) + if ( signal < NUM_OF_MONITORED_VOLTAGES ) { result = voltages[ signal ].data; @@ -323,17 +323,17 @@ { VOLTAGES_DATA_PAYLOAD_T data; - data.adc1_2VProc = getMonitoredLineLevel( MONITORED_LINE_1_2V ); - data.adc3_3V = getMonitoredLineLevel( MONITORED_LINE_3_3V ); - data.adc5VLogic = getMonitoredLineLevel( MONITORED_LINE_5V_LOGIC ); - data.adc5VSensors = getMonitoredLineLevel( MONITORED_LINE_5V_SENSORS ); - data.adc24V = getMonitoredLineLevel( MONITORED_LINE_24V ); - data.adc24VRegen = getMonitoredLineLevel( MONITORED_LINE_24V_REGEN ); - data.adcFpgaAdcRef = getMonitoredLineLevel( MONITORED_LINE_FPGA_REF_V ); - data.adcPbaRef = getMonitoredLineLevel( MONITORED_LINE_PBA_REF_V ); - data.fpgaVcc = getMonitoredLineLevel( MONITORED_LINE_FPGA_VCC_V ); - data.fpgaVaux = getMonitoredLineLevel( MONITORED_LINE_FPGA_AUX_V ); - data.fpgaVpvn = getMonitoredLineLevel( MONITORED_LINE_FPGA_PVN_V ); + data.adc1_2VProc = getMonitoredLineLevel( MONITORED_VOLTAGE_1_2V ); + data.adc3_3V = getMonitoredLineLevel( MONITORED_VOLTAGE_3_3V ); + data.adc5VLogic = getMonitoredLineLevel( MONITORED_VOLTAGE_5V_LOGIC ); + data.adc5VSensors = getMonitoredLineLevel( MONITORED_VOLTAGE_5V_SENSORS ); + data.adc24V = getMonitoredLineLevel( MONITORED_VOLTAGE_24V ); + data.adc24VRegen = getMonitoredLineLevel( MONITORED_VOLTAGE_24V_REGEN ); + data.adcFpgaAdcRef = getMonitoredLineLevel( MONITORED_VOLTAGE_FPGA_REF_V ); + data.adcPbaRef = getMonitoredLineLevel( MONITORED_VOLTAGE_PBA_REF_V ); + data.fpgaVcc = getMonitoredLineLevel( MONITORED_VOLTAGE_FPGA_VCC_V ); + data.fpgaVaux = getMonitoredLineLevel( MONITORED_VOLTAGE_FPGA_AUX_V ); + data.fpgaVpvn = getMonitoredLineLevel( MONITORED_VOLTAGE_FPGA_PVN_V ); broadcastData( MSG_ID_TD_VOLTAGES_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)&data, sizeof( VOLTAGES_DATA_PAYLOAD_T ) ); voltagesDataPublicationTimerCounter = 0; @@ -348,72 +348,40 @@ /*********************************************************************//** * @brief - * The testSetVoltagesDataPublishIntervalOverride function overrides the - * monitored voltages data publish interval. - * @details Inputs: none - * @details Outputs: voltagesDataPublishInterval - * @param value override monitored voltages data publish interval with (in ms) - * @return TRUE if override successful, FALSE if not + * The testVoltageDataPublishIntervalOverride function overrides the interval + * at which the TD voltage data is published. + * @details \b Inputs: none + * @details \b Outputs: voltagesDataPublishInterval + * @param message Override message from Dialin which includes the interval + * (in ms) to override the voltage broadcast interval to. + * @return TRUE if override request is successful, FALSE if not *************************************************************************/ -BOOL testSetVoltagesDataPublishIntervalOverride( U32 value ) +BOOL testVoltageDataPublishIntervalOverride( MESSAGE_T *message ) { - BOOL result = FALSE; + BOOL result = FALSE; + TEST_OVERRIDE_PAYLOAD_T override; + OVERRIDE_TYPE_T ovType = getOverridePayloadFromMessage( message, &override ); - if ( TRUE == isTestingActivated() ) + // Verify tester has logged in with TD and override type is valid + if ( ( TRUE == isTestingActivated() ) && ( ovType != OVERRIDE_INVALID ) && ( ovType < NUM_OF_OVERRIDE_TYPES ) ) { - U32 intvl = value / TASK_GENERAL_INTERVAL; + if ( OVERRIDE_OVERRIDE == ovType ) + { + U32 value = override.state.u32; + U32 intvl = value / TASK_GENERAL_INTERVAL; - result = TRUE; - voltagesDataPublishInterval.ovData = intvl; - voltagesDataPublishInterval.override = OVERRIDE_KEY; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testResetVoltagesDataPublishIntervalOverride function resets the override - * of the monitored voltages data publish interval. - * @details Inputs: none - * @details Outputs: voltagesDataPublishInterval - * @return TRUE if override reset successful, FALSE if not - *************************************************************************/ -BOOL testResetVoltagesDataPublishIntervalOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - result = TRUE; - voltagesDataPublishInterval.override = OVERRIDE_RESET; - voltagesDataPublishInterval.ovData = voltagesDataPublishInterval.ovInitData; - } - - return result; -} - -/*********************************************************************//** - * @brief - * The testSetLineLevelOverride function overrides the given monitored voltage - * or current. - * @details Inputs: none - * @details Outputs: voltages[] - * @param signal the signal to override - * @param value override signal level with this value - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetLineLevelOverride( U32 signal, F32 value ) -{ - BOOL result = FALSE; - - if ( signal < NUM_OF_MONITORED_LINES ) - { - if ( TRUE == isTestingActivated() ) + if ( intvl > 0 ) + { + result = TRUE; + voltagesDataPublishInterval.ovData = intvl; + voltagesDataPublishInterval.override = OVERRIDE_KEY; + } + } + else { result = TRUE; - voltages[ signal ].ovData = value; - voltages[ signal ].override = OVERRIDE_KEY; + voltagesDataPublishInterval.override = OVERRIDE_RESET; + voltagesDataPublishInterval.ovData = voltagesDataPublishInterval.ovInitData; } } @@ -422,24 +390,40 @@ /*********************************************************************//** * @brief - * The testResetLineLevelOverride function resets the override of the - * given monitored voltage or current. - * @details Inputs: none - * @details Outputs: voltages[] - * @param signal the signal to reset override - * @return TRUE if reset successful, FALSE if not + * The testVoltageOverride function overrides the value for a given voltage. + * @details \b Inputs: none + * @details \b Outputs: voltages[] + * @param message Override message from Dialin which includes an ID of + * the voltage to override and the value to override the voltage to. + * @return TRUE if override request is successful, FALSE if not *************************************************************************/ -BOOL testResetLineLevelOverride( U32 signal ) +BOOL testVoltageOverride( MESSAGE_T *message ) { - BOOL result = FALSE; + BOOL result = FALSE; + TEST_OVERRIDE_ARRAY_PAYLOAD_T override; + OVERRIDE_TYPE_T ovType = getOverrideArrayPayloadFromMessage( message, &override ); - if ( signal < NUM_OF_MONITORED_LINES ) + // Verify tester has logged in with TD and override type is valid + if ( ( TRUE == isTestingActivated() ) && ( ovType != OVERRIDE_INVALID ) && ( ovType < NUM_OF_OVERRIDE_TYPES ) ) { - if ( TRUE == isTestingActivated() ) + U32 voltage = override.index; + + // Verify voltage index of override + if ( voltage < NUM_OF_MONITORED_VOLTAGES ) { result = TRUE; - voltages[ signal ].override = OVERRIDE_RESET; - voltages[ signal ].ovData = voltages[ signal ].ovInitData; + if ( OVERRIDE_OVERRIDE == ovType ) + { + F32 value = override.state.f32; + + voltages[ voltage ].ovData = value; + voltages[ voltage ].override = OVERRIDE_KEY; + } + else + { + voltages[ voltage ].override = OVERRIDE_RESET; + voltages[ voltage ].ovData = voltages[ voltage ].ovInitData; + } } } Index: firmware/App/Monitors/Voltages.h =================================================================== diff -u -r8cbddbe34a4ffed5a4d9fac07a065799c5862611 -r2f00c73cb1a67b9206c64a29a4d45d21b0f129f2 --- firmware/App/Monitors/Voltages.h (.../Voltages.h) (revision 8cbddbe34a4ffed5a4d9fac07a065799c5862611) +++ firmware/App/Monitors/Voltages.h (.../Voltages.h) (revision 2f00c73cb1a67b9206c64a29a4d45d21b0f129f2) @@ -36,19 +36,19 @@ /// Enumeration of voltages monitored by this module. typedef enum Voltages { - MONITORED_LINE_1_2V = 0, ///< Processor 1.2V - MONITORED_LINE_FIRST_VOLTAGE = MONITORED_LINE_1_2V, ///< First voltage in list - MONITORED_LINE_3_3V, ///< Logic voltage (3.3V) - MONITORED_LINE_5V_LOGIC, ///< Logic voltage (5V) - MONITORED_LINE_5V_SENSORS, ///< Sensors voltage (5V) - MONITORED_LINE_24V, ///< Actuators voltage (24V) - MONITORED_LINE_24V_REGEN, ///< Actuators regen voltage (24V) - MONITORED_LINE_FPGA_REF_V, ///< FPGA ADC reference voltage (1V) - MONITORED_LINE_PBA_REF_V, ///< PBA ADC reference voltage (3V) - MONITORED_LINE_FPGA_VCC_V, ///< FPGA input voltage (3V) - MONITORED_LINE_FPGA_AUX_V, ///< FPGA aux. voltage (3V) - MONITORED_LINE_FPGA_PVN_V, ///< FPGA pvn voltage (1V) - NUM_OF_MONITORED_LINES ///< Number of monitored voltages + MONITORED_VOLTAGE_1_2V = 0, ///< Processor 1.2V + MONITORED_VOLTAGE_FIRST_VOLTAGE = MONITORED_VOLTAGE_1_2V, ///< First voltage in list + MONITORED_VOLTAGE_3_3V, ///< Logic voltage (3.3V) + MONITORED_VOLTAGE_5V_LOGIC, ///< Logic voltage (5V) + MONITORED_VOLTAGE_5V_SENSORS, ///< Sensors voltage (5V) + MONITORED_VOLTAGE_24V, ///< Actuators voltage (24V) + MONITORED_VOLTAGE_24V_REGEN, ///< Actuators regen voltage (24V) + MONITORED_VOLTAGE_FPGA_REF_V, ///< FPGA ADC reference voltage (1V) + MONITORED_VOLTAGE_PBA_REF_V, ///< PBA ADC reference voltage (3V) + MONITORED_VOLTAGE_FPGA_VCC_V, ///< FPGA input voltage (3V) + MONITORED_VOLTAGE_FPGA_AUX_V, ///< FPGA aux. voltage (3V) + MONITORED_VOLTAGE_FPGA_PVN_V, ///< FPGA pvn voltage (1V) + NUM_OF_MONITORED_VOLTAGES ///< Number of monitored voltages } MONITORED_VOLTAGES_T; /// Payload record structure for the voltages data message. @@ -74,10 +74,8 @@ F32 getMonitoredLineLevel( MONITORED_VOLTAGES_T signal ); -BOOL testSetVoltagesDataPublishIntervalOverride( U32 value ); -BOOL testResetVoltagesDataPublishIntervalOverride( void ); -BOOL testSetLineLevelOverride( U32 signal, F32 value ); -BOOL testResetLineLevelOverride( U32 signal ); +BOOL testVoltageDataPublishIntervalOverride( MESSAGE_T *message ); +BOOL testVoltageOverride( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r512065f0a0c9ba2c335e8856b790e8448852fc52 -r2f00c73cb1a67b9206c64a29a4d45d21b0f129f2 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 512065f0a0c9ba2c335e8856b790e8448852fc52) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 2f00c73cb1a67b9206c64a29a4d45d21b0f129f2) @@ -24,6 +24,7 @@ #include "PAL.h" #include "SystemCommTD.h" #include "Utilities.h" +#include "Voltages.h" /** * @addtogroup Messaging @@ -70,14 +71,18 @@ static const U16 MSG_FUNCTION_HANDLER_LOOKUP[] = { MSG_ID_TESTER_LOGIN_REQUEST, MSG_ID_TD_SOFTWARE_RESET_REQUEST, - MSG_ID_TD_VENOUS_BUBBLE_OVERRIDE_REQUEST + MSG_ID_TD_VENOUS_BUBBLE_OVERRIDE_REQUEST, + MSG_ID_TD_VOLTAGE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_TD_VOLTAGE_OVERRIDE_REQUEST }; /// Message handling function table static const MsgFuncPtr MSG_FUNCTION_HANDLERS[] = { &handleTesterLogInRequest, &handleTDSoftwareResetRequest, - &testBubbleDetectOverride + &testBubbleDetectOverride, + &testVoltageDataPublishIntervalOverride, + &testVoltageOverride }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr))