Go to the documentation of this file.
13 #include <glog/logging.h>
22 m_tofiConfig(nullptr), m_tofiComputeContext(nullptr)
31 delete[]
index.second.first;
35 if (
NULL != m_tofiComputeContext) {
37 m_tofiComputeContext =
NULL;
40 if (m_tofiConfig !=
NULL) {
55 uint16_t *tempDepthFrame = m_tofiComputeContext->p_depth_frame;
56 uint16_t *tempAbFrame = m_tofiComputeContext->p_ab_frame;
57 float *tempConfFrame = m_tofiComputeContext->p_conf_frame;
59 m_tofiComputeContext->p_depth_frame =
buffer;
60 m_tofiComputeContext->p_ab_frame =
61 buffer + m_outputFrameWidth * m_outputFrameHeight / 4;
62 m_tofiComputeContext->p_conf_frame =
63 (
float *)(
buffer + m_outputFrameWidth * m_outputFrameHeight / 2);
65 uint32_t ret =
TofiCompute((uint16_t *)frame->second.first,
66 m_tofiComputeContext,
NULL);
72 m_tofiComputeContext->p_depth_frame = tempDepthFrame;
73 m_tofiComputeContext->p_ab_frame = tempAbFrame;
74 m_tofiComputeContext->p_conf_frame = tempConfFrame;
76 memcpy(
buffer, frame->second.first, frame->second.second);
83 std::vector<std::string> frameTypesResources;
92 if (fileName[0] !=
'.')
93 frameTypesResources.push_back(fileName);
103 const bool is_directory =
104 (
file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
106 if (fileName[0] ==
'.')
112 frameTypesResources.push_back(fileName);
117 if (frameTypesResources.empty()) {
118 LOG(
WARNING) <<
"No available frame types found";
123 ifs.open(
m_path +
'/' + frameTypesResources[
index],
125 std::string content((std::istreambuf_iterator<char>(ifs)),
126 (std::istreambuf_iterator<char>()));
127 buffer =
new uint16_t[content.size() / 2];
128 memcpy(
buffer, content.data(), content.size());
130 std::make_pair(
buffer, content.size())});
145 modes.emplace_back(
mode.modeNumber);
156 if (modeDetails.modeNumber ==
mode) {
157 details = modeDetails;
166 if (modeDetails.modeNumber ==
mode) {
178 m_outputFrameWidth =
type.baseResolutionWidth * 4;
179 m_outputFrameHeight =
type.baseResolutionHeight;
186 std::vector<std::string> &controls)
const {
197 if (control ==
"imagerType")
220 unsigned int usDelay) {
231 unsigned int usDelay) {
236 uint32_t cmd, uint8_t *readback_data, uint16_t payload_len) {
255 }
else if (cmd == 0x02) {
256 if (readback_data[0] == 0) {
257 dealiasStruct.
n_rows = 1024;
258 dealiasStruct.
n_cols = 1024;
267 dealiasStruct.
Freq[0] = 14200;
268 dealiasStruct.
Freq[1] = 17750;
269 dealiasStruct.
Freq[2] = 0;
270 }
else if (readback_data[0] == 1) {
271 dealiasStruct.
n_rows = 1024;
272 dealiasStruct.
n_cols = 1024;
281 dealiasStruct.
Freq[0] = 19800;
282 dealiasStruct.
Freq[1] = 18900;
283 dealiasStruct.
Freq[2] = 5400;
284 }
else if (readback_data[0] == 2) {
285 dealiasStruct.
n_rows = 512;
286 dealiasStruct.
n_cols = 512;
295 dealiasStruct.
Freq[0] = 14200;
296 dealiasStruct.
Freq[1] = 17750;
297 dealiasStruct.
Freq[2] = 0;
298 }
else if (readback_data[0] == 3) {
299 dealiasStruct.
n_rows = 512;
300 dealiasStruct.
n_cols = 512;
309 dealiasStruct.
Freq[0] = 19800;
310 dealiasStruct.
Freq[1] = 18900;
311 dealiasStruct.
Freq[2] = 5400;
312 }
else if (readback_data[0] == 5) {
313 dealiasStruct.
n_rows = 512;
314 dealiasStruct.
n_cols = 512;
323 dealiasStruct.
Freq[0] = 19800;
324 dealiasStruct.
Freq[1] = 18900;
325 dealiasStruct.
Freq[2] = 5400;
326 }
else if (readback_data[0] == 6) {
327 dealiasStruct.
n_rows = 512;
328 dealiasStruct.
n_cols = 512;
337 dealiasStruct.
Freq[0] = 14200;
338 dealiasStruct.
Freq[1] = 17750;
339 dealiasStruct.
Freq[2] = 0;
343 memcpy(readback_data, &dealiasStruct,
346 memset(readback_data, 1, payload_len);
352 uint16_t payload_len) {
359 uint16_t payload_len) {
365 uint16_t payload_len) {
376 <<
"Unregistering an interrupt callback on an offline connection "
384 <<
"Registering an interrupt callback on an offline connection "
395 uint8_t *iniFile, uint16_t iniFileLength, uint8_t *calData,
396 uint16_t calDataLength) {
403 if (iniFile !=
nullptr) {
405 memcpy(m_xyzDealiasData, calData, calDataLength);
408 &status, m_xyzDealiasData);
414 if ((m_tofiConfig ==
NULL) || (m_tofiConfig->p_tofi_cal_config ==
NULL) ||
416 LOG(
ERROR) <<
"InitTofiConfig failed";
419 m_tofiComputeContext =
422 LOG(
ERROR) <<
"InitTofiCompute failed";
431 std::map<std::string, std::string> &
params) {
436 const std::map<std::string, std::string> &
params) {
virtual aditof::Status getControl(const std::string &control, std::string &value) const override
Gets the value of a specific sensor control.
GLuint const GLchar * name
virtual aditof::Status initTargetDepthCompute(uint8_t *iniFile, uint16_t iniFileLength, uint8_t *calData, uint16_t calDataLength) override
Get the name of the sensor.
Provides details about the device.
@ GENERIC_ERROR
An error occured but there are no details available.
TofiConfig * InitTofiConfig(ConfigFileData *p_cal_file_data, ConfigFileData *p_config_file_data, ConfigFileData *p_ini_file_data, uint16_t mode, uint32_t *p_status)
Function to Initialize the configuration for TOFI cal config (p_tofi_cal_config) using calibration/co...
static struct dirent * readdir(DIR *dirp)
TofiComputeContext * InitTofiCompute(const void *p_tofi_cal_config, uint32_t *p_status)
virtual aditof::Status adsd3500_write_payload(uint8_t *payload, uint16_t payload_len) override
Send a chunk of data (payload) to adsd3500. This will perform a burst write making it useful for writ...
virtual aditof::Status adsd3500_read_payload(uint8_t *payload, uint16_t payload_len) override
Reads a chunk of data from adsd3500. This will perform a burst read making it useful for reading chun...
aditof::SensorDetails m_sensorDetails
CameraIntrinsics camera_intrinsics
virtual aditof::Status getDetails(aditof::SensorDetails &details) const override
Get a structure that contains information about the instance of the sensor.
GLsizei const GLchar *const * string
const std::vector< aditof::DepthSensorModeDetails > availableModes
virtual aditof::Status open() override
Open the communication channels with the hardware.
uint8_t FreqIndex[MAX_N_FREQS]
virtual aditof::Status getFrame(uint16_t *buffer) override
Request a frame from the sensor.
virtual aditof::Status setDepthComputeParams(const std::map< std::string, std::string > ¶ms) override
Set ini parameters for Depth Compute library.
virtual aditof::Status getName(std::string &name) const override
Get the name of the sensor.
@ UNAVAILABLE
The requested action or resource is unavailable.
@ OFFLINE
connects to a software module, no hardware involved
virtual aditof::Status setSensorConfiguration(const std::string &sensorConf) override
Set sensor configutation table.
OfflineDepthSensor(std::string path)
uint16_t Freq[MAX_N_FREQS]
virtual aditof::Status adsd3500_unregister_interrupt_callback(aditof::SensorInterruptCallback &cb) override
Unregister a function registered with adsd3500_register_interrupt_callback.
virtual aditof::Status getHandle(void **handle) override
Gets a handle to be used by other devices such as Storage, Temperature, etc. This handle will allow t...
void FreeTofiCompute(TofiComputeContext *p_tofi_compute_context)
virtual aditof::Status getDepthComputeParams(std::map< std::string, std::string > ¶ms) override
Get ini parameters for Depth Compute library.
virtual aditof::Status adsd3500_reset() override
Reset adsd3500 chip.
virtual aditof::Status setHostConnectionType(std::string &connectionType) override
Set the host connection type for target sdk.
GLsizei const GLchar ** path
virtual aditof::Status start() override
Start the streaming of data from the sensor.
std::string m_connectionType
virtual aditof::Status adsd3500_write_cmd(uint16_t cmd, uint16_t data, unsigned int usDelay) override
Send a write command to adsd3500.
virtual aditof::Status adsd3500_get_status(int &chipStatus, int &imagerStatus) override
Returns the chip status.
GLenum const GLfloat * params
virtual aditof::Status stop() override
Stop the sensor data stream.
virtual aditof::Status adsd3500_write_payload_cmd(uint32_t cmd, uint8_t *payload, uint16_t payload_len) override
Send a write command to adsd3500. This will perform a burst write making it useful for writing chunks...
virtual aditof::Status setControl(const std::string &control, const std::string &value) override
Sets a specific sensor control.
@ INVALID_ARGUMENT
Invalid arguments provided.
Status
Status of any operation that the TOF sdk performs.
virtual aditof::Status getAvailableControls(std::vector< std::string > &controls) const override
Gets the sensors's list of controls.
int TofiCompute(const uint16_t *const input_frame, TofiComputeContext *const p_tofi_compute_context, TemperatureInfo *p_temperature)
TofiConfig * InitTofiConfig_isp(ConfigFileData *p_ini_file_data, uint16_t mode, uint32_t *p_status, TofiXYZDealiasData *p_xyz_dealias_data)
Function to Initialize the configuration for TOFI cal config incase of isp.
@ UNREACHABLE
Device or resource is unreachable.
virtual aditof::Status adsd3500_register_interrupt_callback(aditof::SensorInterruptCallback &cb) override
Register a function to be called when a ADSD3500 interrupt occurs.
virtual aditof::Status getAvailableModes(std::vector< uint8_t > &modes) override
Return all modes that are supported by the sensor.
Describes the type of entire frame that a depth sensor can capture and transmit.
std::map< std::string, std::pair< std::uint16_t *, std::size_t > > m_frameTypes
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static DIR * opendir(const char *dirname)
ConnectionType connectionType
The type of connection with the sensor.
virtual aditof::Status adsd3500_read_payload_cmd(uint32_t cmd, uint8_t *readback_data, uint16_t payload_len) override
Send a read command to adsd3500. This will perform a burst read making it useful for reading chunks o...
GLsizei const GLfloat * value
const GLuint GLenum const GLvoid * binary
virtual aditof::Status getModeDetails(const uint8_t &mode, aditof::DepthSensorModeDetails &details) override
Returns details of specified mode.
aditof::Status getIniParamsArrayForMode(int mode, std::string &iniStr) override
Get ini parameters for Depth Compute library as string.
virtual aditof::Status adsd3500_read_cmd(uint16_t cmd, uint16_t *data, unsigned int usDelay=0) override
Send a read command to adsd3500.
std::function< void(Adsd3500Status)> SensorInterruptCallback
Callback for sensor interrupts.
void FreeTofiConfig(TofiConfig *p_tofi_cal_config)
virtual aditof::Status setMode(const aditof::DepthSensorModeDetails &mode) override
Set the sensor frame mode to the given type.
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:57