X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/45b3ad9101e4e75af54e2d3bc25be419d3df7224..7c28d4d63c2ccd9945d1b0bb11dd3caff4c382b3:/embedded/app/usbcan/main.c diff --git a/embedded/app/usbcan/main.c b/embedded/app/usbcan/main.c index 41062e3..14fbe28 100644 --- a/embedded/app/usbcan/main.c +++ b/embedded/app/usbcan/main.c @@ -62,13 +62,13 @@ //#include "./can/ul_usb1.h" -//#include "./can/setup.h" +#include "./can/setup.h" #include "./usb/usb_defs.h" #include "./usb/usb_vend.h" - -#include "can/lpc17xx_can.h" +extern int can_lmc1_register(struct hwspecops_t *hwspecops); +extern int ul_usb1_register(struct hwspecops_t *hwspecops); #define MASK_EP1RX 0x01 #define MASK_EP1TX 0x02 @@ -156,19 +156,6 @@ int sys_err(){ } } -/*********************************************************************** - * Microsecond delay routine - ***********************************************************************/ -/* -void udelay(long time) -{ - volatile long ticks=(time * CCLK) / 2000000; - do{ - ticks--; - } while(ticks>0); -} -*/ - /*********************************************************************** * Routine for visible LED blinking (on USB transmission) ***********************************************************************/ @@ -227,14 +214,10 @@ int main(void) } - //*********************************************************************** + // *********************************************************************** // * CAN device initialization - device side (adapted from LinCAN setup.c) // *********************************************************************** - // DEBUG - //can_init(); // useless with lpc17xx (defined in can_lpcbusemu.c) - - DEBUGMSG("Initiating CAN device initialization\n"); baudrate[0]=1000; @@ -263,12 +246,12 @@ int main(void) - // DEBUG - //ul_usb1_register(candev->hwspecops); //(defined in ul_usb1.c) - // register for another board: +#ifdef CONFIG_OC_LINCAN_CARD_ul_usb1 + ul_usb1_register(candev->hwspecops); +#endif +#ifdef CONFIG_OC_LINCAN_CARD_can_lmc1 can_lmc1_register(candev->hwspecops); - - +#endif bd=baudrate[0]; if (candev->hwspecops->init_hw_data(candev)){ @@ -301,13 +284,17 @@ int main(void) } - if (candev->hwspecops->request_io(candev)) + if (candev->hwspecops->request_io(candev)) { + CANMSG("Error to request IO\n"); sys_err(); + } candev->flags|=CANDEV_IO_RESERVED; - if (candev->hwspecops->reset(candev)) + if (candev->hwspecops->reset(candev)) { + CANMSG("Error to reset chip\n"); sys_err(); + } for(chipnr=0; chipnrnr_all_chips; chipnr++) { @@ -321,11 +308,12 @@ int main(void) chip->flags |= CHIP_ATTACHED; -// Interrupts from chip are served in main cycle -// if(can_chip_setup_irq(chip)<0) { -// CANMSG("Error to setup chip IRQ\n"); -// sys_err(); -// } + // used with lpc17xx: + if(can_chip_setup_irq(chip)<0) { + CANMSG("Error to setup chip IRQ\n"); + sys_err(); + } + } if (candev->flags & CANDEV_PROGRAMMABLE_IRQ) @@ -428,9 +416,11 @@ int main(void) usb_check_events(&usb_device); usb_control_response(&usb_device); -// useless with lpc17xx: -// if (!(IO0PIN&P0_SJA1000_INT_PIN)) //INT PIN is inverted -// chip->chipspecops->irq_handler(0,chip); +#ifdef CONFIG_OC_LINCAN_CARD_ul_usb1 + /* polled IRQ mode for ul_usb1 board*/ + if (!(IO0PIN&P0_SJA1000_INT_PIN)) /* INT PIN is inverted */ + chip->chipspecops->irq_handler(0,chip); +#endif if (usb_device.ep_events & MASK_EP1RX) { //EP1RX - data waiting to receive @@ -531,6 +521,7 @@ int main(void) } + }