Program Listing for File dvxplorer.h

Return to documentation for file (include/libcaer/devices/dvxplorer.h)

#ifndef LIBCAER_DEVICES_DVXPLORER_H_
#define LIBCAER_DEVICES_DVXPLORER_H_

#include "../events/imu6.h"
#include "../events/polarity.h"
#include "../events/special.h"

#include "imu_support.h"
#include "usb.h"

#ifdef __cplusplus
extern "C" {
#endif

#define CAER_DEVICE_DVXPLORER 8

#define DVXPLORER_CHIP_ID 20
#define DVXPLORER_LITE_CHIP_ID 19

#define DVX_MUX 0
#define DVX_DVS 1
#define DVX_IMU 3
#define DVX_EXTINPUT 4
#define DVX_SYSINFO 6
#define DVX_USB 9

#define DVX_MUX_RUN 0
#define DVX_MUX_TIMESTAMP_RUN 1
#define DVX_MUX_TIMESTAMP_RESET 2
#define DVX_MUX_RUN_CHIP 3
#define DVX_MUX_DROP_EXTINPUT_ON_TRANSFER_STALL 4
#define DVX_MUX_DROP_DVS_ON_TRANSFER_STALL 5
#define DVX_MUX_HAS_STATISTICS 80
#define DVX_MUX_STATISTICS_EXTINPUT_DROPPED 81
#define DVX_MUX_STATISTICS_DVS_DROPPED 83

#define DVX_DVS_SIZE_COLUMNS 0
#define DVX_DVS_SIZE_ROWS 1
#define DVX_DVS_ORIENTATION_INFO 2
#define DVX_DVS_RUN 3
#define DVX_DVS_HAS_STATISTICS 80
#define DVX_DVS_STATISTICS_COLUMN 81
#define DVX_DVS_STATISTICS_GROUP 83
#define DVX_DVS_STATISTICS_DROPPED_COLUMN 85
#define DVX_DVS_STATISTICS_DROPPED_GROUP 87

#define DVX_IMU_TYPE 0
#define DVX_IMU_ORIENTATION_INFO 1
#define DVX_IMU_RUN_ACCELEROMETER 2
#define DVX_IMU_RUN_GYROSCOPE 3
#define DVX_IMU_RUN_TEMPERATURE 4
#define DVX_IMU_ACCEL_DATA_RATE 5
#define DVX_IMU_ACCEL_FILTER 6
#define DVX_IMU_ACCEL_RANGE 7
#define DVX_IMU_GYRO_DATA_RATE 8
#define DVX_IMU_GYRO_FILTER 9
#define DVX_IMU_GYRO_RANGE 10

#define DVX_EXTINPUT_RUN_DETECTOR 0
#define DVX_EXTINPUT_DETECT_RISING_EDGES 1
#define DVX_EXTINPUT_DETECT_FALLING_EDGES 2
#define DVX_EXTINPUT_DETECT_PULSES 3
#define DVX_EXTINPUT_DETECT_PULSE_POLARITY 4
#define DVX_EXTINPUT_DETECT_PULSE_LENGTH 5
#define DVX_EXTINPUT_HAS_GENERATOR 10
#define DVX_EXTINPUT_RUN_GENERATOR 11
#define DVX_EXTINPUT_GENERATE_PULSE_POLARITY 12
#define DVX_EXTINPUT_GENERATE_PULSE_INTERVAL 13
#define DVX_EXTINPUT_GENERATE_PULSE_LENGTH 14
#define DVX_EXTINPUT_GENERATE_INJECT_ON_RISING_EDGE 15
#define DVX_EXTINPUT_GENERATE_INJECT_ON_FALLING_EDGE 16

#define DVX_SYSINFO_LOGIC_VERSION 0
#define DVX_SYSINFO_CHIP_IDENTIFIER 1
#define DVX_SYSINFO_DEVICE_IS_MASTER 2
#define DVX_SYSINFO_LOGIC_CLOCK 3
#define DVX_SYSINFO_USB_CLOCK 5
#define DVX_SYSINFO_CLOCK_DEVIATION 6
#define DVX_SYSINFO_LOGIC_PATCH 7

#define DVX_USB_RUN 0
#define DVX_USB_EARLY_PACKET_DELAY 1

#define DVX_DVS_CHIP                             20
#define DVX_DVS_CHIP_MODE                        0
#define DVX_DVS_CHIP_EVENT_FLATTEN               1
#define DVX_DVS_CHIP_EVENT_ON_ONLY               2
#define DVX_DVS_CHIP_EVENT_OFF_ONLY              3
#define DVX_DVS_CHIP_SUBSAMPLE_ENABLE            4
#define DVX_DVS_CHIP_AREA_BLOCKING_ENABLE        5
#define DVX_DVS_CHIP_DUAL_BINNING_ENABLE         6
#define DVX_DVS_CHIP_SUBSAMPLE_VERTICAL          7
#define DVX_DVS_CHIP_SUBSAMPLE_HORIZONTAL        8
#define DVX_DVS_CHIP_AREA_BLOCKING_0             9
#define DVX_DVS_CHIP_AREA_BLOCKING_1             10
#define DVX_DVS_CHIP_AREA_BLOCKING_2             11
#define DVX_DVS_CHIP_AREA_BLOCKING_3             12
#define DVX_DVS_CHIP_AREA_BLOCKING_4             13
#define DVX_DVS_CHIP_AREA_BLOCKING_5             14
#define DVX_DVS_CHIP_AREA_BLOCKING_6             15
#define DVX_DVS_CHIP_AREA_BLOCKING_7             16
#define DVX_DVS_CHIP_AREA_BLOCKING_8             17
#define DVX_DVS_CHIP_AREA_BLOCKING_9             18
#define DVX_DVS_CHIP_AREA_BLOCKING_10            19
#define DVX_DVS_CHIP_AREA_BLOCKING_11            20
#define DVX_DVS_CHIP_AREA_BLOCKING_12            21
#define DVX_DVS_CHIP_AREA_BLOCKING_13            22
#define DVX_DVS_CHIP_AREA_BLOCKING_14            23
#define DVX_DVS_CHIP_AREA_BLOCKING_15            24
#define DVX_DVS_CHIP_AREA_BLOCKING_16            25
#define DVX_DVS_CHIP_AREA_BLOCKING_17            26
#define DVX_DVS_CHIP_AREA_BLOCKING_18            27
#define DVX_DVS_CHIP_AREA_BLOCKING_19            28
#define DVX_DVS_CHIP_TIMESTAMP_RESET             29
#define DVX_DVS_CHIP_GLOBAL_RESET_ENABLE         30
#define DVX_DVS_CHIP_GLOBAL_RESET_DURING_READOUT 31
#define DVX_DVS_CHIP_GLOBAL_HOLD_ENABLE          32
#define DVX_DVS_CHIP_FIXED_READ_TIME_ENABLE      33
#define DVX_DVS_CHIP_EXTERNAL_TRIGGER_MODE       34
#define DVX_DVS_CHIP_TIMING_ED                   35
#define DVX_DVS_CHIP_TIMING_GH2GRS               36
#define DVX_DVS_CHIP_TIMING_GRS                  37
#define DVX_DVS_CHIP_TIMING_GH2SEL               38
#define DVX_DVS_CHIP_TIMING_SELW                 39
#define DVX_DVS_CHIP_TIMING_SEL2AY_R             40
#define DVX_DVS_CHIP_TIMING_SEL2AY_F             41
#define DVX_DVS_CHIP_TIMING_SEL2R_R              42
#define DVX_DVS_CHIP_TIMING_SEL2R_F              43
#define DVX_DVS_CHIP_TIMING_NEXT_SEL             44
#define DVX_DVS_CHIP_TIMING_NEXT_GH              45
#define DVX_DVS_CHIP_TIMING_READ_FIXED           46
#define DVX_DVS_CHIP_DTAG_CONTROL                47

#define DVX_DVS_CHIP_MODE_OFF     0
#define DVX_DVS_CHIP_MODE_MONITOR 1
#define DVX_DVS_CHIP_MODE_STREAM  2

#define DVX_DVS_CHIP_DTAG_CONTROL_STOP    0
#define DVX_DVS_CHIP_DTAG_CONTROL_START   1
#define DVX_DVS_CHIP_DTAG_CONTROL_RESTART 2

#define DVX_DVS_CHIP_EXTERNAL_TRIGGER_MODE_TIMESTAMP_RESET 0
#define DVX_DVS_CHIP_EXTERNAL_TRIGGER_MODE_SINGLE_FRAME    1

#define DVX_DVS_CHIP_SUBSAMPLE_VERTICAL_NONE   0
#define DVX_DVS_CHIP_SUBSAMPLE_VERTICAL_HALF   1
#define DVX_DVS_CHIP_SUBSAMPLE_VERTICAL_FOURTH 3
#define DVX_DVS_CHIP_SUBSAMPLE_VERTICAL_EIGHTH 7

#define DVX_DVS_CHIP_SUBSAMPLE_HORIZONTAL_NONE   0
#define DVX_DVS_CHIP_SUBSAMPLE_HORIZONTAL_HALF   1
#define DVX_DVS_CHIP_SUBSAMPLE_HORIZONTAL_FOURTH 3
#define DVX_DVS_CHIP_SUBSAMPLE_HORIZONTAL_EIGHTH 7

#define DVX_DVS_CHIP_CROPPER                 21
#define DVX_DVS_CHIP_CROPPER_ENABLE          0
#define DVX_DVS_CHIP_CROPPER_Y_START_ADDRESS 1
#define DVX_DVS_CHIP_CROPPER_Y_END_ADDRESS   2
#define DVX_DVS_CHIP_CROPPER_X_START_ADDRESS 3
#define DVX_DVS_CHIP_CROPPER_X_END_ADDRESS   4

#define DVX_DVS_CHIP_ACTIVITY_DECISION               22
#define DVX_DVS_CHIP_ACTIVITY_DECISION_ENABLE        0
#define DVX_DVS_CHIP_ACTIVITY_DECISION_POS_THRESHOLD 1
#define DVX_DVS_CHIP_ACTIVITY_DECISION_NEG_THRESHOLD 2
#define DVX_DVS_CHIP_ACTIVITY_DECISION_DEC_RATE      3
#define DVX_DVS_CHIP_ACTIVITY_DECISION_DEC_TIME      4
#define DVX_DVS_CHIP_ACTIVITY_DECISION_POS_MAX_COUNT 5

#define DVX_DVS_CHIP_BIAS                    23
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOG  0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_SF   1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_ON   2
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_nRST 3
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGA 4
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGD 5
#define DVX_DVS_CHIP_BIAS_CURRENT_LEVEL_SF   6
#define DVX_DVS_CHIP_BIAS_CURRENT_LEVEL_nOFF 7
#define DVX_DVS_CHIP_BIAS_CURRENT_AMP        8
#define DVX_DVS_CHIP_BIAS_CURRENT_ON         9
#define DVX_DVS_CHIP_BIAS_CURRENT_OFF        10
#define DVX_DVS_CHIP_BIAS_SIMPLE             20

#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOG_5uA    0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOG_50uA   1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_SF_0_5uA   0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_SF_5uA     1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_ON_5uA     0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_ON_50uA    1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_nRST_0_5uA 0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_nRST_5uA   1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGA_5uA   0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGA_50uA  1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGD_5uA   0
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGD_50uA  1
#define DVX_DVS_CHIP_BIAS_CURRENT_RANGE_LOGD_500uA 2
#define DVX_DVS_CHIP_BIAS_CURRENT_LEVEL_SF_x0_1    0
#define DVX_DVS_CHIP_BIAS_CURRENT_LEVEL_SF_x1      1
#define DVX_DVS_CHIP_BIAS_CURRENT_LEVEL_nOFF_x0_1  0
#define DVX_DVS_CHIP_BIAS_CURRENT_LEVEL_nOFF_x1    1

#define DVX_DVS_CHIP_BIAS_SIMPLE_VERY_LOW  0
#define DVX_DVS_CHIP_BIAS_SIMPLE_LOW       1
#define DVX_DVS_CHIP_BIAS_SIMPLE_DEFAULT   2
#define DVX_DVS_CHIP_BIAS_SIMPLE_HIGH      3
#define DVX_DVS_CHIP_BIAS_SIMPLE_VERY_HIGH 4

struct caer_dvx_info {
    int16_t deviceID;
    char deviceSerialNumber[8 + 1];
    uint8_t deviceUSBBusNumber;
    uint8_t deviceUSBDeviceAddress;
    char *deviceString;
    int16_t firmwareVersion;
    int16_t logicVersion;
    int16_t chipID;
    bool deviceIsMaster;
    bool muxHasStatistics;
    int16_t dvsSizeX;
    int16_t dvsSizeY;
    bool dvsHasStatistics;
    enum caer_imu_types imuType;
    bool extInputHasGenerator;
};

LIBRARY_PUBLIC_VISIBILITY struct caer_dvx_info caerDVXplorerInfoGet(caerDeviceHandle handle);

#ifdef __cplusplus
}
#endif

#endif /* LIBCAER_DEVICES_DVXPLORER_H_ */