Exemple #1
0
void incBusLoad (int channel, int flags, int load)
{
  canHandle handle;
  unsigned char msg[8] = "Kvaser!";
  int i, id = 100, dlc = sizeof(msg);
  canStatus stat = canERR_PARAM;
  handle  = canOpenChannel(channel, flags);
  if (handle < 0) {
    check("canOpenChannel", handle);
    return;
  }
  stat = canBusOff(handle);
  check("canBusOff", stat);
  stat = canSetBusParams(handle, bitrate, 0, 0, 0, 0, 0);
  check("canSetBusParams", stat);
  canBusOn(handle);
  for (i = 0; i < load; i++) {
    stat = canWrite(handle, id, &msg, dlc, 0);
    check("canWrite", stat);
  }
  stat = canWriteWait(handle, id, &msg, dlc, 0, -1);
  check("canWriteWait", stat);
  canBusOff(handle);
  canClose(handle);
}
/* Writes the given packet out on both channels
 *
 * returns: 0 on success, negative error code otherwise
 */
int
CANIOKvaser::WritePacket(CanPacket &pkt)
{
	int ret;

	//printf("CANIO: WRITE: pkt: %s\n", pkt.toString());

	for (int i=0; i < DUALCAN_NR_CHANNELS; i++) {

		if ((ret = canWriteWait(channels[i], pkt.id, pkt.msg, pkt.dlc,
				pkt.flags, 1000)) < 0) {
			printf("CANIO: write wait error %d\n", ret);
			return ret;
		}


		if ((ret = canWriteSync(channels[i], 10000)) < 0) {
			printf("CANIO: error %d on write sync\n", ret);
			switch (ret) {
			case canERR_TIMEOUT:
				printf("CANIO: TIMEOUT error\n");
				break;
			default:
				break;
			}
			return ret;
		}

	}

	return 0;
}
Exemple #3
0
static bool dbg_kavaser_can_send(uint32 ch, uint32 msg_id, uint8 *data, uint8 dlc)
{
	int flag = 0;

	dbg_kvaser.status = canWriteWait(dbg_kvaser.handle, msg_id, data, dlc, flag, -1);
    if (dbg_kvaser.status != canOK) {
		printf("dbg_kavaser_can_send:canWriteWait err=%d\n", dbg_kvaser.status);
		fflush(stdout);
		return FALSE;
    }
	printf("dbg_kavaser_can_send:canWriteWait msg_id=0x%x err=%d\n", msg_id, dbg_kvaser.status);
	fflush(stdout);
	return TRUE;
}
Exemple #4
0
/**
 *
 * CAN_HANDLES must have value >=1 while CANLIB wants handles >= 0
 * so fd0 needs to be decremented before use.
 *
 */ 
UNS8 canSend_driver(CAN_HANDLE fd0, Message const *m)
{
canStatus retval = canOK;
unsigned flags = 0;

    fd0--;

    flags |= canMSG_STD;
    
    if (m->cob_id & 0x20000000)
    {
        /* TODO: is it correct to desume this info from cob_id? */
        flags |= canMSG_EXT;
    }

    if (m->cob_id & 0x40000000)
    {
        flags |= canMSG_RTR;
    }

    /*
     * TODO: when should I set canMSG_ERROR_FRAME?
     */ 
    
    retval = canWriteWait((int)fd0, m->cob_id, m->data, m->len, 10000, flags);
    if (retval != canOK)
    {
  	    fprintf(stderr, "canSend_driver (Kvaser) :  canWriteWait() error, cob_id=%08X, len=%u, flags=%08X, returned value = %d\n", 
                m->cob_id, m->len, flags, retval);
        canClose((int)fd0);
        return retval;
    }
   
    //fprintf(stderr, "canSend_driver (Kvaser) :  canWriteWait() send packet, cob_id=%08X, len=%u, flags=%08X, returned value = %d\n", 
    //            m->cob_id, m->len, flags, retval);
    return retval; 

}