private void checkBeltSpeed(List<BeltState> beltStates, SystemState state, List<Integer> nodes) { for (BeltState beltState : beltStates) { // determine upper and lower thresholds for alarms and warnings double setpoint = beltState.getBeltUnit().getSetpoint(); double processValue = beltState.getBeltSpeed(); double upperLimit = setpoint + beltState.getBeltUnit().getHiWarn(); double lowerLimit = setpoint - beltState.getBeltUnit().getLoWarn(); if (setpoint == 0.0) { yellowFlag = true; beltState.setColor(WHITE); continue; } switch (beltState.getBeltFlag()) { case OFF: yellowFlag = true; beltState.setColor(GRAY); break; case SET: yellowFlag = true; beltState.setColor(WHITE); break; case SEEKING: yellowFlag = true; if (processValue > lowerLimit && processValue < upperLimit) beltState.setBeltFlag(GenFlag.ACTIVE); beltState.setColor(WHITE); break; case ACTIVE: beltState.setColor(GREEN); if (processValue < lowerLimit || processValue > upperLimit) { yellowFlag = true; if (beltState.getColor().equals(GREEN)) { beltState.setColor(YELLOW); if (state.equals(SystemState.SYSTEM_STATE_RUN)) { CanComm.sendSystemState( SystemState.SYSTEM_STATE_RUN_PAUSE, Can.OpId.OPER_SET.ordinal(), nodes); CanComm.setLightTower(Equip.LightTowerState.WARNING.getTower()); log.error("beltSpeed out of warning band: " + processValue); } } } break; default: break; } } }