/* C code for program sncPau, generated by snc from ../sncPau.stt */ #include #include #include #include #include "seq_snc.h" # line 10 "../sncPau.stt" #define ADMIN_OFF 0 #define ADMIN_ON 1 #define ADMIN_UNAVAILABLE 2 #define FBCK_OFF 0 #define FBCK_ON 1 # line 37 "../sncPau.stt" static const EF_ID ev_fcom_0 = 1; # line 38 "../sncPau.stt" static const EF_ID ev_fcom_1 = 2; # line 39 "../sncPau.stt" static const EF_ID ev_fcom_2 = 3; # line 40 "../sncPau.stt" static const EF_ID ev_fcom_3 = 4; # line 53 "../sncPau.stt" static const EF_ID ev_admin = 5; /* Variable declarations */ struct seqg_vars { # line 19 "../sncPau.stt" int index; # line 21 "../sncPau.stt" int feedback_mode; # line 25 "../sncPau.stt" double offset[4]; # line 30 "../sncPau.stt" double fcom[4]; # line 47 "../sncPau.stt" double master; # line 50 "../sncPau.stt" int admin; }; /* Function declarations */ #define seqg_var (*(struct seqg_vars *const *)seqg_env) /* Program init func */ static void seqg_init(PROG_ID seqg_env) { } /****** Code for state "calc_bwProp" in state set "bwProp" ******/ /* Event function for state "calc_bwProp" in state set "bwProp" */ static seqBool seqg_event_bwProp_0_calc_bwProp(SS_ID seqg_env, int *seqg_ptrn, int *seqg_pnst) { # line 61 "../sncPau.stt" if (seqg_var->feedback_mode && seq_efTestAndClear(seqg_env, ev_fcom_0)) { *seqg_pnst = 0; *seqg_ptrn = 0; return TRUE; } # line 68 "../sncPau.stt" if (seqg_var->feedback_mode && seq_efTestAndClear(seqg_env, ev_fcom_1)) { *seqg_pnst = 0; *seqg_ptrn = 1; return TRUE; } # line 76 "../sncPau.stt" if (seqg_var->feedback_mode && seq_efTestAndClear(seqg_env, ev_fcom_2)) { *seqg_pnst = 0; *seqg_ptrn = 2; return TRUE; } # line 83 "../sncPau.stt" if (seqg_var->feedback_mode && seq_efTestAndClear(seqg_env, ev_fcom_3)) { *seqg_pnst = 0; *seqg_ptrn = 3; return TRUE; } return FALSE; } /* Action function for state "calc_bwProp" in state set "bwProp" */ static void seqg_action_bwProp_0_calc_bwProp(SS_ID seqg_env, int seqg_trn, int *seqg_pnst) { switch(seqg_trn) { case 0: { # line 62 "../sncPau.stt" seqg_var->master = seqg_var->fcom[0]; # line 63 "../sncPau.stt" seqg_var->offset[0] = seqg_var->fcom[0] - seqg_var->master; # line 64 "../sncPau.stt" seq_pvPutTmo(seqg_env, 1/*offset*/ + (CH_ID)(0), DEFAULT, DEFAULT_TIMEOUT); # line 65 "../sncPau.stt" seq_pvPutTmo(seqg_env, 9/*master*/, DEFAULT, DEFAULT_TIMEOUT); } return; case 1: { # line 69 "../sncPau.stt" seqg_var->master = seqg_var->fcom[0]; # line 70 "../sncPau.stt" seqg_var->offset[1] = seqg_var->fcom[1] - seqg_var->master; # line 71 "../sncPau.stt" seq_pvPutTmo(seqg_env, 1/*offset*/ + (CH_ID)(1), DEFAULT, DEFAULT_TIMEOUT); # line 72 "../sncPau.stt" seq_pvPutTmo(seqg_env, 9/*master*/, DEFAULT, DEFAULT_TIMEOUT); } return; case 2: { # line 77 "../sncPau.stt" seqg_var->master = seqg_var->fcom[0]; # line 78 "../sncPau.stt" seqg_var->offset[2] = seqg_var->fcom[2] - seqg_var->master; # line 79 "../sncPau.stt" seq_pvPutTmo(seqg_env, 1/*offset*/ + (CH_ID)(2), DEFAULT, DEFAULT_TIMEOUT); # line 80 "../sncPau.stt" seq_pvPutTmo(seqg_env, 9/*master*/, DEFAULT, DEFAULT_TIMEOUT); } return; case 3: { # line 84 "../sncPau.stt" seqg_var->master = seqg_var->fcom[0]; # line 85 "../sncPau.stt" seqg_var->offset[3] = seqg_var->fcom[3] - seqg_var->master; # line 86 "../sncPau.stt" seq_pvPutTmo(seqg_env, 1/*offset*/ + (CH_ID)(3), DEFAULT, DEFAULT_TIMEOUT); # line 87 "../sncPau.stt" seq_pvPutTmo(seqg_env, 9/*master*/, DEFAULT, DEFAULT_TIMEOUT); } return; } } /****** Code for state "init" in state set "iocAdmin" ******/ /* Event function for state "init" in state set "iocAdmin" */ static seqBool seqg_event_iocAdmin_1_init(SS_ID seqg_env, int *seqg_ptrn, int *seqg_pnst) { # line 98 "../sncPau.stt" if (seqg_var->admin == ADMIN_UNAVAILABLE) { *seqg_pnst = 1; *seqg_ptrn = 0; return TRUE; } # line 103 "../sncPau.stt" if (1) { *seqg_pnst = 1; *seqg_ptrn = 1; return TRUE; } return FALSE; } /* Action function for state "init" in state set "iocAdmin" */ static void seqg_action_iocAdmin_1_init(SS_ID seqg_env, int seqg_trn, int *seqg_pnst) { switch(seqg_trn) { case 0: { # line 99 "../sncPau.stt" seqg_var->admin = ADMIN_OFF; # line 100 "../sncPau.stt" seq_pvPutTmo(seqg_env, 10/*admin*/, DEFAULT, DEFAULT_TIMEOUT); } return; case 1: { } return; } } /****** Code for state "check_mode" in state set "iocAdmin" ******/ /* Event function for state "check_mode" in state set "iocAdmin" */ static seqBool seqg_event_iocAdmin_1_check_mode(SS_ID seqg_env, int *seqg_ptrn, int *seqg_pnst) { # line 109 "../sncPau.stt" if (1) { *seqg_pnst = 2; *seqg_ptrn = 0; return TRUE; } return FALSE; } /* Action function for state "check_mode" in state set "iocAdmin" */ static void seqg_action_iocAdmin_1_check_mode(SS_ID seqg_env, int seqg_trn, int *seqg_pnst) { switch(seqg_trn) { case 0: { # line 110 "../sncPau.stt" if (seqg_var->admin == ADMIN_OFF) { # line 110 "../sncPau.stt" seqg_var->feedback_mode = FBCK_OFF; # line 110 "../sncPau.stt" seq_pvPutTmo(seqg_env, 0/*feedback_mode*/, DEFAULT, DEFAULT_TIMEOUT); } # line 111 "../sncPau.stt" if (seqg_var->admin == ADMIN_ON) { # line 111 "../sncPau.stt" seqg_var->feedback_mode = FBCK_ON; # line 111 "../sncPau.stt" seq_pvPutTmo(seqg_env, 0/*feedback_mode*/, DEFAULT, DEFAULT_TIMEOUT); } # line 112 "../sncPau.stt" if (seqg_var->admin == ADMIN_UNAVAILABLE) { # line 112 "../sncPau.stt" seqg_var->feedback_mode = FBCK_OFF; # line 112 "../sncPau.stt" seq_pvPutTmo(seqg_env, 0/*feedback_mode*/, DEFAULT, DEFAULT_TIMEOUT); } } return; } } /****** Code for state "wait_admin" in state set "iocAdmin" ******/ /* Event function for state "wait_admin" in state set "iocAdmin" */ static seqBool seqg_event_iocAdmin_1_wait_admin(SS_ID seqg_env, int *seqg_ptrn, int *seqg_pnst) { # line 118 "../sncPau.stt" if (seq_efTestAndClear(seqg_env, ev_admin)) { *seqg_pnst = 1; *seqg_ptrn = 0; return TRUE; } return FALSE; } /* Action function for state "wait_admin" in state set "iocAdmin" */ static void seqg_action_iocAdmin_1_wait_admin(SS_ID seqg_env, int seqg_trn, int *seqg_pnst) { switch(seqg_trn) { case 0: { } return; } } #undef seqg_var /************************ Tables ************************/ /* Channel table */ static seqChan seqg_chans[] = { /* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */ {"{MUX_NAME}:FBCK", offsetof(struct seqg_vars, feedback_mode), "feedback_mode", P_INT, 1, 6, 0, 1, 0, 0}, {"{MUX_NAME}:OFFSET_0", offsetof(struct seqg_vars, offset[0]), "offset[0]", P_DOUBLE, 1, 7, 0, 0, 0, 0}, {"{MUX_NAME}:OFFSET_1", offsetof(struct seqg_vars, offset[1]), "offset[1]", P_DOUBLE, 1, 8, 0, 0, 0, 0}, {"{MUX_NAME}:OFFSET_2", offsetof(struct seqg_vars, offset[2]), "offset[2]", P_DOUBLE, 1, 9, 0, 0, 0, 0}, {"{MUX_NAME}:OFFSET_3", offsetof(struct seqg_vars, offset[3]), "offset[3]", P_DOUBLE, 1, 10, 0, 0, 0, 0}, {"{MUX_NAME}:GETFCOM_0", offsetof(struct seqg_vars, fcom[0]), "fcom[0]", P_DOUBLE, 1, 11, 1, 1, 0, 0}, {"{MUX_NAME}:GETFCOM_1", offsetof(struct seqg_vars, fcom[1]), "fcom[1]", P_DOUBLE, 1, 12, 2, 1, 0, 0}, {"{MUX_NAME}:GETFCOM_2", offsetof(struct seqg_vars, fcom[2]), "fcom[2]", P_DOUBLE, 1, 13, 3, 1, 0, 0}, {"{MUX_NAME}:GETFCOM_3", offsetof(struct seqg_vars, fcom[3]), "fcom[3]", P_DOUBLE, 1, 14, 4, 1, 0, 0}, {"{MUX_NAME}", offsetof(struct seqg_vars, master), "master", P_DOUBLE, 1, 15, 0, 0, 0, 0}, {"{ADMIN_NAME}", offsetof(struct seqg_vars, admin), "admin", P_INT, 1, 16, 5, 1, 0, 0}, }; /* Event masks for state set "bwProp" */ static const seqMask seqg_mask_bwProp_0_calc_bwProp[] = { 0x0000005e, }; /* State table for state set "bwProp" */ static seqState seqg_states_bwProp[] = { { /* state name */ "calc_bwProp", /* action function */ seqg_action_bwProp_0_calc_bwProp, /* event function */ seqg_event_bwProp_0_calc_bwProp, /* entry function */ 0, /* exit function */ 0, /* event mask array */ seqg_mask_bwProp_0_calc_bwProp, /* state options */ (0) }, }; /* Event masks for state set "iocAdmin" */ static const seqMask seqg_mask_iocAdmin_1_init[] = { 0x00010000, }; static const seqMask seqg_mask_iocAdmin_1_check_mode[] = { 0x00000000, }; static const seqMask seqg_mask_iocAdmin_1_wait_admin[] = { 0x00000020, }; /* State table for state set "iocAdmin" */ static seqState seqg_states_iocAdmin[] = { { /* state name */ "init", /* action function */ seqg_action_iocAdmin_1_init, /* event function */ seqg_event_iocAdmin_1_init, /* entry function */ 0, /* exit function */ 0, /* event mask array */ seqg_mask_iocAdmin_1_init, /* state options */ (0) }, { /* state name */ "check_mode", /* action function */ seqg_action_iocAdmin_1_check_mode, /* event function */ seqg_event_iocAdmin_1_check_mode, /* entry function */ 0, /* exit function */ 0, /* event mask array */ seqg_mask_iocAdmin_1_check_mode, /* state options */ (0) }, { /* state name */ "wait_admin", /* action function */ seqg_action_iocAdmin_1_wait_admin, /* event function */ seqg_event_iocAdmin_1_wait_admin, /* entry function */ 0, /* exit function */ 0, /* event mask array */ seqg_mask_iocAdmin_1_wait_admin, /* state options */ (0) }, }; /* State set table */ static seqSS seqg_statesets[] = { { /* state set name */ "bwProp", /* states */ seqg_states_bwProp, /* number of states */ 1 }, { /* state set name */ "iocAdmin", /* states */ seqg_states_iocAdmin, /* number of states */ 3 }, }; /* Program table (global) */ seqProgram sncPau = { /* magic number */ 2002004, /* program name */ "sncPau", /* channels */ seqg_chans, /* num. channels */ 11, /* state sets */ seqg_statesets, /* num. state sets */ 2, /* user var size */ sizeof(struct seqg_vars), /* param */ "", /* num. event flags */ 5, /* encoded options */ (0 | OPT_CONN | OPT_NEWEF | OPT_REENT), /* init func */ seqg_init, /* entry func */ 0, /* exit func */ 0, /* num. queues */ 0 }; /* Register sequencer commands and program */ #include "epicsExport.h" static void sncPauRegistrar (void) { seqRegisterSequencerCommands(); seqRegisterSequencerProgram (&sncPau); } epicsExportRegistrar(sncPauRegistrar);