Choreonoid  1.5
BridgeConf.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
3  * All rights reserved. This program is made available under the terms of the
4  * Eclipse Public License v1.0 which accompanies this distribution, and is
5  * available at http://www.eclipse.org/legal/epl-v10.html
6  * Contributors:
7  * National Institute of Advanced Industrial Science and Technology (AIST)
8  * General Robotix Inc.
9  */
15 #ifndef OPENHRP_BRIDGE_CONF_H_INCLUDED
16 #define OPENHRP_BRIDGE_CONF_H_INCLUDED
17 
18 #if ( defined ( WIN32 ) || defined ( _WIN32 ) || defined(__WIN32__) || defined(__NT__) )
19 #define SUFFIX_SHARED_EXT ".dll"
20 #define SUFFIX_EXE_EXT ".exe"
21 #elif defined(__APPLE__)
22 #define SUFFIX_SHARED_EXT ".dylib"
23 #define SUFFIX_EXE_EXT ".app"
24 #else
25 #define SUFFIX_SHARED_EXT ".so"
26 #define SUFFIX_EXE_EXT ""
27 #endif
28 
29 #include <map>
30 #include <list>
31 #include <vector>
32 #include <string>
33 #include <boost/program_options.hpp>
34 #include <rtm/Manager.h>
35 #include <rtm/RTObject.h>
36 
37 enum DataTypeId {
58 };
59 
60 struct PortInfo {
61  std::string portName;
63  std::vector<std::string> dataOwnerNames; // link name or sensor name
64  int dataOwnerId; // sensor id
65  double stepTime;
66 };
67 
68 typedef std::map<std::string, PortInfo> PortInfoMap;
69 
70 
72  std::string InstanceName[2];
73  std::string PortName[2];
74  //std::string robotPortName;
75  //std::string controllerInstanceName;
76  //std::string controllerPortName;
77 };
78 typedef std::vector<PortConnection> PortConnectionList;
79 
80 
81 struct ModuleInfo {
82  std::string fileName;
83  std::string componentName;
84  std::string initFuncName;
85  bool isLoaded;
86  RTC::RtcBase* rtcServant;
87 };
88 typedef std::list<ModuleInfo> ModuleInfoList;
89 
90 typedef std::map<std::string, double> TimeRateMap;
91 
93 {
94 
95 public:
96  BridgeConf();
97  ~BridgeConf();
98 
99  bool loadConfigFile(const char* confFileName);
100  bool isReady() { return isReady_; }
101 
102  const char* getOpenHRPNameServerIdentifier();
103  const char* getControllerName();
104  const char* getVirtualRobotRtcTypeName();
105 
106  void setupModules();
107 
108  typedef std::map<std::string, DataTypeId> LabelToDataTypeIdMap;
109  LabelToDataTypeIdMap labelToDataTypeIdMap;
110 
113 
115 
117 
119 
120 private:
121 
122  boost::program_options::variables_map vmap;
123  boost::program_options::options_description options;
124  boost::program_options::options_description commandLineOptions;
125 
126  bool isReady_;
127  bool isProcessingConfigFile;
128 
129  std::string virtualRobotRtcTypeName;
130  std::string controllerName;
131  std::string nameServerIdentifier;
132 
133  void initOptionsDescription();
134  void initLabelToDataTypeMap();
135 
136  void parseCommandLineOptions(int argc, char* argv[]);
137  void parseOptions();
138  void setPortInfos(const char* optionLabel, PortInfoMap& portInfos);
139  void addPortConnection(const std::string& value);
140 
141  void setPreLoadModuleInfo();
142  void addModuleInfo(const std::string& value);
143  void addTimeRateInfo(const std::string& value);
144 
145  void extractParameters(const std::string& str, std::vector<std::string>& result, const char delimiter = ':');
146  std::string expandEnvironmentVariables(const std::string& str);
147 };
148 
149 
150 #endif
Definition: BridgeConf.h:45
Definition: BridgeConf.h:55
Definition: BridgeConf.h:54
PortInfoMap inPortInfos
Definition: BridgeConf.h:112
Definition: BridgeConf.h:50
Definition: BridgeConf.h:56
Definition: BridgeConf.h:43
TimeRateMap timeRateMap
Definition: BridgeConf.h:118
Definition: BridgeConf.h:81
PortInfoMap outPortInfos
Definition: BridgeConf.h:111
std::string portName
Definition: BridgeConf.h:61
Definition: BridgeConf.h:53
PortConnectionList portConnections
Definition: BridgeConf.h:116
Definition: BridgeConf.h:51
DataTypeId
Definition: BridgeConf.h:37
Definition: BridgeConf.h:39
LabelToDataTypeIdMap labelToDataTypeIdMap
Definition: BridgeConf.h:109
std::string componentName
Definition: BridgeConf.h:83
std::map< std::string, DataTypeId > LabelToDataTypeIdMap
Definition: BridgeConf.h:108
Definition: BridgeConf.h:47
RTC::RtcBase * rtcServant
Definition: BridgeConf.h:86
std::string str(const Vector3 &v)
Definition: EigenUtil.cpp:90
DataTypeId dataTypeId
Definition: BridgeConf.h:62
Definition: BridgeConf.h:48
std::string fileName
Definition: BridgeConf.h:82
Definition: BridgeConf.h:46
Definition: BridgeConf.h:44
Definition: BridgeConf.h:41
std::map< std::string, PortInfo > PortInfoMap
Definition: BridgeConf.h:68
std::vector< std::string > dataOwnerNames
Definition: BridgeConf.h:63
Definition: BridgeConf.h:92
Definition: BridgeConf.h:40
bool isLoaded
Definition: BridgeConf.h:85
Definition: BridgeConf.h:42
std::vector< PortConnection > PortConnectionList
Definition: BridgeConf.h:78
Definition: BridgeConf.h:49
std::map< std::string, double > TimeRateMap
Definition: BridgeConf.h:90
bool isReady()
Definition: BridgeConf.h:100
Definition: BridgeConf.h:71
std::list< ModuleInfo > ModuleInfoList
Definition: BridgeConf.h:88
Definition: BridgeConf.h:57
double stepTime
Definition: BridgeConf.h:65
Definition: BridgeConf.h:38
Definition: BridgeConf.h:60
std::string initFuncName
Definition: BridgeConf.h:84
Definition: BridgeConf.h:52
ModuleInfoList moduleInfoList
Definition: BridgeConf.h:114
int dataOwnerId
Definition: BridgeConf.h:64