#ifndef _HDHOMERUN_TUNER_H_
#define _HDHOMERUN_TUNER_H_

struct hdhr_tuner_t {
  void *hd;
  int tuner_id;         // unique id in a channel service
  char tuner_name[20];  // external name used by plugin in a channel service
  char name[16];        // internal used by hdhomerun device
  char ip[16];          // device unit ip
  char model[16];       // device model
  int type;             // device type 1:atsc 2:qam 3:dvb
  int cc_tuner;         // cable card tuner
  void *channel_table;  // channel scan private data
};

struct vchan_t {
  int guide_id;
  char guide_name[32];
};

struct vchan_tbl_t {
  struct hdhr_tuner_t ht;
  int channel_num;
  int channel_size;
  struct vchan_t *vchan;
};

struct channel_entry_t;

int discover_device(struct hdhr_tuner_t *ht, int max_ht_num);
void *open_hdhr(char *name);
void close_hdhr(void *device);
char *get_unit_name(struct hdhr_tuner_t *ht, char *name, int size);
int scan_all(void *device, struct channel_entry_t *ce, int ce_num);
int tune_channel(void *device, char *channel, char *program,
                 char *stream_target);
int tune_atsc_vchannel(void *device, unsigned int channel,
                       unsigned int vchannel_major, unsigned int vchannel_minor,
                       char *stream_target);
int tune_cable_vchannel(void *device, unsigned int channel,
                        char *stream_target);
int stop_channel(void *device);
int scan_vchannel(void *device, int vchannel, struct channel_entry_t *ce);
int tuner_input_sharing(struct hdhr_tuner_t *ht1, struct hdhr_tuner_t *ht2);
struct vchan_tbl_t *create_vchan_tbl(struct hdhr_tuner_t *ht);
void release_vchan_tbl(struct vchan_tbl_t *vt);
int grow_vhcan_tbl(struct vchan_tbl_t *vt);

#endif
