#include "can4linux.h"
#include "can_driver.h"
-struct timeval init_time,current_time;
+//struct timeval init_time,current_time;
/*********functions which permit to communicate with the board****************/
UNS8 canReceive_driver(CAN_HANDLE fd0, Message *m)
{
int res,i;
canmsg_t canmsg;
- long int time_period;
+ //long int time_period;
canmsg.flags = 0;
do{
return 0;
}
+
/***************************************************************************/
-int set_bitrate( CAN_HANDLE fd, int baud)
+int TranslateBaudRate(char* optarg){
+ if(!strcmp( optarg, "1M")) return (int)1000;
+ if(!strcmp( optarg, "500K")) return (int)500;
+ if(!strcmp( optarg, "250K")) return (int)250;
+ if(!strcmp( optarg, "125K")) return (int)125;
+ if(!strcmp( optarg, "100K")) return (int)100;
+ if(!strcmp( optarg, "50K")) return (int)50;
+ if(!strcmp( optarg, "20K")) return (int)20;
+ if(!strcmp( optarg, "10K")) return (int)10;
+ if(!strcmp( optarg, "5K")) return (int)5;
+ return 0;
+}
+
+UNS8 _canChangeBaudRate( CAN_HANDLE fd, int baud)
{
Config_par_t cfg;
volatile Command_par_t cmd;
-
+
cmd.cmd = CMD_STOP;
ioctl(fd, COMMAND, &cmd);
- cfg.target = CONF_TIMING;
- cfg.val1 = baud;
+ cfg.target = CONF_TIMING;
+ cfg.val1 = baud;
ioctl(fd, CONFIG, &cfg);
cmd.cmd = CMD_START;
ioctl(fd, COMMAND, &cmd);
+
return 0;
}
-/***************************************************************************/
-int TranslateBaudeRate(char* optarg){
- if(!strcmp( optarg, "1M")) return (int)1000;
- if(!strcmp( optarg, "500K")) return (int)500;
- if(!strcmp( optarg, "250K")) return (int)250;
- if(!strcmp( optarg, "125K")) return (int)125;
- if(!strcmp( optarg, "100K")) return (int)100;
- if(!strcmp( optarg, "50K")) return (int)50;
- if(!strcmp( optarg, "20K")) return (int)20;
- if(!strcmp( optarg, "10K")) return (int)10;
- if(!strcmp( optarg, "5K")) return (int)5;
- if(!strcmp( optarg, "none")) return 0;
- return 0x0000;
+UNS8 canChangeBaudRate_driver( CAN_HANDLE fd, char* baud)
+{
+ int temp=TranslateBaudRate(baud);
+
+ if(temp==0)return 1;
+ _canChangeBaudRate(fd, temp);
+ printf("Baudrate changed to=>%s\n", baud);
+ return 0;
}
/***************************************************************************/
int prefix_len = strlen(lnx_can_dev_prefix);
char dev_name[prefix_len+name_len+1];
int o_flags = 0;
- int baud = TranslateBaudeRate(board->baudrate);
+ //int baud = TranslateBaudeRate(board->baudrate);
int fd0;
+ int res;
/*o_flags = O_NONBLOCK;*/
dev_name[prefix_len+name_len] = 0;
fd0 = open(dev_name, O_RDWR|o_flags);
- if(fd0 <= 0){
+ if(fd0 == -1){
fprintf(stderr,"!!! %s is unknown. See can4linux.c\n", dev_name);
goto error_ret;
}
- set_bitrate((CAN_HANDLE)fd0, baud);
+ res=TranslateBaudRate(board->baudrate);
+ if(res == 0){
+ fprintf(stderr,"!!! %s baudrate not supported. See can4linux.c\n", board->baudrate);
+ goto error_ret;
+ }
+
+ _canChangeBaudRate( (CAN_HANDLE)fd0, res);
printf("CAN device dev/can%s opened. Baudrate=>%s\n",board->busname, board->baudrate);
/***************************************************************************/
int canClose_driver(CAN_HANDLE fd0)
{
- if((int)fd0<=0)
- return -1;
- close(fd0);
- return 0;
+ if((int)fd0 != -1) {
+ return close((int)fd0);
+ }
+
+ return -1;
}
+
+int canfd_driver(CAN_HANDLE fd0)
+{
+ return ((int)fd0);
+}
+
+