# HG changeset patch # User etisserant # Date 1176799697 -7200 # Node ID 8331c670a3defa5f675789bffe0abe05fd6f0c2f # Parent c4908cc776a96efe2d63b423bc4dd96a9de61707 Better error handling for unix and peak_linux. diff -r c4908cc776a9 -r 8331c670a3de drivers/can_peak_linux/can_peak_linux.c --- a/drivers/can_peak_linux/can_peak_linux.c Sun Apr 15 00:49:34 2007 +0200 +++ b/drivers/can_peak_linux/can_peak_linux.c Tue Apr 17 10:48:17 2007 +0200 @@ -44,7 +44,7 @@ if ((errno = CAN_Read(fd0, & peakMsg))) { // Blocks until no new message or error. if(errno != -EIDRM && errno != -EPERM) // error is not "Can Port closed while reading" { - perror("!!! Peak board : error of reading. (from f_can_receive function) \n"); + perror("canReceive_driver (Peak_Linux) : error of reading.\n"); } return 1; } @@ -77,7 +77,7 @@ peakMsg.DATA[data] = m->data[data]; /* data bytes, up to 8 */ if((errno = CAN_Write(fd0, & peakMsg))) { - perror("!!! Peak board : error of writing. (from canSend function) \n"); + perror("canSend_driver (Peak_Linux) : error of writing.\n"); return 1; } return 0; @@ -115,8 +115,12 @@ fd0 = LINUX_CAN_Open(busname, O_RDWR); } - if(baudrate = TranslateBaudeRate(board->baudrate)) + if(fd0 && (baudrate = TranslateBaudeRate(board->baudrate))) + { CAN_Init(fd0, baudrate, CAN_INIT_TYPE_ST); + }else{ + fprintf(stderr, "canOpen_driver (Peak_Linux) : error opening %s\n", busname); + } return (CAN_HANDLE)fd0; } diff -r c4908cc776a9 -r 8331c670a3de drivers/unix/unix.c --- a/drivers/unix/unix.c Sun Apr 15 00:49:34 2007 +0200 +++ b/drivers/unix/unix.c Tue Apr 17 10:48:17 2007 +0200 @@ -158,17 +158,21 @@ } #endif CAN_HANDLE fd0 = DLL_CALL(canOpen)(board); - - canports[i].used = 1; - canports[i].fd = fd0; - canports[i].d = d; - - CreateReceiveTask(&(canports[i]), &canports[i].receiveTask, &canReceiveLoop); + if(fd0){ + canports[i].used = 1; + canports[i].fd = fd0; + canports[i].d = d; - EnterMutex(); - d->canHandle = (CAN_PORT)&canports[i]; - LeaveMutex(); - return (CAN_PORT)&canports[i]; + CreateReceiveTask(&(canports[i]), &canports[i].receiveTask, &canReceiveLoop); + + EnterMutex(); + d->canHandle = (CAN_PORT)&canports[i]; + LeaveMutex(); + return (CAN_PORT)&canports[i]; + }else{ + fprintf(stderr,"CanOpen : Cannot open board {busname='%s',baudrate='%s'}\n",board->busname, board->baudrate); + return NULL; + } } int canClose(CO_Data * d)