Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bridgeportcool.cc

Go to the documentation of this file.
00001 /*
00002   bridgeportcool.cc
00003 
00004   Controller for Bridgeport coolant I/O
00005 
00006   Modification history:
00007 
00008   31-Aug-1999  FMP changed to bridgeportcool.cc
00009   1-Apr-1998  FMP changed from emccool.cc to shvcool.cc
00010   24-Mar-1998  FMP changed ERROR() to REPORT_ERROR() due to conflict
00011   in VC++
00012   11-Dec-1997  FMP created from nce stuff
00013   */
00014 
00015 #include "rcs.hh"               // NML
00016 #include "emc.hh"               // EMC NML
00017 #include "emcio.hh"             // these decls
00018 #include "emcglb.h"
00019 #include "extintf.h"            // extDioSet(),Clear()
00020 #include "inicool.hh"           // iniCoolant()
00021 
00022 // ident tag
00023 /* ident tag */
00024 #ifndef __GNUC__
00025 #ifndef __attribute__
00026 #define __attribute__(x)
00027 #endif
00028 #endif
00029 
00030 static char __attribute__((unused))  ident[] = "$Id: bridgeportcool.cc,v 1.3 2001/06/29 20:27:29 wshackle Exp $";
00031 
00032 // local functions
00033 
00034 static void mistOn()
00035 {
00036   extDioWrite(MIST_COOLANT_INDEX, MIST_COOLANT_POLARITY);
00037 }
00038 
00039 static void mistOff()
00040 {
00041   extDioWrite(MIST_COOLANT_INDEX, ! MIST_COOLANT_POLARITY);
00042 }
00043 
00044 static void floodOn()
00045 {
00046   extDioWrite(FLOOD_COOLANT_INDEX, FLOOD_COOLANT_POLARITY);
00047 }
00048 
00049 static void floodOff()
00050 {
00051   extDioWrite(FLOOD_COOLANT_INDEX, ! FLOOD_COOLANT_POLARITY);
00052 }
00053 
00054 static int isMistOn()
00055 {
00056   int m;
00057 
00058   extDioCheck(MIST_COOLANT_INDEX, &m);
00059 
00060   return m == MIST_COOLANT_POLARITY;
00061 }
00062 
00063 static int isFloodOn()
00064 {
00065   int f;
00066 
00067   extDioCheck(FLOOD_COOLANT_INDEX, &f);
00068 
00069   return f == FLOOD_COOLANT_POLARITY;
00070 }
00071 
00072 // constructor
00073 
00074 EMC_COOLANT_MODULE::EMC_COOLANT_MODULE()
00075 {
00076   setErrorLogChannel(new NML(nmlErrorFormat, "emcError", "coolant", EMC_NMLFILE));
00077 
00078   setCmdChannel(new RCS_CMD_CHANNEL(emcFormat, "coolantCmd", "coolant", EMC_NMLFILE));
00079 
00080   setStatChannel(new RCS_STAT_CHANNEL(emcFormat, "coolantSts", "coolant", EMC_NMLFILE), &coolantStatus);
00081 }
00082 
00083 // destructor
00084 
00085 EMC_COOLANT_MODULE::~EMC_COOLANT_MODULE(void)
00086 {
00087 }
00088 
00089 void EMC_COOLANT_MODULE::DECISION_PROCESS(void)
00090 {
00091   switch (commandInData->type)
00092     {
00093     case EMC_COOLANT_INIT_TYPE:
00094       INIT((EMC_COOLANT_INIT *) commandInData);
00095       break;
00096 
00097     case EMC_COOLANT_HALT_TYPE:
00098       HALT((EMC_COOLANT_HALT *) commandInData);
00099       break;
00100 
00101     case EMC_COOLANT_ABORT_TYPE:
00102       ABORT((EMC_COOLANT_ABORT *) commandInData);
00103       break;
00104 
00105     case EMC_COOLANT_MIST_ON_TYPE:
00106       MIST_ON((EMC_COOLANT_MIST_ON *) commandInData);
00107       break;
00108 
00109     case EMC_COOLANT_MIST_OFF_TYPE:
00110       MIST_OFF((EMC_COOLANT_MIST_OFF *) commandInData);
00111       break;
00112 
00113     case EMC_COOLANT_FLOOD_ON_TYPE:
00114       FLOOD_ON((EMC_COOLANT_FLOOD_ON *) commandInData);
00115       break;
00116 
00117     case EMC_COOLANT_FLOOD_OFF_TYPE:
00118       FLOOD_OFF((EMC_COOLANT_FLOOD_OFF *) commandInData);
00119       break;
00120 
00121     default:
00122       REPORT_ERROR(commandInData);
00123       break;
00124     }
00125 }
00126 
00127 void EMC_COOLANT_MODULE::PRE_PROCESS(void)
00128 {
00129 }
00130 
00131 void EMC_COOLANT_MODULE::POST_PROCESS(void)
00132 {
00133   // sync status with sensors
00134   coolantStatus.mist = isMistOn();
00135   coolantStatus.flood = isFloodOn();
00136 }
00137 
00138 void EMC_COOLANT_MODULE::INIT(EMC_COOLANT_INIT *cmdIn)
00139 {
00140   if (STATE_MATCH(NEW_COMMAND))
00141     {
00142       // load params from ini file
00143       iniCoolant(EMC_INIFILE);
00144 
00145       // turn coolants off
00146       mistOff();
00147       floodOff();
00148 
00149       status = RCS_DONE;
00150       stateNext(S0);
00151     }
00152   else if (STATE_MATCH(S0))
00153     {
00154       // idle
00155     }
00156 }
00157 
00158 void EMC_COOLANT_MODULE::HALT(EMC_COOLANT_HALT *cmdIn)
00159 {
00160   if (STATE_MATCH(NEW_COMMAND))
00161     {
00162       // turn coolants off
00163       mistOff();
00164       floodOff();
00165 
00166       status = RCS_DONE;
00167       stateNext(S0);
00168     }
00169   else if (STATE_MATCH(S0))
00170     {
00171       // idle
00172     }
00173 }
00174 
00175 void EMC_COOLANT_MODULE::ABORT(EMC_COOLANT_ABORT *cmdIn)
00176 {
00177   if (STATE_MATCH(NEW_COMMAND))
00178     {
00179       // turn coolants off
00180       mistOff();
00181       floodOff();
00182 
00183       status = RCS_DONE;
00184       stateNext(S0);
00185     }
00186   else if (STATE_MATCH(S0))
00187     {
00188       // idle
00189     }
00190 }
00191 
00192 void EMC_COOLANT_MODULE::REPORT_ERROR(RCS_CMD_MSG *cmdIn)
00193 {
00194   if (STATE_MATCH(NEW_COMMAND))
00195     {
00196       rcs_print_error("EMC_COOLANT_MODULE: unknown command %d\n",
00197                       cmdIn->type);
00198       status = RCS_ERROR;
00199       stateNext(S0);
00200     }
00201   else if (STATE_MATCH(S0))
00202     {
00203       // idle
00204     }
00205 }
00206 
00207 void EMC_COOLANT_MODULE::MIST_ON(EMC_COOLANT_MIST_ON *cmdIn)
00208 {
00209   if (STATE_MATCH(NEW_COMMAND))
00210     {
00211       mistOn();
00212 
00213       status = RCS_DONE;
00214       stateNext(S0);
00215     }
00216   else if (STATE_MATCH(S0))
00217     {
00218       // idle
00219     }
00220 }
00221 
00222 void EMC_COOLANT_MODULE::MIST_OFF(EMC_COOLANT_MIST_OFF *cmdIn)
00223 {
00224   if (STATE_MATCH(NEW_COMMAND))
00225     {
00226       mistOff();
00227 
00228       status = RCS_DONE;
00229       stateNext(S0);
00230     }
00231   else if (STATE_MATCH(S0))
00232     {
00233       // idle
00234     }
00235 }
00236 
00237 void EMC_COOLANT_MODULE::FLOOD_ON(EMC_COOLANT_FLOOD_ON *cmdIn)
00238 {
00239   if (STATE_MATCH(NEW_COMMAND))
00240     {
00241       floodOn();
00242 
00243       status = RCS_DONE;
00244       stateNext(S0);
00245     }
00246   else if (STATE_MATCH(S0))
00247     {
00248       // idle
00249     }
00250 }
00251 
00252 void EMC_COOLANT_MODULE::FLOOD_OFF(EMC_COOLANT_FLOOD_OFF *cmdIn)
00253 {
00254   if (STATE_MATCH(NEW_COMMAND))
00255     {
00256       floodOff();
00257 
00258       status = RCS_DONE;
00259       stateNext(S0);
00260     }
00261   else if (STATE_MATCH(S0))
00262     {
00263       // idle
00264     }
00265 }

Generated on Sun Dec 2 15:27:35 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001