/* Init CAN Hardware */ void can_init(const char* dev) { bzero(&message, sizeof(can_message_t)); /* ... add your code here ... */ btr0=0x00; btr1=0x14; /* Using Interface cpc_usb0 */ strcpy(interface, dev); // strcpy(interface, "/dev/cpc_usb0"); /*Open the CAN*/ if ((handle = CPC_OpenChannel(interface)) < 0) { fprintf(stderr, "ERROR: %s\n", CPC_DecodeErrorMsg(handle)); exit(1); } PDEBUG("%s is CAN interface -> handle %d\n", interface, handle); /* ############################# Init Parameters ######################*/ /*Define Handlers*/ CPC_AddHandler(handle, cpc_read_message_handler); /*CPC_AddHandler(handle, get_steering_msg_handler); CPC_AddHandler(handle, get_yaw_msg_handler);*/ /* This sets up the parameters used to initialize the CAN controller */ PDEBUG("Initializing CAN-Controller ... "); CPCInitParamsPtr = CPC_GetInitParamsPtr(handle); CPCInitParamsPtr->canparams.cc_type = SJA1000; CPCInitParamsPtr->canparams.cc_params.sja1000.btr0 = btr0; CPCInitParamsPtr->canparams.cc_params.sja1000.btr1 = btr1; CPCInitParamsPtr->canparams.cc_params.sja1000.outp_contr = 0xda; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_code0 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_code1 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_code2 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_code3 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_mask0 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_mask1 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_mask2 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.acc_mask3 = 0xff; CPCInitParamsPtr->canparams.cc_params.sja1000.mode = 0; CPC_CANInit(handle, 0); PDEBUG("Done!\n\n"); cpcfd = CPC_GetFdByHandle(handle); PDEBUG("Switch ON transimssion of CAN messages from CPC to PC\n"); /* switch on transmission of CAN messages from CPC to PC */ CPC_Control(handle, CONTR_CAN_Message | CONTR_CONT_ON); PDEBUG("Initialization finished...\n"); }
int can_cpc_open(can_cpc_device_p dev, const char* name) { dev->handle = CPC_OpenChannel((char*)name); if (dev->handle >= 0) { dev->fd = -1; strcpy(dev->name, name); dev->num_sent = 0; dev->num_received = 0; CPC_AddHandlerEx(dev->handle, can_cpc_handle, dev); } else return CAN_CPC_ERROR_OPEN; return CAN_CPC_ERROR_NONE; }