NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
vive.h File Reference
#include <libusb-1.0/libusb.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
Include dependency graph for vive.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Endpoint
 
struct  Calibration
 
struct  OOTX
 
struct  LightcapSweepData
 
struct  PerSweepData
 
struct  GlobalData
 
struct  LightcapData
 
struct  Tracker
 
struct  Motor
 
struct  Lighthouse
 
struct  General
 
struct  Light
 
struct  IMU
 
struct  Button
 
struct  Driver
 

Macros

#define MAX_PACKET_LEN   64
 
#define PREAMBLE_LENGTH   17
 
#define MAX_NUM_LIGHTHOUSES   2
 
#define MAX_NUM_TRACKERS   128
 
#define MAX_NUM_SENSORS   32
 
#define MAX_SERIAL_LENGTH   32
 
#define USB_INT_BUFF_LENGTH   64
 
#define USB_VEND_HTC   0x28de
 
#define USB_PROD_TRACKER_V1   0x2022
 
#define USB_PROD_TRACKER_V2   0x2300
 
#define USB_PROD_CONTROLLER_V1   0x2012
 
#define USB_PROD_WATCHMAN   0x2101
 
#define USB_ENDPOINT_WATCHMAN   0x81
 
#define USB_ENDPOINT_V1_GENERAL   0x81
 
#define USB_ENDPOINT_V1_LIGHT   0x82
 
#define USB_ENDPOINT_V1_BUTTONS   0x83
 
#define USB_ENDPOINT_V2_GENERAL   0x81
 
#define USB_ENDPOINT_V2_LIGHT   0x83
 
#define USB_ENDPOINT_V2_BUTTONS   0x84
 
#define MAX_ENDPOINTS   3
 
#define DEFAULT_ACC_SCALE   (float)(9.80665/4096.0)
 
#define DEFAULT_GYR_SCALE   (float)((1./32.768)*(3.14159/180.));
 
#define DEBUG_PRINTF(f_, ...)
 

Typedefs

typedef struct Driver driver_t
 
typedef struct Tracker tracker_t
 
typedef struct Lighthouse lighthouse_t
 
typedef enum Data data_t
 
typedef enum Event event_t
 
typedef struct Endpoint endpoint_t
 
typedef struct Calibration calibration_t
 
typedef struct OOTX ootx_t
 
typedef struct LightcapSweepData lightcap_sweep_data_t
 
typedef struct PerSweepData per_sweep_data_t
 
typedef struct GlobalData global_data_t
 
typedef struct LightcapData lightcap_data_t
 
typedef enum Axis axis_t
 
typedef struct Motor motor_t
 
typedef struct General general_t
 
typedef struct Light light_t
 
typedef struct IMU imu_t
 
typedef struct Button button_t
 
typedef void(* light_cb_t) (tracker_t const *tracker, uint8_t lh, uint8_t axis, uint32_t synctime, uint16_t num_sensors, light_t const *measurement)
 
typedef void(* imu_cb_t) (tracker_t const *tracker, imu_t const *measurement)
 
typedef void(* button_cb_t) (tracker_t const *tracker, button_t const *measurement)
 
typedef void(* tracker_cb_t) (tracker_t const *tracker)
 
typedef void(* lighthouse_cb_t) (lighthouse_t const *lighthouse)
 

Enumerations

enum  Data {
  DATA_IMU, DATA_LIGHT_7, DATA_LIGHT_9, DATA_BUTTONS,
  DATA_WATCHMAN
}
 
enum  Event {
  EVENT_TRIGGER = (1<<8), EVENT_GRIP = (1<<10), EVENT_MENU = (1<<20), EVENT_PAD_CLICK = (1<<26),
  EVENT_PAD_TOUCH = (1<<28)
}
 
enum  state_t { PREAMBLE, LENGTH, PAYLOAD, CHECKSUM }
 
enum  Axis { MOTOR_AXIS0, MOTOR_AXIS1, MAX_NUM_MOTORS }
 

Functions

driver_tvive_init ()
 
void vive_install_light_fn (driver_t *drv, light_cb_t fbp)
 
void vive_install_imu_fn (driver_t *drv, imu_cb_t fbp)
 
void vive_install_button_fn (driver_t *drv, button_cb_t fbp)
 
void vive_install_tracker_fn (driver_t *drv, tracker_cb_t fbp)
 
void vive_install_lighthouse_fn (driver_t *drv, lighthouse_cb_t fbp)
 
general_tvive_general (driver_t *drv)
 
lighthouse_tvive_lighthouse (driver_t *drv, const char *id)
 
tracker_tvive_tracker (driver_t *tracker, const char *id)
 
uint8_t vive_poll (driver_t *drv)
 
void vive_kill (driver_t *drv)
 

Macro Definition Documentation

◆ DEBUG_PRINTF

#define DEBUG_PRINTF (   f_,
  ... 
)

◆ DEFAULT_ACC_SCALE

#define DEFAULT_ACC_SCALE   (float)(9.80665/4096.0)

◆ DEFAULT_GYR_SCALE

#define DEFAULT_GYR_SCALE   (float)((1./32.768)*(3.14159/180.));

◆ MAX_ENDPOINTS

#define MAX_ENDPOINTS   3

◆ MAX_NUM_LIGHTHOUSES

#define MAX_NUM_LIGHTHOUSES   2

◆ MAX_NUM_SENSORS

