Index: firmware/App/Drivers/Battery.c =================================================================== diff -u -r1a7a7cfefc37883ca506c92d0f0b1436e5810c2f -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Drivers/Battery.c (.../Battery.c) (revision 1a7a7cfefc37883ca506c92d0f0b1436e5810c2f) +++ firmware/App/Drivers/Battery.c (.../Battery.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -18,6 +18,7 @@ #include "i2c.h" #include "Battery.h" +#include "SystemCommMessages.h" #include "Timers.h" /** @@ -45,18 +46,19 @@ // ********** private data ********** -static U16 batteryStatus = 0; ///< Battery current status. -static U16 batteryRelStateOfCharge_pct = 0; ///< Battery pack relative state of charge. -static U16 batteryPackStatus = 0; ///< Battery pack current status. -static U32 lastBatteryMonitorTime = 0; ///< Previous battery monitor time. -static U32 lostACPowerPersistentCount = 0; ///< Persistent count for AC power lost alarm. -static BOOL hasBatteryChargerStatus = FALSE; ///< Flag indicates if battery charger status has been obtained. -static U32 commFaultPersistentCount = 0; ///< Persistence count for battery comm fault. +static U16 batteryStatus = 0; ///< Battery current status. +static OVERRIDE_U32_T batteryRelStateOfCharge_pct = { 0, 0, 0, 0 }; ///< Battery pack relative state of charge. +static U16 batteryPackStatus = 0; ///< Battery pack current status. +static U32 lastBatteryMonitorTime = 0; ///< Previous battery monitor time. +static U32 lostACPowerPersistentCount = 0; ///< Persistent count for AC power lost alarm. +static BOOL hasBatteryChargerStatus = FALSE; ///< Flag indicates if battery charger status has been obtained. +static U32 commFaultPersistentCount = 0; ///< Persistence count for battery comm fault. -static SELF_TEST_STATUS_T batteryTestStatus; ///< Current battery SOC test status. +static SELF_TEST_STATUS_T batteryTestStatus; ///< Current battery SOC test status. // ********** private function prototypes ********** +static U32 getBatteryRemainingPercent( void ); static void setupI2CDriver( void ); static BOOL waitForTxReady( void ); static BOOL waitForRxReady( void ); @@ -76,7 +78,7 @@ void initBattery( void ) { batteryStatus = 0; - batteryRelStateOfCharge_pct = 0; + batteryRelStateOfCharge_pct.data = 0; batteryPackStatus = 0; lastBatteryMonitorTime = 0; lostACPowerPersistentCount = 0; @@ -90,12 +92,15 @@ /*********************************************************************//** * @brief * The execBatteryMonitor function monitors the battery status. - * @details Inputs: batteryMonitorTimerCounter + * @details Inputs: lastBatteryMonitorTime, hasBatteryChargerStatus, batteryStatus, + * batteryRelStateOfCharge_pct, batteryPackStatus * @details Outputs: monitor battery status * @return none *************************************************************************/ void execBatteryMonitor( void ) { + U16 relStateOfCharge_pct; + if ( TRUE == didTimeout( lastBatteryMonitorTime, BATTERY_MONITOR_INTERVAL_MS ) ) { lastBatteryMonitorTime = getMSTimerCount(); @@ -106,7 +111,7 @@ if ( TRUE == getBatteryData( BATTERY_CHARGER_SLAVE_ADDRESS, BATTERY_CHARGER_STATUS_CMD, &batteryStatus ) ) { - if ( ( batteryStatus & BATTERY_CHARGER_STATUS_AC_PRESENT_MASK ) == 0 ) + if ( 0 == ( batteryStatus & BATTERY_CHARGER_STATUS_AC_PRESENT_MASK ) ) { if ( ++lostACPowerPersistentCount > AC_POWER_LOST_PERSISTENT_COUNT ) { @@ -117,6 +122,7 @@ } else { + clearAlarmCondition( ALARM_ID_HD_AC_POWER_LOST ); lostACPowerPersistentCount = 0; } } @@ -125,11 +131,12 @@ { hasBatteryChargerStatus = FALSE; - if ( TRUE == getBatteryData( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_REL_STATE_OF_CHARGE_CMD, &batteryRelStateOfCharge_pct ) ) + if ( TRUE == getBatteryData( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_REL_STATE_OF_CHARGE_CMD, &relStateOfCharge_pct ) ) { - if ( ( SELF_TEST_STATUS_IN_PROGRESS == batteryTestStatus ) && ( batteryRelStateOfCharge_pct < BATTERY_PACK_MIN_CHARGE_PCT ) ) + batteryRelStateOfCharge_pct.data = (U32)relStateOfCharge_pct; + if ( ( SELF_TEST_STATUS_IN_PROGRESS == batteryTestStatus ) && ( getBatteryRemainingPercent() < BATTERY_PACK_MIN_CHARGE_PCT ) ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_BATTERY_PACK_CHARGE_TOO_LOW, batteryRelStateOfCharge_pct ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_BATTERY_PACK_CHARGE_TOO_LOW, getBatteryRemainingPercent() ); } } @@ -170,19 +177,26 @@ * @brief * The getBatteryRemainingPercent function returns the latest battery relative * state of charge percentage. - * @details Inputs: none + * @details Inputs: batteryRelStateOfCharge_pct * @details Outputs: none * @return battery relative state of charge percentage *************************************************************************/ -U16 getBatteryRemainingPercent( void ) +static U32 getBatteryRemainingPercent( void ) { - return batteryRelStateOfCharge_pct; + U32 result = batteryRelStateOfCharge_pct.data; + + if ( OVERRIDE_KEY == batteryRelStateOfCharge_pct.override ) + { + result = batteryRelStateOfCharge_pct.ovData; + } + + return result; } /*********************************************************************//** * @brief * The setupI2CDriver function setups i2c driver in repeat mode to be - * compatiable with SMBus protocol. + * compatible with SMBus protocol. * @details Inputs: none * @details Outputs: setup i2c driver in repeat mode * @return none @@ -304,11 +318,11 @@ /*********************************************************************//** * @brief - * The startComm function starts i2c communication and verifies slave devices ack. - * @details Inputs: none + * The startCommTx function starts i2c communication and verifies slave devices ack. + * @details Inputs: i2cREG1 * @details Outputs: starts i2c comm in master transmit mode * @param slaveAddr slave device address - * @return none + * @return TRUE if start communication successful, otherwise FALSE *************************************************************************/ static BOOL startCommTx( U32 slaveAddr ) { @@ -395,4 +409,56 @@ return result; } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetBatteryRemainingPercentOverride function overrides the battery + * remaining percent value. + * @details Inputs: none + * @details Outputs: batteryRelStateOfCharge_pct + * @param value override battery remaining percent + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetBatteryRemainingPercentOverride( U32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + batteryRelStateOfCharge_pct.ovData = value; + batteryRelStateOfCharge_pct.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetSetBatteryRemainingPercentOverride function resets the + * override of the battery remaining percent value. + * @details Inputs: none + * @details Outputs: batteryRelStateOfCharge_pct + * @param value override battery remaining percent + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetSetBatteryRemainingPercentOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + batteryRelStateOfCharge_pct.override = OVERRIDE_RESET; + batteryRelStateOfCharge_pct.ovData = batteryRelStateOfCharge_pct.ovInitData; + } + + return result; +} + /**@}*/ Index: firmware/App/Drivers/Battery.h =================================================================== diff -u -r7690b677a3870da643e67bd622d3b342dfac0040 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Drivers/Battery.h (.../Battery.h) (revision 7690b677a3870da643e67bd622d3b342dfac0040) +++ firmware/App/Drivers/Battery.h (.../Battery.h) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -37,7 +37,8 @@ SELF_TEST_STATUS_T execBatteryTest( void ); -U16 getBatteryRemainingPercent( void ); +BOOL testSetBatteryRemainingPercentOverride( U32 value ); +BOOL testResetSetBatteryRemainingPercentOverride( void ); /**@}*/ Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r733ee44bb3ffd9338daffe8e39c10ddd5679c120 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 733ee44bb3ffd9338daffe8e39c10ddd5679c120) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -213,12 +213,8 @@ treatmentLogData.dialysateVolumeUsed_L = treatmentLogData.avgDialysateFlow_mL_min * treatmentLogData.actualTreatmentDur_sec / ( ML_PER_LITER * SEC_PER_MIN ); treatmentLogData.avgDialysateTemperature_degC = getTreatmentAvgDialysateTemp(); - if ( TRUE == isUFVolumeParamReceived() ) - { - treatmentLogData.targetUFVolume_L = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ); - treatmentLogData.targetUFRate_mL_min = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ) * ML_PER_LITER * SEC_PER_MIN / treatmentLogData.treatmentDuration_sec; - } - + treatmentLogData.targetUFVolume_L = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ); + treatmentLogData.targetUFRate_mL_min = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ) * ML_PER_LITER * SEC_PER_MIN / treatmentLogData.treatmentDuration_sec; if ( treatmentLogData.actualTreatmentDur_sec > 0 ) { treatmentLogData.actualUFVolume_L = getUltrafiltrationVolumeCollected() / ML_PER_LITER; @@ -229,6 +225,7 @@ treatmentLogData.actualUFVolume_L = 0.0; treatmentLogData.actualUFRate_mL_min = 0.0; } + treatmentLogData.salineBolusVolume_mL = getTotalSalineBolusVolumeDelivered(); treatmentLogData.heparinBolusVolume_mL = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r5153afc318dad6b9a469aaba20b8746994f5c70d -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 5153afc318dad6b9a469aaba20b8746994f5c70d) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -1307,15 +1307,32 @@ // If changes accepted, set new pressure limits if ( TRUE == result ) { + S32 const artLowLimit = getTreatmentParameterS32( TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT ); + S32 const artHighLimit = getTreatmentParameterS32( TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT ); + S32 const venLowLimit = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT ); + S32 const venHighLimit = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT ); + setTreatmentParameterS32( TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT, data->artLowLimit ); setTreatmentParameterS32( TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT, data->artHighLimit ); setTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT, data->venLowLimit ); setTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT, data->venHighLimit ); - sendTreatmentLogEventData( ARTERIAL_PRESSURE_LOWER_LIMIT_CHANGE_EVENT, getTreatmentParameterS32( TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT ), data->artLowLimit ); - sendTreatmentLogEventData( ARTERIAL_PRESSURE_UPPER_LIMIT_CHANGE_EVENT, getTreatmentParameterS32( TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT ), data->artHighLimit ); - sendTreatmentLogEventData( VENOUS_PRESSURE_LOWER_LIMIT_CHANGE_EVENT, getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT ), data->venLowLimit ); - sendTreatmentLogEventData( VENOUS_PRESSURE_UPPER_LIMIT_CHANGE_EVENT, getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT ), data->venHighLimit ); + if ( abs( artLowLimit - data->artLowLimit ) > 0 ) + { + sendTreatmentLogEventData( ARTERIAL_PRESSURE_LOWER_LIMIT_CHANGE_EVENT, (F32)artLowLimit, (F32)data->artLowLimit ); + } + if ( abs( artHighLimit - data->artHighLimit ) > 0 ) + { + sendTreatmentLogEventData( ARTERIAL_PRESSURE_UPPER_LIMIT_CHANGE_EVENT, (F32)artHighLimit, (F32)data->artHighLimit ); + } + if ( abs( venLowLimit - data->venLowLimit ) > 0 ) + { + sendTreatmentLogEventData( VENOUS_PRESSURE_LOWER_LIMIT_CHANGE_EVENT, (F32)venLowLimit, (F32)data->venLowLimit ); + } + if ( abs( venHighLimit - data->venHighLimit ) > 0 ) + { + sendTreatmentLogEventData( VENOUS_PRESSURE_UPPER_LIMIT_CHANGE_EVENT, (F32)venHighLimit, (F32)data->venHighLimit ); + } } // Read back limits for transmit to UI. Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -rbd0ae373570f7f224bb9a6a4e86f805be77de192 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision bd0ae373570f7f224bb9a6a4e86f805be77de192) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -85,7 +85,6 @@ static BOOL treatParamsConfirmed = FALSE; ///< Flag indicates user has confirmed the treatment parameters. static BOOL treatParamsRejected = FALSE; ///< Flag indicates user has rejected the treatment parameters. static BOOL treatmentCancelled = FALSE; ///< Flag indicates user has cancelled the treatment. -static BOOL validUFVolumeParamReceived = FALSE; ///< Flag indicates user has provided UF volume parameter. // ********** private function prototypes ********** @@ -132,8 +131,9 @@ treatParamsConfirmed = FALSE; treatParamsRejected = FALSE; treatmentCancelled = FALSE; - validUFVolumeParamReceived = FALSE; + setTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME, 0.0 ); + // Set user alarm recovery actions allowed in this mode setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); @@ -434,7 +434,6 @@ } // Respond to set treatment parameters request message - validUFVolumeParamReceived = accepted; uFVolumeL = getTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME ); uFVolumeMl = uFVolumeL * (F32)ML_PER_LITER; sendUFVolumeSetResponseMsg( accepted, rejReason, uFVolumeMl ); @@ -444,19 +443,6 @@ /*********************************************************************//** * @brief - * The isUFVolumeParamReceived function determines whether a valid UF volume - * parameter has been provided by user. - * @details Inputs: validUFVolumeParamReceived - * @details Outputs: none - * @return TRUE if valid UF volume parameter has been received, FALSE if not - *************************************************************************/ -BOOL isUFVolumeParamReceived( void ) -{ - return validUFVolumeParamReceived; -} - -/*********************************************************************//** - * @brief * The validateAndSetTreatmentParameters function validates received * treatment parameters. * @details Inputs: none Index: firmware/App/Modes/ModeTreatmentParams.h =================================================================== diff -u -rbd0ae373570f7f224bb9a6a4e86f805be77de192 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Modes/ModeTreatmentParams.h (.../ModeTreatmentParams.h) (revision bd0ae373570f7f224bb9a6a4e86f805be77de192) +++ firmware/App/Modes/ModeTreatmentParams.h (.../ModeTreatmentParams.h) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -84,7 +84,6 @@ void signalAlarmActionToTreatParamsMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for treatment parameters mode BOOL validateAndSetUFVolume( F32 uFVolumeMl ); // User provided ultrafiltration volume to be set and validated -BOOL isUFVolumeParamReceived( void ); // Check if user has provided UF volume parameter BOOL setTreatmentParameterU32( TREATMENT_PARAM_T param, U32 value ); // Set a specified unsigned integer treatment parameter value BOOL setTreatmentParameterS32( TREATMENT_PARAM_T param, S32 value ); // Set a specified signed integer treatment parameter value Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -r8e08352e9e7d8749d8f093c6bc57e6dbc32605d5 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 8e08352e9e7d8749d8f093c6bc57e6dbc32605d5) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -309,7 +309,7 @@ // From moment we start rinseback, we consider blood side of dialyzer no longer fully primed setBloodIsPrimed( FALSE ); result = RINSEBACK_RUN_STATE; - sendTreatmentLogEventData( MID_TREATMENT_RINSE_BACK_EVENT, RINSEBACK_STOP_INIT_STATE, RINSEBACK_RUN_STATE ); + sendTreatmentLogEventData( MID_TREATMENT_RINSE_BACK_EVENT, 0, 0 ); } // Has user requested to return to treatment? else if ( TRUE == backToTreatmentRequested ) Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r44a100f8e5210a02c23b8fcc4527d8e96d577381 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 44a100f8e5210a02c23b8fcc4527d8e96d577381) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -1559,6 +1559,10 @@ handleBubbleSelfTestRequest( message ); break; + case MSG_ID_HD_BATTERY_REMAINING_PERCENT_OVERRIDE: + handleBatteryRemainingPercentOverrideRequest( message ); + break; + case MSG_ID_HD_SET_OP_MODE_REQUEST: handleTestSetOpModeRequest( message ); break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra3858dc599d0d0706e606bc1a3c86609cf7f1602 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a3858dc599d0d0706e606bc1a3c86609cf7f1602) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -779,7 +779,7 @@ // Create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_ALARM_EVENT; - msg.hdr.payloadLen = sizeof( ALARM_ID_T ) + 3 * sizeof( F32 ); + msg.hdr.payloadLen = sizeof( ALARM_ID_T ) + 2 * sizeof( F32 ); memcpy( payloadPtr, &id, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); @@ -812,7 +812,7 @@ // Create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_HD_TREATMENT_LOG_EVENT; - msg.hdr.payloadLen = sizeof( EVENT_ID_T ) + 3 * sizeof( F32 ); + msg.hdr.payloadLen = sizeof( EVENT_ID_T ) + 2 * sizeof( F32 ); memcpy( payloadPtr, &eventID, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); @@ -5611,6 +5611,38 @@ /*********************************************************************//** * @brief + * The handleBatteryRemainingPercentOverrideRequest function handles a + * request to override battery remaining percent. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleBatteryRemainingPercentOverrideRequest( 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 = testSetBatteryRemainingPercentOverride( payload.state.u32 ); + } + else + { + result = testResetSetBatteryRemainingPercentOverride(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief * The handleHDSoftwareResetRequest function handles a request to reset the * HD firmware processor. * @details Inputs: none Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -ra3858dc599d0d0706e606bc1a3c86609cf7f1602 -rdbfeaf78c05fc922eba6ff8c7a31ba8a9392c642 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision a3858dc599d0d0706e606bc1a3c86609cf7f1602) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision dbfeaf78c05fc922eba6ff8c7a31ba8a9392c642) @@ -632,6 +632,9 @@ // MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST void handleBubbleSelfTestRequest( MESSAGE_T *message ); +// MSG_ID_HD_BATTERY_REMAINING_PERCENT_OVERRIDE +void handleBatteryRemainingPercentOverrideRequest( MESSAGE_T *message ); + // MSG_ID_SUPER_CLEAR_ALARMS_CMD void handleTestSuperClearAlarmsRequest( MESSAGE_T *message );