#ifndef SCEPTER_TYPES_H
#define SCEPTER_TYPES_H
#include <stdint.h>
#include "Scepter_enums.h"
#ifndef __cplusplus
#include <stdbool.h>
#endif
typedef uint16_t ScDepthPixel;
#pragma pack(push, 1)
typedef struct
{
float x; float y; float z; } ScVector3f;
typedef struct
{
uint16_t x; uint16_t y; } ScVector2u16;
typedef struct
{
int32_t depthX; int32_t depthY; ScDepthPixel depthZ; } ScDepthVector3;
typedef struct
{
int32_t width;
int32_t height;
} ScResolution;
typedef struct
{
int32_t count;
ScResolution resolution[6];
} ScResolutionList;
typedef struct
{
double fx; double fy; double cx; double cy; double k1; double k2; double p1; double p2; double k3; double k4; double k5; double k6; } ScSensorIntrinsicParameters;
typedef struct
{
double rotation[9]; double translation[3]; } ScSensorExtrinsicParameters;
typedef struct
{
uint32_t frameIndex; ScFrameType frameType; ScPixelFormat pixelFormat; uint8_t* pFrameData; uint32_t dataLen; uint16_t width; uint16_t height; uint64_t deviceTimestamp; } ScFrame;
typedef struct
{
uint32_t depth : 1; uint32_t ir : 1; uint32_t color : 1; uint32_t transformedColor : 1; uint32_t transformedDepth : 1; uint32_t reserved : 27; } ScFrameReady;
typedef void* ScDeviceHandle;
typedef struct
{
char productName[64]; char serialNumber[64]; char ip[17]; ScConnectStatus status; } ScDeviceInfo;
typedef struct
{
int32_t threshold; bool enable; } ScTimeFilterParams;
typedef struct
{
int32_t threshold; bool enable; } ScConfidenceFilterParams;
typedef struct
{
int32_t threshold; bool enable; } ScFlyingPixelFilterParams;
typedef struct
{
int32_t threshold; bool enable; } ScIRGMMCorrectionParams;
typedef struct
{
uint16_t width; uint16_t interval; uint8_t polarity; } ScInputSignalParamsForHWTrigger;
typedef struct
{
uint16_t width; uint16_t delay; uint8_t polarity; } ScOutputSignalParams;
typedef struct
{
uint8_t flag; uint8_t ip[16]; } ScTimeSyncConfig;
#pragma pack(pop)
typedef void (*PtrHotPlugStatusCallback)(const ScDeviceInfo* pInfo, int state, void* pUserData);
typedef void (*PtrUpgradeStatusCallback)(int status, int params, void* pUserData);
#endif