versadac  1
versadac - Scalable Recorder Firmware
eiot2srdi16f.h
1 /*******************************************************************************
2 FILE : eiot2srdif.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
7  digital input 16 modules in fast mode.
8 
9  Modification for 8Hz execution (for Scalable Recorder)
10 
11 *******************************************************************************/
12 #ifndef __EIOT2SRDI16F_H
13 #define __EIOT2SRDI16F_H
14 
15 #include "prjParams.h"
16 #include "eio.h"
17 #include "eio_t25srm.h"
18 #include "di16_ssm.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 enum Di16FastRunStates
25 {
26  EIO_T2500DI16_FAST_STATE_JUST_CREATED,
27  EIO_T2500DI16_FAST_STATE_JUST_CREATED_2,
28  EIO_T2500DI16_FAST_STATE_MODULE_HAS_CHANGED,
29  EIO_T2500DI16_FAST_STATE_START_RUNTIME,
30  EIO_T2500DI16_FAST_STATE_RUNTIME,
31  EIO_T2500DI16_FAST_STATE_DELETE_1,
32  EIO_T2500DI16_FAST_STATE_DELETE_2,
33  EIO_T2500DI16_FAST_STATE_ERROR,
34  EIO_T2500DI16_FAST_STATE_ERROR_2,
35  EIO_T2500DI16_FAST_STATE_SECONDARY_ENABLING,
36  EIO_T2500DI16_FAST_STATE_SECONDARY_ENABLED,
37  EIO_T2500DI16_FAST_STATE_SECONDARY_DISABLING,
38  EIO_T2500DI16_FAST_STATE_SECONDARY_DISABLED,
39  EIO_T2500DI16_FAST_STATE_BECOMING_PRIMARY,
40 };
41 
43 {
44  public:
45  EioT2500Di16FastModule(unsigned char z_moduleNumber, EioModuleType z_type, EioT2500CycleEnum z_expectedCycleNumber);
46  virtual ~EioT2500Di16FastModule();
47 
48  protected:
49  virtual void updateFast(unsigned short slot);
50  virtual void update62_5mS();
51  virtual void update125mS();
52  virtual void updateFastBuffers(unsigned int z_thisSlot);
53 
54  private:
55  void processUpdate(unsigned short z_thisSlot);
56  void clearTransacted(unsigned short z_thisSlot);
57  Di16FastRunStates m_state;
58  DigitalInput16SpiScheduledMessage *m_updateMessages[EUROTHERM_SPI_MESSAGE_SCHEDULER_NUMBER_OF_SLOTS];
59  static const int MAX_NUMBER_OF_INPUTS_PER_MODULE = 16;
60  EioUint16 m_debounceTimes[MAX_NUMBER_OF_INPUTS_PER_MODULE];
61  EioUint16 m_debounceCount[MAX_NUMBER_OF_INPUTS_PER_MODULE];
62  EioUint16 m_rawData;
63  EioUint16 m_debounceData;
64  EioUint16 m_changeDetected;
65  EioUint16 m_changedData;
66  EioUint16 m_currentCount[MAX_NUMBER_OF_INPUTS_PER_MODULE];
67  MsgRetryCounter m_retry;
68  EioDIStatus m_status;
69  bool m_messagesScheduled;
70 };
71 
72 #ifdef __cplusplus
73 } /* extern "C" */
74 #endif
75 #endif /*__EIOT2SRDI16F_H */
76 
Definition: eio_t25srm.h:58
Definition: di16_ssm.h:41
Definition: eiot2srdi16f.h:42
Definition: msg_try.h:21