Index: firmware/App/Controllers/Switches.c =================================================================== diff -u -ra8eecf939bc9baff3d5ff5e87013297b8fe20d0e -r6499ea25921fcf67826fa0c35bb03caf411ba542 --- firmware/App/Controllers/Switches.c (.../Switches.c) (revision a8eecf939bc9baff3d5ff5e87013297b8fe20d0e) +++ firmware/App/Controllers/Switches.c (.../Switches.c) (revision 6499ea25921fcf67826fa0c35bb03caf411ba542) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2023 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file Switches.c * * @author (last) Dara Navaei -* @date (last) 25-May-2022 +* @date (last) 28-Sep-2022 * * @author (original) Dara Navaei * @date (original) 24-Jul-2021 @@ -100,8 +100,11 @@ currentSwitchStatus = ( getFPGADialysateCapStatus() != 0 ? STATE_OPEN : STATE_CLOSED ); break; - // NOTE: the default case was removed since this switch case is executed using a for loop so the default - // case is never called. The default case is unreachable in development testing. +#ifndef _VECTORCAST_ + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_SWITCH_SELECTED, i ); + break; +#endif } // Check if the current switch status is not the same as the recorded data @@ -115,16 +118,23 @@ // If the debounce time has been elapsed, update the switch status to the new status else if ( TRUE == didTimeout( switchesStatus[ i ].debounceStartTime, SWITCHES_DEBOUNCE_TIME_MS ) ) { - if (CONCENTRATE_CAP == i) + switch ( i ) { - SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_CONCENTRATE_CAP_SWITCH_CHANGE, - (U32)switchesStatus[ i ].status.data, (U32)currentSwitchStatus ); + case CONCENTRATE_CAP: + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_CONCENTRATE_CAP_SWITCH_CHANGE, (U32)switchesStatus[ i ].status.data, (U32)currentSwitchStatus ); + break; + + case DIALYSATE_CAP: + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_DIALYSATE_CAP_SWITCH_CHANGE, (U32)switchesStatus[ i ].status.data, (U32)currentSwitchStatus ); + break; + +#ifndef _VECTORCAST_ + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_SWITCH_SELECTED, i ); + break; +#endif } - else if (DIALYSATE_CAP == i) - { - SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_DIALYSATE_CAP_SWITCH_CHANGE, - (U32)switchesStatus[ i ].status.data, (U32)currentSwitchStatus ); - } + switchesStatus[ i ].debounceStartTime = 0; switchesStatus[ i ].status.data = currentSwitchStatus; }