Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -rbe91e8b27ab8b47fc9a05430284ff2072cc9ac3b -r93383819b0f9b7bb0be3acb95f368ee6b8d8080a --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision be91e8b27ab8b47fc9a05430284ff2072cc9ac3b) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 93383819b0f9b7bb0be3acb95f368ee6b8d8080a) @@ -646,8 +646,8 @@ F32 vRef = forceSensorCalRecord.hdHeparinForceSensorDACVoltage; if ( ( vRef >= 0.0 ) && ( vRef <= SYRINGE_PUMP_ADC_REF_V ) ) - { - if ( SYRINGE_PUMP_OFF_STATE == syringePumpState ) + { // Cannot set DAC value if pump is busy or calibration values have not been provided yet + if ( ( SYRINGE_PUMP_OFF_STATE == syringePumpState ) && ( forceSensorCalRecord.calibrationTime != 0 ) ) { syringePumpDACVref = vRef; syringePumpDACVrefSetRequested = TRUE; @@ -692,6 +692,8 @@ if ( DACDeltaV > SYRINGE_PUMP_DAC_VOLTAGE_MAX_ERROR ) { SET_ALARM_WITH_1_F32_DATA( ALARM_ID_HD_SYRINGE_PUMP_SELF_TEST_FAILURE, DACDeltaV ) + // In case DAC not set yet, try to set DAC + setSyringePumpDACVref(); } } Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rfa09ed93f0786712108539a50370aae404335d5e -r93383819b0f9b7bb0be3acb95f368ee6b8d8080a --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision fa09ed93f0786712108539a50370aae404335d5e) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 93383819b0f9b7bb0be3acb95f368ee6b8d8080a) @@ -54,7 +54,7 @@ #define MSG_NOT_ACKED_TIMEOUT_MS 150 ///< Maximum time for a Denali message that requires ACK to be ACK'd #define MSG_NOT_ACKED_TIMEOUT_MS_INIT 5000 ///< Maximum time for a Denali message that requires ACK to be ACK'd on the INIT state for the first (UI version request) message of the POST -#define MSG_NOT_ACKED_MAX_RETRIES 3 ///< Maximum number of times a message that requires ACK that was not ACK'd can be re-sent before alarm +#define MSG_NOT_ACKED_MAX_RETRIES 20 ///< Maximum number of times a message that requires ACK that was not ACK'd can be re-sent before alarm #define PENDING_ACK_LIST_SIZE 25 ///< Maximum number of Denali messages that can be pending ACK at any given time #pragma pack(push, 1) @@ -888,13 +888,7 @@ // Find expired messages pending ACK for ( i = 0; i < PENDING_ACK_LIST_SIZE; i++ ) { // Pending ACK expired? - U32 timeoutPeriod = MSG_NOT_ACKED_TIMEOUT_MS; // set the timeout as default - - if ( MODE_INIT == getCurrentOperationMode() ) - { // change it to longer timeout if the HD is in INIT state - timeoutPeriod = MSG_NOT_ACKED_TIMEOUT_MS_INIT; - } - if ( ( TRUE == pendingAckList[ i ].used ) && ( TRUE == didTimeout( pendingAckList[ i ].timeStamp, timeoutPeriod ) ) ) + if ( ( TRUE == pendingAckList[ i ].used ) && ( TRUE == didTimeout( pendingAckList[ i ].timeStamp, MSG_NOT_ACKED_TIMEOUT_MS ) ) ) { // If retries left, reset and resend pending message if ( pendingAckList[ i ].retries > 0 ) { // Re-queue message for transmit