RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
vrpn_Tracker_OSVRHackerDevKit类 参考

OSVR Hacker Dev Kit HMD The official name of the Razer/Sensics HMD (until they change it again...) is “OSVR Hacker Dev Kit.” 更多...

#include <vrpn_Tracker_OSVRHackerDevKit.h>

+ 类 vrpn_Tracker_OSVRHackerDevKit 继承关系图:
+ vrpn_Tracker_OSVRHackerDevKit 的协作图:

Public 类型

enum  Status { STATUS_UNKNOWN = 0 , STATUS_NO_VIDEO_INPUT = 1 , STATUS_PORTRAIT_VIDEO_INPUT = 2 , STATUS_LANDSCAPE_VIDEO_INPUT = 3 }
 

Public 成员函数

 vrpn_Tracker_OSVRHackerDevKit (const char *name, hid_device *dev=NULL, vrpn_Connection *c=NULL)
 Constructor.
 
 vrpn_Tracker_OSVRHackerDevKit (const char *name, vrpn_Connection *c)
 
virtual ~vrpn_Tracker_OSVRHackerDevKit ()
 Destructor.
 
virtual void mainloop ()
 Standard VRPN mainloop method.
 
- Public 成员函数 继承自 vrpn_Tracker
 vrpn_Tracker (const char *name, vrpn_Connection *c=NULL, const char *tracker_cfg_file_name=NULL)
 
int read_config_file (FILE *config_file, const char *tracker_name)
 
void print_latest_report (void)
 
int register_server_handlers (void)
 
void get_local_t2r (vrpn_float64 *vec, vrpn_float64 *quat)
 
void get_local_u2s (vrpn_int32 sensor, vrpn_float64 *vec, vrpn_float64 *quat)
 
- Public 成员函数 继承自 vrpn_BaseClass
 vrpn_BaseClass (const char *name, vrpn_Connection *c=NULL)
 
- Public 成员函数 继承自 vrpn_BaseClassUnique
vrpn_ConnectionconnectionPtr ()
 Returns a pointer to the connection this object is using
 
- Public 成员函数 继承自 vrpn_Analog
 vrpn_Analog (const char *name, vrpn_Connection *c=NULL)
 
void print (void)
 
vrpn_int32 getNumChannels (void) const
 

Protected 成员函数

void on_data_received (std::size_t bytes, vrpn_uint8 *buffer)
 Extracts the sensor values from each report.
 
void shared_init ()
 
- Protected 成员函数 继承自 vrpn_Tracker
bool ensure_enough_unit2sensors (unsigned num)
 
virtual int register_types (void)
 
virtual int encode_to (char *buf)
 
virtual int encode_vel_to (char *buf)
 
virtual int encode_acc_to (char *buf)
 
virtual int encode_tracker2room_to (char *buf)
 
virtual int encode_unit2sensor_to (char *buf)
 
virtual int encode_workspace_to (char *buf)
 
- Protected 成员函数 继承自 vrpn_BaseClass
virtual int init (void)
 
virtual int register_senders (void)
 
- Protected 成员函数 继承自 vrpn_BaseClassUnique
int register_autodeleted_handler (vrpn_int32 type, vrpn_MESSAGEHANDLER handler, void *userdata, vrpn_int32 sender=vrpn_ANY_SENDER)
 
int send_text_message (const char *msg, struct timeval timestamp, vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL, vrpn_uint32 level=0)
 Sends a NULL-terminated text message from the device d_sender_id
 
SendTextMessageBoundCall send_text_message (vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL)
 
void server_mainloop (void)
 
void client_mainloop (void)
 
- Protected 成员函数 继承自 vrpn_Analog
virtual int register_types (void)
 
virtual vrpn_int32 encode_to (char *buf)
 
virtual void report_changes (vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW)
 
virtual void report (vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW)
 
- Protected 成员函数 继承自 vrpn_HidInterface
virtual void on_data_received (size_t bytes, vrpn_uint8 *buffer)=0
 Derived class reimplements this callback. It is called whenever a read returns some data.
 
