From 397d3da10a07738defeab9afcd7ca9dfdf733e15 Mon Sep 17 00:00:00 2001 From: timmmooney Date: Wed, 18 Dec 2013 22:30:17 +0000 Subject: [PATCH] Kludge soft trigger --- motorApp/OmsSrc/MAX_trajectoryScan.st | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/motorApp/OmsSrc/MAX_trajectoryScan.st b/motorApp/OmsSrc/MAX_trajectoryScan.st index 522fecd1..9abdd190 100644 --- a/motorApp/OmsSrc/MAX_trajectoryScan.st +++ b/motorApp/OmsSrc/MAX_trajectoryScan.st @@ -176,6 +176,7 @@ double dbuf[MAX_PULSES]; /* variables for constructing trajectory commands */ int movingMask; int waitingForTrigger; +int softTrigger; /* temporary variables to hold mav speed and acceleration for a motor */ double vmax; @@ -471,7 +472,16 @@ ss maxTrajectoryScan { pvPut(execState); lastPollTime = -POLL_INTERVAL; lastRealTimePoint = 0; - waitingForTrigger = ((inBitNum >= 0) && (inBitNum <= 15)); + + /* waitingForTrigger = ((inBitNum >= 0) && (inBitNum <= 15)); */ +/* temporary kludge */ +/* There are only 16 bits, but allow an imaginary 17th to implement a soft trigger when I/O is not connected + * to anything. To use, set inBitNum==16, "Execute" the trajectory, and trigger it by setting intBitNum to + * anything in [0..15]. MAXv inputs default to high, so all bits will trigger. + */ +waitingForTrigger = ((inBitNum >= 0) && (inBitNum <= 16)); +softTrigger = inBitNum == 16; + for (j=0, movingMask = 0; jinBitNum); if (pVar->debugLevel >= 5) printf("\ngetStarted: reply='%s', bits=0x%x, mask=0x%x", pVar->stringIn, bits, mask); + +/* If we got called because intBitNum was set to 16, and got triggered by user's change to 0..15, reset intBitNum. */ +if (pVar->softTrigger) pVar->inBitNum = 16; + return (bits & mask); }