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

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

correction of minor bugs (include and link). Build on Windows OK.

File size: 1.8 KB
Line 
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//
10// purpose: Windows specific management of the Can Interface
11//
12*********************************************************************/
13
14#ifndef WIN32CANINTERFACE_H
15#define WIN32CANINTERFACE_H
16
17// we use the Vector driver
18#ifdef WIN32
19//# define CAN_DRIVER_TYPE VECTOR_CAN_DRIVER
20# define CAN_DRIVER_TYPE VECTOR_CANXL_DRIVER
21#else
22# define CAN_DRIVER_TYPE PEAK_CAN_DRIVER
23#endif
24
25#include <iostream>
26#include <qsemaphore.h>
27#include <qthread.h>
28
29#include "CanDecoderBase.h"
30
31#include "driver/CanDriver.h"
32
33namespace pacpus {
34
35class ShMem;
36
37class Win32CanInterface
38 : public QThread
39{
40public:
41 Win32CanInterface();
42 ~Win32CanInterface();
43
44 enum DataSource {VectorCard, SharedMemory, PeakCard, XLVectorCard};
45
46 bool openInterface(const int number, const unsigned int speed);
47 bool openInterface(char* port, char* accessMode);
48 bool closeInterface(const int number);
49 void stop();
50
51 void setSignalSempahore(QSemaphore * semaphore) { semaphore_ = semaphore;};
52 void setExchangeBuffer(TimestampedCanFrame * framesArray, const int framesArraySize);
53 void setSource(DataSource source);
54 CanDriver * canDriver_;
55protected:
56 void run();
57 void vectorLoop();
58 void shMemLoop();
59 void peakLoop();
60 void vectorXlLoop();
61
62private:
63 CanFrame frame_;
64 bool continue_;
65 DataSource source_;
66
67 QSemaphore *semaphore_;
68 TimestampedCanFrame * receivedFrames_;
69 int receivedFramesArraySize_;
70
71 ShMem * shMem_;
72
73 int counter_;
74};
75
76} // namespace pacpus
77
78#endif // WIN32CANINTERFACE_H
Note: See TracBrowser for help on using the repository browser.