#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/usb/input.h>
#include <linux/slab.h>
#include <linux/completion.h>
#include <media/rc-core.h>
#define BUF_SIZE …
struct iguanair { … };
#define CMD_NOP …
#define CMD_GET_VERSION …
#define CMD_GET_BUFSIZE …
#define CMD_GET_FEATURES …
#define CMD_SEND …
#define CMD_EXECUTE …
#define CMD_RX_OVERFLOW …
#define CMD_TX_OVERFLOW …
#define CMD_RECEIVER_ON …
#define CMD_RECEIVER_OFF …
#define DIR_IN …
#define DIR_OUT …
#define MAX_IN_PACKET …
#define MAX_OUT_PACKET …
#define TIMEOUT …
#define RX_RESOLUTION …
struct packet { … };
struct send_packet { … };
static void process_ir_data(struct iguanair *ir, unsigned len)
{ … }
static void iguanair_rx(struct urb *urb)
{ … }
static void iguanair_irq_out(struct urb *urb)
{ … }
static int iguanair_send(struct iguanair *ir, unsigned size)
{ … }
static int iguanair_get_features(struct iguanair *ir)
{ … }
static int iguanair_receiver(struct iguanair *ir, bool enable)
{ … }
static int iguanair_set_tx_carrier(struct rc_dev *dev, uint32_t carrier)
{ … }
static int iguanair_set_tx_mask(struct rc_dev *dev, uint32_t mask)
{ … }
static int iguanair_tx(struct rc_dev *dev, unsigned *txbuf, unsigned count)
{ … }
static int iguanair_open(struct rc_dev *rdev)
{ … }
static void iguanair_close(struct rc_dev *rdev)
{ … }
static int iguanair_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{ … }
static void iguanair_disconnect(struct usb_interface *intf)
{ … }
static int iguanair_suspend(struct usb_interface *intf, pm_message_t message)
{ … }
static int iguanair_resume(struct usb_interface *intf)
{ … }
static const struct usb_device_id iguanair_table[] = …;
static struct usb_driver iguanair_driver = …;
module_usb_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DEVICE_TABLE(usb, iguanair_table);