versadac  1
versadac - Scalable Recorder Firmware
eiot2srdi16s.h
1 /*******************************************************************************
2 FILE : eiot2srdi16s.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 driven at 125ms.
8 
9  Modification for 8Hz execution. (for Scalable Recorder)
10 
11 *******************************************************************************/
12 #ifndef __EIOT2SRDI16S_H
13 #define __EIOT2SRDI16S_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 Di16SlowRunStates
25 {
26  EIO_T2500DI16_SLOW_STATE_MODULE_HAS_CHANGED,
27  EIO_T2500DI16_SLOW_STATE_START_RUNTIME,
28  EIO_T2500DI16_SLOW_STATE_RUNTIME,
29  EIO_T2500DI16_SLOW_STATE_DELETE,
30  EIO_T2500DI16_SLOW_STATE_ERROR,
31  EIO_T2500DI16_SLOW_STATE_SECONDARY_ENABLING,
32  EIO_T2500DI16_SLOW_STATE_SECONDARY_ENABLED,
33  EIO_T2500DI16_SLOW_STATE_SECONDARY_DISABLING,
34  EIO_T2500DI16_SLOW_STATE_SECONDARY_DISABLED,
35  EIO_T2500DI16_SLOW_STATE_BECOMING_PRIMARY,
36 };
37 
39 {
40  public:
41  EioT2500Di16SlowModule(unsigned char z_moduleNumber, EioModuleType z_type, EioT2500CycleEnum z_expectedCycleNumber);
42  virtual ~EioT2500Di16SlowModule();
43 
44  protected:
45  virtual void update62_5mS();
46  virtual void update125mS();
47  virtual void updateBuffers125ms();
48 
49  private:
50  void processUpdates(unsigned short z_thisSlot);
51  Di16SlowRunStates m_state;
52  DigitalInput16SpiScheduledMessage *m_updateMessages[EUROTHERM_SPI_MESSAGE_SCHEDULER_NUMBER_OF_SLOTS];
53  static const int MAX_NUMBER_OF_INPUTS_PER_MODULE = 16;
54  EioUint16 m_debounceTimes[MAX_NUMBER_OF_INPUTS_PER_MODULE];
55  EioUint16 m_debounceCount[MAX_NUMBER_OF_INPUTS_PER_MODULE];
56  EioUint16 m_rawData;
57  EioUint16 m_debounceData;
58  EioUint16 m_changeDetected;
59  EioUint16 m_changedData;
60  EioUint16 m_currentCount[MAX_NUMBER_OF_INPUTS_PER_MODULE];
61  EioUint8 m_firstSlot125ms;
62  EioUint8 m_firstSlot62_5ms;
63  MsgRetryCounter m_retry;
64  EioDIStatus m_status;
65  bool m_messagesScheduled;
66 };
67 
68 #ifdef __cplusplus
69 } /* extern "C" */
70 #endif
71 #endif /*__EIOT2SRDI16S_H */
72 
Definition: eio_t25srm.h:58
Definition: di16_ssm.h:41
Definition: msg_try.h:21
Definition: eiot2srdi16s.h:38