versadac  1
versadac - Scalable Recorder Firmware
eiot2srdo16.h
1 /*******************************************************************************
2 FILE : eiot2srdo16.h
3 VERSION : $Id$
4 AUTHOR : David Cozens
5 SYSTEM : Diab C for PowerPC under vxWorks
6 DESCRIPTION : This file contains The t2500 module class for representing 16 channel
7  digital output modules run in the fast mode.
8 
9  Modification for 8Hz execution (for Scalable Recorder)
10 
11 *******************************************************************************/
12 #ifndef __EIOT2SRDO16_H
13 #define __EIOT2SRDO16_H
14 
15 #include "prjParams.h"
16 #include "eio.h"
17 #include "eio_t25srm.h"
18 #include "eio_vp.h"
19 #include "eio_tp.h"
20 #include "do16_ssm.h"
21 #include "msg_try.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 enum EioT2500Do16RunStates
28 {
29  EIO_T2500_DO16_STATE_JUST_CREATED,
30  EIO_T2500_DO16_STATE_JUST_CREATED_2,
31  EIO_T2500_DO16_STATE_MODULE_HAS_CHANGED,
32  EIO_T2500_DO16_STATE_START_RUNTIME,
33  EIO_T2500_DO16_STATE_RUNTIME,
34  EIO_T2500_DO16_STATE_DELETE_1,
35  EIO_T2500_DO16_STATE_DELETE_2,
36  EIO_T2500_DO16_STATE_ERROR,
37  EIO_T2500_DO16_STATE_ERROR_2,
38  EIO_T2500_DO16_STATE_SECONDARY_ENABLING,
39  EIO_T2500_DO16_STATE_SECONDARY_ENABLED,
40  EIO_T2500_DO16_STATE_SECONDARY_DISABLING,
41  EIO_T2500_DO16_STATE_SECONDARY_DISABLED
42 };
43 
45 {
46  public:
47  EioT2500Do16Module(unsigned char z_moduleNumber, EioModuleType z_type,
48  unsigned char z_tpoMultiple, EioT2500CycleEnum z_cycleNumber);
49  virtual ~EioT2500Do16Module();
50 
51  protected:
52  virtual void updateFast(unsigned short slot);
53  virtual void update62_5mS();
54  virtual void update125mS();
55  virtual void updateFastBuffers(unsigned int z_thisSlot);
56  virtual void updateBuffers125ms();
57  virtual void cycleComplete125mS();
58  virtual void cycleCompleteFast(unsigned int z_thisSlot);
59 
60  private:
61  MsgRetryCounter m_retry;
62  void configureUpdateMessage(unsigned int slot);
63  void setUpdateMessagesSafe();
64  void updateBuffers(unsigned int z_thisSlot);
65  EioT2500Do16RunStates m_state;
66  DigitalOutput16SpiScheduledMessage *m_fastUpdateMessage[EUROTHERM_SPI_MESSAGE_SCHEDULER_NUMBER_OF_SLOTS];
67  unsigned char * m_slotData;
68  static const int MAX_NUMBER_OF_OUTPUTS_PER_MODULE = 16;
69  static const int MAX_NUMBER_OF_VP_OUTPUTS_PER_MODULE = MAX_NUMBER_OF_OUTPUTS_PER_MODULE/2;
70  EioDoPointConfig m_pointConfig[MAX_NUMBER_OF_OUTPUTS_PER_MODULE];
71  EioDoPointRuntime m_pointRuntime[MAX_NUMBER_OF_OUTPUTS_PER_MODULE];
72  EioValvePositioningOutput m_vpo[MAX_NUMBER_OF_VP_OUTPUTS_PER_MODULE];
73  EioTimeProportioningOutput m_tpo[MAX_NUMBER_OF_OUTPUTS_PER_MODULE];
74  bool m_badConfig[MAX_NUMBER_OF_OUTPUTS_PER_MODULE];
75  EioDOStatus m_status[MAX_NUMBER_OF_OUTPUTS_PER_MODULE];
76  bool m_hadHardwareError[MAX_NUMBER_OF_OUTPUTS_PER_MODULE];
77  bool m_messagesScheduled;
78  bool m_runFast;
79  unsigned char m_tpoMultiple;
80  unsigned char m_ticks_per_tpo;
81  bool *m_valveLower;
82  bool m_healthy; /* not over temp */
83 
84 };
85 
86 #ifdef __cplusplus
87 } /* extern "C" */
88 #endif
89 #endif /*__EIOT2SRDO16_H */
90 
Definition: eiot2srdo16.h:44
Definition: eio_t25srm.h:58
Definition: eio_tp.h:21
Definition: do16_ssm.h:27
Definition: eio_do.h:89
Definition: msg_try.h:21
Definition: eio_do.h:102
Definition: eio_vp.h:25