Example #1
0
File: can_cpc.c Project: uqs/avalon
/* 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");
}
Example #2
0
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;
}