Skip to content

Commit bc53367

Browse files
committed
Cleanup
1 parent 5cbe025 commit bc53367

1 file changed

Lines changed: 18 additions & 27 deletions

File tree

src/VRDriver.cpp

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,6 @@ struct DeviceData {
5151
bool sent_add_message { false };
5252
};
5353

54-
static const std::unordered_map<std::string, TrackerRole> CONTROLLER_TYPE_TO_POSITION{
55-
{"vive_tracker_chest", TrackerRole::CHEST},
56-
{"vive_tracker_left_shoulder", TrackerRole::LEFT_SHOULDER},
57-
{"vive_tracker_right_shoulder", TrackerRole::RIGHT_SHOULDER},
58-
{"vive_tracker_left_elbow", TrackerRole::LEFT_ELBOW},
59-
{"vive_tracker_right_elbow", TrackerRole::RIGHT_ELBOW},
60-
{"vive_tracker_waist", TrackerRole::WAIST},
61-
{"vive_tracker_left_knee", TrackerRole::LEFT_KNEE},
62-
{"vive_tracker_right_knee", TrackerRole::RIGHT_KNEE},
63-
{"vive_tracker_left_foot", TrackerRole::LEFT_FOOT},
64-
{"vive_tracker_right_foot", TrackerRole::RIGHT_FOOT},
65-
};
66-
6754
TrackerRole SlimeVRDriver::VRDriver::GetRoleForDevice(vr::TrackedDeviceIndex_t index) const {
6855
vr::PropertyContainerHandle_t container = vr::VRProperties()->TrackedDeviceToPropertyContainer(index);
6956
auto device_class = vr::VRProperties()->GetInt32Property(container, vr::Prop_DeviceClass_Int32);
@@ -108,7 +95,7 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
10895
logger_->Log("Pose request thread started");
10996
while (!exiting_pose_request_thread_) {
11097
if (!bridge_->IsConnected()) {
111-
// If bridge not connected, assume we need to resend hmd tracker add message
98+
// If bridge not connected, assume we need to resend device add messages
11299
for (auto &device : devices) {
113100
device.sent_add_message = false;
114101
device.status = messages::TrackerStatus_Status_DISCONNECTED;
@@ -119,7 +106,6 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
119106

120107
vr::PropertyContainerHandle_t hmd_prop_container = vr::VRProperties()->TrackedDeviceToPropertyContainer(vr::k_unTrackedDeviceIndex_Hmd);
121108
vr::TrackedDevicePose_t poses[vr::k_unMaxTrackedDeviceCount]{};
122-
vr::TrackedDevicePose_t &hmd_pose = poses[vr::k_unTrackedDeviceIndex_Hmd];
123109
vr::VRServerDriverHost()->GetRawTrackedDevicePoses(0.0f, poses, std::size(poses));
124110

125111
vr::ETrackedPropertyError universe_error;
@@ -160,12 +146,14 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
160146
vr::PropertyContainerHandle_t prop_container = vr::VRProperties()->TrackedDeviceToPropertyContainer(index);
161147
messages::ProtobufMessage* message = google::protobuf::Arena::CreateMessage<messages::ProtobufMessage>(&arena_);
162148

149+
// Don't feed data about our own trackers, or Standable's fake ones.
163150
{
164151
vr::ETrackedPropertyError error{};
165152
auto driver_name = vr::VRProperties()->GetStringProperty(prop_container, vr::Prop_TrackingSystemName_String, &error);
166153
if (error != vr::TrackedProp_Success) {
167154
if (error != vr::TrackedProp_InvalidDevice && error != vr::TrackedProp_UnknownProperty)
168155
logger_->Log("Failed to get Prop_TrackingSystemName_String for device {}: {}", index, vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
156+
169157
continue;
170158
}
171159
if (driver_name == "slimevr" || driver_name == "standable") continue;
@@ -185,18 +173,22 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
185173
if (error != vr::ETrackedPropertyError::TrackedProp_Success) {
186174
logger_->Log("Failed to get device {}'s Prop_SerialNumber_String: {}", index, vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
187175
}
176+
if (serial.empty())
177+
serial = std::format("Device {}", index);
188178

189179
auto name = vr::VRProperties()->GetStringProperty(prop_container, vr::Prop_ModelNumber_String, &error);
190180
if (error != vr::ETrackedPropertyError::TrackedProp_Success) {
191181
logger_->Log("Failed to get device {}'s Prop_ModelNumber_String: {}", index, vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
192182
}
183+
if (name.empty())
184+
name = std::format("Device {}", index);
193185

194186
auto manufacturer = vr::VRProperties()->GetStringProperty(prop_container, vr::Prop_ManufacturerName_String, &error);
195187
if (error != vr::ETrackedPropertyError::TrackedProp_Success) {
196188
logger_->Log("Failed to get device {}'s Prop_ManufacturerName_String: {}", index, vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
197189
}
198-
199-
logger_->Log("Props for device {}: serial={}, model={}, manufacturer={}", index, serial, name, manufacturer);
190+
if (manufacturer.empty())
191+
name = "OpenVR";
200192

201193
TrackerRole role = GetRoleForDevice(index);
202194

@@ -205,9 +197,9 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
205197
message->set_allocated_tracker_added(tracker_added);
206198
tracker_added->set_tracker_id(index);
207199
tracker_added->set_tracker_role(role);
208-
tracker_added->set_tracker_serial(serial.empty() ? std::format("Device {}", index) : serial);
209-
tracker_added->set_tracker_name(name.empty() ? std::format("Device {}", index) : name);
210-
tracker_added->set_manufacturer(manufacturer.empty() ? "OpenVR" : manufacturer);
200+
tracker_added->set_tracker_serial(serial);
201+
tracker_added->set_tracker_name(name);
202+
tracker_added->set_manufacturer(manufacturer);
211203
bridge_->SendBridgeMessage(*message);
212204

213205
device.sent_add_message = true;
@@ -276,13 +268,12 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
276268

277269
auto now = std::chrono::steady_clock::now();
278270
if (std::chrono::duration_cast<std::chrono::milliseconds>(now - battery_sent_at_).count() > 100) {
279-
vr::ETrackedPropertyError err;
280-
if (vr::VRProperties()->GetBoolProperty(prop_container, vr::Prop_DeviceProvidesBatteryStatus_Bool, &err)) {
281-
messages::Battery* hmdBattery = google::protobuf::Arena::CreateMessage<messages::Battery>(&arena_);
282-
message->set_allocated_battery(hmdBattery);
283-
hmdBattery->set_tracker_id(index);
284-
hmdBattery->set_battery_level(vr::VRProperties()->GetFloatProperty(prop_container, vr::Prop_DeviceBatteryPercentage_Float, &err) * 100);
285-
hmdBattery->set_is_charging(vr::VRProperties()->GetBoolProperty(prop_container, vr::Prop_DeviceIsCharging_Bool, &err));
271+
if (vr::VRProperties()->GetBoolProperty(prop_container, vr::Prop_DeviceProvidesBatteryStatus_Bool)) {
272+
messages::Battery* battery = google::protobuf::Arena::CreateMessage<messages::Battery>(&arena_);
273+
message->set_allocated_battery(battery);
274+
battery->set_tracker_id(index);
275+
battery->set_battery_level(vr::VRProperties()->GetFloatProperty(prop_container, vr::Prop_DeviceBatteryPercentage_Float) * 100.f);
276+
battery->set_is_charging(vr::VRProperties()->GetBoolProperty(prop_container, vr::Prop_DeviceIsCharging_Bool));
286277
bridge_->SendBridgeMessage(*message);
287278
}
288279
battery_sent_at_ = now;

0 commit comments

Comments
 (0)