Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rd5b87d7dab8613f3963fb66f8833d210f127fa1f -r0a8d902c3a7c4883ce6692cc53e85b254cef82c4 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision d5b87d7dab8613f3963fb66f8833d210f127fa1f) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 0a8d902c3a7c4883ce6692cc53e85b254cef82c4) @@ -76,11 +76,9 @@ /// Heaters data structure typedef struct { - OVERRIDE_F32_T targetTempC; ///< Heater target temperature. HEATERS_STATE_T state; ///< Heater state. BOOL startHeaterSignal; ///< Heater start indication flag. BOOL heaterOnState; ///< Heater on/off status flag. - OVERRIDE_F32_T control; ///< Heater control ( Primary : On/Off, Trimmer : Dutycycle). F32 targetFlowLPM; ///< Heater target flow in L/min to calculate the duty cycle. F32 nomTargetFlowLPM; ///< Heater nominal target flow in L/min. BOOL hasTargetTempChanged; ///< Heater target temperature change flag indicator. @@ -98,6 +96,8 @@ } HEATER_START_CMD_PAYLOAD_T; static HEATER_STATUS_T heatersStatus[ NUM_OF_DD_HEATERS ]; ///< Heaters status. +static OVERRIDE_F32_T targetTempC[ NUM_OF_DD_HEATERS ]; ///< Heater target temperature. +static OVERRIDE_F32_T control[ NUM_OF_DD_HEATERS ]; ///< Heater control ( Primary : On/Off, Trimmer : Dutycycle). static U32 dataPublicationTimerCounter; ///< Data publication timer counter. static OVERRIDE_U32_T heatersDataPublishInterval = { HEATERS_DATA_PUBLISH_INTERVAL, HEATERS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Heaters data publish time interval. @@ -128,17 +128,17 @@ for ( heater = DD_HEATERS_FIRST; heater < NUM_OF_DD_HEATERS; heater++ ) { - heatersStatus[ heater ].targetTempC.data = 0.0F; - heatersStatus[ heater ].targetTempC.ovData = 0.0F; - heatersStatus[ heater ].targetTempC.ovInitData = 0.0F; - heatersStatus[ heater ].targetTempC.override = OVERRIDE_RESET; + targetTempC[ heater ].data = 0.0F; + targetTempC[ heater ].ovData = 0.0F; + targetTempC[ heater ].ovInitData = 0.0F; + targetTempC[ heater ].override = OVERRIDE_RESET; heatersStatus[ heater ].state = HEATER_EXEC_STATE_OFF; heatersStatus[ heater ].startHeaterSignal = FALSE; heatersStatus[ heater ].heaterOnState = FALSE; - heatersStatus[ heater ].control.data = HEATERS_MIN_DUTY_CYCLE; - heatersStatus[ heater ].control.ovData = HEATERS_MIN_DUTY_CYCLE; - heatersStatus[ heater ].control.ovInitData = HEATERS_MIN_DUTY_CYCLE; - heatersStatus[ heater ].control.override = OVERRIDE_RESET; + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].ovData = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].ovInitData = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].override = OVERRIDE_RESET; heatersStatus[ heater ].targetFlowLPM = 0.0F; heatersStatus[ heater ].nomTargetFlowLPM = 0.0F; heatersStatus[ heater ].hasTargetTempChanged = FALSE; @@ -188,7 +188,7 @@ // Check if the requested temperature is within the allowed range if ( ( targetTemperature >= HEATER_TARGET_TEMPERATURE_MIN ) && ( targetTemperature <= HEATER_TARGET_TEMPERATURE_MAX ) ) { - heatersStatus[ heater ].targetTempC.data = targetTemperature; + targetTempC[ heater ].data = targetTemperature; heatersStatus[ heater ].hasTargetTempChanged = TRUE; result = TRUE; } @@ -212,7 +212,7 @@ *************************************************************************/ F32 getHeaterTargetTemperature( DD_HEATERS_T heater ) { - F32 targetTemp = getF32OverrideValue( &heatersStatus[ heater ].targetTempC ); + F32 targetTemp = getF32OverrideValue( &targetTempC[ heater ] ); return targetTemp; } @@ -271,7 +271,7 @@ { heatersStatus[ heater ].startHeaterSignal = FALSE; heatersStatus[ heater ].heaterOnState = FALSE; - heatersStatus[ heater ].control.data = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; heatersStatus[ heater ].state = HEATER_EXEC_STATE_OFF; // update duty cycle @@ -430,15 +430,15 @@ static HEATERS_STATE_T handleHeaterStateRampToTarget( DD_HEATERS_T heater ) { HEATERS_STATE_T state = HEATER_EXEC_STATE_RAMP_TO_TARGET; - F32 control = 0.0F; + F32 ctrl = 0.0F; DD_OP_MODE_T opMode = getCurrentOperationMode(); F32 targetTemperature = getHeaterTargetTemperature( heater ); if ( DD_PRIMARY_HEATER == heater ) { if ( DD_MODE_HEAT != opMode ) { - heatersStatus[ heater ].control.data = PRIMARY_HEATER_ON; + control[ heater ].data = PRIMARY_HEATER_ON; state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; } else @@ -451,8 +451,8 @@ { if ( DD_MODE_HEAT != opMode ) { - control = ( ( targetTemperature / HEATER_TARGET_TEMPERATURE_MAX ) * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; - state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; + ctrl = ( ( targetTemperature / HEATER_TARGET_TEMPERATURE_MAX ) * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; + state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; } else { @@ -461,7 +461,7 @@ } // Update the duty cycle - heatersStatus[ heater ].control.data = control; + control[ heater ].data = ctrl; } setHeaterControl( heater ); @@ -484,7 +484,7 @@ HEATERS_STATE_T state = HEATER_EXEC_STATE_CONTROL_TO_TARGET; F32 targetTemperature = getHeaterTargetTemperature( heater ); F32 measuredTemperature = 0.0F; - F32 control = 0.0F; + F32 ctrl = 0.0F; if( ++heatersStatus[ heater ].controlIntervalCounter > PRIMARY_HEATER_CONTROL_INTERVAL_COUNT ) { @@ -495,12 +495,12 @@ if ( measuredTemperature >= targetTemperature ) { // Turn off heater - heatersStatus[ heater ].control.data = HEATERS_MIN_DUTY_CYCLE; + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; } else { // Turn On heater - heatersStatus[ heater ].control.data = PRIMARY_HEATER_ON; + control[ heater ].data = PRIMARY_HEATER_ON; } //control = runPIController( PI_CONTROLLER_ID_PRIMARY_HEATER, targetTemperature, measuredTemperature ); @@ -511,11 +511,11 @@ //control = runPIController( PI_CONTROLLER_ID_TRIMMER_HEATER, targetTemperature, measuredTemperature ); if ( targetTemperature > 0.0F ) { - control = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); - control = control < 0.0F ? HEATERS_MIN_DUTY_CYCLE: control; + ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); + ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl ); } - heatersStatus[ heater ].control.data = ( control * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; + control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; break; default: @@ -597,7 +597,7 @@ *************************************************************************/ static F32 getHeaterControl( DD_HEATERS_T heater ) { - F32 duty = getF32OverrideValue( &heatersStatus[ heater ].control ); + F32 duty = getF32OverrideValue( &control[ heater ] ); return duty; } @@ -708,7 +708,7 @@ *************************************************************************/ BOOL testHeaterDutyCycleOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &heatersStatus[0].control, NUM_OF_DD_HEATERS - 1 ); + BOOL result = f32ArrayOverride( message, &control[ 0 ], NUM_OF_DD_HEATERS - 1 ); return result; } @@ -725,7 +725,7 @@ *************************************************************************/ BOOL testHeaterTargetTemperatureOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &heatersStatus[0].targetTempC, NUM_OF_DD_HEATERS - 1 ); + BOOL result = f32ArrayOverride( message, &targetTempC[ 0 ], NUM_OF_DD_HEATERS - 1 ); return result; } Index: firmware/App/Drivers/TemperatureSensors.c =================================================================== diff -u -rc408c29123e153d5a004b5b58bd455d01824f7f1 -r0a8d902c3a7c4883ce6692cc53e85b254cef82c4 --- firmware/App/Drivers/TemperatureSensors.c (.../TemperatureSensors.c) (revision c408c29123e153d5a004b5b58bd455d01824f7f1) +++ firmware/App/Drivers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 0a8d902c3a7c4883ce6692cc53e85b254cef82c4) @@ -82,7 +82,6 @@ S32 rawADCReads[ MAX_NUM_OF_RAW_ADC_SAMPLES ]; ///< Raw ADC reads array S32 adcNextIndex; ///< Next ADC read index S32 adcRunningSum; ///< ADC running sum - OVERRIDE_F32_T temperatureValue; ///< Temperature values with override F32 maxAllowedTemp; ///< Maximum allowed temperature of the sensor S32 baroTempSnsrDiff; ///< Barometric sensor temperature difference } TEMP_SENSOR_T; @@ -113,6 +112,7 @@ // ********** private data ********** static TEMP_SENSOR_T tempSensors [ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature sensors' data structure. +static OVERRIDE_F32_T temperatureValue[ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature values with override static OVERRIDE_U32_T lastTemperatureReadCounter; ///< Temperature sensors read count from FPGA. static OVERRIDE_U32_T lastBaroTempReadCounter; ///< Barometric sensor read count from FPGA. static BARO_SENSOR_CONSTS_T baroConvConsts; ///< Barometric sensor conversion constants. @@ -230,7 +230,7 @@ if ( sensorIndex < NUM_OF_TEMPERATURE_SENSORS ) { - temperature = getF32OverrideValue( &tempSensors[ sensorIndex ].temperatureValue ); + temperature = getF32OverrideValue( &temperatureValue[ sensorIndex ] ); } else { @@ -475,7 +475,7 @@ getCalibrationAppliedTemperatureValue( sensorIndex, &temperature ); // Update the temperature - tempSensors[ sensorIndex ].temperatureValue.data = temperature; + temperatureValue[ sensorIndex ].data = temperature; } @@ -636,7 +636,7 @@ *************************************************************************/ BOOL testMeasuredTemperatureOverride( MESSAGE_T *message ) { - BOOL result = f32ArrayOverride( message, &tempSensors[0].temperatureValue, NUM_OF_TEMPERATURE_SENSORS - 1 ); + BOOL result = f32ArrayOverride( message, &temperatureValue[0], NUM_OF_TEMPERATURE_SENSORS - 1 ); return result; } Index: firmware/App/Monitors/Level.c =================================================================== diff -u -rba5c71eab6b1930bfb044a165d803f5c16c3379a -r0a8d902c3a7c4883ce6692cc53e85b254cef82c4 --- firmware/App/Monitors/Level.c (.../Level.c) (revision ba5c71eab6b1930bfb044a165d803f5c16c3379a) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 0a8d902c3a7c4883ce6692cc53e85b254cef82c4) @@ -42,7 +42,6 @@ /// Level status structure typedef struct { - OVERRIDE_U32_T status; ///< Level status. U32 priorRawLevel; ///< Prior level state (not debounced). U32 debounceStartTime; ///< Debounce start time. U32 debounceTime; ///< Debounce time @@ -54,6 +53,7 @@ static OVERRIDE_U32_T levelsDataPublishInterval = { LEVEL_DATA_PUB_INTERVAL, LEVEL_DATA_PUB_INTERVAL, 0, 0 }; ///< Interval (in ms) at which to publish Level data to CAN bus. static LEVEL_STATUS_T levelsStatus[ NUM_OF_LEVELS ]; ///< Level status array. +static OVERRIDE_U32_T status[ NUM_OF_LEVELS ]; ///< Level status. // ********** private function prototypes ********** @@ -76,10 +76,10 @@ // Initialize all the Level for ( i = 0; i < NUM_OF_LEVELS; i++ ) { - levelsStatus[ i ].status.data = (U32)LEVEL_STATE_HIGH; - levelsStatus[ i ].status.ovData = (U32)LEVEL_STATE_HIGH; - levelsStatus[ i ].status.ovInitData = (U32)LEVEL_STATE_HIGH; - levelsStatus[ i ].status.override = OVERRIDE_RESET; + status[ i ].data = (U32)LEVEL_STATE_HIGH; + status[ i ].ovData = (U32)LEVEL_STATE_HIGH; + status[ i ].ovInitData = (U32)LEVEL_STATE_HIGH; + status[ i ].override = OVERRIDE_RESET; levelsStatus[ i ].debounceStartTime = 0; levelsStatus[ i ].debounceTime = LEVEL_DEBOUNCE_TIME_MS; levelsStatus[ i ].priorRawLevel = (U32)LEVEL_STATE_HIGH; @@ -142,7 +142,7 @@ } // Check if the current level status is not the same as the recorded data - if ( currentLevelStatus != levelsStatus[ i ].status.data ) + if ( currentLevelStatus != status[ i ].data ) { // If the debounce time is 0, start the timer if ( ( 0 == levelsStatus[ i ].debounceStartTime ) || ( currentLevelStatus != levelsStatus[i].priorRawLevel ) ) @@ -155,15 +155,15 @@ switch ( i ) { case FLOATER_LEVEL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_FLOATER_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_FLOATER_LEVEL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; case BICARB_LEVEL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BICARB_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BICARB_LEVEL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; case SPENT_DIALYSATE_LEVEL: - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_SPENT_DIALYSATE_LEVEL_CHANGE, (U32)levelsStatus[ i ].status.data, (U32)currentLevelStatus ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_SPENT_DIALYSATE_LEVEL_CHANGE, (U32)status[ i ].data, (U32)currentLevelStatus ); break; #ifndef _VECTORCAST_ @@ -174,7 +174,7 @@ } levelsStatus[ i ].debounceStartTime = 0; - levelsStatus[ i ].status.data = currentLevelStatus; + status[ i ].data = currentLevelStatus; } } else @@ -200,24 +200,24 @@ *************************************************************************/ LEVEL_STATE_T getLevelStatus( LELVEL_T levelId ) { - U32 status = 0; + U32 stat = 0; if ( levelId < NUM_OF_LEVELS ) { // Assume there is no override - status = levelsStatus[ levelId ].status.data; + stat = status[ levelId ].data; - if ( OVERRIDE_KEY == levelsStatus[ levelId ].status.override ) + if ( OVERRIDE_KEY == status[ levelId ].override ) { - status = levelsStatus[ levelId ].status.ovData; + stat = status[ levelId ].ovData; } } else { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_DD_INVALID_LEVEL_ID, (U32)levelId ) } - return (LEVEL_STATE_T)status; + return (LEVEL_STATE_T)stat; } /*********************************************************************//** @@ -314,7 +314,7 @@ *************************************************************************/ BOOL testLevelStatusOverride( MESSAGE_T *message ) { - BOOL result = u32ArrayOverride( message, &levelsStatus[0].status, NUM_OF_LEVELS - 1, 0, NUM_OF_LEVELS_STATES -1 ); + BOOL result = u32ArrayOverride( message, &status[0], NUM_OF_LEVELS - 1, 0, NUM_OF_LEVELS_STATES -1 ); return result; }