151 lines
5.0 KiB
C
151 lines
5.0 KiB
C
/** \file depth.h
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License.
|
|
* Kinect For Azure SDK.
|
|
*/
|
|
|
|
#ifndef DEPTH_H
|
|
#define DEPTH_H
|
|
|
|
#include <k4a/k4atypes.h>
|
|
#include <k4ainternal/handle.h>
|
|
#include <k4ainternal/depth_mcu.h>
|
|
#include <k4ainternal/calibration.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** Delivers a sample to the registered callback function when a capture is ready for processing.
|
|
*
|
|
* \param result
|
|
* indicates if the capture being passed in is complete
|
|
*
|
|
* \param capture_handle
|
|
* Capture being read by hardware.
|
|
*
|
|
* \param callback_context
|
|
* Context for the callback function
|
|
*
|
|
* \remarks
|
|
* Capture is only of one type. At this point it is not linked to other captures. Capture is safe to use during this
|
|
* callback as the caller ensures a ref is held. If the callback function wants the capture to exist beyond this
|
|
* callback, a ref must be taken with capture_inc_ref().
|
|
*/
|
|
typedef void(depth_cb_streaming_capture_t)(k4a_result_t result, k4a_capture_t capture_handle, void *callback_context);
|
|
|
|
/** Handle to the depth device.
|
|
*
|
|
* Handles are created with \ref depth_create and closed
|
|
* with \ref depth_destroy.
|
|
* Invalid handles are set to 0.
|
|
*/
|
|
K4A_DECLARE_HANDLE(depth_t);
|
|
|
|
/** Open a handle to the depth device.
|
|
*
|
|
* \param depthmcu_handle [IN]
|
|
* Handle to the MCU communication module
|
|
*
|
|
* \param calibration_handle [IN]
|
|
* Handle to the calibration module.
|
|
*
|
|
* \param capture_ready_cb [IN]
|
|
* A function pointer to call when new depth captures are ready
|
|
*
|
|
* \param capture_ready_cb_context [IN]
|
|
* A context to go with the depth_capture_ready callback function
|
|
*
|
|
* \param depth_handle [OUT]
|
|
* A pointer to write the opened depth device handle to
|
|
*
|
|
* \return K4A_RESULT_SUCCEEDED if the device was opened, otherwise an error code
|
|
*
|
|
* If successful, \ref depth_create will return a depth device handle in the depth
|
|
* parameter. This handle grants exclusive access to the device and may be used in
|
|
* the other k4a API calls.
|
|
*
|
|
* When done with the device, close the handle with \ref depth_destroy
|
|
*/
|
|
k4a_result_t depth_create(depthmcu_t depthmcu_handle,
|
|
calibration_t calibration_handle,
|
|
depth_cb_streaming_capture_t *capture_ready_cb,
|
|
void *capture_ready_cb_context,
|
|
depth_t *depth_handle);
|
|
|
|
/** Closes the handle to the depth device.
|
|
*
|
|
* \param depth_handle [IN]
|
|
* The depth device handle to close
|
|
*
|
|
* If the sensor was streaming at the time /ref depth_destroy is called, /ref depth_stop will be implicitly called to
|
|
* stop the sensor.
|
|
*/
|
|
void depth_destroy(depth_t depth_handle);
|
|
|
|
/** Returns the Azure Kinect device serial number.
|
|
*
|
|
* \param depth_handle [IN]
|
|
* The depth device handle.
|
|
*
|
|
* \param serial_number [IN]
|
|
* char array to write to serial number to.
|
|
*
|
|
* \param serial_number_size [IN OUT]
|
|
* [IN] the maximum size of the memory pointed to by /ref serial_number
|
|
* [OUT] When used with /ref serial_number set to NULL, this value will represent the minimum allocation size needed for
|
|
* this call to succeed.
|
|
*
|
|
* \return ::K4A_BUFFER_RESULT_SUCCEEDED if the serial number was successfully read and written into /ref serial_number.
|
|
* ::K4A_BUFFER_RESULT_TOO_SMALL if the size of serial_number was too small, in this case /ref serial_number_size will
|
|
* have been updated with the size needed. ::K4A_BUFFER_RESULT_FAILED if an error was encountered. device was opened,
|
|
* otherwise an error code
|
|
* *
|
|
* If successful, /ref serial_number will contain a NULL terminated string.
|
|
*/
|
|
k4a_buffer_result_t depth_get_device_serialnum(depth_t depth_handle, char *serial_number, size_t *serial_number_size);
|
|
|
|
/** Returns the Azure Kinect device versions.
|
|
*
|
|
* \param depth_handle [IN]
|
|
* The depth device handle.
|
|
*
|
|
* \param version [OUT]
|
|
* Pre allocated version structure for the function to write the version info to.
|
|
*
|
|
* \return ::K4A_RESULT_SUCCEEDED if the verison was successfully from the device and written into /ref version.
|
|
* ::K4A_RESULT_FAILED if an error was encountered.
|
|
*/
|
|
k4a_result_t depth_get_device_version(depth_t depth_handle, k4a_hardware_version_t *version);
|
|
|
|
/** Starts the depth sensor streaming
|
|
*
|
|
* \param depth_handle [IN]
|
|
* The depth device handle.
|
|
*
|
|
* \param config [IN]
|
|
* The configuration of the depth sensor the user wants the sensor to run in.
|
|
*
|
|
* \return ::K4A_RESULT_SUCCEEDED if the depth sensor was successfully started. ::K4A_RESULT_FAILED if an error was
|
|
* encountered.
|
|
*
|
|
* call /ref depth_stop when the sensor no longer needs to stream.
|
|
*/
|
|
k4a_result_t depth_start(depth_t depth_handle, const k4a_device_configuration_t *config);
|
|
|
|
/** Stops the depth sensor when it has been streaming
|
|
*
|
|
* \param depth_handle [IN]
|
|
* The depth device handle.
|
|
*
|
|
* Stops depth sensor when it has been running. /ref depth_destroy implicitly calls this API if the sensor is in a
|
|
* running state.
|
|
*/
|
|
void depth_stop(depth_t depth_handle);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* DEPTH_H */
|