Index: firmware/App/Monitors/Pressure.c =================================================================== diff -u -rf86e456301fa34dc0169644a1d4dd45b17afa5fe -r5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319 --- firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision f86e456301fa34dc0169644a1d4dd45b17afa5fe) +++ firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319) @@ -409,7 +409,7 @@ // publish pressure/occlusion data on interval if ( ++ddPressuresDataPublicationTimerCounter >= getU32OverrideValue( &ddPressuresDataPublishInterval ) ) { - PRESSURE_DD_TEMP_DATA_T data; + PRESSURE_TEMP_DD_DATA_T data; data.d9Pressure = getFilteredPressure( D9_PRES ); data.d66Pressure = getFilteredPressure( D66_PRES ); @@ -423,7 +423,7 @@ data.d41PresTemp = getFilteredPressureSensorTemperature( D41_PRES ); ddPressuresDataPublicationTimerCounter = 0; - broadcastData( MSG_ID_DD_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( PRESSURE_DD_TEMP_DATA_T ) ); + broadcastData( MSG_ID_DD_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DD_DATA_T ) ); } } @@ -440,7 +440,7 @@ // publish pressure/occlusion data on interval if ( ++fpPressuresDataPublicationTimerCounter >= getU32OverrideValue( &fpPressuresDataPublishInterval ) ) { - PRESSURE_FP_TEMP_DATA_T data; + PRESSURE_TEMP_FP_DATA_T data; data.m1Pressure = getFilteredPressure( M1_PRES ); data.m3Pressure = getFilteredPressure( M3_PRES ); @@ -453,7 +453,7 @@ data.p13PresTemp = getFilteredPressureSensorTemperature( P13_PRES ); data.p17PresTemp = getFilteredPressureSensorTemperature( P17_PRES ); - broadcastData( MSG_ID_FP_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( PRESSURE_FP_TEMP_DATA_T ) ); + broadcastData( MSG_ID_FP_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_FP_DATA_T ) ); fpPressuresDataPublicationTimerCounter = 0; } } Index: firmware/App/Monitors/Pressure.h =================================================================== diff -u -rf86e456301fa34dc0169644a1d4dd45b17afa5fe -r5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319 --- firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision f86e456301fa34dc0169644a1d4dd45b17afa5fe) +++ firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319) @@ -45,7 +45,7 @@ F32 d51PresTemp; ///< Spent Dialysate temperature F32 d18PresTemp; ///< Fresh Dialysate temperature F32 d41PresTemp; ///< Transmembrane temperature -} PRESSURE_DD_TEMP_DATA_T; +} PRESSURE_TEMP_DD_DATA_T; /// FP Pressure data struct. typedef struct @@ -60,7 +60,7 @@ F32 p8PresTemp; ///< temperature before inlet conductivity sensor (P8) F32 p13PresTemp; ///< temperature before RO filter (P13) F32 p17PresTemp; ///< temperature after RO filter (P17) -} PRESSURE_FP_TEMP_DATA_T; +} PRESSURE_TEMP_FP_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -r387ea33c2e45705550905bc1a97e13db1cc95bf8 -r5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 387ea33c2e45705550905bc1a97e13db1cc95bf8) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319) @@ -17,10 +17,13 @@ #include "BalancingChamber.h" #include "ConductivitySensors.h" +#include "Conductivity.h" +#include "Flow.h" #include "Messaging.h" #include "MessageSupport.h" #include "OperationModes.h" #include "PersistentAlarm.h" +#include "Pressure.h" #include "Temperature.h" #include "Timers.h" #include "TaskPriority.h" @@ -95,9 +98,12 @@ static U32 d50TempSamplesNextIndex; ///< D50 temperature sample next index number. static U32 d50TempCount; ///< D50 Number of samples in average buffer. -static U32 dataPublicationTimerCounter; ///< Temperature sensors data publish timer counter. -static OVERRIDE_U32_T tempSensorsPublishInterval = { TEMP_SENSORS_DATA_PUBLISH_INTERVAL, - TEMP_SENSORS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Temperature sensors publish time interval override. +static U32 ddTempDataPublicationTimerCounter; ///< DD Temperature sensors data publish timer counter. +static U32 fpTempDataPublicationTimerCounter; ///< FP Temperature sensors data publish timer counter. +static OVERRIDE_U32_T ddTempSensorsPublishInterval; ///< DD Temperature sensors publish time interval override. +static OVERRIDE_U32_T fpTempSensorsPublishInterval; ///< FPppp Temperature sensors publish time interval override. +//static OVERRIDE_U32_T ddTempSensorsPublishInterval = { TEMP_SENSORS_DATA_PUBLISH_INTERVAL, +// TEMP_SENSORS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Temperature sensors publish time interval override. // ********** private function prototypes ********** @@ -106,8 +112,8 @@ static void filterTemperatureReadings( void ); static void filterDialTemperatureReadings( void ); static void getTempMovingAverageTimeInterval( void ); -static void publishTemperatureSensorsData( void ); - +static void publishDDTemperatureSensorsData( void ); +static void publishFPTemperatureSensorsData( void ); /*********************************************************************//** * @brief * The initTemperature function initializes the temperature unit. @@ -117,24 +123,34 @@ *************************************************************************/ void initTemperature( void ) { - startTime = 0; - tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; - dataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - d4TempRunningSumC = 0.0F; - d4TempAvgC = 0.0F; - d4TempSamplesNextIndex = 0; - d4TempCount = 0; - d50TempRunningSumC = 0.0F; - d50TempAvgC = 0.0F; - d50TempSamplesNextIndex = 0; - d50TempCount = 0; - d4TempSampleIntervalCounter = 0; - tempDataColTimeInterval = 0; - tempDriftEventCheck = FALSE; + startTime = 0; + tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; + ddTempDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; + fpTempDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; + d4TempRunningSumC = 0.0F; + d4TempAvgC = 0.0F; + d4TempSamplesNextIndex = 0; + d4TempCount = 0; + d50TempRunningSumC = 0.0F; + d50TempAvgC = 0.0F; + d50TempSamplesNextIndex = 0; + d50TempCount = 0; + d4TempSampleIntervalCounter = 0; + tempDataColTimeInterval = 0; + tempDriftEventCheck = FALSE; dialTempMovingAvgData[ DIAL_TEMP_D28 ].dialTempColHasTimerBeenSet = FALSE; dialTempMovingAvgData[ DIAL_TEMP_D30 ].dialTempColHasTimerBeenSet = FALSE; + ddTempSensorsPublishInterval.data = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + ddTempSensorsPublishInterval.ovData = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + ddTempSensorsPublishInterval.ovInitData = 0; + ddTempSensorsPublishInterval.override = OVERRIDE_RESET; + + fpTempSensorsPublishInterval.data = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + fpTempSensorsPublishInterval.ovData = TEMP_SENSORS_DATA_PUBLISH_INTERVAL; + fpTempSensorsPublishInterval.ovInitData = 0; + fpTempSensorsPublishInterval.override = OVERRIDE_RESET; // Initialize the temperature sensors initTemperatureSensors(); @@ -216,7 +232,8 @@ filterTemperatureReadings(); // Publish the data - publishTemperatureSensorsData(); + publishDDTemperatureSensorsData(); + publishFPTemperatureSensorsData(); } /*********************************************************************//** @@ -428,19 +445,19 @@ /*********************************************************************//** * @brief - * The publishTemperatureSensorsData function broadcasts the temperature - * sensors data at the publication interval. - * @details \b Inputs: dataPublicationTimerCounter and publish interval time. - * @details \b Outputs: dataPublicationTimerCounter + * The publishDDTemperatureSensorsData function broadcasts the DD + * temperature sensors data at the publication interval. + * @details \b Inputs: ddTempDataPublicationTimerCounter and publish interval time. + * @details \b Outputs: ddTempDataPublicationTimerCounter * @details \b Message \b Sent: MSG_ID_DD_TEMPERATURE_DATA publishes the temperature * data in a periodic interval. * @return none *************************************************************************/ -static void publishTemperatureSensorsData( void ) +static void publishDDTemperatureSensorsData( void ) { - if ( ++dataPublicationTimerCounter >= getU32OverrideValue( &tempSensorsPublishInterval ) ) + if ( ++ddTempDataPublicationTimerCounter >= getU32OverrideValue( &ddTempSensorsPublishInterval ) ) { - TEMPERATURE_SENSORS_DATA_T data; + TEMPERATURE_SENSORS_DD_DATA_T data; data.d1Temp = getTemperatureValue( D1_TEMP ); data.x6Temp = getTemperatureValue( X6_TEMP ); @@ -458,33 +475,80 @@ data.d28AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D28 ].dialTempAvgC; data.d30AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D30 ].dialTempAvgC; - broadcastData( MSG_ID_DD_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); - dataPublicationTimerCounter = 0; + broadcastData( MSG_ID_DD_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DD_DATA_T ) ); + ddTempDataPublicationTimerCounter = 0; } } +/*********************************************************************//** + * @brief + * The publishFPTemperatureSensorsData function broadcasts the FP + * temperature sensors data at the publication interval. + * @details \b Inputs: fpTempDataPublicationTimerCounter, tempSensorsPublishInterval + * @details \b Outputs: fpTempDataPublicationTimerCounter + * @details \b Message \b Sent: MSG_ID_FP_TEMPERATURE_DATA publishes the temperature + * data in a periodic interval. + * @return none + *************************************************************************/ +static void publishFPTemperatureSensorsData( void ) +{ + if ( ++fpTempDataPublicationTimerCounter >= getU32OverrideValue( &fpTempSensorsPublishInterval ) ) + { + TEMPERATURE_SENSORS_FP_DATA_T data; +// data.p10Temp = getFilteredConductivitySensorTemperature( P9_COND ); +// data.p19Temp = getFilteredConductivitySensorTemperature( P18_COND ); + data.m1Temp = getFilteredPressureSensorTemperature( M1_PRES ); + data.m3Temp = getFilteredPressureSensorTemperature( M3_PRES ); + data.p8Temp = getFilteredPressureSensorTemperature( P8_PRES ); + data.p13Temp = getFilteredPressureSensorTemperature( P13_PRES ); + data.p17Temp = getFilteredPressureSensorTemperature( P17_PRES ); + data.p7Temp = getFilteredFlowSensorTemperature( P7_FLOW ); + data.p16Temp = getFilteredFlowSensorTemperature( P16_FLOW ); + + broadcastData( MSG_ID_FP_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_FP_DATA_T ) ); + fpTempDataPublicationTimerCounter = 0; + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ /*********************************************************************//** * @brief - * The testTemperatureSensorsDataPublishIntervalOverride function overrides the - * temperature sensor data publish interval. + * The testDDTemperatureSensorsDataPublishIntervalOverride function + * overrides the DD temperature sensor data publish interval. * @details \b Inputs: none - * @details \b Outputs: tempSensorsPublishInterval + * @details \b Outputs: ddTempSensorsPublishInterval * @param Override message from Dialin which includes the interval - * (in ms) to override the temperature sensor data broadcast interval to. + * (in ms) to override the DD temperature sensor data broadcast interval to. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) +BOOL testDDTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) { - BOOL result = u32BroadcastIntervalOverride( message, &tempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); + BOOL result = u32BroadcastIntervalOverride( message, &ddTempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); return result; } +/*********************************************************************//** + * @brief + * The testFPTemperatureSensorsDataPublishIntervalOverride function + * overrides the FP temperature sensors data publish interval. + * @details \b Inputs: none + * @details \b Outputs: fpTempSensorsPublishInterval + * @param Override message from Dialin which includes the interval + * (in ms) to override the FP temperature sensor data broadcast interval to. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testFPTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = u32BroadcastIntervalOverride( message, &fpTempSensorsPublishInterval, TASK_PRIORITY_INTERVAL ); + return result; +} + /**@}*/ Index: firmware/App/Monitors/Temperature.h =================================================================== diff -u -r1781335a8c1833fad17b275bf44c7f6675e68423 -r5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319 --- firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 1781335a8c1833fad17b275bf44c7f6675e68423) +++ firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319) @@ -49,9 +49,23 @@ F32 d50AvgTemp; ///< D50 moving average temperature value F32 d28AvgTemp; ///< D28 moving average temperature value F32 d30AvgTemp; ///< D30 moving average temperature value -} TEMPERATURE_SENSORS_DATA_T; +} TEMPERATURE_SENSORS_DD_DATA_T; +/// Temperature sensors data structure. +typedef struct +{ + F32 p10Temp; ///< P10 temperature from inlet conductivity sensor. + F32 p19Temp; ///< P19 temperature from outlet conductivity sensor. + F32 m1Temp; ///< Temperature before pressure regulator (M1) + F32 m3Temp; ///< Temperature after pressure regulator (M3) + F32 p8Temp; ///< Temperature before inlet conductivity sensor (P8) + F32 p13Temp; ///< Temperature before RO filter (P13) + F32 p17Temp; ///< Temperature after RO filter (P17) + F32 p7Temp; ///< Temperature RO inlet + F32 p16Temp; ///< Temperature RO outlet +} TEMPERATURE_SENSORS_FP_DATA_T; + // ********** public function prototypes ********** void initTemperature( void ); @@ -61,7 +75,8 @@ F32 getD50AverageTemperature( void ); void checkDialysateTemperatureSensors( void ); -BOOL testTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ); +BOOL testDDTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ); +BOOL testFPTemperatureSensorsDataPublishIntervalOverride( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rf86e456301fa34dc0169644a1d4dd45b17afa5fe -r5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision f86e456301fa34dc0169644a1d4dd45b17afa5fe) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 5ac18a9f617f6f023ebcf1b4a56c3bc74e6c0319) @@ -131,7 +131,7 @@ { MSG_ID_DD_CONCENTRATE_PUMP_PARKED_OVERRIDE_REQUEST, &testConcentratePumpParkedOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_PARK_FAULT_OVERRIDE_REQUEST, &testConcentratePumpParkCmdFaultedOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_PARK_REQUEST_OVERRIDE_REQUEST, &testConcentratePumpParkRequestOverride }, - { MSG_ID_DD_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testTemperatureSensorsDataPublishIntervalOverride }, + { MSG_ID_DD_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testDDTemperatureSensorsDataPublishIntervalOverride }, { MSG_ID_DD_TEMPERATURE_SENSOR_MEASURED_TEMPERATURE_OVERRIDE_REQUEST, &testMeasuredTemperatureOverride }, { MSG_ID_DD_TEMPERATURE_SENSOR_READ_COUNTER_OVERRIDE_REQUEST, &testTemperatureReadCounterOverride }, { MSG_ID_DD_TEMPERATURE_SENSOR_BARO_READ_COUNTER_OVERRIDE_REQUEST, &testBaroTemperatureReadCounterOverride }, @@ -192,23 +192,24 @@ { MSG_ID_FP_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenDataPublishIntervalOverride }, { MSG_ID_FP_INLET_PRES_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testInletPressureCheckDataPublishIntervalOverride }, { MSG_ID_FP_INLET_PRES_CHECK_TIME_OVERRIDE_REQUEST, &testInletPressureCheckTimerOverride }, - { MSG_ID_FP_BOOST_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBoostPumpDataPublishIntervalOverride }, - { MSG_ID_FP_BOOST_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST, &testBoostPumpTargetPressureOverride }, - { MSG_ID_FP_BOOST_PUMP_TARGET_FLOW_OVERRIDE_REQUEST, &testBoostPumpTargetFlowOverride }, - { MSG_ID_FP_BOOST_PUMP_TARGET_PWM_OVERRIDE_REQUEST, &testBoostPumpTargetDutyCycleOverride }, - { MSG_ID_FP_BOOST_PUMP_STOP_REQUEST, &testBoostPumpHardStop }, - { MSG_ID_FP_FLUID_PUMP_SET_PWM_REQUEST, &testSetFluidPumpPWM }, - { MSG_ID_FP_FLUID_PUMP_READ_PWM_OVERRIDE_REQUEST, &testFluidPumpPWMOverride }, - { MSG_ID_FP_FLUID_PUMP_SPEED_OVERRIDE_REQUEST, &testFluidPumpRPMOverride }, - { MSG_ID_FP_RO_PUMP_STOP_REQUEST, &testROPumpHardStop }, - { MSG_ID_FP_RO_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST, &testROPumpTargetPressureOverride }, - { MSG_ID_FP_RO_PUMP_TARGET_FLOW_OVERRIDE_REQUEST, &testROPumpTargetFlowOverride }, - { MSG_ID_FP_RO_PUMP_TARGET_PWM_OVERRIDE_REQUEST, &testROPumpTargetDutyCycleOverride }, - { MSG_ID_FP_PRESSURE_OVERRIDE_REQUEST, &testFPPressureSensorReadingsOverride }, - { MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST, &testFPPressureSensorTemperatureReadingsOverride }, - { MSG_ID_FP_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPPressureSensorDataPublishIntervalOverride }, + { MSG_ID_FP_BOOST_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBoostPumpDataPublishIntervalOverride }, + { MSG_ID_FP_BOOST_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST, &testBoostPumpTargetPressureOverride }, + { MSG_ID_FP_BOOST_PUMP_TARGET_FLOW_OVERRIDE_REQUEST, &testBoostPumpTargetFlowOverride }, + { MSG_ID_FP_BOOST_PUMP_TARGET_PWM_OVERRIDE_REQUEST, &testBoostPumpTargetDutyCycleOverride }, + { MSG_ID_FP_BOOST_PUMP_STOP_REQUEST, &testBoostPumpHardStop }, + { MSG_ID_FP_FLUID_PUMP_SET_PWM_REQUEST, &testSetFluidPumpPWM }, + { MSG_ID_FP_FLUID_PUMP_READ_PWM_OVERRIDE_REQUEST, &testFluidPumpPWMOverride }, + { MSG_ID_FP_FLUID_PUMP_SPEED_OVERRIDE_REQUEST, &testFluidPumpRPMOverride }, + { MSG_ID_FP_RO_PUMP_STOP_REQUEST, &testROPumpHardStop }, + { MSG_ID_FP_RO_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST, &testROPumpTargetPressureOverride }, + { MSG_ID_FP_RO_PUMP_TARGET_FLOW_OVERRIDE_REQUEST, &testROPumpTargetFlowOverride }, + { MSG_ID_FP_RO_PUMP_TARGET_PWM_OVERRIDE_REQUEST, &testROPumpTargetDutyCycleOverride }, + { MSG_ID_FP_PRESSURE_OVERRIDE_REQUEST, &testFPPressureSensorReadingsOverride }, + { MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST, &testFPPressureSensorTemperatureReadingsOverride }, + { MSG_ID_FP_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPPressureSensorDataPublishIntervalOverride }, { MSG_ID_FP_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST, &testFPPressureSensorFilteredReadingsOverride }, { MSG_ID_FP_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST, &testFPPressureSensorFilteredTemperatureReadingsOverride }, + { MSG_ID_FP_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPTemperatureSensorsDataPublishIntervalOverride }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T))