void AppStage_ComputeTrackerPoses::request_set_tracker_pose(
    const PSMovePose *pose,
    class ClientTrackerView *TrackerView)
{
    // Set the pose on out local tracker view
    {
        ClientTrackerInfo &trackerInfo= TrackerView->getTrackerInfoMutable();

        trackerInfo.tracker_pose = *pose;
    }

    // Update the pose on the service
    {
        RequestPtr request(new PSMoveProtocol::Request());
        request->set_type(PSMoveProtocol::Request_RequestType_SET_TRACKER_POSE);

        PSMoveProtocol::Request_RequestSetTrackerPose *set_pose_request =
            request->mutable_request_set_tracker_pose();

        set_pose_request->set_tracker_id(TrackerView->getTrackerId());
        copy_pose_to_request(TrackerView->getTrackerPose(), set_pose_request->mutable_pose());

        ClientPSMoveAPI::eat_response(ClientPSMoveAPI::send_opaque_request(&request));
    }
}
void AppStage_ComputeTrackerPoses::request_set_hmd_tracking_space_origin(
    const struct PSMovePose *pose)
{
    if (m_app->getOpenVRContext()->getIsInitialized())
    {
        m_app->getOpenVRContext()->setHMDTrackingSpaceOrigin(*pose);
    }

    // Update the pose on the service
    {
        RequestPtr request(new PSMoveProtocol::Request());
        request->set_type(PSMoveProtocol::Request_RequestType_SET_HMD_TRACKING_SPACE_ORIGIN);

        PSMoveProtocol::Request_RequestSetHMDTrackingSpaceOrigin *set_origin_request =
            request->mutable_request_set_hmd_tracking_space_origin();

        copy_pose_to_request(*pose, set_origin_request->mutable_origin_pose());

        ClientPSMoveAPI::eat_response(ClientPSMoveAPI::send_opaque_request(&request));
    }
}