Serveur OPCUA générique
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Macros
cta_slc_device.h
Aller à la documentation de ce fichier.
1 /******************************************************************************
2  **
3  **
4  ** Copyright (C) LAPP. CNRS
5  **
6  ** Project: C++ OPCUA generique
7  **
8  ** Description:
9  **
10  ** Author : Panazol Jean Luc
11  ******************************************************************************/
12 
13 #ifndef CTA_SLC_DEVICE_H
14 #define CTA_SLC_DEVICE_H
15 
16 #include <list>
17 #include <string>
18 #include <libxml/parser.h>
19 #include <libxml/xpath.h>
20 #include "cta_ua_nodemanager.h"
22 #include <vector>
23 
24 #define SOCKET_TEMPORAIRE 0
25 #define SOCKET_PERMANENT 1
26 #define CLIENT 0
27 #define SERVER 1
28 #define SYNCHRONE 0
29 #define ASYNCHRONE 1
30 
31 typedef std::map<std::string, std::string> tableauDP_t;
32 
33 namespace CTA_Slc_Dict {
34 class HardwareConfig;
35 class Trame;
36 class FrameStructure;
37 class FinateStateMachineConfig;
38 }
39 class PluginsLoader;
40 class DataSenderReceiver;
41 
42 namespace CTA_Slc_Dict {
43 
44 class Device: public ElementBase {
45 public:
46  Device() :
47  ElementBase() {
48  m_pluginsLoader = NULL;
49  }
50  ;
51  ~Device();
52  virtual void parse()=0;
53  virtual void init()=0;
54  virtual void createNodes()=0;
55  void afterAnalyse();
56  virtual int find(std::string ip, std::string *val_ip, std::string id,
57  std::string *val_id)=0;
58 public:
59  std::string m_interface;
62  std::list<HardwareConfig*> m_hardwareConfigList;
63 
66  std::string m_pluginClass;
69  std::string m_pluginFile;
70 };
71 
72 class SimpleDevice: public Device {
73 public:
74  SimpleDevice(xmlNodePtr noeud, std::string parent, int tempJL,
75  std::string dataIdDescriptorRef);
76  ~SimpleDevice();
77  void createNodes();
78  int find(std::string ip, std::string *val_ip, std::string id,
79  std::string *val_id);
80  void getTabId(tableauDP_t *tab, std::string *id);
81  void getName(std::string *name);
82 
83  void init();
84  void parse();
85 private:
86  void createFSM();
87  std::list<Trame*> m_trame;
88  std::map<std::string, std::string> m_tableauDp;
89  std::string m_readIdCollector;
90 
91  CTA_UA::ControllerObject *pControler;
92  std::list<FrameStructure*> m_frameStructure;
93  std::list<Method*> m_method;
94  int m_tempJL; // juste pour les tests a virer ensuite
95  Instruction_set *m_instruction_set;
96  std::list<FinateStateMachineConfig*> m_FSM;
97 
98 };
99 
100 class CompoundDevice: public Device {
101 public:
102  CompoundDevice(xmlNodePtr noeud, std::string parent,
103  std::string dataIdDescriptorRef);
104  ~CompoundDevice();
105 
106  void createNodes();
107  int find(std::string ip, std::string *val_ip, std::string id,
108  std::string *val_id);
109  void init();
110  void parse();
111 private:
112  std::list<FrameStructure*> m_frameStructure;
113  std::map<std::string, tableauDP_t> m_tableauDp2;
114 
115 };
116 
117 } // end namespace
118 #endif // CTA_SLC_DEVICE_H