#define MAX_NUM_SENSORS   32

◆ MAX_NUM_TRACKERS

#define MAX_NUM_TRACKERS   128

◆ MAX_PACKET_LEN

#define MAX_PACKET_LEN   64

◆ MAX_SERIAL_LENGTH

#define MAX_SERIAL_LENGTH   32

◆ PREAMBLE_LENGTH

#define PREAMBLE_LENGTH   17

◆ USB_ENDPOINT_V1_BUTTONS

#define USB_ENDPOINT_V1_BUTTONS   0x83

◆ USB_ENDPOINT_V1_GENERAL

#define USB_ENDPOINT_V1_GENERAL   0x81

◆ USB_ENDPOINT_V1_LIGHT

#define USB_ENDPOINT_V1_LIGHT   0x82

◆ USB_ENDPOINT_V2_BUTTONS

#define USB_ENDPOINT_V2_BUTTONS   0x84

◆ USB_ENDPOINT_V2_GENERAL

#define USB_ENDPOINT_V2_GENERAL   0x81

◆ USB_ENDPOINT_V2_LIGHT

#define USB_ENDPOINT_V2_LIGHT   0x83

◆ USB_ENDPOINT_WATCHMAN

#define USB_ENDPOINT_WATCHMAN   0x81

◆ USB_INT_BUFF_LENGTH

#define USB_INT_BUFF_LENGTH   64

◆ USB_PROD_CONTROLLER_V1

#define USB_PROD_CONTROLLER_V1   0x2012

◆ USB_PROD_TRACKER_V1

#define USB_PROD_TRACKER_V1   0x2022

◆ USB_PROD_TRACKER_V2

#define USB_PROD_TRACKER_V2   0x2300

◆ USB_PROD_WATCHMAN

#define USB_PROD_WATCHMAN   0x2101

◆ USB_VEND_HTC

#define USB_VEND_HTC   0x28de

Typedef Documentation

◆ axis_t

typedef enum Axis axis_t

◆ button_cb_t

typedef void(* button_cb_t) (tracker_t const *tracker, button_t const *measurement)

◆ button_t

typedef struct Button button_t

◆ calibration_t

typedef struct Calibration calibration_t

◆ data_t

typedef enum Data data_t

◆ driver_t

typedef struct Driver driver_t

◆ endpoint_t

typedef struct Endpoint endpoint_t

◆ event_t

typedef enum Event event_t

◆ general_t

typedef struct General general_t

◆ global_data_t

typedef struct GlobalData global_data_t

◆ imu_cb_t

typedef void(* imu_cb_t) (tracker_t const *tracker, imu_t const *measurement)

◆ imu_t

typedef struct IMU imu_t

◆ light_cb_t

typedef void(* light_cb_t) (tracker_t const *tracker, uint8_t lh, uint8_t axis, uint32_t synctime, uint16_t num_sensors, light_t const *measurement)

◆ light_t

typedef struct Light light_t

◆ lightcap_data_t

typedef struct LightcapData lightcap_data_t

◆ lightcap_sweep_data_t

◆ lighthouse_cb_t

typedef void(* lighthouse_cb_t) (lighthouse_t const *lighthouse)

◆ lighthouse_t

typedef struct Lighthouse lighthouse_t

◆ motor_t

typedef struct Motor motor_t

◆ ootx_t

typedef struct OOTX ootx_t

◆ per_sweep_data_t

◆ tracker_cb_t

typedef void(* tracker_cb_t) (tracker_t const *tracker)

◆ tracker_t

typedef struct Tracker tracker_t

Enumeration Type Documentation

◆ Axis

enum Axis
Enumerator
MOTOR_AXIS0 
MOTOR_AXIS1 
MAX_NUM_MOTORS 

◆ Data

enum Data
Enumerator
DATA_IMU 
DATA_LIGHT_7 
DATA_LIGHT_9 
DATA_BUTTONS 
DATA_WATCHMAN 

◆ Event

enum Event
Enumerator
EVENT_TRIGGER 
EVENT_GRIP 
EVENT_MENU 
EVENT_PAD_CLICK 
EVENT_PAD_TOUCH 

◆ state_t

enum state_t
Enumerator
PREAMBLE 
LENGTH 
PAYLOAD 
CHECKSUM 

Function Documentation

◆ vive_general()

general_t* vive_general ( driver_t drv)

◆ vive_init()

driver_t* vive_init ( )

◆ vive_install_button_fn()

void vive_install_button_fn ( driver_t drv,
button_cb_t  fbp 
)

◆ vive_install_imu_fn()

void vive_install_imu_fn ( driver_t drv,
imu_cb_t  fbp 
)

◆ vive_install_light_fn()

void vive_install_light_fn ( driver_t drv,
light_cb_t  fbp 
)

◆ vive_install_lighthouse_fn()

void vive_install_lighthouse_fn ( driver_t drv,
lighthouse_cb_t  fbp 
)

◆ vive_install_tracker_fn()

void vive_install_tracker_fn ( driver_t drv,
tracker_cb_t  fbp 
)

◆ vive_kill()

void vive_kill ( driver_t drv)

◆ vive_lighthouse()

lighthouse_t* vive_lighthouse ( driver_t drv,
const char *  id 
)

◆ vive_poll()

uint8_t vive_poll ( driver_t drv)

◆ vive_tracker()

tracker_t* vive_tracker ( driver_t tracker,
const char *  id 
)