#![allow(dead_code)]
use std::ffi::c_char;
use std::os::raw::{c_int, c_longlong};
#[repr(C)]
pub struct TsiCtx {
_private: [u8; 0],
}
extern "C" {
pub fn tsi_sdk_open() -> c_int;
pub fn tsi_sdk_close();
pub fn tsi_discover_cameras(buf: *mut c_char, len: c_int) -> c_int;
pub fn tsi_open_camera(camera_id: *const c_char) -> *mut TsiCtx;
pub fn tsi_close_camera(ctx: *mut TsiCtx);
pub fn tsi_get_image_width(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_image_height(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_sensor_width(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_sensor_height(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_bit_depth(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_bytes_per_pixel(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_sensor_type(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_serial_number(ctx: *mut TsiCtx, buf: *mut c_char, len: c_int) -> c_int;
pub fn tsi_get_firmware_version(ctx: *mut TsiCtx, buf: *mut c_char, len: c_int) -> c_int;
pub fn tsi_get_exposure_us(ctx: *mut TsiCtx) -> c_longlong;
pub fn tsi_set_exposure_us(ctx: *mut TsiCtx, us: c_longlong) -> c_int;
pub fn tsi_get_exposure_range_us(
ctx: *mut TsiCtx,
min_out: *mut c_longlong,
max_out: *mut c_longlong,
) -> c_int;
pub fn tsi_set_roi(ctx: *mut TsiCtx, x: c_int, y: c_int, w: c_int, h: c_int) -> c_int;
pub fn tsi_clear_roi(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_roi(
ctx: *mut TsiCtx,
x: *mut c_int,
y: *mut c_int,
w: *mut c_int,
h: *mut c_int,
) -> c_int;
pub fn tsi_get_binx(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_biny(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_set_binx(ctx: *mut TsiCtx, val: c_int) -> c_int;
pub fn tsi_set_biny(ctx: *mut TsiCtx, val: c_int) -> c_int;
pub fn tsi_get_binx_range(
ctx: *mut TsiCtx,
min_out: *mut c_int,
max_out: *mut c_int,
) -> c_int;
pub fn tsi_snap(ctx: *mut TsiCtx, timeout_ms: c_int) -> c_int;
pub fn tsi_get_frame_ptr(ctx: *mut TsiCtx) -> *const u16;
pub fn tsi_get_frame_bytes(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_start_cont(ctx: *mut TsiCtx) -> c_int;
pub fn tsi_get_next_frame(ctx: *mut TsiCtx, timeout_ms: c_int) -> c_int;
pub fn tsi_stop_cont(ctx: *mut TsiCtx) -> c_int;
}