use libc::{c_void, c_int, c_char, c_uchar, uint8_t, uint16_t, uint32_t};
pub const RTLSDR_TUNER_UNKNOWN: c_int = 0;
pub const RTLSDR_TUNER_E4000: c_int = 1;
pub const RTLSDR_TUNER_FC0012: c_int = 2;
pub const RTLSDR_TUNER_FC0013: c_int = 3;
pub const RTLSDR_TUNER_FC2580: c_int = 4;
pub const RTLSDR_TUNER_R820T: c_int = 5;
pub const RTLSDR_TUNER_R828D: c_int = 6;
#[allow(non_camel_case_types)]
pub enum rtlsdr_dev {}
#[link(name="rtlsdr")]
extern "C" {
pub fn rtlsdr_get_device_count() -> uint32_t;
pub fn rtlsdr_get_device_name(index: uint32_t) -> *const c_char;
pub fn rtlsdr_get_device_usb_strings(
index: uint32_t, manufact: *mut c_char,
product: *mut c_char, serial: *mut c_char) -> c_int;
pub fn rtlsdr_get_index_by_serial(serial: *const c_char) -> c_int;
pub fn rtlsdr_open(dev: *mut *mut rtlsdr_dev, index: uint32_t) -> c_int;
pub fn rtlsdr_close(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_set_xtal_freq(dev: *mut rtlsdr_dev, rtl_freq: uint32_t,
tuner_freq: uint32_t) -> c_int;
pub fn rtlsdr_get_xtal_freq(dev: *mut rtlsdr_dev, rtl_freq: *mut uint32_t,
tuner_freq: *mut uint32_t) -> c_int;
pub fn rtlsdr_get_usb_strings(dev: *mut rtlsdr_dev, manufact: *mut c_char,
product: *mut c_char, serial: *mut c_char)
-> c_int;
pub fn rtlsdr_write_eeprom(dev: *mut rtlsdr_dev, data: *mut uint8_t,
offset: uint8_t, len: uint16_t) -> c_int;
pub fn rtlsdr_read_eeprom(dev: *mut rtlsdr_dev, data: *mut uint8_t,
offset: uint8_t, len: uint16_t) -> c_int;
pub fn rtlsdr_set_center_freq(dev: *mut rtlsdr_dev, freq: uint32_t)
-> c_int;
pub fn rtlsdr_get_center_freq(dev: *mut rtlsdr_dev) -> uint32_t;
pub fn rtlsdr_set_freq_correction(dev: *mut rtlsdr_dev, ppm: c_int)
-> c_int;
pub fn rtlsdr_get_freq_correction(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_get_tuner_type(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_get_tuner_gains(dev: *mut rtlsdr_dev, gains: *mut c_int)
-> c_int;
pub fn rtlsdr_set_tuner_gain(dev: *mut rtlsdr_dev, gain: c_int) -> c_int;
pub fn rtlsdr_get_tuner_gain(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_set_tuner_if_gain(dev: *mut rtlsdr_dev, stage: c_int,
gain: c_int) -> c_int;
pub fn rtlsdr_set_tuner_gain_mode(dev: *mut rtlsdr_dev, manual: c_int)
-> c_int;
pub fn rtlsdr_set_tuner_bandwidth(dev: *mut rtlsdr_dev, bw: uint32_t) -> c_int;
pub fn rtlsdr_set_sample_rate(dev: *mut rtlsdr_dev, rate: uint32_t)
-> c_int;
pub fn rtlsdr_get_sample_rate(dev: *mut rtlsdr_dev) -> uint32_t;
pub fn rtlsdr_set_testmode(dev: *mut rtlsdr_dev, on: c_int) -> c_int;
pub fn rtlsdr_set_agc_mode(dev: *mut rtlsdr_dev, on: c_int) -> c_int;
pub fn rtlsdr_set_direct_sampling(dev: *mut rtlsdr_dev, on: c_int)
-> c_int;
pub fn rtlsdr_get_direct_sampling(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_set_offset_tuning(dev: *mut rtlsdr_dev, on: c_int) -> c_int;
pub fn rtlsdr_get_offset_tuning(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_reset_buffer(dev: *mut rtlsdr_dev) -> c_int;
pub fn rtlsdr_read_sync(dev: *mut rtlsdr_dev, buf: *mut c_void, len: c_int,
n_read: *mut c_int) -> c_int;
pub fn rtlsdr_read_async(dev: *mut rtlsdr_dev,
cb: extern fn(*mut c_uchar,
uint32_t, *mut c_void),
buf_num: uint32_t, buf_len: uint32_t) -> c_int;
pub fn rtlsdr_cancel_async(dev: *mut rtlsdr_dev) -> c_int;
}