/* Action function for state "get" in state set "read_anon" */ static void seqg_action_read_anon_1_get(SS_ID seqg_env, int seqg_trn, int *seqg_pnst) { switch(seqg_trn) { case 0: { # line 77 "../pvGet.st" seq_efSet(seqg_env, ef_read_anon); } return; case 1: { # line 80 "../pvGet.st" epicsMutexMustLock(mutex); # line 81 "../pvGet.st" seqg_var->seqg_vars_read_anon.expected = shared; # line 82 "../pvGet.st" seq_pvGetTmo(seqg_env, 0/*anon*/, ASYNC, DEFAULT_TIMEOUT); # line 83 "../pvGet.st" epicsMutexUnlock(mutex); # line 84 "../pvGet.st" if (seq_pvGetComplete(seqg_env, 0/*anon*/)) { # line 86 "../pvGet.st" testOk(seqg_var->seqg_vars_read_anon.expected == seqg_var->anon, "immediate completion: expected=%d==%d=anon", seqg_var->seqg_vars_read_anon.expected, seqg_var->anon); } else { # line 88 "../pvGet.st" testPass("no immediate completion"); } # line 90 "../pvGet.st" epicsThreadSleep(0.1); # line 91 "../pvGet.st" if (seq_pvGetComplete(seqg_env, 0/*anon*/)) { # line 93 "../pvGet.st" testOk(seqg_var->seqg_vars_read_anon.expected == seqg_var->anon, "completion after delay: expected=%d==%d=anon", seqg_var->seqg_vars_read_anon.expected, seqg_var->anon); } else { # line 95 "../pvGet.st" testPass("no completion after delay"); } } return; } }
/* Action function for state "get" in state set "read_named" */ static void seqg_action_read_named_0_get(SS_ID seqg_env, int seqg_trn, int *seqg_pnst) { switch(seqg_trn) { case 0: { # line 37 "../pvGet.st" seq_efSet(seqg_env, ef_read_named); } return; case 1: { # line 40 "../pvGet.st" epicsMutexMustLock(mutex); # line 41 "../pvGet.st" seqg_var->seqg_vars_read_named.expected = shared; # line 42 "../pvGet.st" seq_pvGetTmo(seqg_env, 1/*named*/, ASYNC, DEFAULT_TIMEOUT); # line 43 "../pvGet.st" epicsMutexUnlock(mutex); # line 44 "../pvGet.st" if (seq_pvGetComplete(seqg_env, 1/*named*/)) { # line 46 "../pvGet.st" testOk(seqg_var->seqg_vars_read_named.expected == seqg_var->seqg_vars_read_named.named, "immediate completion: expected=%d==%d=named", seqg_var->seqg_vars_read_named.expected, seqg_var->seqg_vars_read_named.named); } else { # line 48 "../pvGet.st" testPass("no immediate completion"); } # line 50 "../pvGet.st" epicsThreadSleep(0.1); # line 51 "../pvGet.st" if (seq_pvGetComplete(seqg_env, 1/*named*/)) { # line 53 "../pvGet.st" testOk(seqg_var->seqg_vars_read_named.expected == seqg_var->seqg_vars_read_named.named, "completion after delay: expected=%d==%d=named", seqg_var->seqg_vars_read_named.expected, seqg_var->seqg_vars_read_named.named); } else { # line 55 "../pvGet.st" testPass("no completion after delay"); } } return; } }
/* * Array variant of seq_pvGetComplete. */ epicsShareFunc boolean seq_pvArrayGetComplete( SS_ID ss, CH_ID chId, unsigned length, boolean any, boolean *complete) { boolean anyDone = FALSE, allDone = TRUE; unsigned n; for (n = 0; n < length; n++) { boolean done = seq_pvGetComplete(ss, chId + n); anyDone = anyDone || done; allDone = allDone && done; if (complete) { complete[n] = done; } else if (any == done) { break; } } DEBUG("pvArrayGetComplete: chId=%u, length=%u, anyDone=%u, allDone=%u\n", chId, length, anyDone, allDone); return any?anyDone:allDone; }
/* Event function for state "wait" in state set "read_anon" */ static seqBool seqg_event_read_anon_1_wait(SS_ID seqg_env, int *seqg_ptrn, int *seqg_pnst) { # line 100 "../pvGet.st" if (seq_pvGetComplete(seqg_env, 0/*anon*/)) { *seqg_pnst = 0; *seqg_ptrn = 0; return TRUE; } return FALSE; }
/* Event function for state "wait" in state set "read_named" */ static seqBool seqg_event_read_named_0_wait(SS_ID seqg_env, int *seqg_ptrn, int *seqg_pnst) { # line 60 "../pvGet.st" if (seq_pvGetComplete(seqg_env, 1/*named*/)) { *seqg_pnst = 0; *seqg_ptrn = 0; return TRUE; } return FALSE; }
/* Event function for state "wait_complete" in state set "pvGetAsync" */ static seqBool E_pvGetAsync_0_wait_complete(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState) { # line 39 "../pvGetAsync.st" if (seq_delay(ssId, 0)) { seq_exit(ssId); *pTransNum = 0; return TRUE; } # line 42 "../pvGetAsync.st" if (seq_pvGetComplete(ssId, 0/*x*/)) { *pNextState = 1; *pTransNum = 1; return TRUE; } return FALSE; }