source: pacpussensors/trunk/Sick/AbstractSickSensor.h@ 72

Last change on this file since 72 was 72, checked in by DHERBOMEZ Gérald, 10 years ago
  • Correction of a little bug in gps component (property recording bad)
  • Improvement of sick lms151 component
  • Correction of bug in sick LDRMS : buffer overflow in a memcpy
File size: 2.3 KB
Line 
1/*********************************************************************
2// created: 2014-02-02
3// filename: AbstractSickSensor.h
4//
5// author: Cyril Fougeray
6// Copyright Heudiasyc UMR UTC/CNRS 6599
7//
8// version: $Id: $
9//
10// purpose: Abstract class to implement Sick sensors threads
11//
12*********************************************************************/
13
14#ifndef ABSTRACTSICKSENSOR_H
15#define ABSTRACTSICKSENSOR_H
16
17#include <QObject>
18#include "SickSocket.h"
19
20namespace pacpus {
21
22/// To separate data in UTC file = "UTC\0"
23static const int32_t UTC_MAGIC_WORD = 0x55544300;
24
25/**
26 * \brief Structure used to stored Sick data between several decoding processes
27 *
28 * Note that data coming from sensors are split in IP packets. In order to get the
29 * whole message in one block, MessagePacket is used to reconstitue the raw data.
30 * As we want to reconstitute the message, it is useful to know if another packet
31 * belonging to the message was previously received. Also, the time of the reception of
32 * the first packet is carried into the structure in order to trace scans.
33 */
34struct MessagePacket {
35 road_time_t time;
36 std::string data;
37 bool previousData;
38};
39
40
41/**
42 * @brief The AbstractSickSensor class
43 *
44 * The AbstractSickSensor class provides the abstract model for implementing sensor
45 * interfaces using SickComponent, used with the PACPUS Framework.
46 */
47class AbstractSickSensor : public QObject
48{
49 Q_OBJECT
50public:
51
52 virtual void stopActivity() = 0 ; /*!< to stop the processing thread */
53 virtual void startActivity() = 0; /*!< to start the processing thread */
54
55 SickSocket * S_socket;
56
57signals:
58
59public slots:
60 /**
61 * @brief customEvent is a slot called when connected to a signal.
62 * @param e QEvent that carries information from sensor.
63 *
64 * Sick sensor interface implementation uses this slot to get data from the remote sensor,
65 * using IP packets. As long as Sick sensors use TCP/IP interface, it is advised to use this
66 * slot to get the packets from the device.
67 * @see SickFrameEvent
68 */
69 virtual void customEvent(QEvent * e) = 0;
70
71protected:
72 /// The SickLDMRS IP or hostname
73 QString host_;
74
75 /// The SickLDMRS port
76 int port_;
77
78 /// If data need to be recorded, set this member to true.
79 bool recording;
80};
81
82}
83
84#endif // ABSTRACTSICKSENSOR_H
Note: See TracBrowser for help on using the repository browser.