versadac  1
versadac - Scalable Recorder Firmware
mc_data.h
1 /*******************************************************************************
2 FILE : mc_data.h
3 VERSION : $Id: mc_data.h 4938 2006-10-10 14:20:18Z martinto $
4 SYSTEM : __GNUC__ on vxworks
5 DESCRIPTION : Master comms base data class - see mc_dataRead and mc_dataWrite
6 *******************************************************************************/
7 
8 #ifndef __MC_DATA_H
9 #define __MC_DATA_H
10 #include "ENUM_MCStatus.h"
11 #include "ENUM_MCFunctionCodes.h"
12 #include "ENUM_MCDataTypes.h"
13 #include "semLib.h"
14 #include <stdio.h>
15 #include "stdtypes.h"
16 
17 class mc_data
18 {
19  friend class mc_dataList;
20  friend class mc_dataWriteMerge;
21  friend class mc_dataReadMerge;
22  friend class mc_deviceRunnable;
23 
24  protected:
25  mc_data(ENUM_MCFunctionCodes z_function, uint16 z_numberOfTxBytes, uint16 z_numberOfRxBytes);
26  // z_ipAddressOrName - only the pointer is held - the address data is not copied
27  void setIpAddress(char* z_ipAddressOrName);
28  void setModbusAddress(uint8 z_modbusAddress);
29  virtual void setStatus(ENUM_MCStatus z_status);
30  uint8 *getRxDataPtr();
31  uint8 *getTxDataPtr();
32  virtual bool removeFromList(mc_data *z_data);
33  virtual mc_data *merge(uint16 z_maxBlockSize, uint16 z_numberOfBoundaries, uint16 *z_boundaries);
34  virtual mc_data *demerge();
35 
36  public:
37 
38  virtual ~mc_data();
39 
40  void lock();
41  void unlock();
42  ENUM_MCStatus getStatus();
43  virtual void printTo(FILE*);
44  virtual bool isInstanceOfDataRead();
45  virtual bool isInstanceOfDataWrite();
46  virtual bool schedulesBefore(mc_data *z_data);
47  char * getIpAddress();
48  uint8 getModbusAddress();
49  ENUM_MCStatus transact(int z_fd, uint8 z_modbusAddress, uint32 z_timeout, FILE*z_file, ENUM_MCFunctionCodes z_function, char *z_hostname);
50  ENUM_MCFunctionCodes getFunction(){return (ENUM_MCFunctionCodes)m_txData[MC_DATA_OFFSET_FUNC];};
51  void setDeleteSafe(bool z_deleteSafe){m_deleteSafe = z_deleteSafe;};
52  bool getDeleteSafe(){return m_deleteSafe;};
53  void setUnregister(){m_unregister = TRUE;};
54  bool getUnregister(){return m_unregister;};
55  void setEnable(bool z_enable){m_enable = z_enable;};
56 
57  private:
58  mc_dataList *m_list;
59  char* m_ipAddress;
60  uint8 m_modbusAddress;
61  SEM_ID m_semaphore;
62  bool m_deleteSafe;
63  bool m_unregister;
64  bool m_enable;
65  ENUM_MCStatus m_status;
66  ENUM_MCStatus m_publicStatus;
67  static uint16 m_tid;
68 
69  protected:
70  virtual bool getEnable();
71  mc_data *m_next;
72  uint8 m_function;
73  uint16 m_numberOfTxBytes;
74  uint16 m_numberOfRxBytes;
75  sint16 m_lastNumberOfRxBytes;
76  uint8 *m_txData;
77  uint8 *m_rxData;
78  static const uint8 MC_DATA_OFFSET_TID_1 = 0;
79  static const uint8 MC_DATA_OFFSET_TID_2 = 1;
80  static const uint8 MC_DATA_OFFSET_PID_1 = 2;
81  static const uint8 MC_DATA_OFFSET_PID_2 = 3;
82  static const uint8 MC_DATA_OFFSET_LEN_1 = 4;
83  static const uint8 MC_DATA_OFFSET_LEN_2 = 5;
84  static const uint8 MC_DATA_OFFSET_UID = 6;
85  static const uint8 MC_DATA_OFFSET_FUNC = 7;
86  static const uint8 MC_DATA_OFFSET_HEADER_SIZE = 8;
87 
88 };
89 
90 #endif
Definition: mc_data.h:17
Definition: mc_dataWriteMerge.h:12
Definition: mc_dataList.h:20
Definition: mc_dataReadMerge.h:12
Definition: mc_deviceRunnable.h:29