From 930125aeb17fc3b040755a63b00e1a80b93f1505 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Mon, 29 Jul 2024 21:12:20 +0200 Subject: [PATCH] IsValidHeadstage: Add and use it --- Packages/MIES/MIES_AmplifierInteraction.ipf | 2 +- Packages/MIES/MIES_MiesUtilities_Checks.ipf | 8 ++++++++ Packages/MIES/MIES_MiesUtilities_Config.ipf | 2 +- Packages/MIES/MIES_MiesUtilities_Logbook.ipf | 8 ++++---- Packages/MIES/MIES_PressureControl.ipf | 2 +- Packages/tests/Basic/UTF_Utils_Checks.ipf | 9 +++++++++ 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index de02c57ac2..e0d9714488 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -1083,7 +1083,7 @@ Function AI_SendToAmp(device, headStage, mode, func, value, [checkBeforeWrite, u string str ASSERT(func > MCC_BEGIN_INVALID_FUNC && func < MCC_END_INVALID_FUNC, "MCC function constant is out for range") - ASSERT(headStage >= 0 && headStage < NUM_HEADSTAGES, "invalid headStage index") + ASSERT(IsValidHeadstage(headstage), "invalid headStage index") AI_AssertOnInvalidClampMode(mode) if(ParamIsDefault(checkBeforeWrite)) diff --git a/Packages/MIES/MIES_MiesUtilities_Checks.ipf b/Packages/MIES/MIES_MiesUtilities_Checks.ipf index f4d0441a69..910b037c46 100644 --- a/Packages/MIES/MIES_MiesUtilities_Checks.ipf +++ b/Packages/MIES/MIES_MiesUtilities_Checks.ipf @@ -56,3 +56,11 @@ Function IsValidSamplingMultiplier(multiplier) return IsFinite(multiplier) && WhichListItem(num2str(multiplier), DAP_GetSamplingMultiplier()) != -1 End + +/// @brief Check if the given headstage index is valid +/// +/// UTF_NOINSTRUMENTATION +threadsafe Function IsValidHeadstage(variable headstage) + + return IsInteger(headstage) && headstage >= 0 && headstage < NUM_HEADSTAGES +End diff --git a/Packages/MIES/MIES_MiesUtilities_Config.ipf b/Packages/MIES/MIES_MiesUtilities_Config.ipf index 87a4e0aa85..cfabba2a96 100644 --- a/Packages/MIES/MIES_MiesUtilities_Config.ipf +++ b/Packages/MIES/MIES_MiesUtilities_Config.ipf @@ -60,7 +60,7 @@ End threadsafe Function/S GetDefaultElectrodeName(headstage) variable headstage - ASSERT_TS(headstage >= 0 && headstage < NUM_HEADSTAGES, "Invalid headstage") + ASSERT_TS(IsValidHeadstage(headstage), "Invalid headstage") return num2str(headstage) End diff --git a/Packages/MIES/MIES_MiesUtilities_Logbook.ipf b/Packages/MIES/MIES_MiesUtilities_Logbook.ipf index d7afd86f7b..bd8ecff6ef 100644 --- a/Packages/MIES/MIES_MiesUtilities_Logbook.ipf +++ b/Packages/MIES/MIES_MiesUtilities_Logbook.ipf @@ -1041,7 +1041,7 @@ threadsafe Function/WAVE GetLastSettingEachRAC(numericalValues, sweepNo, setting variable i, numSweeps - ASSERT_TS(headstage >= 0 && headstage < NUM_HEADSTAGES, "Invalid headstage") + ASSERT_TS(IsValidHeadstage(headstage), "Invalid headstage") WAVE/Z sweeps = AFH_GetSweepsFromSameRACycle(numericalValues, sweepNo) if(!WaveExists(sweeps) || DimSize(sweeps, ROWS) == 0) @@ -1083,7 +1083,7 @@ threadsafe Function/WAVE GetLastSettingTextEachRAC(numericalValues, textualValue variable i, numSweeps - ASSERT_TS(headstage >= 0 && headstage < NUM_HEADSTAGES, "Invalid headstage") + ASSERT_TS(IsValidHeadstage(headstage), "Invalid headstage") WAVE/Z sweeps = AFH_GetSweepsFromSameRACycle(numericalValues, sweepNo) if(!WaveExists(sweeps) || DimSize(sweeps, ROWS) == 0) @@ -1258,7 +1258,7 @@ threadsafe Function/WAVE GetLastSettingEachSCI(numericalValues, sweepNo, setting variable i, numSweeps - ASSERT_TS(headstage >= 0 && headstage < NUM_HEADSTAGES, "Invalid headstage") + ASSERT_TS(IsValidHeadstage(headstage), "Invalid headstage") WAVE/Z sweeps = AFH_GetSweepsFromSameSCI(numericalValues, sweepNo, headstage) if(!WaveExists(sweeps) || DimSize(sweeps, ROWS) == 0) @@ -1300,7 +1300,7 @@ threadsafe Function/WAVE GetLastSettingTextEachSCI(numericalValues, textualValue variable i, numSweeps - ASSERT_TS(headstage >= 0 && headstage < NUM_HEADSTAGES, "Invalid headstage") + ASSERT_TS(IsValidHeadstage(headstage), "Invalid headstage") WAVE/Z sweeps = AFH_GetSweepsFromSameSCI(numericalValues, sweepNo, headstage) if(!WaveExists(sweeps) || DimSize(sweeps, ROWS) == 0) diff --git a/Packages/MIES/MIES_PressureControl.ipf b/Packages/MIES/MIES_PressureControl.ipf index 190f770e80..38ad86ac7d 100644 --- a/Packages/MIES/MIES_PressureControl.ipf +++ b/Packages/MIES/MIES_PressureControl.ipf @@ -2207,7 +2207,7 @@ Function P_SetPressureMode(device, headStage, pressureMode, [pressure]) variable pressureMode variable pressure - ASSERT(headstage < NUM_HEADSTAGES && headStage >= 0, "Select headstage number between 0 and 7") + ASSERT(IsValidHeadstage(headStage), "Select headstage number between 0 and 7") ASSERT(pressureMode >= PRESSURE_METHOD_ATM && pressureMode <= PRESSURE_METHOD_MANUAL, "Select a pressure mode between -1 and 4") WAVE PressureDataWv = P_GetPressureDataWaveRef(device) diff --git a/Packages/tests/Basic/UTF_Utils_Checks.ipf b/Packages/tests/Basic/UTF_Utils_Checks.ipf index a84b10db53..fed6e6fe3b 100644 --- a/Packages/tests/Basic/UTF_Utils_Checks.ipf +++ b/Packages/tests/Basic/UTF_Utils_Checks.ipf @@ -398,3 +398,12 @@ static Function CheckMatchAgainstWildCardPatterns() End /// @} + +static Function TestIsValidHeadstageWorking() + + CHECK_EQUAL_VAR(IsValidHeadstage(0), 1) + CHECK_EQUAL_VAR(IsValidHeadstage(1), 1) + CHECK_EQUAL_VAR(IsValidHeadstage(NUM_HEADSTAGES - 1), 1) + CHECK_EQUAL_VAR(IsValidHeadstage(NaN), 0) + CHECK_EQUAL_VAR(IsValidHeadstage(1.5), 0) +End