diff -r 3ebf16150b2e -r e747d2e26af0 drivers/can_lincan/can_lincan.c --- a/drivers/can_lincan/can_lincan.c Tue Apr 03 20:20:27 2007 +0200 +++ b/drivers/can_lincan/can_lincan.c Wed Apr 04 13:04:31 2007 +0200 @@ -22,36 +22,16 @@ #include #include -#include #include -#include /* for NULL */ -#include #include -#include -#include -#include #include "canmsg.h" #include "lincan.h" -struct CANPort; -#define CAN_HANDLE struct CANPort * - -#include - -#include "timer.h" #include "can_driver.h" -#include "timers_driver.h" - -typedef struct CANPort { - char used; - HANDLE fd; - TASK_HANDLE receiveTask; - CO_Data* d; -} CANPort; /*********functions which permit to communicate with the board****************/ -UNS8 canReceive(CAN_HANDLE fd0, Message *m) +UNS8 canReceive_driver(CAN_HANDLE fd0, Message *m) { int res; struct canmsg_t canmsg; @@ -59,7 +39,7 @@ canmsg.flags = 0; /* Ensure standard receive, not required for LinCAN>=0.3.1 */ do{ - res = read(fd0->fd,&canmsg,sizeof(canmsg_t)); + res = read(fd0,&canmsg,sizeof(canmsg_t)); if((res<0)&&(errno == -EAGAIN)) res = 0; }while(res==0); @@ -82,25 +62,8 @@ return 0; } -void canReceiveLoop(CAN_HANDLE fd0) -{ - CO_Data* d = fd0->d; - Message m; - while (fd0->used) { - if(!canReceive(fd0, &m)) - { - EnterMutex(); - canDispatch(d, &m); - LeaveMutex(); - }else{ - printf("canReceive returned error\n"); - break; - } - } -} - /***************************************************************************/ -UNS8 canSend(CAN_HANDLE fd0, Message *m) +UNS8 canSend_driver(CAN_HANDLE fd0, Message *m) { int res; struct canmsg_t canmsg; @@ -119,7 +82,7 @@ canmsg.flags |= MSG_EXT; } - res = write(fd0->fd,&canmsg,sizeof(canmsg_t)); + res = write(fd0,&canmsg,sizeof(canmsg_t)); if(res!=sizeof(canmsg_t)) return 1; @@ -129,7 +92,7 @@ /***************************************************************************/ static const char lnx_can_dev_prefix[] = "/dev/can"; -CAN_HANDLE canOpen(s_BOARD *board) +CAN_HANDLE canOpen_driver(s_BOARD *board) { int name_len = strlen(board->busname); int prefix_len = strlen(lnx_can_dev_prefix); @@ -147,15 +110,12 @@ memcpy(dev_name+prefix_len,board->busname,name_len); dev_name[prefix_len+name_len] = 0; - fd0->fd = open(dev_name, O_RDWR|o_flags); - if(fd0->fd < 0){ + fd0 = open(dev_name, O_RDWR|o_flags); + if(fd0 < 0){ fprintf(stderr,"!!! Board %s is unknown. See can_lincan.c\n", board->busname); goto error_ret; } - fd0->d = board->d; - fd0->used = 1; - CreateReceiveTask(fd0, &fd0->receiveTask); return fd0; error_ret: @@ -164,13 +124,10 @@ } /***************************************************************************/ -int canClose(CAN_HANDLE fd0) +int canClose_driver(CAN_HANDLE fd0) { if(!fd0) return 0; - fd0->used = 0; - WaitReceiveTaskEnd(&fd0->receiveTask); - close(fd0->fd); - free(fd0); + close(fd0); return 0; }