--- 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)