libfreenect  0.1-beta
libfreenect.h
Go to the documentation of this file.
1 /*
2  * This file is part of the OpenKinect Project. http://www.openkinect.org
3  *
4  * Copyright (c) 2010 individual OpenKinect contributors. See the CONTRIB file
5  * for details.
6  *
7  * This code is licensed to you under the terms of the Apache License, version
8  * 2.0, or, at your option, the terms of the GNU General Public License,
9  * version 2.0. See the APACHE20 and GPL2 files for the text of the licenses,
10  * or the following URLs:
11  * http://www.apache.org/licenses/LICENSE-2.0
12  * http://www.gnu.org/licenses/gpl-2.0.txt
13  *
14  * If you redistribute this file in source form, modified or unmodified, you
15  * may:
16  * 1) Leave this header intact and distribute it under the same terms,
17  * accompanying it with the APACHE20 and GPL20 files, or
18  * 2) Delete the Apache 2.0 clause and accompany it with the GPL2 file, or
19  * 3) Delete the GPL v2 clause and accompany it with the APACHE20 file
20  * In all cases you must keep the copyright notice intact and include a copy
21  * of the CONTRIB file.
22  *
23  * Binary distributions must follow the binary distribution requirements of
24  * either License.
25  */
26 
27 #pragma once
28 
29 #include <stdint.h>
30 
31 /* We need struct timeval */
32 #ifdef _WIN32
33 #include <winsock.h>
34 #else
35 #include <sys/time.h>
36 #endif
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 #define FREENECT_COUNTS_PER_G 819
44 #define FREENECT_DEPTH_MM_MAX_VALUE 10000
46 #define FREENECT_DEPTH_MM_NO_VALUE 0
48 #define FREENECT_DEPTH_RAW_MAX_VALUE 2048
50 #define FREENECT_DEPTH_RAW_NO_VALUE 2047
52 
58 typedef enum {
63 
68 {
69  struct freenect_device_attributes *next; // Next device in the linked list
70  const char* camera_serial; // Serial number of camera or audio subdevice
71 };
72 
77 typedef enum {
83 
86 typedef enum {
94  FREENECT_VIDEO_DUMMY = 2147483647,
96 
99 typedef enum {
106  FREENECT_DEPTH_DUMMY = 2147483647,
108 
110 typedef enum {
111  // values written to the CMOS register
115  // arbitrary bitfields to support flag combination
118  FREENECT_NEAR_MODE = 1 << 18, // K4W only
119 } freenect_flag;
120 
122 typedef enum {
126 
130 typedef struct {
131  uint32_t reserved;
133  union {
134  int32_t dummy;
137  };
138  int32_t bytes;
139  int16_t width;
140  int16_t height;
143  int8_t framerate;
144  int8_t is_valid;
146 
149 typedef enum {
150  LED_OFF = 0,
151  LED_GREEN = 1,
152  LED_RED = 2,
155  // 5 is same as 4, LED blink Green
158 
159 
161 typedef enum {
166 
168 typedef struct {
169  int16_t accelerometer_x;
170  int16_t accelerometer_y;
171  int16_t accelerometer_z;
172  int8_t tilt_angle;
175 
176 struct _freenect_context;
177 typedef struct _freenect_context freenect_context;
179 struct _freenect_device;
180 typedef struct _freenect_device freenect_device;
182 // usb backend specific section
183 typedef void freenect_usb_context;
184 //
185 
187 #ifndef _WIN32
188  #define FREENECTAPI
189 #else
190 
191  #ifdef __cplusplus
192  #define FREENECTAPI extern "C" __declspec(dllexport)
193  #else
194  // this is required when building from a Win32 port of gcc without being
195  // forced to compile all of the library files (.c) with g++...
196  #define FREENECTAPI __declspec(dllexport)
197  #endif
198 #endif
199 
201 typedef enum {
211 
222 
231 
233 typedef void (*freenect_log_cb)(freenect_context *dev, freenect_loglevel level, const char *msg);
234 
242 
251 
260 
271 FREENECTAPI int freenect_process_events_timeout(freenect_context *ctx, struct timeval* timeout);
272 
282 
293 
300 
310 
322 
331 
344 
356 FREENECTAPI int freenect_open_device_by_camera_serial(freenect_context *ctx, freenect_device **dev, const char* camera_serial);
357 
366 
374 FREENECTAPI void freenect_set_user(freenect_device *dev, void *user);
375 
384 
386 typedef void (*freenect_depth_cb)(freenect_device *dev, void *depth, uint32_t timestamp);
388 typedef void (*freenect_video_cb)(freenect_device *dev, void *video, uint32_t timestamp);
390 typedef void (*freenect_chunk_cb)(void *buffer, void *pkt_data, int pkt_num, int datalen, void *user_data);
391 
392 
400 
408 
416 
424 
436 
448 
457 
466 
475 
484 
495 
504 
513 
526 FREENECTAPI int freenect_set_tilt_degs(freenect_device *dev, double angle);
527 
537 
548 
560 FREENECTAPI void freenect_get_mks_accel(freenect_raw_tilt_state *state, double* x, double* y, double* z);
561 
568 
578 
588 
599 
613 
620 
630 
640 
651 
662 
672 
681 
691 FREENECTAPI int freenect_set_ir_brightness(freenect_device *dev, uint16_t brightness);
692 
700 FREENECTAPI void freenect_set_fw_address_nui(freenect_context * ctx, unsigned char * fw_ptr, unsigned int num_bytes);
701 
709 FREENECTAPI void freenect_set_fw_address_k4w(freenect_context * ctx, unsigned char * fw_ptr, unsigned int num_bytes);
710 
711 
712 #ifdef __cplusplus
713 }
714 #endif
freenect_set_video_buffer
FREENECTAPI int freenect_set_video_buffer(freenect_device *dev, void *buf)
freenect_log_cb
void(* freenect_log_cb)(freenect_context *dev, freenect_loglevel level, const char *msg)
Typedef for logging callback functions.
Definition: libfreenect.h:233
FREENECT_DEPTH_11BIT
@ FREENECT_DEPTH_11BIT
Definition: libfreenect.h:100
freenect_flag_value
freenect_flag_value
Possible values for setting each freenect_flag
Definition: libfreenect.h:122
freenect_get_video_mode
FREENECTAPI freenect_frame_mode freenect_get_video_mode(int mode_num)
FREENECT_LOG_INFO
@ FREENECT_LOG_INFO
Definition: libfreenect.h:206
freenect_find_depth_mode
FREENECTAPI freenect_frame_mode freenect_find_depth_mode(freenect_resolution res, freenect_depth_format fmt)
LED_BLINK_GREEN
@ LED_BLINK_GREEN
Definition: libfreenect.h:154
freenect_frame_mode::framerate
int8_t framerate
Definition: libfreenect.h:143
freenect_free_device_attributes
FREENECTAPI void freenect_free_device_attributes(struct freenect_device_attributes *attribute_list)
freenect_set_ir_brightness
FREENECTAPI int freenect_set_ir_brightness(freenect_device *dev, uint16_t brightness)
FREENECT_DEPTH_MM
@ FREENECT_DEPTH_MM
Definition: libfreenect.h:105
freenect_loglevel
freenect_loglevel
Enumeration of message logging levels.
Definition: libfreenect.h:201
FREENECT_RESOLUTION_HIGH
@ FREENECT_RESOLUTION_HIGH
Definition: libfreenect.h:80
freenect_raw_tilt_state::tilt_status
freenect_tilt_status_code tilt_status
Definition: libfreenect.h:173
freenect_set_video_chunk_callback
FREENECTAPI void freenect_set_video_chunk_callback(freenect_device *dev, freenect_chunk_cb cb)
freenect_get_tilt_status
FREENECTAPI freenect_tilt_status_code freenect_get_tilt_status(freenect_raw_tilt_state *state)
FREENECT_VIDEO_IR_10BIT
@ FREENECT_VIDEO_IR_10BIT
Definition: libfreenect.h:90
LED_RED
@ LED_RED
Definition: libfreenect.h:152
FREENECT_VIDEO_DUMMY
@ FREENECT_VIDEO_DUMMY
Definition: libfreenect.h:94
freenect_frame_mode::video_format
freenect_video_format video_format
Definition: libfreenect.h:135
freenect_led_options
freenect_led_options
Definition: libfreenect.h:149
freenect_get_current_depth_mode
FREENECTAPI freenect_frame_mode freenect_get_current_depth_mode(freenect_device *dev)
freenect_get_current_video_mode
FREENECTAPI freenect_frame_mode freenect_get_current_video_mode(freenect_device *dev)
freenect_set_tilt_degs
FREENECTAPI int freenect_set_tilt_degs(freenect_device *dev, double angle)
freenect_get_depth_mode_count
FREENECTAPI int freenect_get_depth_mode_count()
FREENECT_AUTO_WHITE_BALANCE
@ FREENECT_AUTO_WHITE_BALANCE
Definition: libfreenect.h:113
freenect_get_depth_mode
FREENECTAPI freenect_frame_mode freenect_get_depth_mode(int mode_num)
FREENECT_DEPTH_DUMMY
@ FREENECT_DEPTH_DUMMY
Definition: libfreenect.h:106
FREENECT_OFF
@ FREENECT_OFF
Definition: libfreenect.h:123
freenect_frame_mode::reserved
uint32_t reserved
Definition: libfreenect.h:131
TILT_STATUS_MOVING
@ TILT_STATUS_MOVING
Definition: libfreenect.h:164
freenect_frame_mode::height
int16_t height
Definition: libfreenect.h:140
freenect_frame_mode
Definition: libfreenect.h:130
FREENECT_DEPTH_11BIT_PACKED
@ FREENECT_DEPTH_11BIT_PACKED
Definition: libfreenect.h:102
freenect_stop_depth
FREENECTAPI int freenect_stop_depth(freenect_device *dev)
FREENECT_VIDEO_YUV_RAW
@ FREENECT_VIDEO_YUV_RAW
Definition: libfreenect.h:93
LED_GREEN
@ LED_GREEN
Definition: libfreenect.h:151
FREENECT_DEPTH_10BIT_PACKED
@ FREENECT_DEPTH_10BIT_PACKED
Definition: libfreenect.h:103
freenect_device_attributes::camera_serial
const char * camera_serial
Definition: libfreenect.h:70
FREENECT_VIDEO_BAYER
@ FREENECT_VIDEO_BAYER
Definition: libfreenect.h:88
freenect_set_depth_chunk_callback
FREENECTAPI void freenect_set_depth_chunk_callback(freenect_device *dev, freenect_chunk_cb cb)
freenect_set_user
FREENECTAPI void freenect_set_user(freenect_device *dev, void *user)
FREENECT_LOG_FATAL
@ FREENECT_LOG_FATAL
Definition: libfreenect.h:202
FREENECT_NEAR_MODE
@ FREENECT_NEAR_MODE
Definition: libfreenect.h:118
freenect_set_video_callback
FREENECTAPI void freenect_set_video_callback(freenect_device *dev, freenect_video_cb cb)
freenect_init
FREENECTAPI int freenect_init(freenect_context **ctx, freenect_usb_context *usb_ctx)
freenect_frame_mode::bytes
int32_t bytes
Definition: libfreenect.h:138
FREENECT_RESOLUTION_LOW
@ FREENECT_RESOLUTION_LOW
Definition: libfreenect.h:78
freenect_stop_video
FREENECTAPI int freenect_stop_video(freenect_device *dev)
FREENECT_RESOLUTION_DUMMY
@ FREENECT_RESOLUTION_DUMMY
Definition: libfreenect.h:81
freenect_start_video
FREENECTAPI int freenect_start_video(freenect_device *dev)
freenect_device
struct _freenect_device freenect_device
Definition: libfreenect.h:180
FREENECT_RESOLUTION_MEDIUM
@ FREENECT_RESOLUTION_MEDIUM
Definition: libfreenect.h:79
freenect_find_video_mode
FREENECTAPI freenect_frame_mode freenect_find_video_mode(freenect_resolution res, freenect_video_format fmt)
FREENECT_LOG_DEBUG
@ FREENECT_LOG_DEBUG
Definition: libfreenect.h:207
freenect_usb_context
void freenect_usb_context
Definition: libfreenect.h:183
FREENECTAPI
#define FREENECTAPI
If Win32, export all functions for DLL usage.
Definition: libfreenect.h:188
FREENECT_DEPTH_10BIT
@ FREENECT_DEPTH_10BIT
Definition: libfreenect.h:101
freenect_device_flags
freenect_device_flags
Definition: libfreenect.h:58
freenect_open_device
FREENECTAPI int freenect_open_device(freenect_context *ctx, freenect_device **dev, int index)
freenect_raw_tilt_state::accelerometer_y
int16_t accelerometer_y
Definition: libfreenect.h:170
freenect_flag
freenect_flag
Enumeration of flags to toggle features with freenect_set_flag()
Definition: libfreenect.h:110
freenect_set_depth_callback
FREENECTAPI void freenect_set_depth_callback(freenect_device *dev, freenect_depth_cb cb)
freenect_select_subdevices
FREENECTAPI void freenect_select_subdevices(freenect_context *ctx, freenect_device_flags subdevs)
TILT_STATUS_STOPPED
@ TILT_STATUS_STOPPED
Definition: libfreenect.h:162
FREENECT_DEVICE_CAMERA
@ FREENECT_DEVICE_CAMERA
Definition: libfreenect.h:60
LED_OFF
@ LED_OFF
Definition: libfreenect.h:150
freenect_shutdown
FREENECTAPI int freenect_shutdown(freenect_context *ctx)
FREENECT_LOG_ERROR
@ FREENECT_LOG_ERROR
Definition: libfreenect.h:203
freenect_video_cb
void(* freenect_video_cb)(freenect_device *dev, void *video, uint32_t timestamp)
Typedef for video image received event callbacks.
Definition: libfreenect.h:388
freenect_open_device_by_camera_serial
FREENECTAPI int freenect_open_device_by_camera_serial(freenect_context *ctx, freenect_device **dev, const char *camera_serial)
LED_BLINK_RED_YELLOW
@ LED_BLINK_RED_YELLOW
Definition: libfreenect.h:156
freenect_device_attributes
Definition: libfreenect.h:67
freenect_set_depth_mode
FREENECTAPI int freenect_set_depth_mode(freenect_device *dev, const freenect_frame_mode mode)
freenect_start_depth
FREENECTAPI int freenect_start_depth(freenect_device *dev)
freenect_process_events
FREENECTAPI int freenect_process_events(freenect_context *ctx)
freenect_set_log_callback
FREENECTAPI void freenect_set_log_callback(freenect_context *ctx, freenect_log_cb cb)
freenect_update_tilt_state
FREENECTAPI int freenect_update_tilt_state(freenect_device *dev)
freenect_raw_tilt_state::accelerometer_z
int16_t accelerometer_z
Definition: libfreenect.h:171
freenect_get_user
FREENECTAPI void * freenect_get_user(freenect_device *dev)
freenect_context
struct _freenect_context freenect_context
Definition: libfreenect.h:177
freenect_enabled_subdevices
FREENECTAPI freenect_device_flags freenect_enabled_subdevices(freenect_context *ctx)
freenect_set_fw_address_nui
FREENECTAPI void freenect_set_fw_address_nui(freenect_context *ctx, unsigned char *fw_ptr, unsigned int num_bytes)
freenect_get_video_mode_count
FREENECTAPI int freenect_get_video_mode_count()
freenect_raw_tilt_state::accelerometer_x
int16_t accelerometer_x
Definition: libfreenect.h:169
freenect_get_tilt_degs
FREENECTAPI double freenect_get_tilt_degs(freenect_raw_tilt_state *state)
FREENECT_DEVICE_AUDIO
@ FREENECT_DEVICE_AUDIO
Definition: libfreenect.h:61
freenect_resolution
freenect_resolution
Definition: libfreenect.h:77
FREENECT_DEVICE_MOTOR
@ FREENECT_DEVICE_MOTOR
Definition: libfreenect.h:59
freenect_get_tilt_state
FREENECTAPI freenect_raw_tilt_state * freenect_get_tilt_state(freenect_device *dev)
freenect_set_fw_address_k4w
FREENECTAPI void freenect_set_fw_address_k4w(freenect_context *ctx, unsigned char *fw_ptr, unsigned int num_bytes)
freenect_set_video_mode
FREENECTAPI int freenect_set_video_mode(freenect_device *dev, freenect_frame_mode mode)
FREENECT_VIDEO_IR_10BIT_PACKED
@ FREENECT_VIDEO_IR_10BIT_PACKED
Definition: libfreenect.h:91
TILT_STATUS_LIMIT
@ TILT_STATUS_LIMIT
Definition: libfreenect.h:163
freenect_frame_mode::resolution
freenect_resolution resolution
Definition: libfreenect.h:132
freenect_set_depth_buffer
FREENECTAPI int freenect_set_depth_buffer(freenect_device *dev, void *buf)
FREENECT_VIDEO_YUV_RGB
@ FREENECT_VIDEO_YUV_RGB
Definition: libfreenect.h:92
freenect_get_ir_brightness
FREENECTAPI int freenect_get_ir_brightness(freenect_device *dev)
FREENECT_LOG_NOTICE
@ FREENECT_LOG_NOTICE
Definition: libfreenect.h:205
LED_YELLOW
@ LED_YELLOW
Definition: libfreenect.h:153
freenect_chunk_cb
void(* freenect_chunk_cb)(void *buffer, void *pkt_data, int pkt_num, int datalen, void *user_data)
Typedef for stream chunk processing callbacks.
Definition: libfreenect.h:390
freenect_frame_mode::is_valid
int8_t is_valid
Definition: libfreenect.h:144
freenect_device_attributes::next
struct freenect_device_attributes * next
Definition: libfreenect.h:69
FREENECT_LOG_WARNING
@ FREENECT_LOG_WARNING
Definition: libfreenect.h:204
freenect_raw_tilt_state
Data from the tilt motor and accelerometer.
Definition: libfreenect.h:168
freenect_set_led
FREENECTAPI int freenect_set_led(freenect_device *dev, freenect_led_options option)
freenect_process_events_timeout
FREENECTAPI int freenect_process_events_timeout(freenect_context *ctx, struct timeval *timeout)
FREENECT_VIDEO_IR_8BIT
@ FREENECT_VIDEO_IR_8BIT
Definition: libfreenect.h:89
freenect_get_mks_accel
FREENECTAPI void freenect_get_mks_accel(freenect_raw_tilt_state *state, double *x, double *y, double *z)
freenect_video_format
freenect_video_format
Definition: libfreenect.h:86
freenect_frame_mode::dummy
int32_t dummy
Definition: libfreenect.h:134
freenect_tilt_status_code
freenect_tilt_status_code
Enumeration of tilt motor status.
Definition: libfreenect.h:161
FREENECT_VIDEO_RGB
@ FREENECT_VIDEO_RGB
Definition: libfreenect.h:87
freenect_frame_mode::data_bits_per_pixel
int8_t data_bits_per_pixel
Definition: libfreenect.h:141
freenect_close_device
FREENECTAPI int freenect_close_device(freenect_device *dev)
freenect_frame_mode::padding_bits_per_pixel
int8_t padding_bits_per_pixel
Definition: libfreenect.h:142
FREENECT_AUTO_EXPOSURE
@ FREENECT_AUTO_EXPOSURE
Definition: libfreenect.h:112
freenect_num_devices
FREENECTAPI int freenect_num_devices(freenect_context *ctx)
freenect_list_device_attributes
FREENECTAPI int freenect_list_device_attributes(freenect_context *ctx, struct freenect_device_attributes **attribute_list)
freenect_set_flag
FREENECTAPI int freenect_set_flag(freenect_device *dev, freenect_flag flag, freenect_flag_value value)
freenect_supported_subdevices
FREENECTAPI int freenect_supported_subdevices(void)
freenect_frame_mode::depth_format
freenect_depth_format depth_format
Definition: libfreenect.h:136
freenect_raw_tilt_state::tilt_angle
int8_t tilt_angle
Definition: libfreenect.h:172
FREENECT_DEPTH_REGISTERED
@ FREENECT_DEPTH_REGISTERED
Definition: libfreenect.h:104
freenect_depth_format
freenect_depth_format
Definition: libfreenect.h:99
freenect_frame_mode::width
int16_t width
Definition: libfreenect.h:139
FREENECT_LOG_SPEW
@ FREENECT_LOG_SPEW
Definition: libfreenect.h:208
freenect_set_log_level
FREENECTAPI void freenect_set_log_level(freenect_context *ctx, freenect_loglevel level)
FREENECT_ON
@ FREENECT_ON
Definition: libfreenect.h:124
FREENECT_MIRROR_VIDEO
@ FREENECT_MIRROR_VIDEO
Definition: libfreenect.h:117
freenect_depth_cb
void(* freenect_depth_cb)(freenect_device *dev, void *depth, uint32_t timestamp)
Typedef for depth image received event callbacks.
Definition: libfreenect.h:386
FREENECT_RAW_COLOR
@ FREENECT_RAW_COLOR
Definition: libfreenect.h:114
FREENECT_LOG_FLOOD
@ FREENECT_LOG_FLOOD
Definition: libfreenect.h:209
FREENECT_MIRROR_DEPTH
@ FREENECT_MIRROR_DEPTH
Definition: libfreenect.h:116