std::string AstraDriver::resolveDeviceURI(const std::string& device_id) throw(AstraException) { // retrieve available device URIs, they look like this: "1d27/0601@1/5" // which is <vendor ID>/<product ID>@<bus number>/<device number> boost::shared_ptr<std::vector<std::string> > available_device_URIs = device_manager_->getConnectedDeviceURIs(); //for tes #if 0 for (size_t i = 0; i < available_device_URIs->size(); ++i) { std::string s = (*available_device_URIs)[i]; ROS_WARN("------------id %d, available_device_uri is %s-----------", i, s.c_str()); } #endif //end // look for '#<number>' format if (device_id.size() > 1 && device_id[0] == '#') { std::istringstream device_number_str(device_id.substr(1)); int device_number; device_number_str >> device_number; int device_index = device_number - 1; // #1 refers to first device if (device_index >= available_device_URIs->size() || device_index < 0) { THROW_OPENNI_EXCEPTION( "Invalid device number %i, there are %zu devices connected.", device_number, available_device_URIs->size()); } else { return available_device_URIs->at(device_index); } }
std::string OpenNI2Driver::resolveDeviceURI(const std::string& device_id) throw(OpenNI2Exception) { // retrieve available device URIs, they look like this: "1d27/0601@1/5" // which is <vendor ID>/<product ID>@<bus number>/<device number> boost::shared_ptr<std::vector<std::string> > available_device_URIs = device_manager_->getConnectedDeviceURIs(); // look for '#<number>' format if (device_id.size() > 1 && device_id[0] == '#') { std::istringstream device_number_str(device_id.substr(1)); int device_number; device_number_str >> device_number; int device_index = device_number - 1; // #1 refers to first device if (device_index >= available_device_URIs->size() || device_index < 0) { THROW_OPENNI_EXCEPTION( "Invalid device number %i, there are %zu devices connected.", device_number, available_device_URIs->size()); } else { return available_device_URIs->at(device_index); } }
std::string OpenNI2Driver::resolveDeviceURI(const std::string& device_id) throw(OpenNI2Exception) { std::string device_URI; boost::shared_ptr<std::vector<std::string> > available_device_URIs = device_manager_->getConnectedDeviceURIs(); // look for '#<number>' format if (device_id_.size() > 1 && device_id_[0] == '#') { std::istringstream device_number_str(device_id_.substr(1)); int device_number; device_number_str >> device_number; int device_index = device_number - 1; // #1 refers to first device if (device_index >= available_device_URIs->size() || device_index < 0) { THROW_OPENNI_EXCEPTION( "Invalid device number %i, there are %zu devices connected.", device_number, available_device_URIs->size()); } else { return available_device_URIs->at(device_index); } }