Skip to content
Snippets Groups Projects
Commit b3a9a7f2 authored by benjamin.franksen's avatar benjamin.franksen
Browse files

renamed EV_ID to EF_ID, added seq_efInit for internal use

parent f01ad7d9
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,7 @@ typedef struct _seq_vars SEQ_VARS; /* struct defined in generated code */
typedef char string[MAX_STRING_SIZE]; /* representation of SNL string type */
/* these typedefs make the code more self documenting */
typedef unsigned EV_ID; /* identifier for an event */
typedef unsigned EF_ID; /* identifier for an event */
typedef unsigned CH_ID; /* identifier for a pv */
typedef int seqBool;
......@@ -68,10 +68,10 @@ typedef struct seqProgram seqProgram; /* struct defined in generated code */
*/
/* event flag operations */
epicsShareFunc void seq_efSet(SS_ID, EV_ID);
epicsShareFunc seqBool seq_efTest(SS_ID, EV_ID);
epicsShareFunc seqBool seq_efClear(SS_ID, EV_ID);
epicsShareFunc seqBool seq_efTestAndClear(SS_ID, EV_ID);
epicsShareFunc void seq_efSet(SS_ID, EF_ID);
epicsShareFunc seqBool seq_efTest(SS_ID, EF_ID);
epicsShareFunc seqBool seq_efClear(SS_ID, EF_ID);
epicsShareFunc seqBool seq_efTestAndClear(SS_ID, EF_ID);
/* pv operations */
epicsShareFunc pvStat seq_pvGet(SS_ID, CH_ID, enum compType, double tmo);
epicsShareFunc pvStat seq_pvGetMultiple(SS_ID, CH_ID,
......@@ -89,7 +89,7 @@ epicsShareFunc void seq_pvGetCancel(SS_ID, CH_ID, unsigned);
epicsShareFunc void seq_pvPutCancel(SS_ID, CH_ID, unsigned);
epicsShareFunc pvStat seq_pvAssign(SS_ID, CH_ID, const char *);
epicsShareFunc pvStat seq_pvMonitor(SS_ID, CH_ID, unsigned);
epicsShareFunc void seq_pvSync(SS_ID, CH_ID, unsigned, EV_ID);
epicsShareFunc void seq_pvSync(SS_ID, CH_ID, unsigned, EF_ID);
epicsShareFunc pvStat seq_pvStopMonitor(SS_ID, CH_ID, unsigned);
/* pv info */
epicsShareFunc char *seq_pvName(SS_ID, CH_ID);
......@@ -132,6 +132,7 @@ epicsShareFunc epicsThreadId seq(seqProgram *, const char *, unsigned);
#define USER_VAR SEQ_VARS
#define UserVar _seq_vars
#define VAR_ID CH_ID
#define EV_ID EF_ID
#define seq_pvFreeQ seq_pvFlushQ
#define DEFAULT_QUEUE_SIZE 100 /* number of elements */
......
......@@ -94,7 +94,7 @@ struct channel
/* dynamic channel data (assigned at runtime) */
DBCHAN *dbch; /* channel assigned to a named db pv */
EV_ID syncedTo; /* event flag id if synced */
EF_ID syncedTo; /* event flag id if synced */
CHAN *nextSynced; /* next channel synced to same flag */
QUEUE queue; /* queue if queued */
boolean monitored; /* whether channel is monitored */
......@@ -218,7 +218,7 @@ struct pvreq
void sequencer(void *arg);
void ss_write_buffer(CHAN *ch, void *val, PVMETA *meta, boolean dirtify);
void ss_read_buffer(SSCB *ss, CHAN *ch, boolean dirty_only);
void ss_read_buffer_selective(PROG *sp, SSCB *ss, EV_ID ev_flag);
void ss_read_buffer_selective(PROG *sp, SSCB *ss, EF_ID ev_flag);
void ss_wakeup(PROG *sp, unsigned eventNum);
/* seq_mac.c */
......
......@@ -769,7 +769,7 @@ epicsShareFunc pvStat seq_pvStopMonitor(SS_ID ss, CH_ID chId, unsigned length)
* Synchronize pv with an event flag.
* ev_flag == 0 means unSync.
*/
epicsShareFunc void seq_pvSync(SS_ID ss, CH_ID chId, unsigned length, EV_ID new_ev_flag)
epicsShareFunc void seq_pvSync(SS_ID ss, CH_ID chId, unsigned length, EF_ID new_ev_flag)
{
PROG *sp = ss->prog;
unsigned i;
......@@ -780,7 +780,7 @@ epicsShareFunc void seq_pvSync(SS_ID ss, CH_ID chId, unsigned length, EV_ID new_
for (i=0; i<length; i++)
{
CHAN *this_ch = sp->chan + chId + i;
EV_ID old_ev_flag = this_ch->syncedTo;
EF_ID old_ev_flag = this_ch->syncedTo;
if (old_ev_flag != new_ev_flag)
{
......@@ -937,13 +937,12 @@ epicsShareFunc epicsTimeStamp seq_pvTimeStamp(SS_ID ss, CH_ID chId)
* Set an event flag, then wake up each state
* set that might be waiting on that event flag.
*/
epicsShareFunc void seq_efSet(SS_ID ss, EV_ID ev_flag)
epicsShareFunc void seq_efSet(SS_ID ss, EF_ID ev_flag)
{
PROG *sp = ss->prog;
DEBUG("efSet: sp=%p, ss=%p, ev_flag=%d\n", sp, ss,
ev_flag);
assert(ev_flag > 0 && ev_flag <= ss->prog->numEvFlags);
DEBUG("efSet: sp=%p, ev_flag=%d\n", sp, ev_flag);
assert(ev_flag > 0 && ev_flag <= sp->numEvFlags);
epicsMutexMustLock(sp->lock);
......@@ -956,10 +955,25 @@ epicsShareFunc void seq_efSet(SS_ID ss, EV_ID ev_flag)
epicsMutexUnlock(sp->lock);
}
/*
* Initialize an event flag.
*/
epicsShareFunc void seq_efInit(PROG_ID sp, EF_ID ev_flag, unsigned val)
{
assert(ev_flag > 0 && ev_flag <= sp->numEvFlags);
epicsMutexMustLock(sp->lock);
if (val)
bitSet(sp->evFlags, ev_flag);
else
bitClear(sp->evFlags, ev_flag);
epicsMutexUnlock(sp->lock);
}
/*
* Return whether event flag is set.
*/
epicsShareFunc boolean seq_efTest(SS_ID ss, EV_ID ev_flag)
epicsShareFunc boolean seq_efTest(SS_ID ss, EF_ID ev_flag)
/* event flag */
{
PROG *sp = ss->prog;
......@@ -983,7 +997,7 @@ epicsShareFunc boolean seq_efTest(SS_ID ss, EV_ID ev_flag)
/*
* Clear event flag.
*/
epicsShareFunc boolean seq_efClear(SS_ID ss, EV_ID ev_flag)
epicsShareFunc boolean seq_efClear(SS_ID ss, EF_ID ev_flag)
{
PROG *sp = ss->prog;
boolean isSet;
......@@ -1006,7 +1020,7 @@ epicsShareFunc boolean seq_efClear(SS_ID ss, EV_ID ev_flag)
* Atomically test event flag against outstanding events, then clear it
* and return whether it was set.
*/
epicsShareFunc boolean seq_efTestAndClear(SS_ID ss, EV_ID ev_flag)
epicsShareFunc boolean seq_efTestAndClear(SS_ID ss, EF_ID ev_flag)
{
PROG *sp = ss->prog;
boolean isSet;
......@@ -1063,7 +1077,7 @@ epicsShareFunc boolean seq_pvGetQ(SS_ID ss, CH_ID chId)
PROG *sp = ss->prog;
CHAN *ch = sp->chan + chId;
void *var = valPtr(ch,ss);
EV_ID ev_flag = ch->syncedTo;
EF_ID ev_flag = ch->syncedTo;
PVMETA *meta = metaPtr(ch,ss);
boolean was_empty;
struct getq_cp_arg arg = {ch, var, meta};
......@@ -1100,7 +1114,7 @@ epicsShareFunc void seq_pvFlushQ(SS_ID ss, CH_ID chId)
{
PROG *sp = ss->prog;
CHAN *ch = sp->chan + chId;
EV_ID ev_flag = ch->syncedTo;
EF_ID ev_flag = ch->syncedTo;
QUEUE queue = ch->queue;
DEBUG("pvFlushQ: pv name=%s, count=%d\n",
......
......@@ -85,7 +85,7 @@ struct seqChan
enum prim_type_tag varType; /* variable (base) type */
unsigned count; /* element count for arrays */
unsigned eventNum; /* event number for this channel */
EV_ID efId; /* event flag id if synced */
EF_ID efId; /* event flag id if synced */
seqBool monitored; /* whether channel should be monitored */
unsigned queueSize; /* syncQ queue size (0=not queued) */
unsigned queueIndex; /* syncQ queue index */
......@@ -130,6 +130,8 @@ struct seqProgram
unsigned numQueues; /* number of syncQ queues */
};
epicsShareFunc void seq_efInit(PROG_ID sp, EF_ID ev_flag, unsigned val);
/* called by generated main and registrar routines */
epicsShareFunc void seqRegisterSequencerProgram(seqProgram *p);
epicsShareFunc void seqRegisterSequencerCommands(void);
......
......@@ -197,7 +197,7 @@ static void ss_read_all_buffer(PROG *sp, SSCB *ss)
* NOTE: calling code must take sp->lock, as we traverse
* the list of channels synced to this event flag.
*/
void ss_read_buffer_selective(PROG *sp, SSCB *ss, EV_ID ev_flag)
void ss_read_buffer_selective(PROG *sp, SSCB *ss, EF_ID ev_flag)
{
CHAN *ch = sp->syncedChans[ev_flag];
while (ch)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment