Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r9fdd42e75e67270808116d7d89f099939c13add7 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 9fdd42e75e67270808116d7d89f099939c13add7) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -155,6 +155,10 @@ SW_FAULT_ID_INVALID_CONSUMABLE_SELF_TEST_STATE, SW_FAULT_ID_HD_INVALID_BUBBLE_STATE, // 125 SW_FAULT_ID_HD_INVALID_BUBBLE_ID, + SW_FAULT_ID_HD_TEMPERATURES_INALID_EXEC_STATE, + SW_FAULT_ID_HD_INVALID_TEMPERATURE_SENSOR_SELECTED, + SW_FAULT_ID_HD_FANS_INVALID_STATE, + SW_FAULT_ID_HD_INVALID_FAN_SELECTED, // 130 SW_FAULT_ID_HD_INVALID_SWITCH_ID, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rce596a29a2bd6384d70b2fe7b9c332b0f1f37a84 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision ce596a29a2bd6384d70b2fe7b9c332b0f1f37a84) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -152,7 +152,7 @@ U32 adc1Channel0; ///< Reg 292. ADC1 channel 0 data. U32 adc1Channel1; ///< Reg 296. ADC1 channel 1 data. U32 bloodFlowSoundSpeedData; ///< Reg 300. Blood flow sensor - sound speed data. - U32 bloodFlowAccFlowData; ///< Reg 304. Blood flow sensor - accumualted flow data. + U32 bloodFlowAccFlowData; ///< Reg 304. Blood flow sensor - accumulated flow data. F32 bloodFlowSignalStrength; ///< Reg 308. Blood flow sensor - signal strength. U08 adc1SequenceCount; ///< Reg 312. ADC1 round robin channel sequence count. U08 adc1ErrorCount; ///< Reg 313. ADC1 error count. @@ -171,7 +171,7 @@ U16 dialInPumpHallSensorCount; ///< Reg 336. Dialysate inlet pump hall sensor count. U16 dialOutPumpHallSensorCount; ///< Reg 338. Dialysate outlet pump hall sensor count. U32 dialysateFlowSoundSpeedData; ///< Reg 340. Dialysate flow sensor - sound speed data. - U32 dialysateFlowAccFlowData; ///< Reg 344. Dialysate flow sensor - accumualted flow data. + U32 dialysateFlowAccFlowData; ///< Reg 344. Dialysate flow sensor - accumulated flow data. F32 dialysateFlowSignalStrength; ///< Reg 348. Dialysate flow sensor - signal strength. U16 fan1PulseTime; ///< Reg 352. Fan 1 pulse time in 2.5 uSec resolution. 0xFFFF if fan RPM < 500 RPM. U16 fan2PUlseTime; ///< Reg 354. Fan 2 pulse time in 2.5 uSec resolution. 0xFFFF if fan RPM < 500 RPM. @@ -204,8 +204,8 @@ U16 VDiSpeed; ///< Reg 406. VDi pinch valve current (Register VAUX9) U16 VDoSpeed; ///< Reg 408. VDo pinch valve speed (Register VAUX10) U16 VDiCurrent; ///< Reg 410. VDi pinch valve current (Register VAUX11) - U16 VSpareSpeed; ///< Reg 412. VSpare speed (Register VAUX5) - U16 VSpareCurrent; ///< Reg 414. VSpare current (Register VAUX13) + U16 fpgaBoardTemperature; ///< Reg 412. FPGA board temperature. + U16 VAUX13; ///< Reg 414. Register VAUX13. U16 fpgaTimerCount_ms; ///< Reg 416. Internal FPGA timer count in ms. } FPGA_SENSORS_T; @@ -2313,6 +2313,17 @@ /*********************************************************************//** * @brief + * The getFPGABoardTemperature function reads the FPGA board temperature. + * @details Inputs: none + * @details Outputs: fpgaSensorReadings + * @return Current FPGA board temperature + *************************************************************************/ +U16 getFPGABoardTemperature( void ) +{ + return fpgaSensorReadings.fpgaBoardTemperature; +} + +/*********************************************************************//** * The getFPGAFrontDoorStatus function returns the FPGA front door status * bit. * @details Inputs: none @@ -2326,6 +2337,29 @@ /*********************************************************************//** * @brief + * The getFPGAPBAADCTemperature function reads the PBA ADC temperature. + * @details Inputs: none + * @details Outputs: fpgaSensorReadings + * @return PBA ADC temperature + *************************************************************************/ +U32 getFPGAPBAADCTemperature( void ) +{ + return fpgaSensorReadings.adc1Channel1; +} + +/*********************************************************************//** + * @brief + * The getFPGAInletFan1TogglePeriod function reads the inlet fan 1 pulse time. + * @details Inputs: none + * @details Outputs: fpgaSensorReadings + * @return Inlet fan 1 pulse time + *************************************************************************/ +U16 getFPGAInletFan1TogglePeriod( void ) +{ + return fpgaSensorReadings.fan1PulseTime; +} + +/*********************************************************************//** * The getFPGAPumpTrackSwitchStatus function returns the FPGA pump track * switch status bit. * @details Inputs: none Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r69b93e39861c5493d273f25d9e43cacd0b5819e2 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 69b93e39861c5493d273f25d9e43cacd0b5819e2) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -149,6 +149,9 @@ void setFPGAValveBloodArterialPosition( S16 setPoint ); S16 getFPGAValveBloodArterialPosition( void ); U16 getFPGAValveBloodArterialCurrentCounts( void ); +U16 getFPGABoardTemperature( void ); +U32 getFPGAPBAADCTemperature( void ); +U16 getFPGAInletFan1TogglePeriod( void ); U16 getFPGAFrontDoorStatus( void ); U16 getFPGAPumpTrackSwitchStatus( void ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r5ba9f16849437eea9a635425ff5cf39ee3229345 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 5ba9f16849437eea9a635425ff5cf39ee3229345) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -1641,6 +1641,10 @@ handleTestValvesCurrentOverrideRequest( message ); break; + case MSG_ID_HD_VALVES_POSITION_COUNT_OVERRIDE: + handleTestValvesPositionCountOverrideRequest( message ); + break; + case MSG_ID_HD_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE: handleTestMonitoredVoltagesSendIntervalOverrideRequest( message ); break; @@ -1685,6 +1689,18 @@ handleTestSyringePumpADCReadCtrOverrideRequest( message ); break; + case MSG_ID_HD_TEMPERATURES_VALUE_OVERRIDE: + handleTestTemperaturesValueOverrideRequest( message ); + break; + + case MSG_ID_HD_TEMPERATURES_PUBLISH_INTERVAL_OVERRIDE: + handleTestTemperaturesBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_FANS_PUBLISH_INTERVAL_OVERRIDE: + handleTestFansBroadcastIntervalOverrideRequest( message ); + break; + case MSG_ID_HD_SET_CALIBRATION_RECORD: handleSetHDCalibrationRecord( message ); break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r7da76d7131d824ab15f58857eeeedcf128e57391 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 7da76d7131d824ab15f58857eeeedcf128e57391) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -26,13 +26,13 @@ #include "FPGA.h" #include "ModeStandby.h" #include "ModeTreatmentParams.h" -#include "NVDataMgmt.h" #include "OperationModes.h" #include "RTC.h" #include "SampleWater.h" #include "SafetyShutdown.h" #include "SystemComm.h" #include "SystemCommMessages.h" +#include "Temperatures.h" #include "TreatmentEnd.h" #include "TreatmentRecirc.h" #include "Utilities.h" @@ -2761,6 +2761,60 @@ return result; } +/*********************************************************************//** + * @brief + * The broadcastTemperaturesData function sends out the temperatures data. + * @details Inputs: none + * @details Outputs: temperatures data msg constructed and queued + * @param temperaturesData which is the temperatures msg constructed and queued + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastTemperaturesData( TEMPERATURES_DATA_T *temperaturesData ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_TEMPERATURES_DATA; + msg.hdr.payloadLen = sizeof( TEMPERATURES_DATA_T ); + + memcpy( payloadPtr, temperaturesData, sizeof( TEMPERATURES_DATA_T ) ); + + // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_BROADCAST, ACK_NOT_REQUIRED ); + + return result; +} + +/*********************************************************************//** + * @brief + * The broadcastFansData function sends out the fans data. + * @details Inputs: none + * @details Outputs: fans data msg constructed and queued + * @param fansData which is the fans msg constructed and queued + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastFansData( FANS_DATA_T *fansData ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_FANS_DATA; + msg.hdr.payloadLen = sizeof( FANS_DATA_T ); + + memcpy( payloadPtr, fansData, sizeof( FANS_DATA_T ) ); + + // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_BROADCAST, ACK_NOT_REQUIRED ); + + return result; +} + #ifdef EMC_TEST_BUILD BOOL broadcastCANErrorCount( U32 count ) { @@ -3865,11 +3919,9 @@ /*********************************************************************//** * @brief - * The handleFWVersionRequest function handles a request for HD f/w - * version. + * The handleFWVersionRequest function handles a request for HD f/w version. * @details Inputs: none - * @details Outputs: message handled, response constructed and queued - * for transmit. + * @details Outputs: message handled, response constructed and queued for transmit. * @param message a pointer to the message to handle. * @return none *************************************************************************/ @@ -6997,4 +7049,100 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleTestTemperaturesValueOverrideRequest function handles a + * request to override a temperatures sensor's value. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestTemperaturesValueOverrideRequest( MESSAGE_T * message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetMeasuredTemperatureOverride( payload.index, payload.state.f32 ); + } + else + { + result = testResetMeasuredTemperatureOverride( payload.index ); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestTemperaturesBroadcastIntervalOverrideRequest function handles a + * request to override the temperatures data broadcast interval. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestTemperaturesBroadcastIntervalOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) + { + result = testSetTemperaturesPublishIntervalOverride( (U32)( payload.state.u32 ) ); + } + else + { + result = testResetTemperaturesPublishIntervalOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleTestTemperaturesBroadcastIntervalOverrideRequest function handles a + * request to override the temperatures data broadcast interval. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestFansBroadcastIntervalOverrideRequest( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // Verify payload length + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) + { + result = testSetFanPublishIntervalOverride( (U32)( payload.state.u32 ) ); + } + else + { + result = testResetFanPublishIntervalOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r7da76d7131d824ab15f58857eeeedcf128e57391 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 7da76d7131d824ab15f58857eeeedcf128e57391) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -26,7 +26,8 @@ #include "DGInterface.h" #include "DialInFlow.h" #include "DialOutFlow.h" -#include "Dialysis.h" +#include "Dialysis.h" +#include "Fans.h" #include "FluidLeak.h" #include "HDCommon.h" #include "Prime.h" @@ -39,6 +40,8 @@ #include "PresOccl.h" #include "Rinseback.h" #include "Switches.h" +#include "Temperatures.h" +#include "ModeStandby.h" #include "SyringePump.h" #include "Valves.h" #include "Voltages.h" @@ -466,6 +469,15 @@ // MSG_ID_Hd_SEND_SERVICE_RECORD BOOL sendHDServiceRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* srvcRcrdAddress ); +// MSG_ID_HD_DISINFECT_STANDBY_DATA +BOOL broadcastDisinfectsData( DISINFECTS_DATA_T *disinfectsData ); + +// MSG_ID_HD_TEMPERATURES_DATA +BOOL broadcastTemperaturesData( TEMPERATURES_DATA_T *temperaturesData ); + +// MSG_ID_HD_FANS_DATA +BOOL broadcastFansData( FANS_DATA_T *fansData ); + #ifdef EMC_TEST_BUILD // MSG_ID_CAN_ERROR_COUNT BOOL broadcastCANErrorCount( U32 count ); @@ -769,6 +781,15 @@ // MSG_ID_HD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE void handleTestSyringePumpADCReadCtrOverrideRequest( MESSAGE_T *message ); +// MSG_ID_HD_TEMPERATURES_VALUE_OVERRIDE +void handleTestTemperaturesValueOverrideRequest( MESSAGE_T * message ); + +// MSG_ID_HD_TEMPERATURES_PUBLISH_INTERVAL_OVERRRIDE +void handleTestTemperaturesBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_FANS_PUBLISH_INTERVAL_OVERRIDE +void handleTestFansBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + /**@}*/ #endif Index: firmware/source/sys_main.c =================================================================== diff -u -r2e56d2d983becc4b15bd296d583e046e061a5719 -r01470ee3c64ededcc77a4f7378e49013a7ee5602 --- firmware/source/sys_main.c (.../sys_main.c) (revision 2e56d2d983becc4b15bd296d583e046e061a5719) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 01470ee3c64ededcc77a4f7378e49013a7ee5602) @@ -90,6 +90,7 @@ #include "SyringePump.h" #include "SystemComm.h" #include "TaskBG.h" +#include "Temperatures.h" #include "Timers.h" #include "Valves.h" #include "Voltages.h" @@ -197,6 +198,7 @@ initFluidLeak(); initPresOccl(); initVoltagesMonitor(); + initTemperatures(); initSwitches(); // Initialize controllers initAirTrap();