Skip to content
Snippets Groups Projects
test_virtual_can_rx.cpp 1.25 KiB
#include "eventserver.h"
#include "threadserver.h"
#include "commexceptions.h"
#include "virtual_can.h"
#include <stdio.h>
#include <unistd.h>
#include <string>
#include <iostream>

#include <linux/can/raw.h>
#include <linux/can.h>

const std::string dump_file="/home/shernand/Work/pas/Sensors/radar/radar_308_idiada/candumpobjects.txt";

/**
 * \example test_can.cpp
 *
 */
int main(int argc,char *argv[])
{
  CEventServer *event_server=CEventServer::instance();
  std::list<std::string> events;
  CVirtualCAN can_port("can_port");
  unsigned char data[8];
  unsigned int can_id;
  int i=0,len;
  
  events.push_back(can_port.get_new_frame_event_id());
  try{
    can_port.open(dump_file);
    can_port.add_id_filter(0x010,0x0F0,false);
    while(1)
    {
      event_server->wait_all(events);
      std::cout << "[" << std::dec << can_port.get_last_rx_timestamp() << "]" << std::endl;
      can_port.read_frame(&can_id,data,&len);
      std::cout << "can id: 0x" << std::hex << can_id << std::endl;
      std::cout << "length: " << len << std::endl;
      std::cout << "data: ";
      for(i=0;i<len;i++)
        std::cout << "0x" << std::hex << (int)data[i] << ",";
      std::cout << std::endl;
    }
  }catch(CCommException &e){
    std::cout << e.what() << std::endl;
  }
}