void send_data (size_t bytes, const vrpn_uint8 *buffer)
 Call this to send data to the device
 
void send_feature_report (size_t bytes, const vrpn_uint8 *buffer)
 
int get_feature_report (size_t bytes, vrpn_uint8 *buffer)
 
 vrpn_HidInterface (vrpn_HidAcceptor *acceptor, vrpn_uint16 vendor=0, vrpn_uint16 product=0, hid_device *device=NULL)
 
 vrpn_HidInterface (vrpn_HidAcceptor *acceptor, hid_device *device)
 
 vrpn_HidInterface (const char *device_path, vrpn_HidAcceptor *acceptor, vrpn_uint16 vendor=0, vrpn_uint16 product=0)
 
virtual bool connected () const
 Returns true iff the last device I/O succeeded
 
virtual void update ()
 
virtual bool reconnect ()
 
vrpn_uint16 vendor () const
 
vrpn_uint16 product () const
 
int interface_number () const
 

Protected 属性

struct timeval _timestamp
 Timestamp updated during mainloop()
 
bool _wasConnected
 
vrpn_uint16 _messageCount
 Used to forcibly send the analog update every so often
 
vrpn_uint8 _reportVersion
 
bool _knownVersion
 
- Protected 属性 继承自 vrpn_Tracker
vrpn_int32 position_m_id
 
vrpn_int32 velocity_m_id
 
vrpn_int32 accel_m_id
 
vrpn_int32 tracker2room_m_id
 
vrpn_int32 unit2sensor_m_id
 
vrpn_int32 request_t2r_m_id
 
vrpn_int32 request_u2s_m_id
 
vrpn_int32 request_workspace_m_id
 
vrpn_int32 workspace_m_id
 
vrpn_int32 update_rate_id
 
vrpn_int32 connection_dropped_m_id
 
vrpn_int32 reset_origin_m_id
 
vrpn_int32 d_sensor
 
vrpn_float64 pos [3]
 
vrpn_float64 d_quat [4]
 
vrpn_float64 vel [3]
 
vrpn_float64 vel_quat [4]
 
vrpn_float64 vel_quat_dt
 
vrpn_float64 acc [3]
 
vrpn_float64 acc_quat [4]
 
vrpn_float64 acc_quat_dt
 
struct timeval timestamp
 
vrpn_int32 frame_count
 
struct timeval watchdog_timestamp
 
vrpn_float64 tracker2room [3]
 
vrpn_float64 tracker2room_quat [4]
 
vrpn_int32 num_sensors
 
vrpn_Tracker_Pos * unit2sensor
 
vrpn_Tracker_Quat * unit2sensor_quat
 
unsigned num_unit2sensors
 
vrpn_float64 workspace_min [3]
 
vrpn_float64 workspace_max [3]
 
int status
 
- Protected 属性 继承自 vrpn_BaseClassUnique
vrpn_Connectiond_connection
 Connection that this object talks to
 
char * d_servicename
 
vrpn_int32 d_sender_id
 part
 
vrpn_int32 d_text_message_id
 ID for text messages
 
vrpn_int32 d_ping_message_id
 Ask the server if they are there
 
vrpn_int32 d_pong_message_id
 Server telling that it is there
 
- Protected 属性 继承自 vrpn_Analog
vrpn_float64 channel [vrpn_CHANNEL_MAX]
 
vrpn_float64 last [vrpn_CHANNEL_MAX]
 
vrpn_int32 num_channel
 
struct timeval timestamp
 
vrpn_int32 channel_m_id
 
int status
 
- Protected 属性 继承自 vrpn_HidInterface
vrpn_HidAcceptorm_acceptor
 This is the HidAcceptor we use when reconnecting.
 
bool m_working
 
vrpn_uint16 m_vendor
 
vrpn_uint16 m_product
 
int m_interface
 
vrpn_uint16 m_vendor_sought
 What vendor we want
 
vrpn_uint16 m_product_sought
 What product we want
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 vrpn_Tracker
static int VRPN_CALLBACK handle_t2r_request (void *userdata, vrpn_HANDLERPARAM p)
 
