Skip to content

Commit 6d4f032

Browse files
authored
Send real serial number, model number, and manufacturer to server (#67)
* Send HMD serial and model number * Send HMD manufacturer name
1 parent 87a3c5f commit 6d4f032

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

src/VRDriver.cpp

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,39 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
5656

5757
messages::ProtobufMessage* message = google::protobuf::Arena::CreateMessage<messages::ProtobufMessage>(&arena_);
5858

59-
if (!sent_hmd_add_message_) {
59+
vr::TrackedDevicePose_t hmd_pose;
60+
vr::VRServerDriverHost()->GetRawTrackedDevicePoses(0.0f, &hmd_pose, 1);
61+
62+
vr::PropertyContainerHandle_t hmd_prop_container =
63+
vr::VRProperties()->TrackedDeviceToPropertyContainer(vr::k_unTrackedDeviceIndex_Hmd);
64+
65+
if (!sent_hmd_add_message_ && hmd_pose.bDeviceIsConnected) {
66+
vr::ETrackedPropertyError error{};
67+
auto serial = vr::VRProperties()->GetStringProperty(hmd_prop_container, vr::Prop_SerialNumber_String, &error);
68+
if (error != vr::ETrackedPropertyError::TrackedProp_Success) {
69+
logger_->Log("Failed to get HMD's Prop_SerialNumber_String: {}", vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
70+
}
71+
72+
auto name = vr::VRProperties()->GetStringProperty(hmd_prop_container, vr::Prop_ModelNumber_String, &error);
73+
if (error != vr::ETrackedPropertyError::TrackedProp_Success) {
74+
logger_->Log("Failed to get HMD's Prop_ModelNumber_String: {}", vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
75+
}
76+
77+
auto manufacturer = vr::VRProperties()->GetStringProperty(hmd_prop_container, vr::Prop_ManufacturerName_String, &error);
78+
if (error != vr::ETrackedPropertyError::TrackedProp_Success) {
79+
logger_->Log("Failed to get HMD's Prop_ManufacturerName_String: {}", vr::VRPropertiesRaw()->GetPropErrorNameFromEnum(error));
80+
}
81+
82+
logger_->Log("HMD props: serial='{}', model='{}', manufacturer='{}'", serial, name, manufacturer);
83+
6084
// Send add message for HMD
6185
messages::TrackerAdded* tracker_added = google::protobuf::Arena::CreateMessage<messages::TrackerAdded>(&arena_);
6286
message->set_allocated_tracker_added(tracker_added);
6387
tracker_added->set_tracker_id(0);
6488
tracker_added->set_tracker_role(TrackerRole::HMD);
65-
tracker_added->set_tracker_serial("HMD");
66-
tracker_added->set_tracker_name("HMD");
89+
tracker_added->set_tracker_serial(serial.empty() ? "HMD" : serial);
90+
tracker_added->set_tracker_name(name.empty() ? "HMD" : name);
91+
tracker_added->set_manufacturer(manufacturer.empty() ? "OpenVR" : manufacturer);
6792
bridge_->SendBridgeMessage(*message);
6893

6994
messages::TrackerStatus* tracker_status = google::protobuf::Arena::CreateMessage<messages::TrackerStatus>(&arena_);
@@ -76,9 +101,6 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
76101
logger_->Log("Sent HMD hello message");
77102
}
78103

79-
vr::PropertyContainerHandle_t hmd_prop_container =
80-
vr::VRProperties()->TrackedDeviceToPropertyContainer(vr::k_unTrackedDeviceIndex_Hmd);
81-
82104
vr::ETrackedPropertyError universe_error;
83105
uint64_t universe = vr::VRProperties()->GetUint64Property(hmd_prop_container, vr::Prop_CurrentUniverseId_Uint64, &universe_error);
84106
if (universe_error == vr::ETrackedPropertyError::TrackedProp_Success) {
@@ -98,9 +120,6 @@ void SlimeVRDriver::VRDriver::RunPoseRequestThread() {
98120
}
99121
last_universe_error_ = universe_error;
100122

101-
vr::TrackedDevicePose_t hmd_pose;
102-
vr::VRServerDriverHost()->GetRawTrackedDevicePoses(0.0f, &hmd_pose, 1);
103-
104123
vr::HmdQuaternion_t q = GetRotation(hmd_pose.mDeviceToAbsoluteTracking);
105124
vr::HmdVector3_t pos = GetPosition(hmd_pose.mDeviceToAbsoluteTracking);
106125

@@ -454,4 +473,4 @@ std::optional<SlimeVRDriver::UniverseTranslation> SlimeVRDriver::VRDriver::GetCu
454473
}
455474

456475
return std::nullopt;
457-
}
476+
}

src/bridge/ProtobufMessages.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ message TrackerAdded {
8989
string tracker_serial = 2;
9090
string tracker_name = 3;
9191
int32 tracker_role = 4;
92+
string manufacturer = 5;
9293
}
9394

9495
message TrackerStatus {

0 commit comments

Comments
 (0)