drivers/unix/unix.c
changeset 162 8331c670a3de
parent 155 746b49869cbc
child 197 182008694a32
--- 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)