static int VRPN_CALLBACK handle_u2s_request (void *userdata, vrpn_HANDLERPARAM p)
 
static int VRPN_CALLBACK handle_workspace_request (void *userdata, vrpn_HANDLERPARAM p)
 
- Public 属性 继承自 vrpn_BaseClassUnique
bool shutup
 
- 静态 Protected 成员函数 继承自 vrpn_BaseClassUnique
static int encode_text_message_to_buffer (char *buf, vrpn_TEXT_SEVERITY severity, vrpn_uint32 level, const char *msg)
 
static int decode_text_message_from_buffer (char *msg, vrpn_TEXT_SEVERITY *severity, vrpn_uint32 *level, const char *buf)
 Decodes the body of the text message from a buffer from the connection
 

详细描述

OSVR Hacker Dev Kit HMD The official name of the Razer/Sensics HMD (until they change it again...) is “OSVR Hacker Dev Kit.”

The devkit will have a built-in head tracker.

VID 0x1532 PID 0x0B00

The head tracker shows as a generic HID device

Protocol for it is as follows (in byte offsets):

0: Bits 0-3: Version number, currently 1, 2, or 3 Upper nibble holds additional data for v3+: Bit 4: 1 if video detected, 0 if not. Bit 5: 1 if portrait, 0 if landscape

1: message sequence number (8 bit)

2: Unit quaternion i component LSB 3: Unit quaternion i component MSB

4: Unit quaternion j component LSB 5: Unit quaternion j component MSB

6: Unit quaternion k component LSB 7: Unit quaternion k component MSB

8: Unit quaternion real component LSB 9: Unit quaternion real component MSB

10: Instantaneous angular velocity about X LSB 11: Instantaneous angular velocity about X MSB

12: Instantaneous angular velocity about Y LSB 13: Instantaneous angular velocity about Y MSB

14: Instantaneous angular velocity about Z LSB 15: Instantaneous angular velocity about Z MSB

Each quaternion is presented as signed, 16-bit fixed point, 2’s complement number with a Q point of 14. The components of angular velocity are signed, 16-bit fixed point, 2's complement with Q of 9. Reports are either 32 (in old firmware, early v1 reports) or 16 bytes (most firmware, both v1 and v2) long, and only v2+ reports contain angular velocity data.

v3+ reports also contain additional data in the upper nibble of the version number.

Report version number is exposed as Analog channel 0. Analog channel 1 should be interpreted as follows: 0: Status unknown - reports are < v3 or no connection. 1: No video input. 2: Portrait video input detected. 3: Landscape video input detected.

构造及析构函数说明

◆ vrpn_Tracker_OSVRHackerDevKit() [1/2]

vrpn_Tracker_OSVRHackerDevKit ( const char * name,
hid_device * dev = NULL,
vrpn_Connection * c = NULL )

Constructor.

参数
nameName of tracker.
devOptional Already-opened HIDAPI device for the tracker.
cOptional vrpn_Connection.

◆ vrpn_Tracker_OSVRHackerDevKit() [2/2]

vrpn_Tracker_OSVRHackerDevKit ( const char * name,
vrpn_Connection * c )

这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.

◆ ~vrpn_Tracker_OSVRHackerDevKit()

virtual ~vrpn_Tracker_OSVRHackerDevKit ( )
virtual

Destructor.

成员函数说明

◆ mainloop()

virtual void mainloop ( )
virtual

Standard VRPN mainloop method.

实现了 vrpn_BaseClass.

◆ on_data_received()

void on_data_received ( std::size_t bytes,
vrpn_uint8 * buffer )
protected

Extracts the sensor values from each report.

类成员变量说明

◆ _messageCount

vrpn_uint16 _messageCount
protected

Used to forcibly send the analog update every so often

◆ _timestamp

struct timeval _timestamp
protected

Timestamp updated during mainloop()

◆ _wasConnected

bool _wasConnected
protected

Flag indicating whether we were connected last time through the mainloop. Used to send a "normal"-severity message when we connect with info on the device and to handle re-connecting after a USB disconnect.


该类的文档由以下文件生成: