denso_controller_rc8.cpp
Go to the documentation of this file.
1 
26 
27 #define BCAP_CTRL_CONNECT_ARGS (4)
28 
29 namespace denso_robot_core {
30 
31 DensoControllerRC8::DensoControllerRC8(const std::string& name, const int* mode)
32  : DensoController(name, mode)
33 {
34 
35 }
36 
38 {
39 
40 }
41 
43 {
44  static const std::string CTRL_CONNECT_OPTION[BCAP_CTRL_CONNECT_ARGS] =
45  {"", "CaoProv.DENSO.VRC", "localhost", ""};
46 
47  HRESULT hr = E_FAIL;
48  int srvs, argc;
49 
50  for(srvs = DensoBase::SRV_MIN; srvs <= DensoBase::SRV_MAX; srvs++) {
51  std::stringstream ss;
52  std::string strTmp;
53  VARIANT_Ptr vntRet(new VARIANT());
54  VARIANT_Vec vntArgs;
55 
56  VariantInit(vntRet.get());
57 
58  for(argc = 0; argc < BCAP_CTRL_CONNECT_ARGS; argc++) {
59  VARIANT_Ptr vntTmp(new VARIANT());
60  VariantInit(vntTmp.get());
61 
62  vntTmp->vt = VT_BSTR;
63 
64  if(argc == 0) {
65  strTmp = "";
66  if(m_name != "") {
67  ss << ros::this_node::getNamespace() << m_name << srvs;
68  strTmp = ss.str();
69  }
70  } else {
71  strTmp = CTRL_CONNECT_OPTION[argc];
72  }
73 
74  vntTmp->bstrVal = ConvertStringToBSTR(strTmp);
75 
76  vntArgs.push_back(*vntTmp.get());
77  }
78 
79  hr = m_vecService[srvs]->ExecFunction(ID_CONTROLLER_CONNECT, vntArgs, vntRet);
80  if(FAILED(hr)) break;
81 
82  m_vecHandle.push_back(vntRet->ulVal);
83  }
84 
85  return hr;
86 }
87 
89 {
90  int objs;
91  HRESULT hr;
92 
93  Name_Vec vecName;
95  if(SUCCEEDED(hr)) {
96  for(objs = 0; objs < vecName.size(); objs++) {
97  Handle_Vec vecHandle;
99  ID_CONTROLLER_GETROBOT, vecName[objs], vecHandle);
100  if(FAILED(hr)) break;
101 
102  DensoRobot_Ptr rob(new DensoRobotRC8(this,
103  m_vecService, vecHandle, vecName[objs], m_mode));
104  hr = rob->InitializeBCAP(xmlElem);
105  if(FAILED(hr)) break;
106 
107  m_vecRobot.push_back(rob);
108  }
109  }
110 
111  return hr;
112 }
113 
114 }
#define ID_CONTROLLER_GETROBOTNAMES
#define BCAP_CTRL_CONNECT_ARGS
#define ID_CONTROLLER_CONNECT
std::vector< VARIANT, VariantAllocator< VARIANT > > VARIANT_Vec
std::vector< uint32_t > Handle_Vec
Definition: denso_base.h:67
HRESULT GetObjectNames(int32_t func_id, Name_Vec &vecName)
Definition: denso_base.cpp:194
#define FAILED(hr)
VT_BSTR
void VariantInit(VARIANT *pvarg)
#define E_FAIL
DensoControllerRC8(const std::string &name, const int *mode)
int32_t HRESULT
ROSCPP_DECL const std::string & getNamespace()
boost::interprocess::unique_ptr< VARIANT, variant_deleter > VARIANT_Ptr
static BSTR ConvertStringToBSTR(const std::string &str)
Definition: denso_base.cpp:48
#define SUCCEEDED(hr)
HRESULT AddRobot(XMLElement *xmlElem)
std::vector< std::string > Name_Vec
Definition: denso_base.h:66
#define ID_CONTROLLER_GETROBOT
HRESULT AddObject(int32_t get_id, const std::string &name, Handle_Vec &vecHandle)
Definition: denso_base.cpp:150


denso_robot_core
Author(s): DENSO WAVE INCORPORATED
autogenerated on Mon Jun 10 2019 13:12:27