drivers/can_peak_linux/can_peak_linux.c
changeset 162 8331c670a3de
parent 145 e747d2e26af0
child 365 9b76e0881beb
equal deleted inserted replaced
161:c4908cc776a9 162:8331c670a3de
    42   UNS8 data; 
    42   UNS8 data; 
    43   TPCANMsg peakMsg;
    43   TPCANMsg peakMsg;
    44   if ((errno = CAN_Read(fd0, & peakMsg))) {		// Blocks until no new message or error.
    44   if ((errno = CAN_Read(fd0, & peakMsg))) {		// Blocks until no new message or error.
    45     if(errno != -EIDRM && errno != -EPERM) // error is not "Can Port closed while reading" 
    45     if(errno != -EIDRM && errno != -EPERM) // error is not "Can Port closed while reading" 
    46     {
    46     {
    47     	perror("!!! Peak board : error of reading. (from f_can_receive function) \n");
    47     	perror("canReceive_driver (Peak_Linux) : error of reading.\n");
    48     }
    48     }
    49     return 1;
    49     return 1;
    50   }
    50   }
    51   m->cob_id.w = peakMsg.ID;   
    51   m->cob_id.w = peakMsg.ID;   
    52   if (peakMsg.MSGTYPE == CAN_INIT_TYPE_ST)         	/* bits of MSGTYPE_*/
    52   if (peakMsg.MSGTYPE == CAN_INIT_TYPE_ST)         	/* bits of MSGTYPE_*/
    75           			/* count of data bytes (0..8) */
    75           			/* count of data bytes (0..8) */
    76   for(data = 0 ; data <  m->len; data ++)
    76   for(data = 0 ; data <  m->len; data ++)
    77   	peakMsg.DATA[data] = m->data[data];         	/* data bytes, up to 8 */
    77   	peakMsg.DATA[data] = m->data[data];         	/* data bytes, up to 8 */
    78   
    78   
    79   if((errno = CAN_Write(fd0, & peakMsg))) {
    79   if((errno = CAN_Write(fd0, & peakMsg))) {
    80     perror("!!! Peak board : error of writing. (from canSend function) \n");
    80     perror("canSend_driver (Peak_Linux) : error of writing.\n");
    81     return 1;
    81     return 1;
    82   }
    82   }
    83   return 0;
    83   return 0;
    84 
    84 
    85 }
    85 }
   113   {
   113   {
   114     sprintf(busname,"/dev/pcan%s",board->busname);
   114     sprintf(busname,"/dev/pcan%s",board->busname);
   115     fd0 = LINUX_CAN_Open(busname, O_RDWR);
   115     fd0 = LINUX_CAN_Open(busname, O_RDWR);
   116   }
   116   }
   117 
   117 
   118   if(baudrate = TranslateBaudeRate(board->baudrate))
   118   if(fd0 && (baudrate = TranslateBaudeRate(board->baudrate)))
       
   119   {
   119    	CAN_Init(fd0, baudrate, CAN_INIT_TYPE_ST);
   120    	CAN_Init(fd0, baudrate, CAN_INIT_TYPE_ST);
       
   121   }else{
       
   122   	fprintf(stderr, "canOpen_driver (Peak_Linux) : error opening %s\n", busname);
       
   123   }
   120 
   124 
   121    return (CAN_HANDLE)fd0;
   125    return (CAN_HANDLE)fd0;
   122 }
   126 }
   123 
   127 
   124 /***************************************************************************/
   128 /***************************************************************************/