hsdaoh/include/hsdaoh_private.h
2025-08-23 21:38:04 +02:00

113 lines
1.7 KiB
C

#ifndef __HSDAOH_PRIVATE_H
#define __HSDAOH_PRIVATE_H
enum hsdaoh_async_status {
HSDAOH_INACTIVE = 0,
HSDAOH_CANCELING,
HSDAOH_RUNNING
};
struct llist {
uint8_t *data;
size_t len;
uint16_t sid;
uint16_t format;
struct llist *next;
};
struct hsdaoh_dev {
libusb_context *ctx;
struct libusb_device_handle *devh;
hsdaoh_read_cb_t cb;
void *cb_ctx;
enum hsdaoh_async_status async_status;
int async_cancel;
uint16_t vid;
uint16_t pid;
/* UVC related */
uvc_context_t *uvc_ctx;
uvc_device_t *uvc_dev;
uvc_device_handle_t *uvc_devh;
int hid_interface;
uint8_t edid_seq_cnt;
int frames_since_error;
int discard_start_frames;
unsigned int in_order_cnt;
uint16_t last_frame_cnt;
uint16_t last_crc[2];
uint16_t idle_cnt;
bool stream_synced;
unsigned int width, height, fps;
bool output_float;
iqconverter_float_t *cnv_f;
/* status */
int dev_lost;
bool driver_active;
unsigned int xfer_errors;
char manufact[256];
char product[256];
/* buffering */
pthread_t hsdaoh_output_worker_thread;
pthread_mutex_t ll_mutex;
pthread_cond_t cond;
unsigned int highest_numq;
unsigned int global_numq;
struct llist *ll_buffers;
unsigned int llbuf_num;
};
enum
{
RAW_8BIT,
RAW_16BIT,
RAW_24BIT,
RAW_32BIT,
RAW_64BIT,
PIO_1BIT,
PIO_2BIT,
PIO_3BIT,
PIO_4BIT,
PIO_5BIT,
PIO_6BIT,
PIO_7BIT,
PIO_8BIT,
PIO_8BIT_DUAL,
PIO_8BIT_IQ,
PIO_9BIT,
PIO_10BIT,
PIO_10BIT_DUAL,
PIO_10BIT_IQ,
PIO_11BIT,
PIO_12BIT,
PIO_12BIT_DUAL,
PIO_12BIT_IQ,
PIO_13BIT,
PIO_14BIT,
PIO_14BIT_DUAL,
PIO_14BIT_IQ,
PIO_15BIT,
PIO_16BIT,
PIO_16BIT_DUAL,
PIO_16BIT_IQ,
PIO_17BIT,
PIO_18BIT,
PIO_19BIT,
PIO_20BIT,
PIO_24BIT,
PIO_24BIT_IQ,
PIO_28BIT,
PIO_32BIT,
PIO_32BIT_IQ,
PIO_PCM1802_AUDIO,
// Placeholder for internal ADC data from pico
};
#endif