X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/3c6d0376edd06bad63e861415974556259f593cd..f6c113a5fb217e7495b93053cf29fa6966923445:/lincan/include/usbcan.h diff --git a/lincan/include/usbcan.h b/lincan/include/usbcan.h index 0f1e39c..b01a627 100644 --- a/lincan/include/usbcan.h +++ b/lincan/include/usbcan.h @@ -66,7 +66,7 @@ int usbcan_irq_handler(int irq, struct canchip_t *chip); int usbcan_init(void); void usbcan_exit(void); -void usbcan_read_kthread(kthread_t *kthread); +int usbcan_read_kthread(void *data); int usbcan_chip_queue_status(struct canchip_t *chip); #ifdef CONFIG_OC_LINCAN_DETAILED_ERRORS @@ -115,6 +115,23 @@ int usbcan_chip_queue_status(struct canchip_t *chip); #endif /*CONFIG_OC_LINCAN_DETAILED_ERRORS*/ +struct usbcan_message { + struct urb *u; + u8 msg[16]; + spinlock_t acc; /* access lock */ + long flags; +}; + +#define USBCAN_MESSAGE_FREE (1) +#define USBCAN_MESSAGE_READY_TO_SEND (2) +#define USBCAN_MESSAGE_SENDING (3) +#define USBCAN_MESSAGE_TERMINATE (4) +#define USBCAN_MESSAGE_ERROR (5) +#define USBCAN_MESSAGE_DATA_READ (6) + +#define USBCAN_TOT_RX_URBS 8 +#define USBCAN_TOT_TX_URBS 8 + /* Structure to hold all of our device specific stuff */ struct usbcan_usb { struct usb_device *udev; /* the usb device for this device */ @@ -133,10 +150,13 @@ struct usbcan_usb { int open_count; /* count the number of openers */ spinlock_t err_lock; /* lock for errors */ struct mutex io_mutex; /* synchronize I/O with disconnect */ - struct urb *rcv; - u8 rcv_msg[16]; + struct urb *rx; + struct urb *tx; + u8 rx_msg[16]; u8 tx_msg[16]; - kthread_t rcvthread; /* usb receive kernel thread */ + + struct task_struct *comthread; /* usb communication kernel thread */ + struct candevice_t *candev; long flags;