source: pacpussensors/trunk/CanGateway/Win32CanInterface.h@ 89

Last change on this file since 89 was 89, checked in by DHERBOMEZ Gérald, 9 years ago

Add KVASER CAN driver support for CanGateway component. Tested only for Windows.

File size: 2.0 KB
RevLine 
[1]1/*********************************************************************
2// created: 2008/2/11 - 12:01
3// filename: Win32CanInterface.h
4//
5// author: Gerald Dherbomez
6// Copyright Heudiasyc UMR UTC/CNRS 6599
7//
8// version: $Id: $
9//
[59]10// purpose: Management of the Can Interface
[1]11//
12*********************************************************************/
13
14#ifndef WIN32CANINTERFACE_H
15#define WIN32CANINTERFACE_H
16
17// we use the Vector driver
18#ifdef WIN32
[74]19//# define CAN_DRIVER_TYPE VECTOR_CAN_DRIVER
[89]20//# define CAN_DRIVER_TYPE VECTOR_CANXL_DRIVER
[59]21//# define CAN_DRIVER_TYPE PEAK_CAN_DRIVER_WIN
[89]22# define CAN_DRIVER_TYPE KVASER_CAN_DRIVER_WIN
[1]23#else
[4]24# define CAN_DRIVER_TYPE IGEP_CAN_DRIVER
[1]25#endif
26
27#include <iostream>
28#include <qsemaphore.h>
29#include <qthread.h>
30
[2]31#include "CanDecoderBase.h"
[1]32
[2]33#include "driver/CanDriver.h"
[4]34#include "structureCan.h"
[2]35
[1]36namespace pacpus {
37
38class ShMem;
39
40class Win32CanInterface
41 : public QThread
42{
43public:
44 Win32CanInterface();
45 ~Win32CanInterface();
46
[89]47 enum DataSource {VectorCard, SharedMemory, PeakCard, XLVectorCard, igepCard, KvaserCard};
[1]48
49 bool openInterface(const int number, const unsigned int speed);
50 bool openInterface(char* port, char* accessMode);
51 bool closeInterface(const int number);
52 void stop();
53
54 void setSignalSempahore(QSemaphore * semaphore) { semaphore_ = semaphore;};
55 void setExchangeBuffer(TimestampedCanFrame * framesArray, const int framesArraySize);
56 void setSource(DataSource source);
57 CanDriver * canDriver_;
58protected:
59 void run();
60 void vectorLoop();
61 void shMemLoop();
62 void peakLoop();
[4]63 void igepLoop();
[1]64 void vectorXlLoop();
[89]65 void kvaserLoop();
[1]66
[89]67
[1]68private:
69 CanFrame frame_;
70 bool continue_;
71 DataSource source_;
72
73 QSemaphore *semaphore_;
74 TimestampedCanFrame * receivedFrames_;
75 int receivedFramesArraySize_;
76
77 ShMem * shMem_;
78
79 int counter_;
80};
81
82} // namespace pacpus
83
84#endif // WIN32CANINTERFACE_H
Note: See TracBrowser for help on using the repository browser.