versadac  1
versadac - Scalable Recorder Firmware
eiot2srdif.h
1 /*******************************************************************************
2 FILE : eiot2srdif.h
3 VERSION : $Id$
4 AUTHOR : Richard Hine
5 SYSTEM : Diab C for PowerPC under vxWorks
6 DESCRIPTION : This file contains The t2500 module class for representing fast
7  digital input modules.
8 
9  Modification for 8Hz execution. (for Scalable Recorder)
10 
11 *******************************************************************************/
12 #ifndef __EIOT2SRDIF_H
13 #define __EIOT2SRDIF_H
14 
15 #include "prjParams.h"
16 #include "eio.h"
17 #include "eio_t25srm.h"
18 #include "di_s_ssm.h"
19 #include "di_f_ssm.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 enum DiFastRunStates
26 {
27  EIO_T2500DIFAST_STATE_JUST_CREATED,
28  EIO_T2500DIFAST_STATE_JUST_CREATED_2,
29  EIO_T2500DIFAST_STATE_MODULE_HAS_CHANGED,
30  EIO_T2500DIFAST_STATE_START_RUNTIME,
31  EIO_T2500DIFAST_STATE_START_RUNTIME_2,
32  EIO_T2500DIFAST_STATE_RUNTIME,
33  EIO_T2500DIFAST_STATE_DELETE_1,
34  EIO_T2500DIFAST_STATE_DELETE_2,
35  EIO_T2500DIFAST_STATE_ERROR,
36  EIO_T2500DIFAST_STATE_ERROR_2,
37  EIO_T2500DIFAST_STATE_SECONDARY_ENABLING,
38  EIO_T2500DIFAST_STATE_SECONDARY_ENABLED,
39  EIO_T2500DIFAST_STATE_SECONDARY_DISABLING,
40  EIO_T2500DIFAST_STATE_SECONDARY_DISABLED,
41  EIO_T2500DIFAST_STATE_BECOMING_PRIMARY,
42 };
43 
45 {
46  public:
47  EioT2500DiFastModule(unsigned char z_moduleNumber, EioModuleType z_type, EioT2500CycleEnum z_expectedCycleNumber);
48  virtual ~EioT2500DiFastModule();
49 
50  protected:
51  virtual void updateFast(unsigned short slot);
52  virtual void update62_5mS();
53  virtual void update125mS();
54  virtual void updateFastBuffers(unsigned int z_thisSlot);
55 
56  private:
57  void processUpdate(unsigned short z_thisSlot);
58  void clearTransacted(unsigned short z_thisSlot);
59  DiFastRunStates m_state;
60  DigitalInputSlowSpiScheduledMessage *m_setFastModeMessage; // this message is used to change from slot to fast mode
61  DigitalInputFastSpiScheduledMessage *m_updateMessages[EUROTHERM_SPI_MESSAGE_SCHEDULER_NUMBER_OF_SLOTS];
62  static const int MAX_NUMBER_OF_INPUTS_PER_MODULE = 8;
63  EioUint16 m_debounceTimes[MAX_NUMBER_OF_INPUTS_PER_MODULE];
64  EioUint16 m_debounceCount[MAX_NUMBER_OF_INPUTS_PER_MODULE];
65  EioUint8 m_rawData;
66  EioUint8 m_debounceData;
67  EioUint8 m_changeDetected;
68  EioUint8 m_changedData;
69  EioUint16 m_currentCount[MAX_NUMBER_OF_INPUTS_PER_MODULE];
70  unsigned char *m_buff;
71  MsgRetryCounter m_retry;
72  EioDIStatus m_status[MAX_NUMBER_OF_INPUTS_PER_MODULE];
73  bool m_messagesScheduled;
74 };
75 
76 #ifdef __cplusplus
77 } /* extern "C" */
78 #endif
79 #endif /* __EIOT2SRDIF_H */
80 
Definition: eio_t25srm.h:58
Definition: di_f_ssm.h:21
Definition: eiot2srdif.h:44
Definition: di_s_ssm.h:23
Definition: msg_try.h:21